在Linux控制台上重新映射大写锁定以进行转义,并菜单进行组合


9

运行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。所以我也许可以习惯。将Menu键设置为Compose并不是一件容易的事,因为有大量的nul分配的键码,并且没有明显的竞争者可以替代Menu的其他名称。

我还意识到,组合绑定本身比在X下使用的绑定要受限制得多,而且我经常使用的大多数特殊字符都不存在。也许有一个实用程序可以将X语法撰写绑定转换为loadkeys可以读取的内容?


1
传统上:使用loadkeys。我认为现在您可以使Linux控制台读取X配置,但是我不知道它是如何工作的。
吉尔(Gilles)“所以,别再邪恶了”,

Answers:


8

您必须编辑控制台键盘映射。在我的控制台上,我已将Escape映射到Caps Lock,并将Caps Lock映射到Escape。运作方式如下。

  1. 首先,您需要找到您的键盘映射。我使用标准的美国布局。在我的系统上,它位于下/usr/share/keymaps/i386/qwerty/us.map.gz
  2. 以新名称复制文件,例如us-nocaps.map.gz
  3. 解压缩文件并在文本编辑器中打开它: gunzip us-nocaps.map.gz && vim us-nocaps.map
  4. 将文件中的映射更改为您喜欢的名称,例如,我已将keycode 58 = Caps_Lock其更改为keycode 58 = Escape
  5. Gzip文件并加载:gzip us-nocaps.map && loadkeys us-nocaps

还有一件事:您可能必须以某种方式配置您的发行版,以确保新的键盘映射始终在引导时加载,否则,您将不得不一直手动加载键盘映射loadkeys。您如何执行此操作取决于您使用的发行版。


1
该gunzip解步骤不是确有必要在这里-在大多数版本vim,你就应该能够到vim us-nocaps.map.gz
glittershark

3

对于较新的Debian发行版,您不再需要所有这些。

键盘文件描述了键盘的属性。读取它是setupcon(1)为了在控制台上配置键盘。在Debian系统中,描述了默认的键盘布局/etc/default/keyboard,该布局在X和控制台之间共享。(男键盘)

/etc/default/keyboard设置XKBOPTIONS="caps:escape"然后执行:

~$ sudo setupcon

可用的所有键盘型号,布局,变体和选项的描述,请参见/usr/share/X11/xkb/rules/xorg.lst。”(手动键盘)


1

在Cedric的一些帮助下,我发现Ubuntu尚未在$ man loadkeys应该称为(/usr/share/keymaps)的位置安装键盘映射。这是一个全新的安装,所以也许我只需要安装一个软件包即可获取除我在安装过程中选择的键盘映射以外的其他键盘映射。

为了解决这个问题,并尝试使解决方案更加健壮和方便,我正在这样做:

    $ sudo dumpkeys | sed 's/CtrlL_Lock/Escape/' | sudo loadkeys

尽管我对Cedric的系统为何Caps_Lock用于大写锁定和地雷使用感到有些困惑CtrlL_Lock,但无论如何它都可以正常工作。


有趣的是,我不知道这些键映射在分布之间的差异。我个人使用Gentoo,键映射来自sys-apps / kbd-1.15包。
Cedric

2
从Ubuntu 10.04开始,按键映射位于console-data软件包中。默认情况下未安装它们。您可以/usr/share/keymaps通过运行找出哪个软件包将文件安装到其中apt-file search /usr/share/keymaps
吉尔(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.