kalamine icon indicating copy to clipboard operation
kalamine copied to clipboard

[Linux] Install custom layout overrides all others

Open jchatard opened this issue 1 year ago • 5 comments

Hi,

I just tried kalamine to create a custom layout, but upon running the install command (wayland), after a reboot, all my gnome activated layouts (French Azerty, Optimot, Ergo-L) all respond as if they were my custom layout. Which is great for adoption, not so great when you need to debug a production bug :-)

If I remove the custom layout using kalamine, everything is back to normal.

I don't know if it's related, but I have this error popping when launching Gnome control panel:

Can't handle >16bit keyvals
Can't handle >16bit keyvals
Can't handle >16bit keyvals
Can't handle >16bit keyvals
Can't handle >16bit keyvals
Missing closing '"': "^\" # LIGATURE: U005C: <dead_circumflex> <backslash>        : "^\" # LIGATURE: U005C
Can't handle >16bit keyvals
Can't handle >16bit keyvals

Could that be from my layout?

Thank you, The project looks promising.

❯ fastfetch
           .-------------------------:                    jchatard@fw13
          .+=========================.                    -------------
         :++===++==================-       :++-           OS: CachyOS Linux x86_64
        :*++====+++++=============-        .==:           Host: Laptop 13 (AMD Ryzen 7040Series) (A7)
       -*+++=====+***++==========:                        Kernel: Linux 6.12.5-2-cachyos
      =*++++========------------:                         Uptime: 8 mins
     =*+++++=====-                     ...                Packages: 1486 (pacman), 30 (flatpak)
   .+*+++++=-===:                    .=+++=:              Shell: zsh 5.9
  :++++=====-==:                     -*****+              Display (NE135A1M-NY1): 2880x1920 @ 120 Hz (as 1920x1280) in 14" ]
 :++========-=.                      .=+**+.              Display (ASUS PB279): 3840x2160 @ 60 Hz (as 2560x1440) in 27" [Ex]
.+==========-.                          .                 DE: GNOME 47.2
 :+++++++====-                                .--==-.     WM: Mutter (Wayland)
  :++==========.                             :+++++++:    WM Theme: Adwaita
   .-===========.                            =*****+*+    Theme: Adwaita [GTK2/3/4]
    .-===========:                           .+*****+:    Icons: Adwaita [GTK2/3/4]
      -=======++++:::::::::::::::::::::::::-:  .---:      Font: Cantarell (11pt) [GTK2/3/4]
       :======++++====+++******************=.             Cursor: Adwaita (24px)
        :=====+++==========++++++++++++++*-               Terminal: ghostty 0.1.0-main+61aff898
         .====++==============++++++++++*-                CPU: AMD Ryzen 7 7840U w/ Radeon 780M Graphics (16) @ 5.13 GHz
          .===+==================+++++++:                 GPU: AMD Radeon 780M [Integrated]
           .-=======================+++:                  Memory: 6.70 GiB / 60.63 GiB (11%)
             ..........................                   Swap: 0 B / 124.63 GiB (0%)
                                                          Disk (/): 111.01 GiB / 3.64 TiB (3%) - btrfs
                                                          Local IP (wlan0): 172.16.16.12/16
                                                          Battery (FRANGWA): 90% [Charging, AC Connected]
                                                          Locale: fr_FR.UTF-8

jchatard avatar Dec 18 '24 07:12 jchatard

About the error Missing closing '"' […]: this come from a malformed custom Compose file. Fix:

- <dead_circumflex> <backslash>        : "^\" # LIGATURE: U005C
+ <dead_circumflex> <backslash>        : "^\\" # LIGATURE: U005C

Although I am not sure what this sequence is intended for.

wismill avatar Dec 18 '24 08:12 wismill

Thanks, I fix the malformed Compose file.

But it doesn't change that as soon as I run:

xkalamine install layout.toml

All my gnome input methods are using my custom layout regardless of the selected one in gnome.

Am I missing something?

jchatard avatar Dec 18 '24 15:12 jchatard

would it be possible to share your layout file to see if we can reproduce the bug ? I haven’t had this issue myself and would like to try-out your file to see if there is creating this behaviour.

Ced-C avatar Dec 18 '24 18:12 Ced-C

Yeah sure!

I can't upload a TOML file, so I just put the content here:

