代码之家  ›  专栏  ›  技术社区  ›  Dan Eisenhut

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

  •  2
  • Dan Eisenhut  · 技术社区  · 6 年前

    我们正在为嵌入式应用程序运行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库或实用程序的解决方案。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Stuart Menefy    6 年前

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

    因此,在本例中,如果您没有使用X,我假设管理键盘的软件是Linux内核的控制台。这有许多IOCTL可用于管理caps lock标志,并单独管理LED状态。请参见 man page console_ioctl(4) 了解更多详细信息。

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

    推荐文章