在不使用 X-Windows 的情况下设置或读取 Linux 中的 Caps Lock 状态

Set or read Caps Lock state in Linux without using X-Windows

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

这个问题类似于 ,但我正在寻找不需要 X-Window 库或实用程序的解决方案。

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

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

还有一个setleds(1)程序(man page) which can be used to easily issue these ioctls. Its part of the kbd package of tools which appears to already have a Yocto recipe.