(Ubuntu 24.04.2 LTS, 64 bits, Gnome 46, Wayland, Linux 6.8.0-53-genérico)
Recentemente, mudei para um novo layout de teclado, chamado de-e1 ("E1" é um superconjunto do layout típico de teclado alemão (de)) e se parece com isto:
Detalhes sobre o layout na Wikipedia (alemão, nenhum artigo em inglês ainda, não é necessário para minha pergunta - espero): https://de.wikipedia.org/wiki/E1_(Tastaturbelegung)
Como funciona o layout
Os símbolos no canto inferior direito podem ser escritos com AltGr
a tecla + (por exemplo AltGr
+ g
para o S maiúsculo alemão sustenido "ẞ"). Os símbolos no canto superior direito podem ser alcançados primeiro alternando para o modo Ex ("Extra-Wahltaste").
Ex-Mode: AltGr
+ f
(e solte novamente)
Este modo deve esperar/ficar exatamente um pressionamento de tecla seguinte (próximo). Este Ex-modo é novamente dividido em "minúsculas" e "maiúsculas". Por exemplo, dê uma olhada na R
tecla. Eu troco para o Ex-Mode e então pressiono r
para obter ™
ou R
(usando shift) para obter ®
.
Edição nº 1: Modo Sticky Ex
No Wayland, se eu quiser escrever, əxample
eu mudo para o modo Ex e pressiono a tecla e para obter, ə
mas quando continuo escrevendo o resto da palavra, eu obtenho ə„ample
. O modo Ex no Wayland sempre parece travar por dois toques de tecla (corretamente para e
e incorretamente também para x
), o que é um pouco irritante porque eu tenho que pressionar backspace e digitar novamente.
Isso não acontece para aplicativos que passam pelo XWayland (por exemplo, vscode ou opera, que estão listados em xlsclients
). Lá, o Ex-Mode é (corretamente) aplicado apenas para o próximo pressionamento de tecla e não para dois.
Também verifiquei wayland events ( wev
) que fornece a seguinte saída para meu exemplo anterior:
[14: wl_keyboard] key: serial: 28470; time: 169408635; key: 108; state: 1 (pressed)
sym: ISO_Level3_Shift (65027), utf8: ''
[14: wl_keyboard] modifiers: serial: 0; group: 0
depressed: 00000080: Mod5
latched: 00000000
locked: 00000000
[14: wl_keyboard] key: serial: 28472; time: 169408793; key: 41; state: 1 (pressed)
sym: ISO_Level5_Latch (65042), utf8: ''
[14: wl_keyboard] modifiers: serial: 0; group: 0
depressed: 000000A0: Mod3 Mod5
latched: 00000000
locked: 00000000
[14: wl_keyboard] key: serial: 28474; time: 169408872; key: 41; state: 0 (released)
sym: NoSymbol (0), utf8: ''
[14: wl_keyboard] modifiers: serial: 0; group: 0
depressed: 00000080: Mod5
latched: 00000020: Mod3
locked: 00000000
[14: wl_keyboard] key: serial: 28476; time: 169408928; key: 108; state: 0 (released)
sym: ISO_Level3_Shift (65027), utf8: ''
[14: wl_keyboard] modifiers: serial: 0; group: 0
depressed: 00000000
latched: 00000020: Mod3
locked: 00000000
[14: wl_keyboard] key: serial: 28478; time: 169409344; key: 26; state: 1 (pressed)
sym: schwa (16777817), utf8: 'ə'
[14: wl_keyboard] modifiers: serial: 0; group: 0
depressed: 00000000
latched: 00000000
locked: 00000000
[14: wl_keyboard] key: serial: 28480; time: 169409468; key: 26; state: 0 (released)
sym: e (101), utf8: ''
[14: wl_keyboard] key: serial: 28481; time: 169409816; key: 53; state: 1 (pressed)
sym: x (120), utf8: 'x'
[14: wl_keyboard] key: serial: 28482; time: 169409917; key: 53; state: 0 (released)
sym: x (120), utf8: ''
[14: wl_keyboard] key: serial: 28483; time: 169410300; key: 38; state: 1 (pressed)
sym: a (97), utf8: 'a'
[14: wl_keyboard] key: serial: 28484; time: 169410390; key: 38; state: 0 (released)
sym: a (97), utf8: ''
[14: wl_keyboard] key: serial: 28485; time: 169410772; key: 58; state: 1 (pressed)
sym: m (109), utf8: 'm'
[14: wl_keyboard] key: serial: 28486; time: 169410863; key: 58; state: 0 (released)
sym: m (109), utf8: ''
[14: wl_keyboard] key: serial: 28487; time: 169411200; key: 33; state: 1 (pressed)
sym: p (112), utf8: 'p'
[14: wl_keyboard] key: serial: 28488; time: 169411290; key: 33; state: 0 (released)
sym: p (112), utf8: ''
[14: wl_keyboard] key: serial: 28489; time: 169411560; key: 46; state: 1 (pressed)
sym: l (108), utf8: 'l'
[14: wl_keyboard] key: serial: 28490; time: 169411650; key: 46; state: 0 (released)
sym: l (108), utf8: ''
[14: wl_keyboard] key: serial: 28491; time: 169411954; key: 26; state: 1 (pressed)
sym: e (101), utf8: 'e'
[14: wl_keyboard] key: serial: 28492; time: 169412066; key: 26; state: 0 (released)
sym: e (101), utf8: ''
O que realmente me surpreendeu um pouco porque esses eventos parecem estar corretos (mostra x
em vez de „
).
Problema nº 2: O símbolo por mil (‰) não está funcionando
O segundo problema não parece ser específico do Wayland porque também acontece com o XWayland.
Na 5
chave há o sinal de per mille no canto superior direito, então ele deve ser acessível com
o Ex-mode e, 5
mas isso literalmente imprime o dígito cinco. Eu verifiquei a configuração local do xkb que corresponde exatamente à versão mais recente no gitlab: https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/blob/master/symbols/de#L106
Está definido lá e certamente parece correto ou pelo menos plausível. Não consigo encontrar uma configuração onde permille
é definido em xkb. Talvez todos esses símbolos sejam codificados? Este permille
símbolo também é usado em muitos outros layouts xkb, então acho que provavelmente é um símbolo suportado e deve funcionar.
Talvez outra coisa manipule/capture essa combinação de teclas em particular? Porque GERMAN PENNY SIGN
com EX-mode e Shift
+ 5
→ ₰
funciona perfeitamente.
Como ajudar
Eu apreciaria muito todas as dicas e ideias sobre coisas que eu poderia tentar para encontrar o problema. Seria realmente incrível se alguns de vocês pudessem mudar temporariamente para o layout de teclado alemão de-e1, especialmente no Wayland (não precisa ser o Ubuntu) e me avisar se vocês podem reproduzir esses problemas, para me ajudar a descobrir se isso é algo que está quebrado na minha máquina, ou um bug no Wayland ou na configuração do layout xkb ou o que for.
Obrigado por reservar um tempo para ler essa longa pergunta e agradeço desde já pela sua ajuda.