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