按下 AltGr 键时如何消除多余的 Ctrl_L 事件?

按下 AltGr 键时如何消除多余的 Ctrl_L 事件?

我通过 Citrix 登录到远程 Linux 系统到 Windows 计算机,然后通过其他远程桌面解决方案登录到 Linux 计算机。不幸的是,Citrix 部分存在一个错误,因此当我在德语键盘上按 Alt-Gr 时,系统会收到额外的按键事件,这会扰乱解释。最后,任何与 Alt-Gr 的组合(大多数时候)都不起作用。单独按下xevAlt-Gr 键看起来像:

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

Control_L请注意不应该存在的额外内容。没有这个中间 Citrix(仅远程桌面解决方案),它可以工作并且看起来像

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

效果很好。

目前,没有简单的方法来修复中间 Citrix。

您知道强制第一个案例忘记额外内容Control_L(或使其自动释放)的黑客吗?

如果系统以某种方式看到我ISO_Level3_Shift带有 a state 0x0,它可能会起作用。

相关内容