2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
12 # include <X11/extensions/XTest.h>
15 #include "ecore_x_private.h"
21 ecore_x_test_fake_key_down(const char *key)
27 LOGFN(__FILE__, __LINE__, __FUNCTION__);
28 if (!strncmp(key, "Keycode-", 8))
29 keycode = atoi(key + 8);
32 keysym = XStringToKeysym(key);
33 if (keysym == NoSymbol) return 0;
34 keycode = XKeysymToKeycode(_ecore_x_disp, keysym);
36 if (keycode == 0) return 0;
37 return XTestFakeKeyEvent(_ecore_x_disp, keycode, 1, 0);
44 ecore_x_test_fake_key_up(const char *key)
50 LOGFN(__FILE__, __LINE__, __FUNCTION__);
51 if (!strncmp(key, "Keycode-", 8))
52 keycode = atoi(key + 8);
55 keysym = XStringToKeysym(key);
56 if (keysym == NoSymbol) return 0;
57 keycode = XKeysymToKeycode(_ecore_x_disp, keysym);
59 if (keycode == 0) return 0;
60 return XTestFakeKeyEvent(_ecore_x_disp, keycode, 0, 0);
67 ecore_x_test_fake_key_press(const char *key)
74 LOGFN(__FILE__, __LINE__, __FUNCTION__);
75 if (!strncmp(key, "Keycode-", 8))
76 keycode = atoi(key + 8);
79 keysym = XStringToKeysym(key);
80 if (keysym == NoSymbol) return 0;
81 keycode = XKeysymToKeycode(_ecore_x_disp, keysym);
82 if (XKeycodeToKeysym(_ecore_x_disp, keycode, 0) != keysym)
84 if (XKeycodeToKeysym(_ecore_x_disp, keycode, 1) == keysym)
96 int keycode_min, keycode_max, keycode_num;
99 XDisplayKeycodes(_ecore_x_disp, &keycode_min, &keycode_max);
100 keysyms = XGetKeyboardMapping(_ecore_x_disp, keycode_min,
101 keycode_max - keycode_min + 1,
103 mod = (mod + 1) & 0x7;
104 i = (keycode_max - keycode_min - mod - 1) * keycode_num;
107 XChangeKeyboardMapping(_ecore_x_disp, keycode_min, keycode_num,
108 keysyms, (keycode_max - keycode_min));
110 XSync(_ecore_x_disp, False);
111 keycode = keycode_max - mod - 1;
114 XTestFakeKeyEvent(_ecore_x_disp,
115 XKeysymToKeycode(_ecore_x_disp, XK_Shift_L), 1, 0);
116 XTestFakeKeyEvent(_ecore_x_disp, keycode, 1, 0);
117 XTestFakeKeyEvent(_ecore_x_disp, keycode, 0, 0);
119 XTestFakeKeyEvent(_ecore_x_disp,
120 XKeysymToKeycode(_ecore_x_disp, XK_Shift_L), 0, 0);
128 ecore_x_keysym_string_get(int keysym)
130 return XKeysymToString(keysym);