[Linux] Install custom layout overrides all others
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
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.
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?
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.
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
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