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() によってクライアントにイベントを送信
      • 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() によってクライアントにイベントを送信