Я довольно новичок в ракетке, и я пытаюсь написать игру, и сейчас я пишу свой контроллер ввода.
Я использую события клавиш gui / canvas (https://docs.racket -lang.org / gui / key-event_.html ), например,
(define game-canvas%
(class canvas%
...
;TODO: ignore case
(define/override (on-char ke)
(case (send ke get-key-code)
['release
(send controller key-up (send ke get-key-release-code)))
]
[else
(send controller key-down (send ke get-key-code)))
]
))
...
))
(define dinosaur-controller%
(class controller%
...
(define/override (key-down key-code)
(case key-code
[(#\a)
(DO STUFF)]))
))
Однако одна проблема, с которой я столкнулся, заключается в том, что коды клавиш чувствительны к регистру, например «a» отличается от «A», поэтому, если включен caps-lock, мой контроллер не работает. Есть ли что-нибудь, что могло бы избежать написания (case key-code [(#\a #\A)])
для каждого ключа?