# kalamine keyboard layout descriptor
name        = "Optimy"  # full layout name, displayed in the keyboard settings
name8       = "optimy"         # short Windows filename: no spaces, no special chars
locale      = "fr"             # locale/language id
variant     = "optimy"         # layout variant id
author      = "Jérémy Chatard"         # author name
description = "Français - Optimy"
url         = "https://gitlab.com/jchatard/Optimy"
version     = "0.0.1"
geometry    = "ERGO"

base = '''
╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮
┆ >   ┃ ! ‚ │ " ‘ │ = ’ │ (   │ )   ┃ +   │ -   │ /   │ [   │ ]   ┃ { – ┆ } ± ┆
┆ <   ┃ 1 „ │ 2 “ │ 3 ” │ 4 ¢ │ 5 ‰ ┃ 6   │ 7   │ 8 § │ 9 ¶ │ 0 ° ┃ # ÷ ┆ @ ≠ ┆
╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤
·     ┃ À   │ J   │ O   │ É   │ B   ┃ F   │ D   │ L   │ ?   │ Q   ┃ X   ┆ Z   ┆
·     ┃   â │   ï │   œ │   ô │     ┃     │     │     │ ’   │     ┃     ┆     ┆
·     ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤
·     ┃ A   │ I   │ E   │ U   │ ;   ┃ P   │ T   │ S   │ R   │ N   ┃     ┆ Ç   ┆
·     ┃   æ │   î │   € │   ù │ ,   ┃     │     │     │     │   ~ ┃***¨ ┆     ┆
╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯
┆ >   ┃ W   │ Y   │ È   │ :   │ K   ┃ G   │ C   │ M   │ H   │ V   ┃           ·
┆ <   ┃     │     │     │ . … │     ┃     │     │     │     │     ┃           ·
╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · ·
'''

altgr = '''
╭╌╌╌╌╌┰─────┬─────┬─────┬─────┬─────┰─────┬─────┬─────┬─────┬─────┰╌╌╌╌╌┬╌╌╌╌╌╮
┆     ┃   ¹ │   ² │   ³ │   ⁴ │   ⁵ ┃   ⁶ │   ⁷ │   ⁸ │   ⁹ │   ⁰ ┃     ┆     ┆
┆     ┃   ₁ │   ₂ │   ₃ │   ₄ │   ₅ ┃   ₆ │   ₇ │   ₈ │   ₉ │   ₀ ┃     ┆     ┆
╰╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤
·     ┃  *^ │   ≤ │   ≥ │  *¤ │   ‰ ┃  *˚ │     │   × │  *´ │  *` ┃     ┆     ┆
·     ┃   ^ │   < │   > │   $ │   % ┃   @ │   & │   * │   ' │   ` ┃     ┆     ┆
·     ┠─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┼╌╌╌╌╌┤
·     ┃  *ˇ │     │     │  *˙ │   ≠ ┃  */ │   ± │  *¯ │   ÷ │  *” ┃     ┆     ┆
·     ┃   { │   ( │   ) │   } │   = ┃   \ │   + │   - │   / │   " ┃     ┆     ┆
╭╌╌╌╌╌╂─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╂╌╌╌╌╌┴╌╌╌╌╌╯
┆     ┃  *~ │  *, │  *˛ │   – │     ┃   ¦ │   ¬ │  *¸ │   : │  *˘ ┃           ·
┆     ┃   ~ │   [ │   ] │   _ │   # ┃   | │   ! │   ; │   : │   ? ┃           ·
╰╌╌╌╌╌┸─────┴─────┴─────┴─────┴─────┸─────┴─────┴─────┴─────┴─────┚ · · · · · ·
'''

[spacebar]
shift       = "\u202f"  # NARROW NO-BREAK SPACE
altgr       = "\u0020"  # SPACE
altgr_shift = "\u00a0"  # NO-BREAK SPACE
1dk         = "\u2019"  # RIGHT SINGLE QUOTATION MARK
1dk_shift   = "\u2019"  # RIGHT SINGLE QUOTATION MARK


