我在Ultron UN-1无线数字键盘上输入一个5位数字。只有一些数字可以通过,例如对于45465,我可能会得到以下输入
'numlocknum_4numlockleftnumlocknum_5numlocknumlocknumlockleftnumlocknum_6numlockrightnumlocknumlockreturn'
我正在使用PsychoPy v1.82.01。我正在使用华硕TP300L与Windows 8.1,64b。代码如下。谢谢你的帮助。
if returnPressed == False:
while loopTest == True:
response = event.waitKeys(keyList = None)
userInput = userInput + response[0]
print ('response ', response)
if response[0] == 'return' or response[0] =='escape':
loopTest = False
returnPressed = True
JR,@ jrgray,谢谢你的帮助。我试过你的建议。它似乎仍然错过了数字。下面是我输入数字54645和45465时得到的结果。这不仅仅是删除了最后的数字。
('用户输入','num_5num_4num_6return') ('用户输入','num_4num_5num_6return')
while loopTest == True:
response = event.getKeys(keyList=['num_0', 'num_1', 'num_2', 'num_3', 'num_4', 'num_5', 'num_6', 'num_7', 'num_8', 'num_9', 'return', 'backspace', 'escape'])
if len(response) > 0:
userInput = userInput + response[0]
if response[0] == 'return' or response[0] =='escape':
loopTest = False
returnPressed = True
print ('user input ', userInput)
答案 0 :(得分:0)
只是想一想你的情况。
看起来键盘会为每个按键发送两个代码:numlock
后跟num_x
。因此,在编写代码时,需要调用event.waitKeys()
两次来同时选择它们。但是如果你的while循环很慢(例如,因为那里有print
语句),num_x
代码有时可能会在第二次调用event.waitKeys()
之前传递。我认为event.waitKeys()
将隐式调用clearEvents()
,丢弃任何在此期间堆积的密钥(即您的num_x
代码)。
要尝试的事情:
删除print语句以加快循环
使用event.getKeys()
代替waitKeys()
(参见在线API)
告诉event.getKeys()
忽略numlock
代码,只关注您关注的数字:keyList=['num_1', 'num_2', 'num_3']
(请参阅API)
答案 1 :(得分:0)
我决定通过将标准键盘与USB线连接到笔记本电脑上的另一个USB端口来消除问题中的无线元素。数字键盘上键入的所有数字都能正常工作。我重新测试了无线网络并看到它开始完美运行。我认为在插入标准键盘时,Windows即插即用算法中的某些内容会重新配置驱动程序。感谢大家的帮助。