使用 CapsLock 键模拟鼠标左键

使用 CapsLock 键模拟鼠标左键

我希望键盘上的 CapsLock 键可以充当鼠标左键。我希望能够执行单击、双击、发送鼠标按下和鼠标松开事件等。

现在我正在使用 AutoHotkey 和以下脚本

Capslock::LButton
Return

该脚本有效,但并非在每个应用程序中都有效,也不是每次都有效。例如,它在任务管理器中不起作用,它通常也不在安装程序 UI 和其他地方起作用。

在某些负载下,脚本/AutoHotkey 在应用程序的窗口中也无法工作。例如,如果应用程序正在执行大量 IO,则脚本可能会或可能不会工作。

这种方法时常出现问题,很烦人。

因此,请提供一些关于如何改进脚本的建议,或者推荐一些比 AutoHotkey 更好的替代方案。

答案1

问题没有指定窗口/操作系统(尽管有人可能会猜测......),因此为了完整性,这是(现代)X11 中的答案:

  1. 找到与 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

  2. 启用鼠标键:

    $ xkbset m

  3. 映射您想要的键:

    xmodmap -e ‘键码 66 = Pointer_Button1’

或者,如果你想要更花哨一点,可以使用一些修饰符来保留 Caps_Lock:

xmodmap  -e 'keycode 66 = Pointer_Button1 Caps_Lock'

将保留 CapsLock 功能,如果你按Shift+CapsLock

答案2

为了简单的解决方案,我建议设置鼠标键:Control Panel\All Control Panel Items\Ease of Access Center\Set up Mouse Keys

这样您就可以通过使用数字键盘区域将键盘用作鼠标。
如何使用指南。


如果你想通过更改键来定制它,那么我建议使用整洁鼠标

NeatMouse 有英语、法语、德语、希腊语、意大利语、波兰语和乌克兰语翻译,有普通版和便携版,小巧、方便、高效,而且完全免费!

答案3

好的,事实证明有一个黑客可以让 AutoHotkey 在任务管理器等中工作。

实现与管理程序的交互

试过了。有效。到目前为止一切顺利。

答案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

相关内容