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