pygame的密钥计算



我使用的是这个python代码https://gist.github.com/seankmartin/f660eff4787b586f94d5f678932bcd27#file-keyboardpress py获取键盘事件的时间。它运行得很好,但我需要获得大写字母和感叹号的KEYDOWN和KEYUP。所以我通过添加对其进行了修改

elif event.key == key and pygame.key.get_mods() & pygame.KMOD_SHIFT:
print (f"Pressed SHIFT + key {key_strs[i]} at time {ctr_adj_ms:.0f}ms")

if event.type == pygame.KEYDOWN:
for i, key in enumerate(keys):
if event.key == key:
counters[i] = time.time()
ctr_adj = counters[i] - start_time
ctr_adj_ms = ctr_adj * 1000
time_log.append((key_strs[i], ctr_adj_ms))
print(f"Pressed key {key_strs[i]} at time {ctr_adj_ms:.0f}ms")

所以现在看起来像这个

if event.type == pygame.KEYDOWN:
for i, key in enumerate(keys):
if event.key == key:
counters[i] = time.time()
ctr_adj = counters[i] - start_time
ctr_adj_ms = ctr_adj * 1000
time_log.append((key_strs[i], ctr_adj_ms))
print(f"Pressed key {key_strs[i]} at time {ctr_adj_ms:.0f}ms")
elif event.key == key and pygame.key.get_mods() & pygame.KMOD_SHIFT:
counters[i] = time.time()
ctr_adj = counters[i] - start_time
ctr_adj_ms = ctr_adj * 1000
time_log.append((key_strs[i], ctr_adj_ms))
print (f"Pressed SHIFT + key {key_strs[i]} at time {ctr_adj_ms:.0f}ms")

但我仍然找不到大写字母,也找不到感叹号。我做错了什么?

键盘事件KEYDOWNKEYUP(请参阅pygame.event模块(创建一个具有附加属性的pygame.event.Event对象。按下的键可以从key属性(例如K_RETURNK_a(获得,并且mod属性包含具有附加修饰符的位集(例如KMOD_LSHIFT(。unicode属性提供键盘输入的Unicode表示形式。例如:

for event in pygme.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
if event.mod in [pygame.KMOD_LSHIFT, pygame.KMOD_RSHIFT]:
# capital 'A'
# ...

最新更新