我担心这要么是重复的,要么是难以解释的情况,拭目以待。
我有一个远程遗留系统,在“旧”xwindow 系统上运行,上面有一个“旧”vnc 服务器。在那里,我得到了一个运行良好的 xemacs,几十年来一直如此。xemacs 的设置使得 Shift_L+Button1 Control_L+Button1 Alt_L+Button 都映射到 xemacs 函数,并且所有这些都可以在本地或通过 man other dsitro linux 版本 vnclient 到这个 vncserver 上工作。正常工作意味着我的所有 vnclient 都会发送任何使那些 Modifier+Button1 工作所需的信息
现在在 1 个节点上我安装了 ubuntu 服务器 16.04 并安装了 xfce4。
在 xfce4 上,我得到了所有我知道的可能的键盘快捷键(我可能错过了一些?)以便不使用任何快捷方式。
设置->键盘->应用程序快捷方式为空
设置->键盘->布局是系统默认设置(我测试了 gebneric 101 键 PC,没有修复)
设置->窗口管理器->键盘全部清除
设置->窗口管理器调整->辅助功能->抓取和移动窗口的键->无
我尝试删除所有可以拦截 shift/alt/ctrl 修饰键的快捷方式。
然后我用 xev 检查了我的 xserver 并看到了这个
Alt_L+Button1 KeyPress 事件,序列 33,合成 NO,窗口 0x2800001,根 0x49f,subw 0x0,时间 7015251,(14,146),根:(885,667),状态 0x0,键码 64(keysym 0xffe9,Alt_L),same_screen YES,XLookupString 给出 0 个字节:XmbLookupString 给出 0 个字节:XFilterEvent 返回:False
ButtonPress event, serial 36, synthetic NO, window 0x2800001,
root 0x49f, subw 0x0, time 7016124, (14,146), root:(885,667),
state 0x8, button 1, same_screen YES
ButtonRelease event, serial 36, synthetic NO, window 0x2800001,
root 0x49f, subw 0x0, time 7017228, (14,146), root:(885,667),
state 0x108, button 1, same_screen YES
KeyRelease event, serial 36, synthetic NO, window 0x2800001,
root 0x49f, subw 0x0, time 7017843, (14,146), root:(885,667),
state 0x8, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Control_L+Button1 KeyPress 事件,序列 36,合成 NO,窗口 0x2800001,根 0x49f,subw 0x0,时间 7093556,(5,153),根:(937,652),状态 0x0,键码 37(keysym 0xffe3,Control_L),same_screen YES,XLookupString 给出 0 个字节:XmbLookupString 给出 0 个字节:XFilterEvent 返回:False
ButtonPress event, serial 36, synthetic NO, window 0x2800001,
root 0x49f, subw 0x0, time 7094508, (5,153), root:(937,652),
state 0x4, button 1, same_screen YES
ButtonRelease event, serial 36, synthetic NO, window 0x2800001,
root 0x49f, subw 0x0, time 7095420, (5,153), root:(937,652),
state 0x104, button 1, same_screen YES
KeyRelease event, serial 36, synthetic NO, window 0x2800001,
root 0x49f, subw 0x0, time 7096076, (5,153), root:(937,652),
state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
我的修饰符 Tc$ xmodmap -pm xmodmap: 每个修饰符最多 4 个键,(括号中为键码):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_L (0x42), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
当使用 xemacs 对我的旧式 x11 服务器执行 xvncviewer 时,执行 ie decrive-key 并且执行 + xemacs 时仅收到无修饰符。
由于远程 vncservers 可以从其他客户端很好地运行,因此我将其删除(此外它已经运行了几十年)。
由于我的所有其他 vnclient(Ubuntu 14.04、debian、redhat)都运行正常,因此我将它们划掉。
只有这个 Ubuntu 16.04 + xfce4 似乎有问题。
不知道下一步该看什么。
干杯,Phi