virtual-input-device/x11: Get X11 display and screen from X11 backend
Instead of from ClutterX11. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2014>
This commit is contained in:
parent
d796c40156
commit
7851e69bbf
@ -25,8 +25,10 @@
|
|||||||
|
|
||||||
#include <X11/extensions/XTest.h>
|
#include <X11/extensions/XTest.h>
|
||||||
|
|
||||||
|
#include "backends/x11/meta-backend-x11.h"
|
||||||
#include "backends/x11/meta-clutter-backend-x11.h"
|
#include "backends/x11/meta-clutter-backend-x11.h"
|
||||||
#include "backends/x11/meta-keymap-x11.h"
|
#include "backends/x11/meta-keymap-x11.h"
|
||||||
|
#include "backends/x11/meta-seat-x11.h"
|
||||||
#include "clutter/clutter.h"
|
#include "clutter/clutter.h"
|
||||||
|
|
||||||
#define DISCRETE_SCROLL_STEP 10.0
|
#define DISCRETE_SCROLL_STEP 10.0
|
||||||
@ -43,16 +45,25 @@ G_DEFINE_TYPE (MetaVirtualInputDeviceX11,
|
|||||||
meta_virtual_input_device_x11,
|
meta_virtual_input_device_x11,
|
||||||
CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE)
|
CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE)
|
||||||
|
|
||||||
|
static Display *
|
||||||
|
xdisplay_from_virtual_input_device (ClutterVirtualInputDevice *virtual_device)
|
||||||
|
{
|
||||||
|
ClutterSeat *seat = clutter_virtual_input_device_get_seat (virtual_device);
|
||||||
|
MetaSeatX11 *seat_x11 = META_SEAT_X11 (seat);
|
||||||
|
MetaBackend *backend = meta_seat_x11_get_backend (seat_x11);
|
||||||
|
|
||||||
|
return meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
meta_virtual_input_device_x11_notify_relative_motion (ClutterVirtualInputDevice *virtual_device,
|
meta_virtual_input_device_x11_notify_relative_motion (ClutterVirtualInputDevice *virtual_device,
|
||||||
uint64_t time_us,
|
uint64_t time_us,
|
||||||
double dx,
|
double dx,
|
||||||
double dy)
|
double dy)
|
||||||
{
|
{
|
||||||
XTestFakeRelativeMotionEvent (meta_clutter_x11_get_default_display (),
|
Display *xdisplay = xdisplay_from_virtual_input_device (virtual_device);
|
||||||
(int) dx,
|
|
||||||
(int) dy,
|
XTestFakeRelativeMotionEvent (xdisplay, (int) dx, (int) dy, 0);
|
||||||
0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -61,11 +72,17 @@ meta_virtual_input_device_x11_notify_absolute_motion (ClutterVirtualInputDevice
|
|||||||
double x,
|
double x,
|
||||||
double y)
|
double y)
|
||||||
{
|
{
|
||||||
XTestFakeMotionEvent (meta_clutter_x11_get_default_display (),
|
ClutterSeat *seat = clutter_virtual_input_device_get_seat (virtual_device);
|
||||||
meta_clutter_x11_get_default_screen (),
|
MetaSeatX11 *seat_x11 = META_SEAT_X11 (seat);
|
||||||
(int) x,
|
MetaBackend *backend = meta_seat_x11_get_backend (seat_x11);
|
||||||
(int) y,
|
Display *xdisplay;
|
||||||
0);
|
Screen *xscreen;
|
||||||
|
|
||||||
|
xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend));
|
||||||
|
xscreen = meta_backend_x11_get_xscreen (META_BACKEND_X11 (backend));
|
||||||
|
|
||||||
|
XTestFakeMotionEvent (xdisplay, XScreenNumberOfScreen (xscreen),
|
||||||
|
(int) x, (int) y, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -74,7 +91,9 @@ meta_virtual_input_device_x11_notify_button (ClutterVirtualInputDevice *virtual_
|
|||||||
uint32_t button,
|
uint32_t button,
|
||||||
ClutterButtonState button_state)
|
ClutterButtonState button_state)
|
||||||
{
|
{
|
||||||
XTestFakeButtonEvent (meta_clutter_x11_get_default_display (),
|
Display *xdisplay = xdisplay_from_virtual_input_device (virtual_device);
|
||||||
|
|
||||||
|
XTestFakeButtonEvent (xdisplay,
|
||||||
button, button_state == CLUTTER_BUTTON_STATE_PRESSED, 0);
|
button, button_state == CLUTTER_BUTTON_STATE_PRESSED, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +103,7 @@ meta_virtual_input_device_x11_notify_discrete_scroll (ClutterVirtualInputDevice
|
|||||||
ClutterScrollDirection direction,
|
ClutterScrollDirection direction,
|
||||||
ClutterScrollSource scroll_source)
|
ClutterScrollSource scroll_source)
|
||||||
{
|
{
|
||||||
Display *xdisplay = meta_clutter_x11_get_default_display ();
|
Display *xdisplay = xdisplay_from_virtual_input_device (virtual_device);
|
||||||
int button;
|
int button;
|
||||||
|
|
||||||
switch (direction)
|
switch (direction)
|
||||||
@ -159,7 +178,9 @@ meta_virtual_input_device_x11_notify_key (ClutterVirtualInputDevice *virtual_dev
|
|||||||
uint32_t key,
|
uint32_t key,
|
||||||
ClutterKeyState key_state)
|
ClutterKeyState key_state)
|
||||||
{
|
{
|
||||||
XTestFakeKeyEvent (meta_clutter_x11_get_default_display (),
|
Display *xdisplay = xdisplay_from_virtual_input_device (virtual_device);
|
||||||
|
|
||||||
|
XTestFakeKeyEvent (xdisplay,
|
||||||
key + 8, key_state == CLUTTER_KEY_STATE_PRESSED, 0);
|
key + 8, key_state == CLUTTER_KEY_STATE_PRESSED, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,6 +193,7 @@ meta_virtual_input_device_x11_notify_keyval (ClutterVirtualInputDevice *virtual_
|
|||||||
ClutterBackend *backend = clutter_get_default_backend ();
|
ClutterBackend *backend = clutter_get_default_backend ();
|
||||||
ClutterSeat *seat = clutter_backend_get_default_seat (backend);
|
ClutterSeat *seat = clutter_backend_get_default_seat (backend);
|
||||||
MetaKeymapX11 *keymap = META_KEYMAP_X11 (clutter_seat_get_keymap (seat));
|
MetaKeymapX11 *keymap = META_KEYMAP_X11 (clutter_seat_get_keymap (seat));
|
||||||
|
Display *xdisplay = xdisplay_from_virtual_input_device (virtual_device);
|
||||||
uint32_t keycode, level;
|
uint32_t keycode, level;
|
||||||
|
|
||||||
if (!meta_keymap_x11_keycode_for_keyval (keymap, keyval, &keycode, &level))
|
if (!meta_keymap_x11_keycode_for_keyval (keymap, keyval, &keycode, &level))
|
||||||
@ -189,7 +211,7 @@ meta_virtual_input_device_x11_notify_keyval (ClutterVirtualInputDevice *virtual_
|
|||||||
key_state == CLUTTER_KEY_STATE_PRESSED)
|
key_state == CLUTTER_KEY_STATE_PRESSED)
|
||||||
meta_keymap_x11_lock_modifiers (keymap, level, TRUE);
|
meta_keymap_x11_lock_modifiers (keymap, level, TRUE);
|
||||||
|
|
||||||
XTestFakeKeyEvent (meta_clutter_x11_get_default_display (),
|
XTestFakeKeyEvent (xdisplay,
|
||||||
(KeyCode) keycode,
|
(KeyCode) keycode,
|
||||||
key_state == CLUTTER_KEY_STATE_PRESSED, 0);
|
key_state == CLUTTER_KEY_STATE_PRESSED, 0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user