下一页 上一页 目录

15. loadkeys 和 xmodmap 的使用示例

在键盘上切换 Caps Lock 和 Control 键(假设您使用键位映射 0-15;使用 dumpkeys | head -1 检查)

        % loadkeys
        keymaps 0-15
        keycode 58 = Control
        keycode 29 = Caps_Lock
        %
仅在 X 环境下切换它们
        % xmodmap .xmodmaprc
其中 .xmodmaprc 文件包含以下行
        remove Lock = Caps_Lock
        remove Control = Control_L
        keysym Control_L = Caps_Lock
        keysym Caps_Lock = Control_L
        add Lock = Caps_Lock
        add Control = Control_L
关于键位编号是怎么回事?退格键在 Linux 下是 14,在 X 下是 22?好吧,编号最好被认为是任意的;可以使用 showkey(1) 找到键的 Linux 编号,使用 xev(1) 找到 X 编号。通常 X 编号会比 Linux 编号大 8。

人们还喜欢更改功能键的绑定。假设您想让 F12 产生字符串 “emacs ”。那么

        % loadkeys
        keycode 88 = F12
        string F12 = "emacs "
        %
这样做就可以了。更明确地说,步骤如下:(i)使用 showkey(1) 查找要重新映射的键的键码。(ii)保存当前的键位映射,复制一份并编辑它
        % dumpkeys > my_keymap
        % cp my_keymap trial_keymap
        % emacs trial_keymap
        % loadkeys trial_keymap
        %
可以通过查看 dumpkeys 的输出来猜测表的格式,并在 keymaps(5) 中有文档说明。当新的键位映射按预期工作时,您可以添加一个调用
        loadkeys my_new_keymap
/etc/rc.local 或类似文件中,以便在启动时自动执行它。请注意,更改修饰键是很棘手的,新手很容易陷入只有专家才能解决的境地。

键位映射的默认目录是 /usr/lib/kbd/keymaps。键位映射的默认扩展名是 .map。例如,loadkeys uk 可能会加载 /usr/lib/kbd/keymaps/i386/qwerty/uk.map。(对于 kbd-0.95 及更早版本,这将是 /usr/lib/kbd/keytables/usr/lib/kbd/keytables/uk.map。)

(在我的机器上)/dev/console/dev/tty0 的符号链接,内核将 /dev/tty0 视为当前 VT 的同义词。XFree86 1.3 更改了 /dev/tty0 的所有者,但在完成后不会重置它。因此,loadkeysdumpkeys 可能会失败,因为其他人拥有 /dev/tty0;在这种情况下,您可以先运行 X。请注意,当不在控制台(且不是超级用户)时,您无法更改键盘映射。

15.1 “我只能用一根手指打字”

“可以使 Shift、Ctrl 和 Alt 键表现为切换键吗?”

是的,在输入

        % loadkeys
        keymaps 0-15
        keycode 29 = Control_Lock
        keycode 42 = Shift_Lock
        keycode 56 = Alt_Lock
        %
左边的 Control、Shift 和 Alt 键将充当切换键。涉及的数字由 showkey 显示(通常左和右 control、shift 和 alt 分别是 29、97、42、54、56、100),函数是 Control_Lock、Shift_Lock、Alt_Lock、ALtGr_Lock。

“那么“粘滞”修饰键呢?”

自 1.3.33 版本以来,内核了解“粘滞”修饰键。这些键作用于下一个按下的键。因此,以前需要 3 个符号的序列 Shift_Lock a Shift_Lock 来键入“A”,现在可以使用 2 个符号的序列 SShift_Lock a。您可以输入

        % loadkeys
        keymaps 0-15
        keycode 54 = SShift
        keycode 97 = SCtrl
        keycode 100 = SAlt
        %
使右边的 Shift、Ctrl、Alt 成为左边键的粘滞版本。这将允许您用一只手通过三次击键来键入 Ctrl-Alt-Del。

这些示例中的 keymaps 行应涵盖您正在使用的所有键位映射。您可以通过以下方式找到您正在使用的键位映射

        % dumpkeys | head -1

15.2 X 环境下的粘滞键

以下文本由 Piotr Mitros 贡献。

XFree86 支持一种辅助功能选项,允许残疾用户单手打字。启用粘滞键后,用户可以按下一个修饰键(ctrl、alt、shift),然后按另一个键,而不是必须在按字母的同时按住修饰键。

要启用粘滞键,首先确保 xkb 扩展已启用(这在初始 X 服务器配置期间完成,通常默认启用)。接下来,使用 +accessx 选项运行 X 服务器。如果您使用 startx,可以运行 startx -- +accessx 或将 +accessx 添加到 startx 脚本中的 serverargs 行。如果您使用 xdm,请将 +accessx 添加到 /etc/X11/xdm/Xservers 中的相应服务器行。

也可以使用一些终端用户实用程序在运行的 X 服务器上启用 X 辅助功能。

启用 X 辅助功能后,连续按五次 shift 键以启用粘滞键。要禁用粘滞键,可以再次按五次 shift 键,或者在按住修饰键的同时按下一个键。

XFree86 还支持慢速键、重复键、弹跳键和声音提示。xkbcomp 可用于生成 .xkm 文件以启用这些功能。相应的 xkbcomp 命令列在 /usr/X11R6/lib/X11/xkb/compat/accessx 中。遗憾的是,确切的过程仍未记录在案。


下一页 上一页 目录