下一页 上一页 目录

10. 键盘指示灯

1. 存在每个 tty 的键盘标志:每个 VC 都有自己的 NumLock、CapsLock、ScrollLock。默认情况下,这些键盘标志会显示在指示灯上。通常更改它们的方法是按下相应的键。(旁注:在应用程序键模式下按下 NumLock 键不会更改 NumLock 状态,而是产生一个转义序列。如果您希望 NumLock 键始终更改 Numlock 状态,请将其绑定到 Bare_Num_Lock。)

2. 其次,存在每个 tty 的默认键盘标志,用于在重置发生时初始化键盘标志。因此,如果您希望 NumLock 始终开启,这是可能的。通常更改它们的方法是使用 `setleds -D ...`。

3. 存在指示灯不反映键盘标志,而是反映其他内容的可能性。

3A. 这“其他内容”可以是内核中某处的三个位 - 如果您想监控某些硬件或软件状态位,则可以使用这三个位。如果您想要这样做,请编辑内核源代码以在某处调用 register_leds()

3B. 这“其他内容”也可以是用户程序想要在指示灯上显示的任何内容。因此,喜欢此类事物的人可以制作漂亮的灯光模式。如果您想要这样做,请使用 KDSETLED ioctl。

后一种用法不是每个 tty 的,但前一种用法和后一种用法之间的选择是每个 tty 的。

总结:每个 tty 都有一个标志 kbd->ledmode。如果它的值为 LED_SHOW_FLAGS,则显示该 tty 的键盘标志(NumLock 等)。如果它的值为 LED_SHOW_MEM,则显示三个选定的内存地址。如果它的值为 LED_SHOW_IOCTL,则指示灯显示上次使用 KDSETLED ioctl 分配给它们的值。

可以补充一点,X 使用 ioctl 来设置指示灯,但在退出时未能重置其 VT,因此在使用 X 后,可能有一个 VT 不处于默认的 LED_SHOW_FLAGS 状态。可以通过在该 VT 上执行 `setleds -L` 来修复此问题。请参阅 setleds(1)。


下一页 上一页 目录