【问题标题】:Set or read Caps Lock state in Linux without using X-Windows在不使用 X-Windows 的情况下在 Linux 中设置或读取 Caps Lock 状态
【发布时间】:2018-06-15 07:52:28
【问题描述】:

我们正在为嵌入式应用程序运行 Yocto Linux。我正在寻找一种方法来通过 bash 提示符或代码以编程方式控制 Caps Lock 状态,设置状态或读取状态以便知道状态,而不使用 X-Windows。我们没有安装 X-Windows 库,目前无法添加它们。我们找到的所有解决方案都需要 X-Windows 库或使用 X 工具,例如 xmodmap。任何帮助将不胜感激。这似乎是一件很简单的事情,需要将 X-Windows 引入我们的嵌入式设备。难道没有我们可以读取的 sysfs 条目吗?

这个问题类似于How can I turn on/off Caps Lock, Scroll Lock, Num Lock key programatically on Linux,但我正在寻找不需要 X-Window 库或实用程序的解决方案。

【问题讨论】:

    标签: embedded-linux capslock


    【解决方案1】:

    一点背景。大写锁定状态不是由键盘本身维护,而是由管理键盘的任何软件维护。每次按下大写锁定键时,键盘都会向软件发送一个代码,软件确定是打开还是关闭大写锁定,相应地设置一个标志,然后向键盘发送命令以打开大写锁定 LED或关闭。

    所以在这种情况下,如果您不使用 X,我假设管理键盘的软件是 Linux 内核的控制台。这有许多 ioctl 可用于管理大写锁定标志,并分别管理 LED 状态。有关详细信息,请参阅man pageconsole_ioctl(4)

    还有一个setleds(1) 程序(man page) 可用于轻松发出这些ioctl。它是 kbd 工具包的一部分,似乎已经有一个 Yocto recipe

    【讨论】:

    • 谢谢。我从另一个来源收到了相同的答案,并且在 /dev/tty1 上使用 KDGKBLED ioctl 对我们来说效果很好。我正要自己回答这个问题。即使我们的设备上没有任何物理 LED,基本上也可以读取和控制终端上的 LED。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2021-02-22
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多