void _gdk_mir_print_key_event (const MirInputEvent *event) { const MirKeyboardEvent *keyboard_event = mir_input_event_get_keyboard_event (event); if (!keyboard_event) return; g_printerr ("KEY\n"); g_printerr (" Device %lld\n", (long long int) mir_input_event_get_device_id (event)); g_printerr (" Action "); switch (mir_keyboard_event_action (keyboard_event)) { case mir_keyboard_action_down: g_printerr ("down"); break; case mir_keyboard_action_up: g_printerr ("up"); break; case mir_keyboard_action_repeat: g_printerr ("repeat"); break; default: g_printerr ("%u", mir_keyboard_event_action (keyboard_event)); break; } g_printerr ("\n"); _gdk_mir_print_modifiers (mir_keyboard_event_modifiers (keyboard_event)); g_printerr (" Key Code %i\n", mir_keyboard_event_key_code (keyboard_event)); g_printerr (" Scan Code %i\n", mir_keyboard_event_scan_code (keyboard_event)); g_printerr (" Event Time %lli\n", (long long int) mir_input_event_get_event_time (event)); }
void _gdk_mir_print_motion_event (const MirInputEvent *event) { const MirPointerEvent *pointer_event = mir_input_event_get_pointer_event (event); if (!pointer_event) return; g_printerr ("MOTION\n"); g_printerr (" Device %lld\n", (long long int) mir_input_event_get_device_id (event)); g_printerr (" Action "); switch (mir_pointer_event_action (pointer_event)) { case mir_pointer_action_button_down: g_printerr ("down"); break; case mir_pointer_action_button_up: g_printerr ("up"); break; case mir_pointer_action_enter: g_printerr ("enter"); break; case mir_pointer_action_leave: g_printerr ("leave"); break; case mir_pointer_action_motion: g_printerr ("motion"); break; default: g_printerr ("%u", mir_pointer_event_action (pointer_event)); } g_printerr ("\n"); _gdk_mir_print_modifiers (mir_pointer_event_modifiers (pointer_event)); g_printerr (" Button State"); if (mir_pointer_event_button_state (pointer_event, mir_pointer_button_primary)) g_printerr (" primary"); if (mir_pointer_event_button_state (pointer_event, mir_pointer_button_secondary)) g_printerr (" secondary"); if (mir_pointer_event_button_state (pointer_event, mir_pointer_button_tertiary)) g_printerr (" tertiary"); if (mir_pointer_event_button_state (pointer_event, mir_pointer_button_back)) g_printerr (" back"); if (mir_pointer_event_button_state (pointer_event, mir_pointer_button_forward)) g_printerr (" forward"); g_printerr ("\n"); g_printerr (" Offset (%f, %f)\n", mir_pointer_event_axis_value (pointer_event, mir_pointer_axis_x), mir_pointer_event_axis_value (pointer_event, mir_pointer_axis_y)); g_printerr (" Event Time %lli\n", (long long int) mir_input_event_get_event_time (event)); }
// Currently we only validate touch events as they are the most problematic void mi::Validator::validate_and_dispatch(MirEvent const& event) { if (mir_event_get_type(&event) != mir_event_type_input) { dispatch_valid_event(event); return; } auto iev = mir_event_get_input_event(&event); if (mir_input_event_get_type(iev) != mir_input_event_type_touch) { dispatch_valid_event(event); return; } auto tev = mir_input_event_get_touch_event(iev); handle_touch_event(mir_input_event_get_device_id(iev), tev); return; }