重新映射 Caps Lock 以撰写

Jar*_*und 6 linux x11 console keyboard-layout compose-key

因为尽管使用 US Dvorak 作为我的布局,我有时还是需要使用斯堪的纳维亚字母,所以我想使用 Caps Lock 作为组合键。(我根本不需要 Caps Lock,我不是论坛巨魔)

怎样才能做到这一点?

将 Linux Mint 17 与 xfce 结合使用,如果这有所不同的话。

作为记录,我是这台 PC 的唯一用户,并且希望将其设置为系统默认值,主要是在 xorg 中,但如果这不是太多苦差事,也可以在 tty 中使用。

Gil*_*il' 12

X11(经典)

xev从终端运行程序以查看密钥发送的CapsLock密钥代码。这是与按键对应keycodeKeyPress event行的第三行之后的数字。在 PC 上,密钥代码是 66。

创建一个.Xmodmap在您的主目录中调用的文件并添加该行

keycode 66 = Mode_switch
clear Lock
Run Code Online (Sandbox Code Playgroud)

Mode_switch是 X11 赋予的奇怪名称Composeclear Lock有必要避免键偶尔像 Caps Lock 一样起作用,即使它不是 Caps Lock(Lock是 Caps Lock 修饰符,当修饰符声明和 keysym 声明不一致时,某些应用程序的行为会有点奇怪)。或者,您可以使用行

keysym Lock = Mode_switch
clear Lock
Run Code Online (Sandbox Code Playgroud)

这会导致当前发送 Caps Lock 的任何键被反弹到发送 Compose。无论哪种方式,您都需要安排命令

xmodmap ~/.Xmodmap
Run Code Online (Sandbox Code Playgroud)

在会话开始时执行。这是一个常见的约定,但并非所有分发/桌面环境的组合都会自动执行。如果没有,请将命令添加到会话启动时执行的命令列表中(在 XFCE4 配置编辑器中,转到“会话和启动”?“应用程序自动启动”并添加该命令)。

X11 (XKB)

XKB 更简洁、功能更强大,但通常比 xmodmap 使用起来更麻烦。标准配置中有一个预设可以执行您想要的操作,因此在您的情况下很容易:运行以下命令:

setxkbmap -option compose:caps
Run Code Online (Sandbox Code Playgroud)

有关如何在会话开始时运行此命令的信息,请参阅上一节。

Linux 控制台

找出密钥的CapsLock密钥代码。showkey在文本控制台上运行,按CapsLock,然后等待 10 秒钟showkey退出。在 PC 上,密钥代码是 0x3a。您需要在控制台键盘映射文件中包含以下行:

keycode 0x3a = Compose
Run Code Online (Sandbox Code Playgroud)

默认的控制台键盘映射文件位于/etc/console/boottime.kmap.gz带有console-tools软件包的Debian 上。在Mint下可能是不同的文件;这是loadkeys在引导脚本中调用的文件。如果您愿意,可以保留分发提供的文件不变,使用上面的行创建一个文件,然后loadkeys /path/to/your/file.kmap/etc/rc.local.