我希望键盘上的 CapsLock 键可以充当鼠标左键。我希望能够执行单击、双击、发送鼠标按下和鼠标松开事件等。
现在我正在使用 AutoHotkey 和以下脚本
Capslock::LButton
Return
该脚本有效,但并非在每个应用程序中都有效,也不是每次都有效。例如,它在任务管理器中不起作用,它通常也不在安装程序 UI 和其他地方起作用。
在某些负载下,脚本/AutoHotkey 在应用程序的窗口中也无法工作。例如,如果应用程序正在执行大量 IO,则脚本可能会或可能不会工作。
这种方法时常出现问题,很烦人。
因此,请提供一些关于如何改进脚本的建议,或者推荐一些比 AutoHotkey 更好的替代方案。
答案1
问题没有指定窗口/操作系统(尽管有人可能会猜测......),因此为了完整性,这是(现代)X11 中的答案:
找到与 CapsLock 对应的键码 - 例如通过运行
xev
并寻找关键代码在按下 CapsLock 键的同时输出:$ xev | grep keycode state 0x10, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES, state 0x12, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES, 如果你使用的是“普通”(即 PC)键盘,它应该是 66
启用鼠标键:
$ xkbset m
映射您想要的键:
xmodmap -e ‘键码 66 = Pointer_Button1’
或者,如果你想要更花哨一点,可以使用一些修饰符来保留 Caps_Lock:
xmodmap -e 'keycode 66 = Pointer_Button1 Caps_Lock'
将保留 CapsLock 功能,如果你按Shift
+CapsLock
答案2
答案3
答案4
本着 Radovan Garabik 的回答精神(对于使用基于 X11 的操作系统(例如 Kubuntu)的人来说,如果您使用的是 Windows,则不适合您,请坚持使用 AutoHotKey 解决方案。)我让它工作而无需禁用我的数字键盘。这需要在您的系统上安装xbindkeys
和软件包。xdotool
我正在寻找 CapsLock = 左键单击,这应该是类似的。经过多次试验,我发现使用xdotool
而不是可以获得更好的结果xte
。
在我的~/.bashrc
(或适合您系统的任何启动脚本)中,我添加了以下行:
/usr/bin/xmodmap -e "keycode 66 ="
这将删除 Caps Lock 的“锁定”行为,并将该键(键 66)分配为空。我曾尝试将其放在其他地方,例如.xinitrc
,但它们从未奏效。它在中相当安全,.bashrc
即使它会在每次打开终端会话时重新运行(取决于您的.bashrc
整体设置)。
我xbindkeys
使用以下行创建了文件 ~/.xbindkeysrc:
"xdotool mousedown 1"
c:66
"xdotool mouseup 1"
release + c:66
重新启动或运行source ~/.bashrc
应该可以使该xmodmap
部件正常工作。要重新加载xbindkeys
,请尝试以下操作:
killall xbindkeys
xbindkeys -f ~/.xbindkeysrc