当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中获取密钥代码

如何解决《如何在Python中获取密钥代码》经验,为你挑选了2个好方法。

我必须知道按下了什么键,但不需要字符的代码,我想知道当有人按下'A'键时,即使获得的键是'a'或'A',所以其他键都是如此.

我不能使用PyGame或任何其他库(包括Tkinter).只有Python标准库.这必须在终端中完成,而不是图形界面.

不需要字符代码.我需要知道关键代码.

例如:

ord('a') != ord('A')                      # 97 != 65
someFunction('a') == someFunction('A')    # a_code == A_code

myroslav.. 21

见tty标准模块.它允许使用tty.setcbreak(sys.stdin)从默认的面向行(煮熟)模式切换到面向字符(cbreak)模式.从sys.stdin中读取单个字符将导致下一个按下的键盘键(如果它生成代码):

import sys
import tty
tty.setcbreak(sys.stdin)
while True:
    print ord(sys.stdin.read(1))

注意:解决方案仅限于Unix(包括Linux).

编辑:在Windows上尝试msvcrt.getche()/getwche()./我无处可去......


编辑2:通过ctypes.windll使用win32低级控制台API (参见SO中的示例)和ReadConsoleInput函数.你应该过滤掉按键 - e.EventType==KEY_EVENT并寻找e.Event.KeyEvent.wVirtualKeyCode价值.可以在http://www.benryves.com/tutorials/?t=winconsole&c=4上找到应用程序示例(不是在Python中,只是为了获得一个想法).



1> myroslav..:

见tty标准模块.它允许使用tty.setcbreak(sys.stdin)从默认的面向行(煮熟)模式切换到面向字符(cbreak)模式.从sys.stdin中读取单个字符将导致下一个按下的键盘键(如果它生成代码):

import sys
import tty
tty.setcbreak(sys.stdin)
while True:
    print ord(sys.stdin.read(1))

注意:解决方案仅限于Unix(包括Linux).

编辑:在Windows上尝试msvcrt.getche()/getwche()./我无处可去......


编辑2:通过ctypes.windll使用win32低级控制台API (参见SO中的示例)和ReadConsoleInput函数.你应该过滤掉按键 - e.EventType==KEY_EVENT并寻找e.Event.KeyEvent.wVirtualKeyCode价值.可以在http://www.benryves.com/tutorials/?t=winconsole&c=4上找到应用程序示例(不是在Python中,只是为了获得一个想法).



2> Greg Hewgill..:

根据你想要完成的事情,也许使用像pygame这样的库可以做你想要的.Pygame包含比Python标准库通常更高级的按键处理.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有