在虚拟终端下面使用Emacs不能使用右边的Alt键问题的解决

一直困惑我的就是我的系统在虚拟终端(通过 Alt+Ctrl+Fx 来得到的那种)里面 用 Emacs 的时候右边的 Alt 键一直不能用作 Meta 键,每次按 M-x 都要跑到 大老远去按 Esc ,实在是很不方便,所以我特别讨厌在虚拟终端下面使用Emacs ,但是今天在 Linuxsir 的一个帖子那里得到 galilette 的帮助,知道了如何 解决这个问题。原贴请看这里

问题的原因在于 keymap 。 keycode 100 被 map 到了 AltGr 上而不是 Alt 上, 所以要修改 keymap ,要实时修改可以用如下的命令:

echo -e `dumpkeys | grep keymaps` '\nkeycode 100 = Alt' | loadkeys

来修改,如果要系统启动的时候自动修改,在 Debian 系统的 /etc/console-tools/ 目录下面有一个 remap 的 sed 脚本,用于实现重新定义 keymap 的内容,只要在里面加上:

s/AltGr/Alt/;

重启之后也能在 Emacs 里面正确地使用右边的 Alt 键了!同样的道理,我的终 端下面即使打开了 Caps Lock ,按 c 还是输入小写的 c ,要输入大写必须按 Shift c 才行,用 showkey 命令查看了 c 的 keycode 是 0x2e 即 48 ,然后 用 dumpkeys | grep 48 看到原来那个键被映射到好多东西上面,于是我又在 /etc/console-tools/remap 里面再加了一行:

s/keycode *46.*$/keycode 46 = c/;

这下就可以正常使用了! :)