FireBirdLib - Topfield TMS PVR TAP Programming Library
OSDMenuKeyboard_EventHandler.c
Go to the documentation of this file.
1#include <string.h>
3
4bool OSDMenuKeyboard_EventHandler(word *event, dword *param1, dword *param2)
5{
7
8 (void) param2;
9
11 {
12 TRACEEXIT();
13 return FALSE;
14 }
15
17 {
21
25 }
26
27 if(event)
28 {
29 switch(*event)
30 {
31 case EVT_KEY:
32 {
33 switch(*param1)
34 {
35 case RKEY_Right: //Zeichenauswahl rechts
36 case RKEY_VolUp:
37 {
39 switch(KeyPadPosition)
40 {
41 case 8: KeyPadPosition = 0; break;
42 case 16: KeyPadPosition = 8; break;
43 case 24: KeyPadPosition = 16; break;
44 case 29: KeyPadPosition = 24; break;
45 }
47 break;
48 }
49
50 case RKEY_Left: //Zeichenauswahl links
51 case RKEY_VolDown:
52 {
54
55 switch(KeyPadPosition)
56 {
57 case -1: KeyPadPosition = 7; break;
58 case 7: KeyPadPosition = 15; break;
59 case 15: KeyPadPosition = 23; break;
60 case 23: KeyPadPosition = 28; break;
61 }
63 break;
64 }
65
66 case RKEY_Down: //Zeichenauswahl hinunter
67 case RKEY_ChUp:
68 {
69 //Spezialbehandlung durch die 2 grossen Tasten
70 switch(KeyPadPosition)
71 {
72 case 18:
73 case 19: KeyPadPosition = 26; break;
74 case 20:
75 case 21: KeyPadPosition = 27; break;
76 case 22:
77 case 23: KeyPadPosition = 28; break;
78 case 24: KeyPadPosition = 0; break;
79 case 25: KeyPadPosition = 1; break;
80 case 26: KeyPadPosition = 2; break;
81 case 27: KeyPadPosition = 4; break;
82 case 28: KeyPadPosition = 6; break;
83
84 default: KeyPadPosition += 8;
85 }
87 break;
88 }
89
90 case RKEY_Up: //Zeichenauswahl hoch
91 case RKEY_ChDown:
92 {
93 //Spezialbehandlung durch die 2 grossen Tasten
94 switch(KeyPadPosition)
95 {
96 case 0: KeyPadPosition = 24; break;
97 case 1: KeyPadPosition = 25; break;
98 case 2:
99 case 3: KeyPadPosition = 26; break;
100 case 4:
101 case 5: KeyPadPosition = 27; break;
102 case 6:
103 case 7: KeyPadPosition = 28; break;
104 case 27: KeyPadPosition = 20; break;
105 case 28: KeyPadPosition = 22; break;
106 default: KeyPadPosition -= 8;
107 }
109 break;
110 }
111
112 case RKEY_Next: //Cursor rechts
113 {
115 break;
116 }
117
118 case RKEY_Prev: //Cursor links
119 {
121 break;
122 }
123
124 case RKEY_Slow: //Cursor ans Ende
125 {
127 break;
128 }
129
130 case RKEY_Ok: //Zeichen übernehmen
131 {
132 switch(KeyPadPosition)
133 {
134 case 26:
135 {
137 {
141 }
142 break;
143 }
144
145 case 27:
146 {
148 break;
149 }
150
151 case 28:
152 {
154
155 TRACEEXIT();
156 return TRUE;
157 }
158
159 default:
160 {
162 {
167 }
168 }
169 }
170 break;
171 }
172
173 case RKEY_Info: //Zeichensatz ändern
174 case RKEY_Play:
175 {
177 {
178 // Reihenfolge: KPM_CAPS -> KPM_Standard
180 else if (KeyPadMode == KPM_Standard) KeyPadMode++;
181 }
182 KeyPadMode++;
185 break;
186 }
187
188 case RKEY_Pause: //Zwischen normalen und CAPS Zeichen wechseln
189 {
192 else
195 break;
196 }
197
198 case RKEY_Forward: //Zeichen rechts löschen
199 {
201 break;
202 }
203
204 case RKEY_Rewind: //Zeichen links löschen
205 {
207 break;
208 }
209
210 case RKEY_Recall: //Original wiederherstellen
211 {
217 break;
218 }
219
220 case RKEY_Blue: //Gesamten Text löschen
221 {
225 break;
226 }
227
228 case RKEY_Yellow: //Add *text*
229 {
233 break;
234 }
235
236 case RKEY_Exit: //Speichern und beenden
237 {
239
240 TRACEEXIT();
241 return TRUE;
242 }
243 }
244 *param1 = 0;
245 break;
246 }
247
249 {
250 switch(*param1)
251 {
252 case 0x08: //BS
253 {
255 break;
256 }
257
258 case 0x0D: //CR
259 {
261
262 TRACEEXIT();
263 return TRUE;
264 }
265
266 case 0x1B: //ESC
267 {
269
270 TRACEEXIT();
271 return TRUE;
272 }
273
274 case 0x7f: //Del
275 {
277 break;
278 }
279
280 case 0x0124: //Pos1
281 {
284 break;
285 }
286
287 case 0x0123: //End
288 {
291 break;
292 }
293
294 case 0x0125: //Left
295 {
297 break;
298 }
299
300 case 0x0127: //Right
301 {
303 break;
304 }
305
306 case 0x0170: //F1 = RED
307 {
309
310 TRACEEXIT();
311 return TRUE;
312 }
313
314 case 0x0171: //F2 = GREEN
315 {
317
318 TRACEEXIT();
319 return TRUE;
320 }
321
322 case 0x0173: //F4 = BLUE
323 {
327 break;
328 }
329
330 default:
331 {
332 //ASCII Codes
333 if((*param1 < 0x100) && (((*param1 >= 0x20) && (*param1 < 0x7f)) || (*param1 >= 0xa0)))
334 {
335 char ToBeInserted[5];
336
337 ToBeInserted[0] = *param1;
338 ToBeInserted[1] = '\0';
339
340 StrMkUTF8(ToBeInserted, sizeof(ToBeInserted), 9);
341
342 if(strlen(OSDMenuKeyboard_StringVar) < OSDMenuKeyboard_StringMaxSize - strlen(ToBeInserted))
343 {
348 }
349 }
350 }
351 }
352 break;
353 }
354 }
355 }
356
357 TRACEEXIT();
358 return FALSE;
359}
void OSDMenuKeyboard_DeleteRight(void)
char Keypad[KPM_NrModes][26][4]
void OSDMenuKeyboard_CursorLeft(void)
char * OSDMenuKeyboard_StringVarOrig
void OSDMenuKeyboard_Finish(void)
int KeyPadPosition
char * OSDMenuKeyboard_StringVar
dword OSDMenuKeyboard_StringMaxSize
int OSDMenuKeyboard_CursorPosition
tKeyPadMode KeyPadMode
void OSDMenuKeyboard_CursorEnd(void)
bool AutomaticLowerCase
void OSDMenuKeyboard_Draw(void)
void OSDMenuKeyboard_DeleteLeft(void)
void OSDMenuKeyboard_CursorRight(void)
bool OSDMenuKeyboard_GUIInitialized
void OSDMenuKeyboard_TMSRemoteDirectMode(bool DirectMode)
int OSDMenuKeyboard_TextStartPosition
void OSDMenuKeyboard_SaveAndFinish(void)
bool OSDMenuKeyboard_EventHandler(word *event, dword *param1, dword *param2)
#define TRACEEXIT()
Definition: libFireBird.h:1244
bool StrMkUTF8(byte *SourceString, size_t SourceSize, byte DefaultISO8859CharSet)
Definition: StrMkUTF8.c:5
int strlenUC(const byte *s)
Definition: strlenUC.c:4
#define RKEY_Yellow
Definition: libFireBird.h:213
#define TRACEENTER()
Definition: libFireBird.h:1243
void InsertAt(const char *SourceString, int Pos, char *NewString)
Definition: InsertAt.c:4
#define EVT_TMSREMOTEASCII
Definition: libFireBird.h:3071
#define RKEY_Blue
Definition: libFireBird.h:214
@ KPM_NrModes
Definition: libFireBird.h:2983
@ KPM_Standard
Definition: libFireBird.h:2976
@ KPM_CAPS
Definition: libFireBird.h:2977