| 27 * @section_id: libgnt-gntkeys |
27 * @section_id: libgnt-gntkeys |
| 28 * @short_description: <filename>gntkeys.h</filename> |
28 * @short_description: <filename>gntkeys.h</filename> |
| 29 * @title: Keys API |
29 * @title: Keys API |
| 30 */ |
30 */ |
| 31 |
31 |
| 32 #include <curses.h> |
|
| 33 #include <term.h> |
32 #include <term.h> |
| 34 |
33 |
| 35 /* |
34 /* |
| 36 * terminfo/termcap doesn't provide all the information that I want to use, eg. |
35 * terminfo/termcap doesn't provide all the information that I want to use, eg. |
| 37 * ctrl-up, ctrl-down etc. So I am going to hard-code some of the information |
36 * ctrl-up, ctrl-down etc. So I am going to hard-code some of the information |
| 41 extern char *gnt_key_cdown; |
40 extern char *gnt_key_cdown; |
| 42 extern char *gnt_key_cleft; |
41 extern char *gnt_key_cleft; |
| 43 extern char *gnt_key_cright; |
42 extern char *gnt_key_cright; |
| 44 |
43 |
| 45 #define SAFE(x) ((cur_term && (x)) ? (x) : "") |
44 #define SAFE(x) ((cur_term && (x)) ? (x) : "") |
| |
45 |
| |
46 /* This is needed so that g-ir-scanner does not take GNT_KEY_CTRL_* as |
| |
47 constants -- because if it does, the .gir contains the following invalid XML |
| |
48 characters, and parsing explodes */ |
| |
49 #define CONST(x) x |
| |
50 |
| |
51 #ifdef _WIN32 |
| |
52 |
| |
53 /* XXX: \xe1 is a hacky alias for \x00 key code */ |
| |
54 |
| |
55 #define GNT_KEY_POPUP CONST("") /* not supported? */ |
| |
56 |
| |
57 #define GNT_KEY_UP CONST("\xe0\x48") |
| |
58 #define GNT_KEY_DOWN CONST("\xe0\x50") |
| |
59 #define GNT_KEY_LEFT CONST("\xe0\x4B") |
| |
60 #define GNT_KEY_RIGHT CONST("\xe0\x4D") |
| |
61 |
| |
62 #define GNT_KEY_CTRL_UP CONST("\xe0\x8d") |
| |
63 #define GNT_KEY_CTRL_DOWN CONST("\xe0\x91") |
| |
64 #define GNT_KEY_CTRL_LEFT CONST("\xe0\x73") |
| |
65 #define GNT_KEY_CTRL_RIGHT CONST("\xe0\x74") |
| |
66 |
| |
67 #define GNT_KEY_PGUP CONST("\xe0\x49") |
| |
68 #define GNT_KEY_PGDOWN CONST("\xe0\x51") |
| |
69 #define GNT_KEY_HOME CONST("\xe0\x47") |
| |
70 #define GNT_KEY_END CONST("\xe0\x4f") |
| |
71 |
| |
72 #define GNT_KEY_ENTER CONST("\x0d") |
| |
73 |
| |
74 #define GNT_KEY_BACKSPACE CONST("\x08") |
| |
75 #define GNT_KEY_DEL CONST("\xe0\x53") |
| |
76 #define GNT_KEY_INS CONST("\xe0\x52") |
| |
77 #define GNT_KEY_BACK_TAB CONST("\xe1\x94") |
| |
78 |
| |
79 #define GNT_KEY_F1 CONST("\xe1\x3b") |
| |
80 #define GNT_KEY_F2 CONST("\xe1\x3c") |
| |
81 #define GNT_KEY_F3 CONST("\xe1\x3d") |
| |
82 #define GNT_KEY_F4 CONST("\xe1\x3e") |
| |
83 #define GNT_KEY_F5 CONST("\xe1\x3f") |
| |
84 #define GNT_KEY_F6 CONST("\xe1\x40") |
| |
85 #define GNT_KEY_F7 CONST("\xe1\x41") |
| |
86 #define GNT_KEY_F8 CONST("\xe1\x42") |
| |
87 #define GNT_KEY_F9 CONST("\xe1\x43") |
| |
88 #define GNT_KEY_F10 CONST("\xe1\x44") |
| |
89 #define GNT_KEY_F11 CONST("\xe0\x85") |
| |
90 #define GNT_KEY_F12 CONST("\xe0\x86") |
| |
91 |
| |
92 #else |
| 46 |
93 |
| 47 #define GNT_KEY_POPUP SAFE(key_f16) /* Apparently */ |
94 #define GNT_KEY_POPUP SAFE(key_f16) /* Apparently */ |
| 48 |
95 |
| 49 /* Arrow keys */ |
96 /* Arrow keys */ |
| 50 #define GNT_KEY_LEFT SAFE(key_left) |
97 #define GNT_KEY_LEFT SAFE(key_left) |
| 67 #define GNT_KEY_BACKSPACE SAFE(key_backspace) |
114 #define GNT_KEY_BACKSPACE SAFE(key_backspace) |
| 68 #define GNT_KEY_DEL SAFE(key_dc) |
115 #define GNT_KEY_DEL SAFE(key_dc) |
| 69 #define GNT_KEY_INS SAFE(key_ic) |
116 #define GNT_KEY_INS SAFE(key_ic) |
| 70 #define GNT_KEY_BACK_TAB ((cur_term && back_tab) ? back_tab : SAFE(key_btab)) |
117 #define GNT_KEY_BACK_TAB ((cur_term && back_tab) ? back_tab : SAFE(key_btab)) |
| 71 |
118 |
| 72 /* This is needed so that g-ir-scanner does not take GNT_KEY_CTRL_* as |
119 #define GNT_KEY_F1 SAFE(key_f1) |
| 73 constants -- because if it does, the .gir contains the following invalid XML |
120 #define GNT_KEY_F2 SAFE(key_f2) |
| 74 characters, and parsing explodes */ |
121 #define GNT_KEY_F3 SAFE(key_f3) |
| 75 #define CONST(x) x |
122 #define GNT_KEY_F4 SAFE(key_f4) |
| |
123 #define GNT_KEY_F5 SAFE(key_f5) |
| |
124 #define GNT_KEY_F6 SAFE(key_f6) |
| |
125 #define GNT_KEY_F7 SAFE(key_f7) |
| |
126 #define GNT_KEY_F8 SAFE(key_f8) |
| |
127 #define GNT_KEY_F9 SAFE(key_f9) |
| |
128 #define GNT_KEY_F10 SAFE(key_f10) |
| |
129 #define GNT_KEY_F11 SAFE(key_f11) |
| |
130 #define GNT_KEY_F12 SAFE(key_f12) |
| |
131 |
| |
132 #endif |
| 76 |
133 |
| 77 #define GNT_KEY_CTRL_A CONST("\001") |
134 #define GNT_KEY_CTRL_A CONST("\001") |
| 78 #define GNT_KEY_CTRL_B CONST("\002") |
135 #define GNT_KEY_CTRL_B CONST("\002") |
| 79 #define GNT_KEY_CTRL_D CONST("\004") |
136 #define GNT_KEY_CTRL_D CONST("\004") |
| 80 #define GNT_KEY_CTRL_E CONST("\005") |
137 #define GNT_KEY_CTRL_E CONST("\005") |