Events 从球拍中的按键事件中获得按键

Events 从球拍中的按键事件中获得按键,events,keyboard,scheme,racket,Events,Keyboard,Scheme,Racket,我正在尝试使用下面的代码来拾取上/下/右/左键,并修改上面的示例 关键事件代码取自 但是,上/下/右/左键未正确识别,信息中仅显示“其他”。问题在哪里?如何纠正 将(相等?键事件)替换为(相等?(发送键事件获取键代码)) 将[stretchable width#t]添加到msg的初始化参数列表中,否则将无法看到输出 (define fr (new frame% [label "Testing"] [width 300] [height 300])) (define msg (new messag

我正在尝试使用下面的代码来拾取上/下/右/左键,并修改上面的示例

关键事件代码取自

但是,上/下/右/左键未正确识别,信息中仅显示“其他”。问题在哪里?如何纠正

  • (相等?键事件)
    替换为
    (相等?(发送键事件获取键代码))
  • [stretchable width#t]
    添加到
    msg
    的初始化参数列表中,否则将无法看到输出
  • (define fr (new frame% [label "Testing"] [width 300] [height 300]))
    (define msg (new message% [parent fr] [label ""]))
    
    (define my-canvas%
      (class canvas% 
        (define/override (on-char key-event)
          (cond
            [(equal? key-event 'up) (send msg set-label "UP")]
            [(equal? key-event 'down) (send msg set-label "DOWN")]
            [(equal? key-event 'left) (send msg set-label "LEFT")]
            [(equal? key-event 'right) (send msg set-label "RIGHT")]
            [else (send msg set-label "Others")]))
        (super-new)))
    
    (new my-canvas% [parent fr]
         [paint-callback
          (lambda (canvas dc)
            (send dc draw-ellipse 140 120 20 20))])
    
    (send fr show #t)