Linux System Info:
OS: GNU/Linux x86_64
Kernel: 3.13.0-24-generic
Distro: Linux Mint 17 Qiana, Cinnamon 64-bit 2.2.16
[Based On: Ubuntu 14.04.5 LTS, Trusty Tahr]
由于包括手指损伤在内的残疾(脊柱损伤),我进行了一些修改,以便可以使用键盘的 CapsLock 键作为鼠标左键。 NumLock 被重新映射为 CapsLock 功能。
当使用 CapsLock 作为左键单击和左键双击时,几乎一切都可以正常工作,但下面列出的一些情况却不能...
编辑2019-01-10
长篇文章的其余部分已被删除 - 请参阅下面我的答案,了解如何将 CapsLock 键设置为鼠标左键,并将 NumLock 重新映射为 CapsLock。
答案1
回答我自己的问题...
事实证明,将 CapsLock 设置为鼠标左键比预期简单得多。 [注意:物理鼠标左键继续正常运行。]
将 CapsLock 映射到鼠标左键(66 是 CapsLock 键码):
$ xmodmap -e“键码 66 = Pointer_Button1”
将 NumLock 映射到 CapsLock(77 是 NumLock 按键代码):
$ xmodmap -e "键码 77 = Caps_Lock"
注意:这意味着 NumLock 将充当 CapsLock 替代键,NumLock 的功能将丢失(无论如何我都不会使用它,但如果您使用 NumLock,请使用不同的键,例如 Pause、ScollLock 等)。
启用鼠标键:
$ xkbset 鼠标键
注意:某些发行版上默认不安装 xkbset,这与在系统设置的“辅助功能”部分中启用鼠标键不同。
就是这样——一切都完成了。
然而,用户可能希望在启动时自动完成这些任务。这就是我所做的:
创建常规文件/home/user/.Xmodmap
并插入以下行。
! 77 is the NumLock key code, 66 is the CapsLock key code.
! Map CapsLock to the left mouse button and map NumLock to
! CapsLock, i.e. NumLock acts as the CapsLock key used to.
keycode 77 = Caps_Lock
keycode 66 = Pointer_Button1
注意:.Xmodmap
文件中的注释以!
.
事实证明,在启动时运行 xmodmap 来加载~/.Xmodmap
文件肯定比预期的要困难 - 问题是它必须在启动序列的最后阶段完成,否则 XKB 将不会启动,并且 XKB 将在加载时覆盖 xmodmap 更改。
放置线条...
/usr/bin/xmodmap /home/user/.Xmodmap
/usr/bin/xkbset mousekeys
...在~/.profile
、~/.xinitrc
、 中~/.xsessionrc
都失败了。
创建文件/etc/X11/Xsession.d/80_xmodmap_user_added
来运行上面的命令,如建议的那样如何在 Ubuntu 16.04 中持久地重新映射键?不适合我。
我很不情愿地使用了图形启动工具,在 Linux Mint 上如下(您的发行版可能有所不同):
Mint Menu --> Preferences --> Startup Applications
我创建了 2 个条目,其中一个用于调用以下每个命令:
/usr/bin/xmodmap /home/user/.Xmodmap
/usr/bin/xkbset mousekeys
根据记录,我不需要在启动应用程序条目中设置自动启动延迟,但如果这对您不起作用,请尝试添加延迟。 XKB 需要在命令运行之前启动,否则您的更改将被它覆盖。
这一切对我来说都很完美;启动时 CapsLock 用作鼠标左键(单击和双击均可)。
编辑:那些不介意必须按修饰键来打开和关闭 CapsLock 的用户可以将 CapsLock 指定为鼠标左键,并使用下面的行将 CapsLock 切换指定为 Shift+CapsLock。在这种情况下,无需将 CapsLock 切换分配给 NumLock 键(如 Akhil 的非常有用的评论中所建议的)。
keycode 66 = Pointer_Button1 Caps_Lock