Estou entrando em um sistema Linux remoto através da Citrix em uma máquina Windows e depois através de uma solução de área de trabalho remota adicional para a máquina Linux. Infelizmente, há um bug em algum lugar da parte Citrix, de modo que quando eu pressiono Alt-Gr em um teclado alemão, o sistema recebe eventos extras de chave, o que atrapalha a interpretação. No final, qualquer combinação com Alt-Gr (na maior parte do tempo) não funciona. Com xev
pressionando apenas a tecla Alt-Gr, parece:
KeyPress event, serial 38, synthetic NO, window 0x2600001,
root 0xf3, subw 0x2600002, time 678212244, (37,36), root:(84,104),
state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 38, synthetic NO, window 0x2600001,
root 0xf3, subw 0x2600002, time 678212253, (37,36), root:(84,104),
state 0x4, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
XKeysymToKeycode returns keycode: 92
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 38, synthetic NO, window 0x2600001,
root 0xf3, subw 0x2600002, time 678212340, (37,36), root:(84,104),
state 0x84, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 38, synthetic NO, window 0x2600001,
root 0xf3, subw 0x2600002, time 678212351, (37,36), root:(84,104),
state 0x80, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
XKeysymToKeycode returns keycode: 92
XLookupString gives 0 bytes:
XFilterEvent returns: False
Observe o Control_L
extra que não deveria estar lá. Sem este Citrix intermediário (apenas a solução de desktop remoto), funcionaria e se pareceria com
KeyPress event, serial 38, synthetic NO, window 0x2600001,
root 0xf3, subw 0x2600002, time 679278220, (37,44), root:(84,112),
state 0x0, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
XKeysymToKeycode returns keycode: 92
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 38, synthetic NO, window 0x2600001,
root 0xf3, subw 0x2600002, time 679278313, (37,44), root:(84,112),
state 0x80, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
XKeysymToKeycode returns keycode: 92
XLookupString gives 0 bytes:
XFilterEvent returns: False
que funciona muito bem.
Atualmente, não há uma maneira fácil de corrigir o Citrix intermediário.
Você conhece um hack para forçar o primeiro caso a esquecer o Control_L
extra (ou liberá-lo automaticamente)?
Se de alguma forma o sistema veria meu ISO_Level3_Shift
com state 0x0
, provavelmente funcionaria.