有人知道如何在Python中切换大写锁定吗?

4 投票
2 回答
5928 浏览
提问于 2025-04-15 19:50

我想在按住两个Shift键一秒钟的时候,切换大写锁定的开关。我试过用virtkey这个模块,但它没有效果。不过这个模块对其他按键是有效的,所以我觉得我没有用错这个模块。

有没有人知道怎么做到这一点?

为了明确,我是想真正切换大写锁定的开关,而不仅仅是控制指示灯。

谢谢!

2 个回答

0

有趣的是,我在解释器中试了一下virtkey,感觉它是有效的。在调用press_keycode(50)后,我的电脑就像按下了大写锁定键一样(Ubuntu 9.10,python-virtkey .50ubuntu2)。如果我释放这个键release_keycode(50),它就像什么都没发生过一样。

import virtkey

v = virtkey.virtkey()
v.press_keycode(50)

如果作为脚本运行,它会让大写键在虚拟终端标签页中保持按下状态。这非常烦人。

你有没有考虑过xvkbd命令?它是一个带有命令行选项的X虚拟键盘,最糟糕的情况是你可以从python中调用它。另一个可以研究的想法是xmodmap,它可以让你在X中重新映射键位。可以查看这篇帖子,里面有个例子。

5

这个对我来说有效(可以开关LED灯,还能启用或禁用大写锁定)

import virtkey

v = virtkey.virtkey()
v.press_keycode(66)
v.release_keycode(66)  # first release doesn't release it
v.release_keycode(66)

这里还有一些其他的例子

v.press_keycode(66)    # turns capslock on
v.release_keycode(66)
v.press_keycode(66)    # turns capslock off
v.release_keycode(66)

你也可以仅仅使用release_keycode来实现类似开关的效果

v.release_keycode(66)  # toggles capslock
v.release_keycode(66)  # toggles back again capslock

撰写回答