2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
5 #include "ecore_x_private.h"
10 ecore_x_test_fake_key_down(const char *key)
16 if (!strncmp(key, "Keycode-", 8))
17 keycode = atoi(key + 8);
20 keysym = XStringToKeysym(key);
21 if (keysym == NoSymbol) return 0;
22 keycode = XKeysymToKeycode(_ecore_x_disp, keysym);
24 if (keycode == 0) return 0;
25 return XTestFakeKeyEvent(_ecore_x_disp, keycode, 1, 0);
32 ecore_x_test_fake_key_up(const char *key)
38 if (!strncmp(key, "Keycode-", 8))
39 keycode = atoi(key + 8);
42 keysym = XStringToKeysym(key);
43 if (keysym == NoSymbol) return 0;
44 keycode = XKeysymToKeycode(_ecore_x_disp, keysym);
46 if (keycode == 0) return 0;
47 return XTestFakeKeyEvent(_ecore_x_disp, keycode, 0, 0);
54 ecore_x_test_fake_key_press(const char *key)
61 if (!strncmp(key, "Keycode-", 8))
62 keycode = atoi(key + 8);
65 keysym = XStringToKeysym(key);
66 if (keysym == NoSymbol) return 0;
67 keycode = XKeysymToKeycode(_ecore_x_disp, keysym);
68 if (XKeycodeToKeysym(_ecore_x_disp, keycode, 0) != keysym)
70 if (XKeycodeToKeysym(_ecore_x_disp, keycode, 1) == keysym)
81 static KeySym *keysyms;
82 static int keycode_min, keycode_max, keycode_num;
85 XDisplayKeycodes(_ecore_x_disp, &keycode_min, &keycode_max);
86 keysyms = XGetKeyboardMapping(_ecore_x_disp, keycode_min,
87 keycode_max - keycode_min + 1,
89 mod = (mod + 1) & 0x7;
90 i = (keycode_max - keycode_min - mod - 1) * keycode_num;
93 XChangeKeyboardMapping(_ecore_x_disp, keycode_min, keycode_num,
94 keysyms, (keycode_max - keycode_min));
95 XSync(_ecore_x_disp, False);
96 keycode = keycode_max - mod - 1;
99 XTestFakeKeyEvent(_ecore_x_disp,
100 XKeysymToKeycode(_ecore_x_disp, XK_Shift_L), 1, 0);
101 XTestFakeKeyEvent(_ecore_x_disp, keycode, 1, 0);
102 XTestFakeKeyEvent(_ecore_x_disp, keycode, 0, 0);
104 XTestFakeKeyEvent(_ecore_x_disp,
105 XKeysymToKeycode(_ecore_x_disp, XK_Shift_L), 0, 0);
113 ecore_x_keysym_string_get(int keysym)
115 return XKeysymToString(keysym);