# --------------------------------------------------------------------------------
# Layers
# --------------------------------------------------------------------------------
#
# ### base
#
# The `base` layer contains the base and shifted keys:
#
#                    +-----+
#     shift -------> | ?   |
#     base --------> | /   |
#                    +-----+
#
# When the base and shift keys correspond to the same character, you may only
# specify the uppercase char:
#
#                    +-----+
#     shift -------> | A   |
#     (base = a) --> |     |
#                    +-----+
#
#
# ### altgr
#
# The `altgr` layer contains the altgr and shift+altgr symbols:
#
#                    +-----+
#                    |     | <----- (altgr+shift+key is undefined)
#                    |   { | <----- altgr+key = {
#                    +-----+
#
#
# ### full
#
# The `full` view lets you specify the `base` and `altgr` levels together:
#
#                    +-----+
#     shift -------> | A   | <----- (altgr+shift+key is undefined)
#     (base = a) --> |   { | <----- altgr+key = {
#                    +-----+


# --------------------------------------------------------------------------------
# Dead Keys
# --------------------------------------------------------------------------------
#
# ### Usage
#
# Dead keys are preceded by a `*` sign. They can be used in the `base` layer:
#
#                    +-----+
#     shift -------> |*"   |  = dead diaeresis
#     base --------> |*´   |  = dead acute accent
#                    +-----+
#
# … as well as in the `altgr` layer:
#
#                    +-----+
#                    |  *" | <----- altgr+shift+key = dead diaeresis
#                    |  *´ | <----- altgr+key       = dead acute accent
#                    +-----+
#
# … and combined in the `full` layer:
#
#                     +-----+
#   shift+key = A --> | A*" | <----- altgr+shift+key = dead diaeresis
#         key = a --> | a*´ | <----- altgr+key       = dead acute accent
#                     +-----+
#
#
# ### Standard Dead Keys
#
# The following dead keys are supported, and their behavior cannot be customized:
#
#     id  XKB name          base -> accented chars
#     ----------------------------------------------------------------------------
#     *`  grave             AaEeIiNnOoUuWwYyЕеИи
#                        -> ÀàÈèÌìǸǹÒòÙùẀẁỲỳЀѐЍѝ
#     *‟  doublegrave       AaEeIiOoRrUuѴѴ
#                        -> ȀȁȄȅȈȉȌȍȐȑȔȕѶѷ
#     *´  acute             AaCcEeGgIiKkLlMmNnOoPpRrSsUuWwYyZzΑαΕεΗηΙιΟοΥυΩωГгКк
#                        -> ÁáĆćÉéǴǵÍíḰḱĹĺḾḿŃńÓóṔṕŔশÚúẂẃÝýŹźΆάΈέΉήΊίΌόΎύΏώЃѓЌќ
#     *”  doubleacute       OoUuУу
#                        -> ŐőŰűӲӳ
#     *^  circumflex        AaCcEeGgHhIiJjOoSsUuWwYyZz0123456789()+-=
#                        -> ÂâĈĉÊêĜĝĤĥÎîĴĵÔôŜŝÛûŴŵŶŷẐẑ⁰¹²³⁴⁵⁶⁷⁸⁹⁽⁾⁺⁻⁼
#     *ˇ  caron             AaCcDdEeGgHhIiKkLlNnOoRrSsTtUuZzƷʒ0123456789()+-=
#                        -> ǍǎČčĎďĚěǦǧȞȟǏǐǨǩĽľŇňǑǒŘřŠšŤťǓǔŽžǮǯ₀₁₂₃₄₅₆₇₈₉₍₎₊₋₌
#     *˘  breve             AaEeGgIiOoUuΑαΙιΥυАаЕеЖжИиУу
#                        -> ĂăĔĕĞğĬĭŎŏŬŭᾸᾰῘῐῨῠӐӑӖӗӁӂЙйЎў
#     *⁻  invertedbreve     AaEeIiOoUuRr
#                        -> ȂȃȆȇȊȋȎȏȖȗȒȓ
#     *~  tilde             AaEeIiNnOoUuVvYy<>=
#                        -> ÃãẼẽĨĩÑñÕõŨũṼṽỸỹ≲≳≃
#     *¯  macron            AaÆæEeGgIiOoUuYy
#                        -> ĀāǢǣĒēḠḡĪīŌōŪūȲȳ
#     *¨  diaeresis         AaEeHhIiOotUuWwXxYyΙιΥυАаЕеӘәЖжЗзИиІіОоӨөУуЧчЫыЭэ
#                        -> ÄäËëḦḧÏïÖöẗÜüẄẅẌẍŸÿΪϊΫϋӒӓЁёӚӛӜӝӞӟӤӥЇїӦӧӪӫӰӱӴӵӸӹӬӭ
#     *˚  abovering         AaUuwy
#                        -> ÅåŮůẘẙ
#     *¸  cedilla           CcDdEeGgHhKkLlNnRrSsTt
#                        -> ÇçḐḑȨȩĢģḨḩĶķĻļŅņŖŗŞşŢţ
#     *,  belowcomma        SsTt
#                        -> ȘșȚț
#     *˛  ogonek            AaEeIiOoUu
#                        -> ĄąĘęĮįǪǫŲų
#     */  stroke            AaBbCcDdEeGgHhIiJjLlOoPpRrTtUuYyZz<≤≥>=
#                        -> ȺⱥɃƀȻȼĐđɆɇǤǥĦħƗɨɈɉŁłØøⱣᵽɌɍŦŧɄʉɎɏƵƶ≮≰≱≯≠
#     *˙  abovedot          AaBbCcDdEeFfGgHhIijLlMmNnOoPpRrSsTtWwXxYyZz
#                        -> ȦȧḂḃĊċḊḋĖėḞḟĠġḢḣİıȷĿŀṀṁṄṅȮȯṖṗṘṙṠṡṪṫẆẇẊẋẎẏŻż
#     *.  belowdot          AaBbDdEeHhIiKkLlMmNnOoRrSsTtUuVvWwYyZz
#                        -> ẠạḄḅḌḍẸẹḤḥỊịḲḳḶḷṂṃṆṇỌọṚṛṢṣṬṭỤụṾṿẈẉỴỵẒẓ
#     *µ  greek             AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuWwXxYyZz
#                        -> ΑαΒβΔδΕεΦφΓγΗηΙιΘθΚκΛλΜμΝνΟοΠπΧχΡρΣσΤτΥυΩωΞξΨψΖζ
#     *¤  currency          AaBbÇCçcDdEeFfGgHhIiKkLlMmNnOoPpRrSsTtþÞUuWwYy
#                        -> ₳؋₱฿₵₡₵¢₯₫₠€₣ƒ₲₲₴₴៛﷼₭₭₤£ℳ₥₦₦૱௹₧₰₨₢$₪₮৳৲৲圓元₩₩円¥
#
# ### Custom Dead Key
#
# There is one dead key (1dk), noted `**`, that can be customized by specifying
# how it modifies each character in the `base` layer:
#
#                    +-----+
#     shift -------> | ? ¿ | <----- 1dk, shift+key
#     base --------> | / ÷ | <----- 1dk, key
#                    +-----+
#
# When the base and shift keys correspond to the same accented character, you may
# only specify the lowercase accented char in the `base` layer:
#
#                    +-----+
#     shift -------> | A   | <----- (1dk, shift+key = À)
#     (base = a) --> |   à | <----- 1dk, key = à
#                    +-----+
#
# You may also chain dead keys by specifying a dead key in the `1dk` layer:
#
#                    +-----+
#     shift -------> | G   |
#     (base = g) --> |  *µ | <----- 1dk, key = dead Greek
#                    +-----+
#
# **Warning:** chained dead keys are not supported by MSKLC, and KbdEdit will be
# required to build a Windows driver for such a keyboard layout.


# --------------------------------------------------------------------------------
# Space Bar
# --------------------------------------------------------------------------------
#
# Kalamine descriptor files have an optional section to define specific behaviors
# of the space bar in non-base layers:
#
#     [spacebar]
#     shift       = "\u202f"  # NARROW NO-BREAK SPACE
#     altgr       = "\u0020"  # SPACE
#     altgr_shift = "\u00a0"  # NO-BREAK SPACE
#     1dk         = "\u2019"  # RIGHT SINGLE QUOTATION MARK
#     1dk_shift   = "\u2019"  # RIGHT SINGLE QUOTATION MARK
#
# Kalamine doesn’t support non-space chars on the `base` layer for the space bar.
# Space characters outside of the space bar are not supported either.

Thanks, Jérémy

jchatard avatar Dec 19 '24 08:12 jchatard

would it be possible to share your layout file to see if we can reproduce the bug ? I haven’t had this issue myself and would like to try-out your file to see if there is creating this behaviour.

Hi, happy new year!

@Ced-C Did you have a chance to test my file?

No pressure here.

Thanks. Jérémy

jchatard avatar Jan 05 '25 15:01 jchatard