| 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | #ifndef I18N_H |
| 3 | #define I18N_H |
| 4 | /* Internationalization declarations */ |
| 5 | |
| 6 | enum msg_index_t { |
| 7 | MSG_FIRST_INDEX, |
| 8 | MSG_ANNOUNCEMENTS_START = MSG_FIRST_INDEX, |
| 9 | MSG_BLANK = MSG_ANNOUNCEMENTS_START, |
| 10 | MSG_IAM_ALIVE, |
| 11 | MSG_YOU_KILLED_SPEAKUP, |
| 12 | MSG_HEY_THATS_BETTER, |
| 13 | MSG_YOU_TURNED_ME_OFF, |
| 14 | MSG_PARKED, |
| 15 | MSG_UNPARKED, |
| 16 | MSG_MARK, |
| 17 | MSG_CUT, |
| 18 | MSG_MARK_CLEARED, |
| 19 | MSG_PASTE, |
| 20 | MSG_BRIGHT, |
| 21 | MSG_ON_BLINKING, |
| 22 | MSG_STATUS_START, |
| 23 | MSG_OFF = MSG_STATUS_START, |
| 24 | MSG_ON, |
| 25 | MSG_NO_WINDOW, |
| 26 | |
| 27 | /* These must be ordered the same as enum cursor_track */ |
| 28 | MSG_CURSOR_MSGS_START, |
| 29 | MSG_CURSORING_OFF = MSG_CURSOR_MSGS_START, |
| 30 | MSG_CURSORING_ON, |
| 31 | MSG_HIGHLIGHT_TRACKING, |
| 32 | MSG_READ_WINDOW, |
| 33 | MSG_READ_ALL, |
| 34 | |
| 35 | MSG_EDIT_DONE, |
| 36 | MSG_WINDOW_ALREADY_SET, |
| 37 | MSG_END_BEFORE_START, |
| 38 | MSG_WINDOW_CLEARED, |
| 39 | MSG_WINDOW_SILENCED, |
| 40 | MSG_WINDOW_SILENCE_DISABLED, |
| 41 | MSG_ERROR, |
| 42 | MSG_GOTO_CANCELED, |
| 43 | MSG_GOTO, |
| 44 | MSG_LEAVING_HELP, |
| 45 | MSG_IS_UNASSIGNED, |
| 46 | MSG_HELP_INFO, |
| 47 | |
| 48 | /* These must be ordered the same as enum edge */ |
| 49 | MSG_EDGE_MSGS_START, |
| 50 | MSG_EDGE_TOP = MSG_EDGE_MSGS_START, |
| 51 | MSG_EDGE_BOTTOM, |
| 52 | MSG_EDGE_LEFT, |
| 53 | MSG_EDGE_RIGHT, |
| 54 | |
| 55 | MSG_NUMBER, |
| 56 | MSG_SPACE, |
| 57 | MSG_START, /* A little confusing, given our convention. */ |
| 58 | MSG_END, /* A little confusing, given our convention. */ |
| 59 | MSG_CTRL, |
| 60 | |
| 61 | /* A message containing the single word "or". */ |
| 62 | MSG_DISJUNCTION, |
| 63 | MSG_ANNOUNCEMENTS_END = MSG_DISJUNCTION, |
| 64 | |
| 65 | /* Messages with format specifiers. */ |
| 66 | MSG_FORMATTED_START, |
| 67 | MSG_POS_INFO = MSG_FORMATTED_START, |
| 68 | MSG_CHAR_INFO, |
| 69 | MSG_REPEAT_DESC, |
| 70 | MSG_REPEAT_DESC2, |
| 71 | MSG_WINDOW_LINE, |
| 72 | MSG_WINDOW_BOUNDARY, |
| 73 | MSG_EDIT_PROMPT, |
| 74 | MSG_NO_COMMAND, |
| 75 | MSG_KEYDESC, |
| 76 | MSG_FORMATTED_END = MSG_KEYDESC, |
| 77 | |
| 78 | /* Control keys. */ |
| 79 | MSG_CTL_START, |
| 80 | MSG_CTL_SHIFT = MSG_CTL_START, |
| 81 | MSG_CTL_ALTGR, |
| 82 | MSG_CTL_CONTROL, |
| 83 | MSG_CTL_ALT, |
| 84 | MSG_CTL_LSHIFT, |
| 85 | MSG_CTL_SPEAKUP, |
| 86 | MSG_CTL_LCONTROL, |
| 87 | MSG_CTL_RCONTROL, |
| 88 | MSG_CTL_CAPSSHIFT, |
| 89 | MSG_CTL_END = MSG_CTL_CAPSSHIFT, |
| 90 | |
| 91 | /* Colors. */ |
| 92 | MSG_COLORS_START, |
| 93 | MSG_COLOR_BLACK = MSG_COLORS_START, |
| 94 | MSG_COLOR_BLUE, |
| 95 | MSG_COLOR_GREEN, |
| 96 | MSG_COLOR_CYAN, |
| 97 | MSG_COLOR_RED, |
| 98 | MSG_COLOR_MAGENTA, |
| 99 | MSG_COLOR_YELLOW, |
| 100 | MSG_COLOR_WHITE, |
| 101 | MSG_COLOR_GREY, |
| 102 | MSG_COLOR_BRIGHTBLUE, |
| 103 | MSG_COLOR_BRIGHTGREEN, |
| 104 | MSG_COLOR_BRIGHTCYAN, |
| 105 | MSG_COLOR_BRIGHTRED, |
| 106 | MSG_COLOR_BRIGHTMAGENTA, |
| 107 | MSG_COLOR_BRIGHTYELLOW, |
| 108 | MSG_COLOR_BRIGHTWHITE, |
| 109 | MSG_COLORS_END = MSG_COLOR_BRIGHTWHITE, |
| 110 | |
| 111 | MSG_STATES_START, |
| 112 | MSG_STATE_DOUBLE = MSG_STATES_START, |
| 113 | MSG_STATE_SPEAKUP, |
| 114 | MSG_STATE_ALT, |
| 115 | MSG_STATE_CONTROL, |
| 116 | MSG_STATE_ALTGR, |
| 117 | MSG_STATE_SHIFT, |
| 118 | MSG_STATES_END = MSG_STATE_SHIFT, |
| 119 | |
| 120 | MSG_KEYNAMES_START, |
| 121 | MSG_KEYNAME_ESC = MSG_KEYNAMES_START, |
| 122 | MSG_KEYNAME_1, MSG_KEYNAME_2, MSG_KEYNAME_3, MSG_KEYNAME_4, |
| 123 | MSG_KEYNAME_5, MSG_KEYNAME_6, MSG_KEYNAME_7, MSG_KEYNAME_8, |
| 124 | MSG_KEYNAME_9, |
| 125 | MSG_KEYNAME_0, MSG_KEYNAME_DASH, MSG_KEYNAME_EQUAL, MSG_KEYNAME_BS, |
| 126 | MSG_KEYNAME_TAB, |
| 127 | MSG_KEYNAME_Q, MSG_KEYNAME_W, MSG_KEYNAME_E, MSG_KEYNAME_R, |
| 128 | MSG_KEYNAME_T, MSG_KEYNAME_Y, MSG_KEYNAME_U, MSG_KEYNAME_I, |
| 129 | MSG_KEYNAME_O, MSG_KEYNAME_P, |
| 130 | MSG_KEYNAME_LEFTBRACE, MSG_KEYNAME_RIGHTBRACE, MSG_KEYNAME_ENTER, |
| 131 | MSG_KEYNAME_LEFTCTRL, MSG_KEYNAME_A, |
| 132 | MSG_KEYNAME_S, MSG_KEYNAME_D, MSG_KEYNAME_F, MSG_KEYNAME_G, |
| 133 | MSG_KEYNAME_H, MSG_KEYNAME_J, MSG_KEYNAME_K, MSG_KEYNAME_L, |
| 134 | MSG_KEYNAME_SEMICOLON, |
| 135 | MSG_KEYNAME_SINGLEQUOTE, MSG_KEYNAME_GRAVE, |
| 136 | MSG_KEYNAME_LEFTSHFT, MSG_KEYNAME_BACKSLASH, MSG_KEYNAME_Z, |
| 137 | MSG_KEYNAME_X, MSG_KEYNAME_C, MSG_KEYNAME_V, MSG_KEYNAME_B, |
| 138 | MSG_KEYNAME_N, MSG_KEYNAME_M, MSG_KEYNAME_COMMA, MSG_KEYNAME_DOT, |
| 139 | MSG_KEYNAME_SLASH, MSG_KEYNAME_RIGHTSHFT, |
| 140 | MSG_KEYNAME_KPSTAR, |
| 141 | MSG_KEYNAME_LEFTALT, MSG_KEYNAME_SPACE, MSG_KEYNAME_CAPSLOCK, |
| 142 | MSG_KEYNAME_F1, MSG_KEYNAME_F2, |
| 143 | MSG_KEYNAME_F3, MSG_KEYNAME_F4, MSG_KEYNAME_F5, MSG_KEYNAME_F6, |
| 144 | MSG_KEYNAME_F7, |
| 145 | MSG_KEYNAME_F8, MSG_KEYNAME_F9, MSG_KEYNAME_F10, MSG_KEYNAME_NUMLOCK, |
| 146 | MSG_KEYNAME_SCROLLLOCK, |
| 147 | MSG_KEYNAME_KP7, MSG_KEYNAME_KP8, MSG_KEYNAME_KP9, MSG_KEYNAME_KPMINUS, |
| 148 | MSG_KEYNAME_KP4, |
| 149 | MSG_KEYNAME_KP5, MSG_KEYNAME_KP6, MSG_KEYNAME_KPPLUS, MSG_KEYNAME_KP1, |
| 150 | MSG_KEYNAME_KP2, |
| 151 | MSG_KEYNAME_KP3, MSG_KEYNAME_KP0, MSG_KEYNAME_KPDOT, MSG_KEYNAME_103RD, |
| 152 | MSG_KEYNAME_F13, |
| 153 | MSG_KEYNAME_102ND, MSG_KEYNAME_F11, MSG_KEYNAME_F12, MSG_KEYNAME_F14, |
| 154 | MSG_KEYNAME_F15, |
| 155 | MSG_KEYNAME_F16, MSG_KEYNAME_F17, MSG_KEYNAME_F18, MSG_KEYNAME_F19, |
| 156 | MSG_KEYNAME_F20, |
| 157 | MSG_KEYNAME_KPENTER, MSG_KEYNAME_RIGHTCTRL, MSG_KEYNAME_KPSLASH, |
| 158 | MSG_KEYNAME_SYSRQ, MSG_KEYNAME_RIGHTALT, |
| 159 | MSG_KEYNAME_LF, MSG_KEYNAME_HOME, MSG_KEYNAME_UP, MSG_KEYNAME_PGUP, |
| 160 | MSG_KEYNAME_LEFT, |
| 161 | MSG_KEYNAME_RIGHT, MSG_KEYNAME_END, MSG_KEYNAME_DOWN, MSG_KEYNAME_PGDN, |
| 162 | MSG_KEYNAME_INS, |
| 163 | MSG_KEYNAME_DEL, MSG_KEYNAME_MACRO, MSG_KEYNAME_MUTE, |
| 164 | MSG_KEYNAME_VOLDOWN, MSG_KEYNAME_VOLUP, |
| 165 | MSG_KEYNAME_POWER, MSG_KEYNAME_KPEQUAL, MSG_KEYNAME_KPPLUSDASH, |
| 166 | MSG_KEYNAME_PAUSE, MSG_KEYNAME_F21, MSG_KEYNAME_F22, MSG_KEYNAME_F23, |
| 167 | MSG_KEYNAME_F24, MSG_KEYNAME_KPCOMMA, MSG_KEYNAME_LEFTMETA, |
| 168 | MSG_KEYNAME_RIGHTMETA, MSG_KEYNAME_COMPOSE, MSG_KEYNAME_STOP, |
| 169 | MSG_KEYNAME_AGAIN, MSG_KEYNAME_PROPS, |
| 170 | MSG_KEYNAME_UNDO, MSG_KEYNAME_FRONT, MSG_KEYNAME_COPY, MSG_KEYNAME_OPEN, |
| 171 | MSG_KEYNAME_PASTE, |
| 172 | MSG_KEYNAME_FIND, MSG_KEYNAME_CUT, MSG_KEYNAME_HELP, , |
| 173 | MSG_KEYNAME_CALC, |
| 174 | MSG_KEYNAME_SETUP, MSG_KEYNAME_SLEEP, MSG_KEYNAME_WAKEUP, |
| 175 | MSG_KEYNAME_FILE, MSG_KEYNAME_SENDFILE, |
| 176 | MSG_KEYNAME_DELFILE, MSG_KEYNAME_XFER, MSG_KEYNAME_PROG1, |
| 177 | MSG_KEYNAME_PROG2, MSG_KEYNAME_WWW, |
| 178 | MSG_KEYNAME_MSDOS, MSG_KEYNAME_COFFEE, MSG_KEYNAME_DIRECTION, |
| 179 | MSG_KEYNAME_CYCLEWINDOWS, MSG_KEYNAME_MAIL, |
| 180 | MSG_KEYNAME_BOOKMARKS, MSG_KEYNAME_COMPUTER, MSG_KEYNAME_BACK, |
| 181 | MSG_KEYNAME_FORWARD, MSG_KEYNAME_CLOSECD, |
| 182 | MSG_KEYNAME_EJECTCD, MSG_KEYNAME_EJECTCLOSE, MSG_KEYNAME_NEXTSONG, |
| 183 | MSG_KEYNAME_PLAYPAUSE, MSG_KEYNAME_PREVSONG, |
| 184 | MSG_KEYNAME_STOPCD, MSG_KEYNAME_RECORD, MSG_KEYNAME_REWIND, |
| 185 | MSG_KEYNAME_PHONE, MSG_KEYNAME_ISO, |
| 186 | MSG_KEYNAME_CONFIG, MSG_KEYNAME_HOMEPG, MSG_KEYNAME_REFRESH, |
| 187 | MSG_KEYNAME_EXIT, MSG_KEYNAME_MOVE, |
| 188 | MSG_KEYNAME_EDIT, MSG_KEYNAME_SCROLLUP, MSG_KEYNAME_SCROLLDN, |
| 189 | MSG_KEYNAME_KPLEFTPAR, MSG_KEYNAME_KPRIGHTPAR, |
| 190 | MSG_KEYNAMES_END = MSG_KEYNAME_KPRIGHTPAR, |
| 191 | |
| 192 | MSG_FUNCNAMES_START, |
| 193 | MSG_FUNCNAME_ATTRIB_BLEEP_DEC = MSG_FUNCNAMES_START, |
| 194 | MSG_FUNCNAME_ATTRIB_BLEEP_INC, |
| 195 | MSG_FUNCNAME_BLEEPS_DEC, MSG_FUNCNAME_BLEEPS_INC, |
| 196 | MSG_FUNCNAME_CHAR_FIRST, MSG_FUNCNAME_CHAR_LAST, |
| 197 | MSG_FUNCNAME_CHAR_CURRENT, MSG_FUNCNAME_CHAR_HEX_AND_DEC, |
| 198 | MSG_FUNCNAME_CHAR_NEXT, |
| 199 | MSG_FUNCNAME_CHAR_PHONETIC, MSG_FUNCNAME_CHAR_PREVIOUS, |
| 200 | MSG_FUNCNAME_CURSOR_PARK, MSG_FUNCNAME_CUT, |
| 201 | MSG_FUNCNAME_EDIT_DELIM, MSG_FUNCNAME_EDIT_EXNUM, |
| 202 | MSG_FUNCNAME_EDIT_MOST, MSG_FUNCNAME_EDIT_REPEATS, |
| 203 | MSG_FUNCNAME_EDIT_SOME, |
| 204 | MSG_FUNCNAME_GOTO, MSG_FUNCNAME_GOTO_BOTTOM, MSG_FUNCNAME_GOTO_LEFT, |
| 205 | MSG_FUNCNAME_GOTO_RIGHT, MSG_FUNCNAME_GOTO_TOP, MSG_FUNCNAME_HELP, |
| 206 | MSG_FUNCNAME_LINE_SAY_CURRENT, MSG_FUNCNAME_LINE_SAY_NEXT, |
| 207 | MSG_FUNCNAME_LINE_SAY_PREVIOUS, MSG_FUNCNAME_LINE_SAY_WITH_INDENT, |
| 208 | MSG_FUNCNAME_PASTE, MSG_FUNCNAME_PITCH_DEC, MSG_FUNCNAME_PITCH_INC, |
| 209 | MSG_FUNCNAME_PUNC_DEC, MSG_FUNCNAME_PUNC_INC, |
| 210 | MSG_FUNCNAME_PUNC_LEVEL_DEC, MSG_FUNCNAME_PUNC_LEVEL_INC, |
| 211 | MSG_FUNCNAME_QUIET, |
| 212 | MSG_FUNCNAME_RATE_DEC, MSG_FUNCNAME_RATE_INC, |
| 213 | MSG_FUNCNAME_READING_PUNC_DEC, MSG_FUNCNAME_READING_PUNC_INC, |
| 214 | MSG_FUNCNAME_SAY_ATTRIBUTES, |
| 215 | MSG_FUNCNAME_SAY_FROM_LEFT, MSG_FUNCNAME_SAY_FROM_TOP, |
| 216 | MSG_FUNCNAME_SAY_POSITION, MSG_FUNCNAME_SAY_SCREEN, |
| 217 | MSG_FUNCNAME_SAY_TO_BOTTOM, MSG_FUNCNAME_SAY_TO_RIGHT, |
| 218 | MSG_FUNCNAME_SPEAKUP, MSG_FUNCNAME_SPEAKUP_LOCK, |
| 219 | MSG_FUNCNAME_SPEAKUP_OFF, MSG_FUNCNAME_SPEECH_KILL, |
| 220 | MSG_FUNCNAME_SPELL_DELAY_DEC, MSG_FUNCNAME_SPELL_DELAY_INC, |
| 221 | MSG_FUNCNAME_SPELL_WORD, MSG_FUNCNAME_SPELL_WORD_PHONETICALLY, |
| 222 | MSG_FUNCNAME_TONE_DEC, MSG_FUNCNAME_TONE_INC, |
| 223 | MSG_FUNCNAME_VOICE_DEC, MSG_FUNCNAME_VOICE_INC, |
| 224 | MSG_FUNCNAME_VOLUME_DEC, MSG_FUNCNAME_VOLUME_INC, |
| 225 | MSG_FUNCNAME_WINDOW_CLEAR, MSG_FUNCNAME_WINDOW_SAY, |
| 226 | MSG_FUNCNAME_WINDOW_SET, MSG_FUNCNAME_WINDOW_SILENCE, |
| 227 | MSG_FUNCNAME_WORD_SAY_CURRENT, MSG_FUNCNAME_WORD_SAY_NEXT, |
| 228 | MSG_FUNCNAME_WORD_SAY_PREVIOUS, |
| 229 | MSG_FUNCNAMES_END = MSG_FUNCNAME_WORD_SAY_PREVIOUS, |
| 230 | |
| 231 | /* all valid indices must be above this */ |
| 232 | MSG_LAST_INDEX |
| 233 | }; |
| 234 | |
| 235 | struct msg_group_t { |
| 236 | char *name; |
| 237 | enum msg_index_t start; |
| 238 | enum msg_index_t end; |
| 239 | }; |
| 240 | |
| 241 | char *spk_msg_get(enum msg_index_t index); |
| 242 | ssize_t spk_msg_set(enum msg_index_t index, char *text, size_t length); |
| 243 | struct msg_group_t *spk_find_msg_group(const char *group_name); |
| 244 | void spk_reset_msg_group(struct msg_group_t *group); |
| 245 | void spk_initialize_msgs(void); |
| 246 | void spk_free_user_msgs(void); |
| 247 | |
| 248 | #endif |
| 249 | |