运行 XI 时,使用 .xmodmaprc 重新映射某些键:
! Make it so that both Caps Lock and Escape do Escape
clear Lock
keysym Caps_Lock = Escape
! Remap the menu key as Compose
keysym Menu = Multi_key
我怎样才能在控制台上完成同样的事情?
更新
除了我的答案中给出的部分解决方案之外,我还了解到控制台将 CTRL- 映射.
到 Compose。所以我也许能够习惯这一点。将菜单键设置为 Compose 并不容易,因为存在大量未分配的键码,并且没有明显的菜单替代名称竞争者。
我还意识到,撰写绑定本身比我在 X 下习惯的绑定要有限得多,而且我经常使用的大多数特殊字符都不在那里。也许有一个实用程序可以将 X 语法组合绑定转换为loadkeys
可以读取的内容?
答案1
您必须编辑控制台键盘映射。在我的控制台上,我已将 Escape 映射到 Caps Lock,并将 Caps Lock 映射到 Escape。这是它的工作原理。
- 首先,您需要找到您的键盘映射。我使用标准的美国布局。在我的系统上,它位于
/usr/share/keymaps/i386/qwerty/us.map.gz
. - 使用新名称复制该文件,例如
us-nocaps.map.gz
. - 解压文件并在文本编辑器中打开它:
gunzip us-nocaps.map.gz && vim us-nocaps.map
- 根据您的喜好更改文件中的映射,例如我将
keycode 58 = Caps_Lock
其更改为keycode 58 = Escape
. - Gzip 文件并加载它:
gzip us-nocaps.map && loadkeys us-nocaps
.
另一件事:您可能必须以某种方式配置您的发行版,以确保新的键盘映射始终在启动时加载,否则您将必须始终手动加载键盘映射loadkeys
。如何执行此操作取决于您使用的发行版。
答案2
对于较新的 Debian 发行版,您不再需要这一切。
键盘文件描述了键盘的属性。读取它是
setupcon(1)
为了配置控制台上的键盘。在 Debian 系统中,默认键盘布局在 中 进行了描述,/etc/default/keyboard
并且在 X 和控制台之间共享。 (男人键盘)
设置然后执行/etc/default/keyboard
:XKBOPTIONS="caps:escape"
~$ sudo setupcon
所有可用键盘型号、布局、变体和选项的描述可在
/usr/share/X11/xkb/rules/xorg.lst
“。”(man 键盘)中找到
答案3
在 Cedric 的帮助下,我发现 Ubuntu 没有安装据说$ man loadkeys
应该安装的键盘映射 ( /usr/share/keymaps
)。这是一个全新的安装,所以也许我只需要安装一个软件包即可获取除我在安装过程中选择的键盘映射之外的键盘映射。
为了代替追求这个角度,并努力使解决方案更加健壮和方便,我这样做:
$ sudo dumpkeys | sed 's/CtrlL_Lock/Escape/' | sudo loadkeys
虽然我有点困惑为什么塞德里克的系统用于Caps_Lock
大写锁定而我的系统使用CtrlL_Lock
,但无论如何它都在工作。
答案4
echo $"\n(sleep 5 && setxkbmap -option caps:swapescape) &" >> ~/.profile
为我在 Linux Mint Cinnamon 上工作(不仅适用于终端,还适用于 GUI)。
这sleep
部分对我来说是必要的,以推迟 的执行setxkbmap
。您可以尝试不使用它,看看它是否有效。