REBOL 3 - Как добавить обработчик событий для печати нажатой клавиши?

Моя конечная цель - иметь обработчик, который будет что-то делать, если я нажму такую ​​клавишу, как #"1"

Я читал документ R3 View - Event Handling, и пытаясь запустить код в R3 View, я не получил результатов. Это обработчик, который я скопировал:

my-handler: [
    name: 'my-handler
    priority: 50
    handler: func [event] [
        print ["event:" event/type event/offset]
        if switch event/type [
            close [true]
            key [event/key = escape]
        ] [
            unhandle-events self
            unview event/window
            quit
        ]
        show event/window
        none
    ]
]

Я пробовал оба метода для запуска обработчика событий, без результатов:

handle-events my-handler
view layout [button]

а также

view/options layout [button] [handler: my-handler]

Я в недоумении, что делать, кто-то может указать мне правильное направление?

Вот моя попытка сделать обработчик для ключа:

view/options [button] [
    handler: [
        name: 'my-handler 
        priority: 50 
        handler: func [event] [
            if (event/key = #"1") [print "hi"]
        ]
    ]
]

Насколько я могу судить, это ничего не делает...

1 ответ

Это должно работать с опубликованным saphirion r3-gui, но очень грубо.

load-gui  

ending: :halt  ; :quit  

base-handler: context [ ; we overwrite the default
    do-event: func [event] [
    ;   print "(Missing event handler)"
        if switch event/type [
           key [  ; this we add
            ; if event/key = #"1" [print "hi"]
              escape = probe event/key
           ] 
           close [ true]
        ] [
           unhandle-events self
           unview event/window
           ending
        ]
        event
    ]
    win-gob: none
    status: 'made
    name: 'no-name
    priority: 0
    about: "Main template for VIEW event handlers."
]

view/options [button] [handler: [] ]; this is not correct, so the base-handler is used
Другие вопросы по тегам