v0.20.1 のメモ
key
- tinywl におけるキー入力の流れ
modifier
wlr_keyboard.events.modifiersというものがあるが、誰がいつ emit する?wlr_keyboard_notify_modifiers()において、引数と keyboard->modifiers の値とが異なっていた場合wlr_keyboard_notify_key()もしくはwlr_keyboard_notify_modifiers()において、keyboard_modifier_update(wlr_keyboard)が true を返した時- tinywl は notify_modifiers のほうを呼ばない
- tinywl としてはこういう流れ?
- キーが入力される
- wlroot:
backend/libinput/keyboard.c@handle_keyboard_key()からwlr_keyboard_notify_key()を呼ぶ - wlroot:
wlr_keyboard.events.keyを emit- tinywl:
wlr_keyboard.events.keyからkeyboard_handle_key()が呼ばれて、そこからwlr_seat_keyboard_notify_key()を呼ぶ - wlroot:
types/seat/wlr_seat_keyboard.c@wlr_seat_keyboard_notify_key()が grab 経由でwlr_keyboard_send_key()を呼ぶ - Wayland:
wl_keyboard_send_key()によってクライアントにイベントを送信
- tinywl:
- wlroot:
wlr_keyboard_notify_key()で modifier が更新されているか確認、更新されていたらwlr_keyboard.events.modifiersを emit - tinywl: emit により
keyboard_handle_modifiers()が呼ばれて、そこからwlr_seat_keyboard_send_modifiers()を呼ぶ - Wayland:
wl_keyboard_send_modifiers()によってクライアントにイベントを送信