Mercurial > pidgin
annotate finch/libgnt/gntkeys.h @ 24087:40a4e02027f4
shuffle some code around to make sure are using the right errno,
References #7032
| author | Ka-Hing Cheung <khc@hxbc.us> |
|---|---|
| date | Thu, 11 Sep 2008 04:19:37 +0000 |
| parents | ae330012956f |
| children | c96b34b58b85 |
| rev | line source |
|---|---|
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
1 /** |
|
18303
5c6f019e48f8
Generate doxy-help files for libgnt. And make it actually work.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18049
diff
changeset
|
2 * @file gntkeys.h Keys API |
|
5c6f019e48f8
Generate doxy-help files for libgnt. And make it actually work.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18049
diff
changeset
|
3 * @ingroup gnt |
|
5c6f019e48f8
Generate doxy-help files for libgnt. And make it actually work.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18049
diff
changeset
|
4 */ |
|
5c6f019e48f8
Generate doxy-help files for libgnt. And make it actually work.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18049
diff
changeset
|
5 /* |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
6 * GNT - The GLib Ncurses Toolkit |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
7 * |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
8 * GNT is the legal property of its developers, whose names are too numerous |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
9 * to list here. Please refer to the COPYRIGHT file distributed with this |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
10 * source distribution. |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
11 * |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
12 * This library is free software; you can redistribute it and/or modify |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
13 * it under the terms of the GNU General Public License as published by |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
14 * the Free Software Foundation; either version 2 of the License, or |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
15 * (at your option) any later version. |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
16 * |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
17 * This program is distributed in the hope that it will be useful, |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
20 * GNU General Public License for more details. |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
21 * |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
22 * You should have received a copy of the GNU General Public License |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
23 * along with this program; if not, write to the Free Software |
|
19681
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
18303
diff
changeset
|
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
25 */ |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
26 |
| 15817 | 27 #ifndef GNT_KEYS_H |
| 28 #define GNT_KEYS_H | |
| 29 | |
| 30 #include <curses.h> | |
| 31 #include <term.h> | |
| 32 | |
| 33 /** | |
| 34 * terminfo/termcap doesn't provide all the information that I want to use, eg. | |
| 35 * ctrl-up, ctrl-down etc. So I am going to hard-code some of the information | |
| 36 * for some popular $TERMs | |
| 37 */ | |
| 38 extern char *gnt_key_cup; | |
| 39 extern char *gnt_key_cdown; | |
| 40 extern char *gnt_key_cleft; | |
| 41 extern char *gnt_key_cright; | |
| 42 | |
| 43 #define SAFE(x) ((x) ? (x) : "") | |
| 44 | |
| 45 #define GNT_KEY_POPUP SAFE(key_f16) /* Apparently */ | |
| 46 | |
| 47 /* Arrow keys */ | |
| 48 #define GNT_KEY_LEFT SAFE(key_left) | |
| 49 #define GNT_KEY_RIGHT SAFE(key_right) | |
| 50 #define GNT_KEY_UP SAFE(key_up) | |
| 51 #define GNT_KEY_DOWN SAFE(key_down) | |
| 52 | |
| 53 #define GNT_KEY_CTRL_UP SAFE(gnt_key_cup) | |
| 54 #define GNT_KEY_CTRL_DOWN SAFE(gnt_key_cdown) | |
| 55 #define GNT_KEY_CTRL_RIGHT SAFE(gnt_key_cright) | |
| 56 #define GNT_KEY_CTRL_LEFT SAFE(gnt_key_cleft) | |
| 57 | |
| 58 #define GNT_KEY_PGUP SAFE(key_ppage) | |
| 59 #define GNT_KEY_PGDOWN SAFE(key_npage) | |
| 60 #define GNT_KEY_HOME SAFE(key_home) | |
| 61 #define GNT_KEY_END SAFE(key_end) | |
| 62 | |
| 63 #define GNT_KEY_ENTER carriage_return | |
| 64 | |
| 65 #define GNT_KEY_BACKSPACE SAFE(key_backspace) | |
| 66 #define GNT_KEY_DEL SAFE(key_dc) | |
| 67 #define GNT_KEY_INS SAFE(key_ic) | |
|
18000
05d7fe2320a9
(16:39:44) rekkanoryo: i have a feature request
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15979
diff
changeset
|
68 #define GNT_KEY_BACK_TAB SAFE(back_tab) |
| 15817 | 69 |
| 70 #define GNT_KEY_CTRL_A "\001" | |
| 71 #define GNT_KEY_CTRL_B "\002" | |
| 72 #define GNT_KEY_CTRL_D "\004" | |
| 73 #define GNT_KEY_CTRL_E "\005" | |
| 74 #define GNT_KEY_CTRL_F "\006" | |
| 75 #define GNT_KEY_CTRL_G "\007" | |
| 76 #define GNT_KEY_CTRL_H "\010" | |
| 77 #define GNT_KEY_CTRL_I "\011" | |
| 78 #define GNT_KEY_CTRL_J "\012" | |
| 79 #define GNT_KEY_CTRL_K "\013" | |
| 80 #define GNT_KEY_CTRL_L "\014" | |
| 81 #define GNT_KEY_CTRL_M "\012" | |
| 82 #define GNT_KEY_CTRL_N "\016" | |
| 83 #define GNT_KEY_CTRL_O "\017" | |
| 84 #define GNT_KEY_CTRL_P "\020" | |
| 85 #define GNT_KEY_CTRL_R "\022" | |
| 86 #define GNT_KEY_CTRL_T "\024" | |
| 87 #define GNT_KEY_CTRL_U "\025" | |
| 88 #define GNT_KEY_CTRL_V "\026" | |
| 89 #define GNT_KEY_CTRL_W "\027" | |
| 90 #define GNT_KEY_CTRL_X "\030" | |
| 91 #define GNT_KEY_CTRL_Y "\031" | |
| 92 | |
| 93 #define GNT_KEY_F1 SAFE(key_f1) | |
| 94 #define GNT_KEY_F2 SAFE(key_f2) | |
| 95 #define GNT_KEY_F3 SAFE(key_f3) | |
| 96 #define GNT_KEY_F4 SAFE(key_f4) | |
| 97 #define GNT_KEY_F5 SAFE(key_f5) | |
| 98 #define GNT_KEY_F6 SAFE(key_f6) | |
| 99 #define GNT_KEY_F7 SAFE(key_f7) | |
| 100 #define GNT_KEY_F8 SAFE(key_f8) | |
| 101 #define GNT_KEY_F9 SAFE(key_f9) | |
| 102 #define GNT_KEY_F10 SAFE(key_f10) | |
| 103 #define GNT_KEY_F11 SAFE(key_f11) | |
| 104 #define GNT_KEY_F12 SAFE(key_f12) | |
| 105 | |
| 106 /** | |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
107 * Initialize the keys. |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
108 */ |
| 15817 | 109 void gnt_init_keys(void); |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
110 |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
111 /** |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
112 * Refine input text. This usually looks at what the terminal claims it is, |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
113 * and tries to change the text to work around some oft-broken terminfo entries. |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
114 * |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
115 * @param text The input text to refine. |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
116 */ |
| 15817 | 117 void gnt_keys_refine(char *text); |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
118 |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
119 /** |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
120 * Translate a user-readable representation of an input to a machine-readable representation. |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
121 * |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
122 * @param name The user-readable representation of an input (eg.: c-t) |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
123 * |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
124 * @return A machine-readable representation of the input. |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
125 */ |
| 15817 | 126 const char *gnt_key_translate(const char *name); |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
127 |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
128 /** |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
129 * Translate a machine-readable representation of an input to a user-readable representation. |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
130 * |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
131 * @param key The machine-readable representation of an input. |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
132 * |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
133 * @return A user-readable representation of the input (eg.: c-t). |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
134 */ |
|
15979
2c81ebc7bf0b
Add a way to get a list of bindings for a widget. This can be used by, eg, a window-manager to show helpful messages to the user.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
15817
diff
changeset
|
135 const char *gnt_key_lookup(const char *key); |
| 15817 | 136 |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
137 /** |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
138 * Add a key combination to the internal key-tree. |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
139 * |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
140 * @param key The key to add |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
141 */ |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
142 void gnt_keys_add_combination(const char *key); |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
143 |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
144 /** |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
145 * Remove a key combination from the internal key-tree. |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
146 * |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
147 * @param key The key to remove. |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
148 */ |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
149 void gnt_keys_del_combination(const char *key); |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
150 |
|
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
151 /** |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
152 * Find a combination from the given string. |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
153 * |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
154 * @param key The input string. |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
155 * |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
156 * @return The number of bytes in the combination that starts at the beginning |
|
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
157 * of key (can be 0). |
|
18049
1cedd520cd18
Doxygen skeleton and license info for gnt files.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
18000
diff
changeset
|
158 */ |
|
21253
ae330012956f
Doxygen for gnt.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
19681
diff
changeset
|
159 int gnt_keys_find_combination(const char *key); |
| 15817 | 160 |
| 161 /* A lot of commonly used variable names are defined in <term.h>. | |
| 162 * #undef them to make life easier for everyone. */ | |
| 163 | |
| 164 #undef columns | |
| 165 #undef lines | |
| 166 #undef buttons | |
| 167 #undef newline | |
| 168 | |
| 169 #endif |
