代码之家  ›  专栏  ›  技术社区  ›  Exp HP

检测Python诅咒中的大写锁定

  •  4
  • Exp HP  · 技术社区  · 15 年前

    总之,我用Python制作了一个诅咒应用程序,它可以帮助解决某个DSiWare游戏的谜题。有了它,你可以采取一个难题,并检查它的各个组成部分。钥匙 qweasdzx 用于绘制瓷砖(按键排列在某种调色板中)。按住Shift键的同时按其中一个键可高亮显示具有该颜色的瓷砖。我不能要求一个更自然的控制方案。

    如何检测Python中带有诅咒的Caps Lock的状态?

    编辑:如果你打算建议使用一个单独的模块,我可能应该提醒你,诅咒-因此我的程序-是在UNIX领域。

    2 回复  |  直到 15 年前
        1
  •  7
  •   Exp HP    15 年前

    我自己找到了解决办法:

    因为curses完全不知道根据¤¤, 我尝试了另一种解决办法。具体来说,我查看了如何在BASH脚本中检查Caps Lock。我发现的是:

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

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

    Python只能在Linux上运行UNIX系统命令 commands 模块。命令似乎不会干扰诅咒。

    >>> 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的解决方案。

        2
  •  3
  •   tzot    15 年前

    简单的回答是:你不能。

    一个较长的答案:

    for terminal in 'vt220', 'wyse100', … ).

    这些终端通过串行线连接,与主机之间的通信通过纯文本(用户输入或主机输出)或特殊序列(“转义”序列)进行;如果按了特殊的键,则由用户输入,如 上一个

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

    关于诅咒的一切都与 terminfo 能力;你的要求没有任何相关的能力。