我正在编写一个打字程序,其中包含比标准键盘更多的字符。为了实现这一点,我需要将一些字母键转换为修饰键CTRL + A。例如,f + j将输出a
。输入f然后j对于用户来说很慢,我需要他们能够同时按下f和j并接收一个输出。如果在程序运行时停止了某些键盘的正常功能,那就很好(甚至更好)。
我研究了pygame Keydown,但是它似乎只具有增加键重复次数而不停止键输出的功能。 Pyglet也有可能,但是它没有关于如何制作其他修饰键的确切文档。我能弄清的唯一方法是不断扫描整个键盘以查看是否有按键被按下,但这并不能确定按键的按入顺序,并且会给用户造成错误,因为用户在按下f时会j的读取方式与用户按j然后按f的方式相同,而我只需要按f然后j的组合键就可以理解为系统的击键。
最佳答案
这是一些简单的代码,用于打印快速连续按下的键,它们是用Python 2编写的。应该可以轻松地对其进行修改以满足您的需求:
import pygame, sys
pygame.init()
screen = pygame.display.set_mode([500,500])
clock = pygame.time.Clock()
combokeys = []
timer = 0
ACCEPTABLE_DELAY = 30 #0.5 seconds
while 1:
clock.tick(60)
timer += 1
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if timer <= ACCEPTABLE_DELAY:
combokeys.append(event.unicode)
else:
combokeys = [event.unicode]
timer = 0
print combokeys
我无法测试此代码(在学校计算机上工作),因此如果某些操作无效,请在评论中通知我,以便我进行修复。
您可以更改为ACCEPTABLE_DELAY给出的值,以更改被认为是其他按键组合之前的延迟。延迟应为(ACCEPTABLE_DELAY / 60)秒。