diff --git a/lib/mks-display-picture.c b/lib/mks-display-picture.c index a46c30e..8486343 100644 --- a/lib/mks-display-picture.c +++ b/lib/mks-display-picture.c @@ -27,8 +27,6 @@ #include "mks-mouse.h" #include "mks-util-private.h" -#include "mks-keymap-xorgevdev2qnum-private.h" - struct _MksDisplayPicture { GtkWidget parent_instance; @@ -54,22 +52,6 @@ G_DEFINE_FINAL_TYPE (MksDisplayPicture, mks_display_picture, GTK_TYPE_WIDGET) static GParamSpec *properties [N_PROPS]; -static void -mks_display_picture_translate_keycode (MksDisplayPicture *self, - guint keyval, - guint keycode, - guint *translated) -{ - g_assert (MKS_IS_DISPLAY_PICTURE (self)); - g_assert (translated != NULL); - - if (keycode < xorgevdev_to_qnum_len && - xorgevdev_to_qnum[keycode] != 0) - *translated = xorgevdev_to_qnum[keycode]; - else - *translated = keycode; -} - static void mks_display_picture_keyboard_press_cb (GObject *object, GAsyncResult *result, @@ -319,7 +301,7 @@ mks_display_picture_legacy_event_cb (MksDisplayPicture *self, g_assert (MKS_IS_KEYBOARD (self->keyboard)); - mks_display_picture_translate_keycode (self, keyval, keycode, &qkeycode); + mks_keyboard_translate (keyval, keycode, &qkeycode); if (event_type == GDK_KEY_PRESS) mks_keyboard_press (self->keyboard, diff --git a/lib/mks-keyboard.c b/lib/mks-keyboard.c index 4e476d1..9bc65b9 100644 --- a/lib/mks-keyboard.c +++ b/lib/mks-keyboard.c @@ -26,6 +26,9 @@ #include "mks-keyboard.h" #include "mks-util-private.h" + +#include "mks-keymap-xorgevdev2qnum-private.h" + struct _MksKeyboard { MksDevice parent_instance; @@ -389,3 +392,25 @@ mks_keyboard_release_sync (MksKeyboard *self, MKS_RETURN (ret); } + +/** + * mks_keyboard_translate: + * @keyval: the keyval + * @keycode: the hardware keycode + * @translated: (out): the translated keycode + * + * Translate a keycode to a QEMU compatible one. + */ +void +mks_keyboard_translate (guint keyval, + guint keycode, + guint *translated) +{ + g_assert (translated != NULL); + + if (keycode < xorgevdev_to_qnum_len && + xorgevdev_to_qnum[keycode] != 0) + *translated = xorgevdev_to_qnum[keycode]; + else + *translated = keycode; +} diff --git a/lib/mks-keyboard.h b/lib/mks-keyboard.h index 2047ef4..8f779db 100644 --- a/lib/mks-keyboard.h +++ b/lib/mks-keyboard.h @@ -85,4 +85,9 @@ gboolean mks_keyboard_release_sync (MksKeyboard *self, GCancellable *cancellable, GError **error); +MKS_AVAILABLE_IN_ALL +void mks_keyboard_translate (guint keyval, + guint keycode, + guint *translated); + G_END_DECLS