如何使用Ultron UN-1无线数字键盘与Psychopy配合使用?

时间:2015-06-29 21:28:06

标签: psychopy

我在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)

2 个答案:

答案 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即插即用算法中的某些内容会重新配置驱动程序。感谢大家的帮助。