大写锁定 LED 在 Linux 控制台上不起作用

大写锁定 LED 在 Linux 控制台上不起作用

当我切换到 TTY 并打开大写锁定时,键盘上的大写锁定 LED 没有打开。在X上它工作得很好。当我激活大写锁定,然后切换到 TTY,然后按大写锁定(在 TTY 上)时,LED 保持亮起(即使 TTY 保留其自己的大写锁定跟踪)。所以看来 TTY 根本不关心 LED。

我可以以某种方式启用 TTY 上的 LED 吗?被迫输入某些内容而不知道大写锁定是否已激活是非常烦人的。

我正在使用 Debian jessie(经常更新) arch:amd64

答案1

这是一个历史悠久的 Debian漏洞。它似乎与底层内核有关漏洞这早已被修复了。问题似乎是Caps_Lock不适用于非 ASCII 字符,因此解决方法是将Shift_Lock或映射CtrlL_Lock到大写锁定键。

在 Debian 方面,该问题是由ckbcomp用于console-setup根据 XKB 键盘描述创建控制台键盘映射而创建的。请注意,错误报告中引用的原始代码Shift_Lock似乎已被替换为不同的代码,而后者CtrlL_Lock则切换为。如果您有兴趣,可以broken_caps在 Perl 脚本中搜索该变量的用法ckbcomp

我不知道该代码是否出于任何原因仍然是必要的,也许值得提交错误报告。但是,解决方法是添加以下行/etc/kbd/remap,重新启动后应该可以修复该问题:

s/CtrlL_Lock/Caps_Lock/

或者,要在下次重新启动之前进行临时修复,请在会话中运行以下命令tty

dumpkeys | sed s/CtrlL_Lock/Caps_Lock/ | sudo loadkeys

更新

似乎只有在不可用/etc/kbd/remap时才实际使用。setupcon更好的解决方法是将以下行放入/etc/rc.local

dumpkeys | sed s/CtrlL_Lock/Caps_Lock/ | loadkeys

答案2

我找到了 Debian 6 和 Debian 7 的解决方案。

Debian 6

将以下内容放在文件末尾/etc/console-setup/remap.inc

keycode 58 = Caps_Lock

然后运行setupcon

Debian 7

将以下内容放在脚本末尾/etc/default/keyboard

dumpkeys | sed -e "s/keycode  58 = CtrlL_Lock/keycode  58 = Caps_Lock/" | \
   loadkeys 2>&1 >/dev/null

然后运行setupcon

请注意,keycode 和 58 之间有两个空格。重定向到/dev/null只是抑制烦人的控制台输出。

相关内容