Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Linux] Install custom layout overrides all others #207

Open
jchatard opened this issue Dec 18, 2024 · 4 comments
Open

[Linux] Install custom layout overrides all others #207

jchatard opened this issue Dec 18, 2024 · 4 comments

Comments

@jchatard
Copy link

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
@wismill
Copy link
Collaborator

wismill commented Dec 18, 2024

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.

@jchatard
Copy link
Author

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?

@Ced-C
Copy link
Contributor

Ced-C commented Dec 18, 2024

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.

@jchatard
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants