当我切换到 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
只是抑制烦人的控制台输出。