当前位置: 首页 > 面试题库 >

如何在Python中获取键码

贾建茗
2023-03-14
问题内容

我必须知道按了什么键,但不需要字符的代码,我想知道何时有人按下“ A”键,即使获得的键是“ a”或“ A”,等等。 。

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

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

例如:

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

问题答案:

请参阅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()。/
me无处可寻…

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



 类似资料:
  • 问题内容: 我想在pyspark中使用matplotlib.bblpath或shapely.geometry库。 当我尝试导入其中任何一个时,出现以下错误: 我知道该模块不存在,但是如何将这些软件包带到我的pyspark库中? 问题答案: 在Spark上下文中,尝试使用: ,引用文档: 为将来要在此SparkContext上执行的所有任务添加.py或.zip依赖项。传递的路径可以是本地文件,HDF

  • 问题内容: 我正在返回一个json,如下所示 我正在尝试获取每个元素的键和值: 我正在戒备。为什么?我尝试过,我尝试循环但没有成功。 问题答案: 检查这个jsfiddle 从 jQuery 3.0开始 ,不推荐使用$ .parseJSON。要解析JSON字符串,请改用本机JSON.parse方法。 来源:http://api.jquery.com/jquery.parsejson/

  • 问题内容: 我想编写一个应用程序,其中的键绑定特定于键盘上键的位置,而不是键映射到的字符。例如,在美国键盘上位于t和u之间的键应执行特定的功能,而不管它在美国是Y还是在德国是Z。 我认为这样做的方法是获取键盘给操作系统的实际扫描代码,以代表按下的键。如何在Java中执行此操作? 还是有另一种方法可以实现相同的功能? 问题答案: 正如 MadProgrammer 所说:您必须使用JNA或JNI。您还

  • 问题内容: 我正在尝试使用Flask构建一个简单的API,现在我想在其中读取一些。我使用扩展程序进行,而我发布的就是。我尝试使用以下方法读取JSON: 在浏览器上,它可以正确返回我放入GET中的UUID,但是在控制台上,它只是打印出来(我希望它可以在其中打印出来。有人知道我如何从方法中获取发布的吗? 问题答案: 首先,该.json属性是一个委托给的属性,该属性记录了您None在此处看到的原因。 您

  • 问题内容: 我有一个多线程Python程序和一个实用程序函数,该函数写出时间戳记和消息。不幸的是,结果日志文件没有给出哪个线程正在生成哪个消息的指示。 我希望能够在消息中添加一些内容,以标识哪个线程正在调用它。显然,我可以使线程将这些信息传递进去,但这将需要更多的工作。是否有一些我可以使用的等效线程? 问题答案: ,或者(或对于Python <2.6)。

  • 问题内容: 嗨,我有一个LinkedHashMap(称为信息),其中包含名称/年龄(字符串/整数)对。我想找出,如果我输入键,如何获得键/值的位置。例如,如果我的LinkedHashMap看起来像这样{bob = 12,jeremy = 42,carly = 21}并且我要搜索jeremy,它应该返回1作为其位置1。我希望我可以使用诸如info.getIndex这样的东西(“杰里米”) 问题答案: