• Po Lu's avatar
    Add support for event processing via XInput 2 · 487ec3cf
    Po Lu authored
    * configure.ac: Add an option to use XInput 2 if available.
    * src/Makefile.in (XINPUT_LIBS, XINPUT_CFLAGS): New variables.
    (EMACS_CFLAGS): Add Xinput CFLAGS.
    (LIBES): Add XInput libs.
    * src/xmenu.c (popup_activated_flag): Expose flag if
    XInput 2 is available.
    * src/xfns.c (x_window): Set XInput 2 event mask.
    (setup_xi_event_mask): New function.
    (syms_of_xfns): Provide XInput 2 feature.
    * src/xterm.c (x_detect_focus_change): Handle XInput 2
    GenericEvents.
    (handle_one_xevent): Handle XInput 2 events.
    (x_term_init): Ask the server for XInput 2 support and set
    xkb_desc if available.
    (x_delete_terminal): Free XKB kb desc if it exists, and free
    XI2 devices if they exist.
    (xi_grab_or_ungrab_device)
    (xi_reset_scroll_valuators_for_device_id)
    (x_free_xi_devices, x_init_master_valuators): New functions.
    (x_get_scroll_valuator_delta): New function.
    (init_xterm): Don't tell GTK to only use Core Input when built
    with XInput 2 support.
    * src/xterm.h (struct x_display_info): Add fields for XKB
    and XI2 support.
    * src/gtkutil.c (xg_event_is_for_menubar): Handle
    XIDeviceEvents.
    (xg_is_menu_window): New function.
    (xg_event_is_for_scrollbar): Handle XIDeviceEvents.
    * etc/NEWS: Document changes.
    
    * lisp/mwheel.el (mouse-wheel-down-alternate-event)
    (mouse-wheel-up-alternate-event)
    (mouse-wheel-left-alternate-event)
    (mouse-wheel-right-alternate-event): New user options.
    
    (mouse-wheel-text-scale)
    (mwheel-scroll): Test for alternate events.
    (mouse-wheel--setup-bindings): Set up bindings for alternate
    buttons.
    487ec3cf
gtkutil.c 167 KB