Ada*_*ski 23 xorg keyboard synergy virtualbox linux-mint
有时,当我在使用全屏 VirtualBox 来宾时使用我的机器之间的协同作用时,我会遇到一些奇怪的键修饰符打开的情况。如果它们存在于我的键盘上(如 Shift_L),我只需点击它,它们的状态就会重置,我可以继续输入小写字母。但是其中一些根本没有映射到我的键盘(例如 ISO_Level3_Shift),所以我根本没有办法关闭它们!
如何重置它们?现在,我所能做的就是重新启动计算机,但这是一个相当尴尬的解决方案。
我想要的只是一些可以人为“点击”所有可能的键盘修饰符的程序,因此它们的状态将被重置。可以做到吗?
我使用 Mint 14(Ubuntu 12.10 Quantal 的克隆)。
小智 27
如果你已经xdotool
安装,你可以简单地使用
xdotool keyup ISO_Level3_Shift
Run Code Online (Sandbox Code Playgroud)
它向 X 服务器发送一个密钥释放(当然是 ISO_Level3_Shift)事件。
但是你想要一个程序来释放所有的修饰键。可以使用 xdotool 轻松实现这一目标,否则我不知道定义了哪些修饰键符号。找到它们的一种可能方法是解析keysymdef.h
:
grep '^#define' /usr/include/X11/keysymdef.h | sed -r 's/^#define XK_(\S*?).*$/\1/;' | grep -E '_(L|R|Level.*)$'
Run Code Online (Sandbox Code Playgroud)
它返回一些肯定是修饰符的键符。不幸的是,我现在找不到修饰键的任何精确定义,所以我不知道这是否是一个完整的列表。
附加| xargs xdotool keyup
到上述管道将释放所有这些密钥。在我的系统上,它执行以下命令:
xdotool keyup Shift_L Shift_R Control_L Control_R Meta_L Meta_R Alt_L Alt_R Super_L Super_R Hyper_L Hyper_R ISO_Level2_Latch ISO_Level3_Shift ISO_Level3_Latch ISO_Level3_Lock ISO_Level5_Shift ISO_Level5_Latch ISO_Level5_Lock
Run Code Online (Sandbox Code Playgroud)
rkj*_*nsn 11
我发现对于我的系统,发布的解决方案xdotool
通常没有涵盖卡住的密钥,并且setxkbmap
在我的系统上运行似乎没有完成任何事情。
我发现的解决方案是使用x11vnc
. 具体来说,我使用以下命令:
x11vnc -deny_all -clear_keys -timeout 1
Run Code Online (Sandbox Code Playgroud)
-clear_keys
是关键部分,在这里。它指示x11vnc
在退出时清除所有按下的键。-timeout 1
告诉x11vnc
在没有连接的情况下 1 秒后退出,并-deny_all
确保在该窗口期间没有人可以连接。
有时卡住的键会阻止与桌面进行任何有意义的交互,在这种情况下,我将通过 ssh 执行以下操作:
env DISPLAY=:0 XAUTHORITY=/home/[username]/.Xauthority x11vnc -deny_all -clear_keys -timeout 1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7739 次 |
最近记录: |