From 3beb6bb40004493823f6902af39b55cab1061812 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Sun, 29 Jan 2012 20:29:30 +0000 Subject: [PATCH] Ecore_X: Add api function (and code) to retrieve actual keycode from keyname (needed to handle input from x11 to wayland clients). SVN revision: 67591 --- legacy/ecore/src/lib/ecore_x/Ecore_X.h | 7 +++++++ legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_keymap.c | 8 ++++++++ legacy/ecore/src/lib/ecore_x/xlib/ecore_x_test.c | 12 ++++++++++++ 3 files changed, 27 insertions(+) diff --git a/legacy/ecore/src/lib/ecore_x/Ecore_X.h b/legacy/ecore/src/lib/ecore_x/Ecore_X.h index b5d2c3f..29992b9 100644 --- a/legacy/ecore/src/lib/ecore_x/Ecore_X.h +++ b/legacy/ecore/src/lib/ecore_x/Ecore_X.h @@ -3408,6 +3408,13 @@ EAPI Eina_Bool EAPI const char * ecore_x_keysym_string_get(int keysym); +/** + * Given a keyname, return the keycode representing that key + * + * @since 1.2.0 + */ +EAPI int ecore_x_keysym_keycode_get(const char *keyname); + typedef struct _Ecore_X_Image Ecore_X_Image; EAPI Ecore_X_Image * diff --git a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_keymap.c b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_keymap.c index 40304df..b1c7528 100644 --- a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_keymap.c +++ b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_keymap.c @@ -279,6 +279,14 @@ ecore_x_keysym_string_get(int keysym) return _ecore_xcb_keymap_keysym_to_string(keysym); } +EAPI int +ecore_x_keysym_keycode_get(const char *keyname) +{ + LOGFN(__FILE__, __LINE__, __FUNCTION__); + + return _ecore_xcb_keymap_string_to_keycode(keyname); +} + /* local functions */ static int _ecore_xcb_keymap_mask_get(void *reply, diff --git a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_test.c b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_test.c index c8c04e4..23eea10 100644 --- a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_test.c +++ b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_test.c @@ -153,3 +153,15 @@ ecore_x_keysym_string_get(int keysym) return XKeysymToString(keysym); } +EAPI int +ecore_x_keysym_keycode_get(const char *keyname) +{ + int keycode = 0; + + if (!strncmp(keyname, "Keycode-", 8)) + keycode = atoi(keyname + 8); + else + keycode = XKeysymToKeycode(_ecore_x_disp, XStringToKeysym(keyname)); + + return keycode; +} -- 2.7.4