|
Blender V5.0
|
Definition at line 1060 of file GHOST_SystemWayland.cc.
| xkb_compose_state* GWL_Seat::compose_state = nullptr |
The compose state is expected to use the keyboard state (check for null before use).
Definition at line 1109 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_remove(), gwl_seat_key_repeat_timer_fn(), keyboard_handle_key(), and keyboard_handle_keymap().
| xkb_compose_table* GWL_Seat::compose_table = nullptr |
The compose key table (check for null before use).
Definition at line 1106 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_add(), gwl_registry_wl_seat_remove(), and keyboard_handle_keymap().
| zwp_confined_pointer_v1* GWL_Seat::confined_pointer = nullptr |
Definition at line 1089 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::window_cursor_grab_set().
| xkb_context* GWL_Seat::context = nullptr |
Definition at line 1103 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_add(), gwl_registry_wl_seat_remove(), and keyboard_handle_keymap().
| GWL_Cursor GWL_Seat::cursor |
Definition at line 1190 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::cursor_bitmap_get(), GHOST_SystemWayland::cursor_shape_custom_set(), GHOST_SystemWayland::cursor_shape_set(), cursor_surface_handle_enter(), cursor_surface_handle_leave(), GHOST_SystemWayland::cursor_visibility_set(), GHOST_SystemWayland::getCursorPreferredLogicalSize(), gwl_registry_wl_seat_remove(), gwl_seat_capability_pointer_disable(), gwl_seat_capability_pointer_enable(), gwl_seat_cursor_buffer_set(), gwl_seat_cursor_buffer_set_current(), gwl_seat_cursor_buffer_show(), gwl_seat_cursor_visible_set(), and GHOST_SystemWayland::output_scale_update().
| uint32_t GWL_Seat::cursor_source_serial = 0 |
Use to check if the last cursor input was tablet or pointer.
Definition at line 1143 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_state_pointer_active(), pointer_handle_enter(), tablet_tool_handle_proximity_in(), and touch_seat_handle_down().
| wl_data_device* GWL_Seat::data_device = nullptr |
Definition at line 1070 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_remove(), gwl_registry_wl_seat_update(), GHOST_SystemWayland::putClipboardImage(), and system_clipboard_put().
| GWL_DataOffer* GWL_Seat::data_offer_copy_paste = nullptr |
Copy & Paste.
Definition at line 1233 of file GHOST_SystemWayland.cc.
Referenced by data_device_handle_selection(), GHOST_SystemWayland::getClipboardImage(), gwl_registry_wl_seat_remove(), GHOST_SystemWayland::hasClipboardImage(), and system_clipboard_get().
| std::optional<GHOST_TSuccess> GWL_Seat::data_offer_copy_paste_has_image = std::nullopt |
Cache the result of GHOST_SystemWayland::hasClipboardImage as checking the file header every time will be expensive, especially if this happens on redraw. Reset whenever the data offer changes.
Definition at line 1241 of file GHOST_SystemWayland.cc.
Referenced by data_device_handle_selection(), and GHOST_SystemWayland::hasClipboardImage().
| std::mutex GWL_Seat::data_offer_copy_paste_mutex |
Definition at line 1234 of file GHOST_SystemWayland.cc.
Referenced by data_device_handle_selection(), gwl_registry_wl_seat_remove(), and system_clipboard_get().
| GWL_DataOffer* GWL_Seat::data_offer_dnd = nullptr |
Drag & Drop.
Definition at line 1229 of file GHOST_SystemWayland.cc.
Referenced by data_device_handle_drop(), data_device_handle_enter(), data_device_handle_leave(), data_device_handle_motion(), dnd_events(), and gwl_registry_wl_seat_remove().
| std::mutex GWL_Seat::data_offer_dnd_mutex |
Definition at line 1230 of file GHOST_SystemWayland.cc.
Referenced by data_device_handle_drop(), data_device_handle_enter(), data_device_handle_leave(), data_device_handle_motion(), and gwl_registry_wl_seat_remove().
| GWL_DataSource* GWL_Seat::data_source = nullptr |
Definition at line 1243 of file GHOST_SystemWayland.cc.
Referenced by data_source_handle_cancelled(), data_source_handle_send(), gwl_registry_wl_seat_add(), gwl_registry_wl_seat_remove(), GHOST_SystemWayland::putClipboardImage(), and system_clipboard_put().
| std::mutex GWL_Seat::data_source_mutex |
Definition at line 1244 of file GHOST_SystemWayland.cc.
Referenced by data_source_handle_send(), gwl_registry_wl_seat_remove(), GHOST_SystemWayland::putClipboardImage(), and system_clipboard_put().
| uint32_t GWL_Seat::data_source_serial = 0 |
Last input device that was active (pointer/tablet/keyboard).
Definition at line 1254 of file GHOST_SystemWayland.cc.
Referenced by keyboard_handle_key(), keyboard_handle_modifiers(), pointer_handle_button(), GHOST_SystemWayland::putClipboardImage(), system_clipboard_put(), system_clipboard_put_primary_selection(), tablet_tool_handle_button(), tablet_tool_handle_down(), tablet_tool_handle_proximity_in(), and GHOST_SystemWayland::wl_seat_active_get_with_input_serial().
| int32_t GWL_Seat::delay = 0 |
Time (milliseconds) after which to start repeating keys.
Definition at line 1218 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_key_repeat_timer_add(), and keyboard_handle_repeat_info().
| uint64_t GWL_Seat::down_event_time_ms = 0 |
Definition at line 1177 of file GHOST_SystemWayland.cc.
Referenced by touch_seat_handle_down(), and touch_seat_handle_frame().
| uint32_t GWL_Seat::down_id = 0 |
Definition at line 1175 of file GHOST_SystemWayland.cc.
Referenced by touch_seat_handle_down(), touch_seat_handle_motion(), and touch_seat_handle_up().
| bool GWL_Seat::down_pending = false |
Definition at line 1176 of file GHOST_SystemWayland.cc.
Referenced by touch_seat_handle_down(), and touch_seat_handle_frame().
| wl_fixed_t GWL_Seat::grab_lock_xy[2] = {0, 0} |
The cursor location (in pixel-space) when hidden grab started (GHOST_kGrabHide).
Definition at line 1188 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::window_cursor_grab_set().
| bool GWL_Seat::is_touching = false |
Definition at line 1174 of file GHOST_SystemWayland.cc.
Referenced by touch_seat_handle_down(), touch_seat_handle_motion(), and touch_seat_handle_up().
| GWL_KeyboardDepressedState GWL_Seat::key_depressed |
Keys held matching xkb_state.
Definition at line 1197 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::getModifierKeys(), keyboard_depressed_state_key_event(), keyboard_depressed_state_push_events_from_change(), keyboard_depressed_state_reset(), and keyboard_handle_enter().
| struct { ... } GWL_Seat::key_repeat |
Referenced by gwl_seat_capability_keyboard_disable(), gwl_seat_key_repeat_timer_add(), gwl_seat_key_repeat_timer_remove(), keyboard_handle_enter(), keyboard_handle_key(), keyboard_handle_key_repeat_cancel(), keyboard_handle_key_repeat_reset(), keyboard_handle_leave(), keyboard_handle_modifiers(), and keyboard_handle_repeat_info().
| GWL_SeatStateKeyboard GWL_Seat::keyboard |
Definition at line 1164 of file GHOST_SystemWayland.cc.
| wl_keyboard* GWL_Seat::keyboard = nullptr |
Definition at line 1067 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::getModifierKeys(), gwl_seat_capability_keyboard_disable(), gwl_seat_capability_keyboard_enable(), gwl_seat_key_repeat_timer_fn(), keyboard_handle_enter(), keyboard_handle_key(), keyboard_handle_leave(), and GHOST_SystemWayland::window_surface_unref().
| xkb_layout_index_t GWL_Seat::layout_active = 0 |
The active layout, where a single #xkb_keymap may have multiple layouts.
Definition at line 1131 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_key_layout_active_state_update_mask(), keyboard_handle_keymap(), and keyboard_handle_modifiers().
| zwp_locked_pointer_v1* GWL_Seat::locked_pointer = nullptr |
Definition at line 1088 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::window_cursor_grab_set().
| uint64_t GWL_Seat::motion_event_time_ms = 0 |
Definition at line 1181 of file GHOST_SystemWayland.cc.
Referenced by touch_seat_handle_down(), touch_seat_handle_frame(), and touch_seat_handle_motion().
| bool GWL_Seat::motion_pending = false |
Definition at line 1180 of file GHOST_SystemWayland.cc.
Referenced by touch_seat_handle_down(), touch_seat_handle_frame(), and touch_seat_handle_motion().
| std::string GWL_Seat::name |
Definition at line 1140 of file GHOST_SystemWayland.cc.
| GWL_SeatStatePointer GWL_Seat::pointer |
Definition at line 1145 of file GHOST_SystemWayland.cc.
| wl_pointer* GWL_Seat::pointer = nullptr |
Definition at line 1065 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::cursor_shape_set(), gwl_seat_capability_pointer_disable(), gwl_seat_capability_pointer_enable(), gwl_seat_capability_pointer_multitouch_enable(), gwl_seat_cursor_buffer_hide(), gwl_seat_cursor_buffer_scale_calc(), gwl_seat_cursor_buffer_set(), gwl_seat_cursor_buffer_show(), gwl_seat_state_pointer_active(), gwl_seat_state_pointer_from_cursor_surface(), GHOST_SystemWayland::output_scale_update(), GHOST_SystemWayland::output_unref(), pointer_handle_enter(), pointer_handle_frame(), pointer_handle_motion(), relative_pointer_handle_relative_motion(), relative_pointer_handle_relative_motion_impl(), GHOST_SystemWayland::setCursorPosition(), GHOST_SystemWayland::window_cursor_grab_set(), and GHOST_SystemWayland::window_surface_unref().
| GWL_SeatStatePointer_Events GWL_Seat::pointer_events |
Definition at line 1146 of file GHOST_SystemWayland.cc.
Referenced by pointer_handle_axis(), pointer_handle_axis_discrete(), pointer_handle_axis_value120(), pointer_handle_button(), pointer_handle_frame(), and pointer_handle_motion().
| GWL_SeatStatePointerGesture_Pinch GWL_Seat::pointer_gesture_pinch |
Definition at line 1148 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_capability_pointer_multitouch_check(), gwl_seat_capability_pointer_multitouch_disable(), and gwl_seat_capability_pointer_multitouch_enable().
| GWL_SeatStatePointerScroll GWL_Seat::pointer_scroll |
Definition at line 1147 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_capability_pointer_multitouch_disable(), gwl_seat_capability_pointer_multitouch_enable(), pointer_handle_axis(), pointer_handle_axis_discrete(), pointer_handle_axis_source(), pointer_handle_axis_stop(), pointer_handle_axis_value120(), pointer_handle_enter(), and pointer_handle_frame().
| GWL_PrimarySelection GWL_Seat::primary_selection |
Definition at line 1246 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_remove(), gwl_registry_wl_seat_update(), system_clipboard_get_primary_selection(), and system_clipboard_put_primary_selection().
| zwp_primary_selection_device_v1* GWL_Seat::primary_selection_device = nullptr |
Definition at line 1091 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_remove(), gwl_registry_wl_seat_update(), and system_clipboard_put_primary_selection().
| int32_t GWL_Seat::rate = 0 |
Key repetition in character per second.
Definition at line 1216 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_key_repeat_timer_add(), keyboard_handle_enter(), keyboard_handle_key(), and keyboard_handle_repeat_info().
| zwp_relative_pointer_v1* GWL_Seat::relative_pointer = nullptr |
Definition at line 1087 of file GHOST_SystemWayland.cc.
Referenced by setCursorPositionClientRelative_impl(), and GHOST_SystemWayland::window_cursor_grab_set().
| wl_seat* GWL_Seat::seat = nullptr |
Definition at line 1064 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_add(), gwl_registry_wl_seat_remove(), gwl_registry_wl_seat_update(), gwl_seat_capability_keyboard_enable(), gwl_seat_capability_pointer_enable(), gwl_seat_capability_touch_enable(), seat_handle_capabilities(), and GHOST_SystemWayland::wl_seat_active_get_with_input_serial().
| xkb_state* GWL_Seat::state = nullptr |
Definition at line 1111 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::getModifierKeys(), gwl_registry_wl_seat_remove(), gwl_seat_key_repeat_timer_fn(), keyboard_handle_enter(), keyboard_handle_key(), keyboard_handle_keymap(), and keyboard_handle_modifiers().
| xkb_state* GWL_Seat::state_empty = nullptr |
Keep a state with no modifiers active, use for symbol lookups.
Definition at line 1115 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_remove(), gwl_seat_key_layout_active_state_update_mask(), keyboard_handle_key(), and keyboard_handle_keymap().
| xkb_state* GWL_Seat::state_empty_with_numlock = nullptr |
Keep a state with number-lock enabled, use to access predictable key-pad symbols. If number-lock is not supported by the key-map, this is set to nullptr.
Definition at line 1126 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_remove(), gwl_seat_key_layout_active_state_update_mask(), keyboard_handle_key(), and keyboard_handle_keymap().
| xkb_state* GWL_Seat::state_empty_with_shift = nullptr |
Keep a state with shift enabled, use to access predictable number access for AZERTY keymaps. If shift is not supported by the key-map, this is set to nullptr.
Definition at line 1121 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_remove(), gwl_seat_key_layout_active_state_update_mask(), keyboard_handle_key(), and keyboard_handle_keymap().
| wl_surface* GWL_Seat::surface_window_focus_dnd = nullptr |
Definition at line 1069 of file GHOST_SystemWayland.cc.
Referenced by data_device_handle_drop(), data_device_handle_enter(), data_device_handle_leave(), dnd_events(), and GHOST_SystemWayland::window_surface_unref().
| GHOST_SystemWayland* GWL_Seat::system = nullptr |
Definition at line 1138 of file GHOST_SystemWayland.cc.
Referenced by data_device_handle_drop(), data_device_handle_enter(), data_device_handle_leave(), data_device_handle_motion(), dnd_events(), gwl_registry_wl_seat_add(), gwl_seat_capability_keyboard_disable(), gwl_seat_capability_pointer_enable(), gwl_seat_capability_pointer_multitouch_check(), gwl_seat_capability_pointer_multitouch_disable(), gwl_seat_capability_pointer_multitouch_enable(), gwl_seat_key_repeat_timer_add(), gwl_seat_key_repeat_timer_fn(), gwl_seat_key_repeat_timer_remove(), keyboard_depressed_state_push_events_from_change(), keyboard_handle_enter(), keyboard_handle_key(), keyboard_handle_leave(), keyboard_handle_modifiers(), keyboard_handle_repeat_info(), pointer_handle_axis(), pointer_handle_axis_stop(), pointer_handle_button(), pointer_handle_enter(), pointer_handle_frame(), pointer_handle_motion(), relative_pointer_handle_relative_motion(), relative_pointer_handle_relative_motion_impl(), setCursorPositionClientRelative_impl(), tablet_seat_handle_tool_added(), tablet_tool_handle_frame(), tablet_tool_handle_proximity_in(), touch_seat_handle_down(), touch_seat_handle_frame(), touch_seat_handle_motion(), touch_seat_handle_up(), and GHOST_SystemWayland::window_cursor_grab_set().
| GWL_SeatStatePointer GWL_Seat::tablet |
Mostly this can be interchanged with pointer key differences are:
Definition at line 1155 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_cursor_buffer_scale_calc(), gwl_seat_state_pointer_active(), gwl_seat_state_pointer_from_cursor_surface(), GHOST_SystemWayland::output_scale_update(), GHOST_SystemWayland::output_unref(), tablet_tool_handle_frame(), tablet_tool_handle_proximity_in(), and GHOST_SystemWayland::window_surface_unref().
| zwp_tablet_seat_v2* GWL_Seat::tablet_seat = nullptr |
Definition at line 1075 of file GHOST_SystemWayland.cc.
Referenced by gwl_registry_wl_seat_remove(), gwl_registry_wl_seat_update(), and gwl_seat_cursor_buffer_scale_calc().
| std::unordered_set<zwp_tablet_tool_v2 *> GWL_Seat::tablet_tools |
All currently active tablet tools (needed for changing the cursor).
Definition at line 1094 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::cursor_shape_custom_set(), GHOST_SystemWayland::cursor_shape_set(), gwl_seat_cursor_buffer_hide(), gwl_seat_cursor_buffer_set(), gwl_seat_cursor_buffer_show(), tablet_seat_handle_tool_added(), and tablet_tool_handle_removed().
| GHOST_ITimerTask* GWL_Seat::timer = nullptr |
Timer for key repeats.
Definition at line 1225 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_capability_keyboard_disable(), gwl_seat_key_repeat_timer_add(), gwl_seat_key_repeat_timer_remove(), keyboard_handle_enter(), keyboard_handle_key(), keyboard_handle_key_repeat_cancel(), keyboard_handle_key_repeat_reset(), keyboard_handle_leave(), keyboard_handle_modifiers(), and keyboard_handle_repeat_info().
| GWL_SeatStatePointer GWL_Seat::touch |
Mostly this can be interchanged with pointer key differences are:
Definition at line 1162 of file GHOST_SystemWayland.cc.
| wl_touch* GWL_Seat::touch = nullptr |
Definition at line 1066 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_capability_touch_disable(), gwl_seat_capability_touch_enable(), gwl_seat_state_pointer_active(), touch_seat_handle_down(), touch_seat_handle_frame(), and touch_seat_handle_motion().
| struct { ... } GWL_Seat::touch_state |
This structure accumulates touch input that will be applied on the next frame event.
Currently only track one active contact point on the screen and map it to pointer motion and left-clicks. Multi-touch, pinching & swiping are not yet supported.
Referenced by touch_seat_handle_down(), touch_seat_handle_frame(), touch_seat_handle_motion(), and touch_seat_handle_up().
| uint64_t GWL_Seat::up_event_time_ms = 0 |
Definition at line 1179 of file GHOST_SystemWayland.cc.
Referenced by touch_seat_handle_frame(), and touch_seat_handle_up().
| bool GWL_Seat::up_pending = false |
Definition at line 1178 of file GHOST_SystemWayland.cc.
Referenced by touch_seat_handle_frame(), and touch_seat_handle_up().
| bool GWL_Seat::use_pointer_scroll_smooth_as_discrete = false |
Definition at line 1149 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_capability_pointer_multitouch_check(), gwl_seat_capability_pointer_multitouch_disable(), gwl_seat_capability_pointer_multitouch_enable(), pointer_handle_axis_stop(), and pointer_handle_frame().
| bool GWL_Seat::use_pointer_software_confine = false |
Definition at line 1185 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::cursor_grab_use_software_display_get(), relative_pointer_handle_relative_motion_impl(), and GHOST_SystemWayland::window_cursor_grab_set().
| struct { ... } GWL_Seat::wl |
Wayland core types.
Referenced by GHOST_SystemWayland::cursor_shape_set(), data_device_handle_drop(), data_device_handle_enter(), data_device_handle_leave(), dnd_events(), gwl_registry_wl_seat_add(), gwl_registry_wl_seat_remove(), gwl_registry_wl_seat_update(), gwl_seat_capability_keyboard_disable(), gwl_seat_capability_keyboard_enable(), gwl_seat_capability_pointer_disable(), gwl_seat_capability_pointer_enable(), gwl_seat_capability_pointer_multitouch_enable(), gwl_seat_capability_touch_disable(), gwl_seat_capability_touch_enable(), gwl_seat_cursor_buffer_hide(), gwl_seat_cursor_buffer_scale_calc(), gwl_seat_cursor_buffer_set(), gwl_seat_cursor_buffer_show(), pointer_handle_leave(), GHOST_SystemWayland::putClipboardImage(), seat_handle_capabilities(), system_clipboard_put(), GHOST_SystemWayland::window_cursor_grab_set(), GHOST_SystemWayland::window_surface_unref(), and GHOST_SystemWayland::wl_seat_active_get_with_input_serial().
| struct { ... } GWL_Seat::wp |
Wayland native types.
Referenced by GHOST_SystemWayland::cursor_shape_custom_set(), GHOST_SystemWayland::cursor_shape_set(), gwl_registry_wl_seat_remove(), gwl_registry_wl_seat_update(), gwl_seat_capability_pointer_multitouch_check(), gwl_seat_capability_pointer_multitouch_disable(), gwl_seat_capability_pointer_multitouch_enable(), gwl_seat_cursor_buffer_hide(), gwl_seat_cursor_buffer_scale_calc(), gwl_seat_cursor_buffer_set(), gwl_seat_cursor_buffer_show(), setCursorPositionClientRelative_impl(), system_clipboard_put_primary_selection(), tablet_seat_handle_tool_added(), tablet_tool_handle_removed(), and GHOST_SystemWayland::window_cursor_grab_set().
| struct { ... } GWL_Seat::xkb |
XKB native types.
Referenced by GHOST_SystemWayland::getModifierKeys(), gwl_registry_wl_seat_add(), gwl_registry_wl_seat_remove(), gwl_seat_key_layout_active_state_update_mask(), gwl_seat_key_repeat_timer_fn(), keyboard_handle_enter(), keyboard_handle_key(), keyboard_handle_keymap(), and keyboard_handle_modifiers().
| xkb_mod_index_t GWL_Seat::xkb_keymap_mod_index[MOD_INDEX_NUM] = {XKB_MOD_INVALID} |
Cache result of xkb_keymap_mod_get_index so every time a modifier is accessed a string lookup isn't required. Be sure to check for #XKB_MOD_INVALID before using.
Definition at line 1204 of file GHOST_SystemWayland.cc.
Referenced by GHOST_SystemWayland::getModifierKeys(), gwl_seat_key_layout_active_state_update_mask(), and keyboard_handle_keymap().
| xkb_mod_index_t GWL_Seat::xkb_keymap_mod_index_mod2 = XKB_MOD_INVALID |
Cache result of xkb_keymap_mod_get_index(keymap, XKB_MOD_NAME_NUM).
Definition at line 1210 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_key_layout_active_state_update_mask(), and keyboard_handle_keymap().
| xkb_mod_index_t GWL_Seat::xkb_keymap_mod_index_numlock = XKB_MOD_INVALID |
Cache result of xkb_keymap_mod_get_index(keymap, "NumLock").
Definition at line 1212 of file GHOST_SystemWayland.cc.
Referenced by gwl_seat_key_layout_active_state_update_mask(), and keyboard_handle_keymap().
| bool GWL_Seat::xkb_use_non_latin_workaround = false |
Definition at line 1193 of file GHOST_SystemWayland.cc.
Referenced by keyboard_handle_key(), and keyboard_handle_keymap().