当前位置: 首页 > 知识库问答 >
问题:

Python读取修改键(CTRL、ALT、SHIFT)

余铭晨
2023-03-14

这在Python中似乎很难。

目前,我只能使用sys.stdin.read()读取击键,但是stdin.read()像文件一样工作,不会返回修饰符。

def getch():
    """getch() -> key character

    Read a single keypress from stdin and return the resulting character. 
    Nothing is echoed to the console. This call will block if a keypress 
    is not already available, but will not wait for Enter to be pressed. 

    If the pressed key was a modifier key, nothing will be detected; if
    it were a special function key, it may return the first character of
    of an escape sequence, leaving additional characters in the buffer.
    """
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    try:
        tty.setraw(fd)
        ch = sys.stdin.read(1)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    return ch

我在函数返回击键组合的方式上很灵活。首先想到的是返回一个列表或一个带有组合的dict…但主要问题是,如何检测它?!

共有1个答案

丁星火
2023-03-14

根据定义,Stdin是表示控制代码和字符的字节流。这不是一系列关键事件。要获得密钥,您需要使用操作系统特定的函数。在Linux上,curses窗口对象有一个getch方法。(另一个模块中有用于Windows的内容。)

Tk及其Python的tkinter包装器使用OS特定的方法,让用户绑定到按键和释放事件,其中包括您提到的修饰符,代码大多不是OS特定的。

 类似资料:
  • 我使用下面的代码通过传递特殊键。我正面临一个奇怪的问题。如果用户发送Alt//Ctrl/Shift,则键保持按下状态。例如,如果用户通过Alt+F4,代码正常运行,操作成功完成,但Alt键保持按下状态。我需要在操作完成后手动单击Alt键。请让我知道处理同样的代码本身。下面是用于发送特殊密钥的代码。 }

  • 我试图编码一个简单的键盘,并想实现上述4个键。在我的文件中,我定义了如下的布局- 我一直在中使用ASCII代码。但是我不知道如何处理Ctrl、Alt、Delete和Shift键。我使用作为backspace。但不确定如何实现delete键。 编辑:如果有人能在箭头键上加入一些指针,那也会很有帮助。

  • 问题内容: 我正在使用Qt Designer构建UI,并且我希望按钮使用不同的修饰符执行不同的操作。因此,我认为我可以调用具有动态字符串属性的函数,这些函数将根据修饰符执行操作。 如果有人知道更简单的方法,我将不胜感激。 问题答案: 看起来您需要做的就是检查按钮处理程序中的keyboardModifiers,并根据需要选择其他操作。可以对各种修饰符进行“或”运算以检查多键组合: PyQt5 : P

  • 问题内容: 我怎么能确定 哪个 / / 下面的代码键被按下? 问题答案: 好吧,这仅适用于IE 8,因此无法在所有浏览器中使用。Microsoft实现了确定按下哪个(右/左)键的功能。 我也发现这篇关于浏览器中的按键,按键,按键事件的奇妙文章。

  • 问题内容: 嗨,我正在尝试从json文件中获取数据,然后插入和ID,然后执行POST REST。我的文件data.json具有: 并且我想添加一个id,以便json数据如下所示: 所以我尝试了: 我无法加载json格式文件。我应该怎么做才能将json文件转换为json对象并添加另一个id值。 问题答案: 使用设置项目。

  • 本文向大家介绍JS实现屏蔽shift,Ctrl,alt等功能键的方法,包括了JS实现屏蔽shift,Ctrl,alt等功能键的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现屏蔽shift,Ctrl,alt等功能键的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。