在 Qt/C++ 中,如何打开键盘 Capslock 和 Insert with leds?

In Qt/C++ how to turn on keyboard Capslock and Insert with leds?

提问人:James Smith 提问时间:11/10/2023 最后编辑:James Smith 更新时间:11/11/2023 访问量:39

问:

我正在使用虚拟键盘,并希望在按下虚拟软件键盘 Capslock、插入按钮时打开/关闭实际的硬件键盘 LED。

代码在 Linux 上运行的 C++/Qt 中。

  • 对不起,不是说插入 LED
C++ Linux Qt

评论

2赞 musicamante 11/10/2023
从Qt开始,你不能。您甚至无法获得当前的大写锁定状态,更不用说设置它了。对于跨平台,AFAIK 没有通用访问,因此您需要依赖操作系统原生库和功能,这些库和功能可能会或可能不会提供这种可能性(不过,应该有一些 Python 模块允许大多数系统进行抽象)。此外,通用标准只有 3 个 LED,所有 LED 都指向特定的锁定状态:NumLock、CapsLock 和 ScrollLock。我不知道你说的“插入按钮”是什么意思,但 AFAIR 没有这样的领导。
0赞 musicamante 11/10/2023
此外,以上任何一种都可能只控制 LED 状态,而不控制键盘状态,这可能是伪造的。键盘 LED 可能仍显示“caps lock”处于活动状态,但不会更改结果。您必须考虑键盘输入是从本机扫描代码映射的,该扫描代码可能由驱动程序在内部或外部设置(或虚拟化),并且操作系统仍可能根据自己的映射忽略该代码。长话短说:即使您可以访问键盘的 LED,也无法保证在该键盘上键入的内容实际上与结果匹配。
0赞 Mike 11/10/2023
你可以尝试使用 Linux 命令 mansetleds
0赞 James S 11/10/2023
解决方案是使用 xdotool,但我们必须从源代码执行它,可能使用 QProcess。

答:

0赞 James S 11/10/2023 #1

有人使用了 xdotool 并且它有效,但我们必须从源代码执行它,可能使用 QProcess。