2015-06-29 22 views
1

我在Ultron UN-1無線數字小鍵盤上鍵入5位數字。只有一些數字通過例如對於45465我可能會低於如何獲得Ultron UN-1無線數字小鍵盤與Psychopy一起使用?

'numlocknum_4numlockleftnumlocknum_5numlocknumlocknumlockleftnumlocknum_6numlockrightnumlocknumlockreturn'

我對PsychoPy v1.82.01輸入。我在Windows 8.1,64b上使用Asus TP300L。代碼如下。謝謝你的幫助。

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

event.waitKeys()返回一個鍵列表。通常只有一個,並且正如上面所做的那樣訪問第零個元素是有意義的。但是可以返回多個響應,如果是這樣,您將無法訪問它們。值得在這裏檢查len(響應)。 –

+0

Michael,謝謝你的回覆。我只在循環的每次迭代期間從waitKeys獲取一個密鑰。這些響應連接到userInput字段,這是我在上面顯示的「輸入」字段。鍵盤似乎會產生很多額外的字符和缺少一些的數字其實我在關鍵的。這是因爲如果他們正在沿途某處丟失。使用Microsoft Excel作爲輸入設備時,無線數字鍵盤正常工作。任何進一步的建議感激 –

回答

0

只是一個猜測,這是怎麼回事你。

它看起來像鍵盤發送兩個代碼爲每個按鍵:numlock其次是num_x。所以當你的代碼被寫入時,event.waitKeys()需要被調用兩次才能將它們選中。但是,如果您的while循環較慢(例如,因爲print中的語句),則num_x代碼有時可能會在第二次調用event.waitKeys()之前交付。我認爲event.waitKeys()將隱含地呼叫clearEvents(),同時丟掉已堆積的任何密鑰(即您的num_x代碼)。

事情嘗試:

  • 取出打印語句來加快循環

  • 代替waitKeys()使用event.getKeys()(在線看API)

  • 告訴event.getKeys()忽略numlock代碼,並且只關注您關心的號碼:keyList=['num_1', 'num_2', 'num_3'](查看API)

0

我決定用USB線我的筆記本電腦連接標準鍵盤到另一個USB端口,以消除問題的無線元件。在數字鍵盤上鍵入的所有數字都能正常工作。我重新測試了無線設備,並發現它已經開始正常工作。我假設在Windows即插即用算法中的某些東西在標準鍵盤插入時重新配置了驅動程序。感謝所有人的幫助。