我正在编写一个打字程序,其中包含比标准键盘更多的字符。为了实现这一点,我需要将一些字母键转换为修饰键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)秒。

07-25 22:42