Answers:
该工具操作的键盘布局虚拟控制台是loadkeys
,dumpkeys
和showkey
。阅读他们的手册,并告诉自己有关他们的复杂性。
请注意,这些工具只能在虚拟控制台中使用,而不能在gnome等图形环境中的终端仿真器中使用。了解差异的信息请阅读以下问题和答案:https : //askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal。
这是做您想要做的一个简短指南:
保存当前的键盘布局:
$ dumpkeys > backup.kmap
如果出现问题,您可以使用以下命令来还原键盘映射:
$ sudo loadkeys backup.kmap
如果键盘太混乱了,以至于您甚至无法做到这一点,那么不涉及古老内核魔术的唯一选择就是重启。
检查将哪些键码分配给您的键:
$ showkey
现在按ESC键和CAPSLOCK键。按键代码应显示在屏幕上。注意键码。在我的系统上,ESC的键码为1,而CAPSLOCK的键码为58。showkey
将在闲置10秒钟后终止(至少在我的ubuntu 10.04上如此)。
请注意dumpkeys中的ESC和CAPSLOCK键的名称:
$ dumpkeys | grep 1
...
keycode 1 = Escape
...
$ dumpkeys | grep 58
...
keycode 58 = CtrlL_Lock
...
注意dumpkeys中的keymap行:
$ dumpkeys | head -1
keymaps 0-127
创建一个用于切换ESC和CAPSLOCK的键盘映射文件:
keymaps 0-127
keycode 1 = CtrlL_Lock
keycode 58 = Escape
加载键盘映射:
$ sudo loadkeys swap_esc_capslock.kmap
测试:测试CAPSLOCK键是显而易见的。只需按它们的CAPSLOCK键,然后检查其他键是否大写。要测试ESC键,可以先按CTRL + V,再按ESC。它应该打印^[
。CTRL + V使外壳逐字打印下一个键,而不是对其进行解释。
要在每次重新启动时加载此修改,请在/etc/rc.local
文件中添加以下行:
/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap
从各个页面收集的信息,包括但不限于:
/usr/bin/loadkeys
,/etc/rc.local
所以使用起来更安全。并且sudo
在中不需要rc.local
。
rc.local
每次系统引导时都会执行in命令。@ bukzor的sudo setupcon
是不是在rc.local
,这是一个一次性设置命令,替换系统默认的键盘映射,无需添加任何运行时启动代码。添加loadkeys
到rc.local
,会添加额外的启动代码,并复制系统默认loadkey已完成的操作。该rc.local
方法实际上可能不太安全,因为它依赖于键盘映射的非标准路径。
setupcon
方法。添加您自己的答案或根据需要编辑我的答案。
setupcon
。看来,八月作出的假设sudo setupcon --save
会进入rc.local
我不认为这是正确的,但如果这样做,你不需要 sudo
在rc.local
。我认为我们需要更多信息才能更新您的答案。主要问题是“如何安装修改后的键盘映射,使其在启动过程中自动加载?” 我真的不知道哪种方法更好,rc.local
或者安装键盘映射,甚至安装键盘映射都可以。我最近一直在研究这个问题,我将在这里检查。
如果您只想拥有两个capslocks键(使用另一个名称的capslock仍然没有用),请使用“ ctrl:nocaps”而不是“ ctrl:swapcaps”。
X11:(另见:/usr/share/X11/xkb/rules/base.lst
)
sudo vim /etc/default/keyboard
XKBOPTIONS="ctrl:swapcaps"
udevadm trigger --subsystem-match=input --action=change
sudo restart lightdm
文本控制台:(从setupcon窃取)
#!/bin/sh
. /etc/default/console-setup
. /etc/default/keyboard
ckbcomp $acm_option $rules_option -model "$XKBMODEL" \
"$XKBLAYOUT" "$XKBVARIANT" "$XKBOPTIONS" \
| gzip -9 2>/dev/null >/etc/console-setup/cached.kmap.gz
loadkeys /etc/console-setup/cached.kmap.gz
sudo setupcon --save
可以使更改永久生效,而不用编辑rc.local。这基本上与dumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz