remote-desktop: Add keyboard keycode event support
Keyboard keycode events will act as a physical keyboard thus depend on the active keyboard layout.
This commit is contained in:
parent
1ead513b66
commit
5ee825c081
@ -255,6 +255,38 @@ handle_stop (MetaDBusRemoteDesktopSession *skeleton,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
handle_notify_keyboard_keycode (MetaDBusRemoteDesktopSession *skeleton,
|
||||||
|
GDBusMethodInvocation *invocation,
|
||||||
|
unsigned int keycode,
|
||||||
|
gboolean pressed)
|
||||||
|
{
|
||||||
|
MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton);
|
||||||
|
ClutterKeyState state;
|
||||||
|
|
||||||
|
if (!check_permission (session, invocation))
|
||||||
|
{
|
||||||
|
g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
|
||||||
|
G_DBUS_ERROR_ACCESS_DENIED,
|
||||||
|
"Permission denied");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pressed)
|
||||||
|
state = CLUTTER_KEY_STATE_PRESSED;
|
||||||
|
else
|
||||||
|
state = CLUTTER_KEY_STATE_RELEASED;
|
||||||
|
|
||||||
|
clutter_virtual_input_device_notify_key (session->virtual_keyboard,
|
||||||
|
CLUTTER_CURRENT_TIME,
|
||||||
|
keycode,
|
||||||
|
state);
|
||||||
|
|
||||||
|
meta_dbus_remote_desktop_session_complete_notify_keyboard_keycode (skeleton,
|
||||||
|
invocation);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
handle_notify_keyboard_keysym (MetaDBusRemoteDesktopSession *skeleton,
|
handle_notify_keyboard_keysym (MetaDBusRemoteDesktopSession *skeleton,
|
||||||
GDBusMethodInvocation *invocation,
|
GDBusMethodInvocation *invocation,
|
||||||
@ -445,6 +477,7 @@ meta_remote_desktop_session_init_iface (MetaDBusRemoteDesktopSessionIface *iface
|
|||||||
{
|
{
|
||||||
iface->handle_start = handle_start;
|
iface->handle_start = handle_start;
|
||||||
iface->handle_stop = handle_stop;
|
iface->handle_stop = handle_stop;
|
||||||
|
iface->handle_notify_keyboard_keycode = handle_notify_keyboard_keycode;
|
||||||
iface->handle_notify_keyboard_keysym = handle_notify_keyboard_keysym;
|
iface->handle_notify_keyboard_keysym = handle_notify_keyboard_keysym;
|
||||||
iface->handle_notify_pointer_button = handle_notify_pointer_button;
|
iface->handle_notify_pointer_button = handle_notify_pointer_button;
|
||||||
iface->handle_notify_pointer_axis_discrete = handle_notify_pointer_axis_discrete;
|
iface->handle_notify_pointer_axis_discrete = handle_notify_pointer_axis_discrete;
|
||||||
|
@ -57,6 +57,16 @@
|
|||||||
-->
|
-->
|
||||||
<signal name="Closed" />
|
<signal name="Closed" />
|
||||||
|
|
||||||
|
<!--
|
||||||
|
NotifyKeyboardKeycode:
|
||||||
|
|
||||||
|
A key identified by a keysym was pressed or released
|
||||||
|
-->
|
||||||
|
<method name="NotifyKeyboardKeycode">
|
||||||
|
<arg name="keycode" type="u" direction="in" />
|
||||||
|
<arg name="state" type="b" direction="in" />
|
||||||
|
</method>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
NotifyKeyboardKeysym:
|
NotifyKeyboardKeysym:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user