对于这样一个基本的问题,我很惊讶我无法通过搜索找到任何东西......

不管怎样,我用Python制作了一个curses应用程序,它可以帮助解决某个DSiWare游戏的谜题。有了它,您可以拿起一个拼图并单独检查它的各个组成部分。按键 qweasdzx 用于绘制瓷砖(按键排列在某种调色板中)。按住 Shift 的同时按其中一个键会突出显示具有该颜色的图块。我无法要求更自然的控制方案。

因此,很遗憾,Shift 再次给我带来了问题(上次我遇到 Shift 问题时,我获得了风滚草徽章)。但这一次,问题或多或少是大写锁定,它通过反转功能完全搞砸了我的程序。

如何使用curses检测Python中Caps Lock的状态?

编辑:如果您建议使用单独的模块,我可能应该提醒您,curses - 以及我的程序 - 属于 UNIX 领域。

有帮助吗?

解决方案

我自己找到了解决方案:

由于根据 ΤΖΩΤΖIΟΥ,curses 完全不知道 Caps Lock 设置,因此我尝试了另一种解决方案。具体来说,我查找了如何在 BASH 脚本中检查 Caps Lock。我发现的是这样的:

仅限 Linux。需要 X 窗口系统。

$ xset q | grep LED
>  auto repeat:  on    key click percent:  0    LED mask:  00000000

该输出中的最后一个 0(字符串中的第 66 个字符)是 Caps Lock 标志。如果打开则为 1,如果关闭则为 0。

Python 可以与 Linux-only 一起运行 UNIX 系统命令 命令 模块。命令似乎不会干扰诅咒。

>>> import commands
>>> # Caps Lock is off.
>>> commands.getoutput("xset q | grep LED")[65]
'0'
>>> # Setting Caps Lock on now.
>>> commands.getoutput("xset q | grep LED")[65]
'1'

这对我来说效果很好;这是一个个人使用的脚本,而且我的程序并不是 Linux 专用的。但我确实希望有人有另一个与 Windows 更兼容的解决方案。

我现在将接受这个自我回答,但如果其他人可以提出更好的工作解决方案,我希望看到它。

其他提示

简短的回答:你不能。

更长的答案:

curses 被创建为一个基于 terminfo 的库,以简化基于字符的 UI 的创建,而与所使用的终端无关(for terminal in 'vt220', 'wyse100', …).

这些终端通过串行线连接,并且与主机之间的通信通过纯文本(由用户输入或由主机输出)或特殊序列(“转义”序列;如果按下特殊键,则由用户输入,例如 或者 上一篇, ,或者如果请求光标定位或屏幕清除等特殊操作,则由主机输出)。

我不知道 任何 每当按下 Caps Lock 键或主机查询 Caps Lock 状态时,哑终端都会发送特殊序列;锁定大写字母是终端工作的一部分,主机不需要任何知识。这与当单独按下 Control 键时无法让诅咒程序执行操作的原因类似。

关于诅咒的一切都与 术语信息 能力;没有任何与您要求的相关的功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top