pygame を使用してメニューを作成していますが、特定のゲームパッドを使用してナビゲートできるようにしたいと考えています。理想的には、D-pad で *down" を繰り返し押したり、同じ文字を繰り返し入力する前に最初のボタンを押したときに遅延があるキーボードのようなものを取得したいと考えています (一見)。
pygame.key.set_repeat(...)
ジョイスティックの機能をエミュレートしようとしています。これまでの私のアプローチは
pygame.time.set_timer(pygame.USEREVENT, 10)
DELAY_TIME = 0.250 #ms
y_delay = True
while not done:
for event in pygame.event.get():
y_axis = gamepad.get_axis(1)
if y_axis > 0.5: # pushing down
main_menu.move_down()
redraw() #redraw everything on the surface before sleeping
if y_delay:
time.sleep(DELAY_TIME)
y_delay = False #don't delay the next time the y axis is used
elif y_axis < -0.5: #pushing up
# repetitive I know, but I'm still working on it
main_menu.move_up()
redraw()
if y_delay:
time.sleep(DELAY_TIME)
y_delay = False
else:
y_delay = True # delay the next time
私の問題は、誰かが再び移動できるようになる前にDELAY_TIME
、制限されているよりも速く上下にタップした場合です。DELAY_TIME
また、間隔内で誰かが上/下ボタンを放して押した場合time.sleep
、python はそれが放されたことをまったく認識せず、遅延を許しません。
イベントを使用するか、ジョイスティックを何らかの方法でキーにマッピングする方法があるのではないでしょうか? qjoypad は私には合いませんし、joy2keys はゴミです。Python プログラム内でマッピングを行う必要があります。