Como se livrar do evento Ctrl_L redundante quando a tecla AltGr é pressionada?

1

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.

    
por Gerenuk 14.09.2016 / 13:44

0 respostas