9
9
#include <devinput.h>
10
10
#include <stdarg.h>
11
11
12
+ //#define AZERTY // uncomment this for AZERTY keyboards
13
+
12
14
static char tbuf1 [TTYSIZ ];
13
15
static char tbuf2 [TTYSIZ ];
14
16
static char tbuf3 [TTYSIZ ];
@@ -246,6 +248,16 @@ static void keyproc(void)
246
248
}
247
249
248
250
uint8_t keyboard [8 ][8 ] = {
251
+ #ifdef AZERTY
252
+ {'>' , 'q' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' },
253
+ {'h' , 'i' , 'j' , 'k' , 'l' , ',' , 'n' , 'o' },
254
+ {'p' , 'a' , 'r' , 's' , 't' , 'u' , 'v' , 'z' },
255
+ {'x' , 'y' , 'w' , '^' , '@' , 'm' , '\\' ,'}' },
256
+ {'}' , '&' , '[' , '"' , '\'' ,'(' , '|' , ']' },
257
+ {'!' , '{' , ')' , '-' , '$' , ';' , ':' , '=' },
258
+ { KEY_ENTER , KEY_CLEAR , KEY_STOP , KEY_UP , KEY_DOWN , KEY_BS , KEY_DEL , ' ' },
259
+ { 0 , 0 , 0 , 0 , KEY_F1 , KEY_F2 , KEY_F3 , 0 }
260
+ #else
249
261
{'@' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' },
250
262
{'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' },
251
263
{'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' },
@@ -254,9 +266,20 @@ uint8_t keyboard[8][8] = {
254
266
{'8' , '9' , ':' , ';' , ',' , '-' , '.' , '/' },
255
267
{ KEY_ENTER , KEY_CLEAR , KEY_STOP , KEY_UP , KEY_DOWN , KEY_BS , KEY_DEL , ' ' },
256
268
{ 0 , 0 , 0 , 0 , KEY_F1 , KEY_F2 , KEY_F3 , 0 }
269
+ #endif
257
270
};
258
271
259
272
uint8_t shiftkeyboard [8 ][8 ] = {
273
+ #ifdef AZERTY
274
+ {'<' , 'Q' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' },
275
+ {'H' , 'I' , 'J' , 'K' , 'L' , '?' , 'N' , 'O' },
276
+ {'P' , 'A' , 'R' , 'S' , 'T' , 'U' , 'V' , 'Z' },
277
+ {'X' , 'Y' , 'W' , '`' , '*' , 'M' , '%' , '{' },
278
+ {'0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' },
279
+ {'8' , '9' , '~' , '_' , '#' , '.' , '/' , '+' },
280
+ { KEY_ENTER , KEY_CLEAR , KEY_STOP , KEY_UP , KEY_DOWN , KEY_LEFT , KEY_RIGHT , ' ' },
281
+ { 0 , 0 , 0 , 0 , KEY_F1 , KEY_F2 , KEY_F3 , 0 }
282
+ #else
260
283
{'@' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' },
261
284
{'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' },
262
285
{'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' },
@@ -265,6 +288,7 @@ uint8_t shiftkeyboard[8][8] = {
265
288
{'(' , ')' , '*' , '+' , '<' , '=' , '>' , '?' },
266
289
{ KEY_ENTER , KEY_CLEAR , KEY_STOP , KEY_UP , KEY_DOWN , KEY_LEFT , KEY_RIGHT , ' ' },
267
290
{ 0 , 0 , 0 , 0 , KEY_F1 , KEY_F2 , KEY_F3 , 0 }
291
+ #endif
268
292
};
269
293
270
294
static uint8_t capslock = 0 ;
@@ -298,6 +322,24 @@ static void keydecode(void)
298
322
with control */
299
323
if (keymap [7 ] & 4 ) { /* control */
300
324
m |= KEYPRESS_CTRL ;
325
+ #ifdef AZERTY
326
+ if (!(keymap [7 ] & 3 )) { /* no shift */
327
+ if (c == '&' )
328
+ c = '|' ;
329
+ else if (c == '^' )
330
+ c = '[' ;
331
+ else if (c == '@' )
332
+ c = ']' ;
333
+ else if (c == '=' )
334
+ c = '~' ;
335
+ else if (c == '$' )
336
+ c = '`' ;
337
+ else if (c == '>' )
338
+ c = '\\' ;
339
+ else if (c > 31 && c < 127 )
340
+ c &= 31 ;
341
+ }
342
+ #else
301
343
if (keymap [7 ] & 3 ) { /* shift */
302
344
if (c == '(' )
303
345
c = '{' ;
@@ -319,6 +361,7 @@ static void keydecode(void)
319
361
else if (c > 31 && c < 127 )
320
362
c &= 31 ;
321
363
}
364
+ #endif
322
365
}
323
366
else if (capslock && c >= 'a' && c <= 'z' )
324
367
c -= 'a' - 'A' ;
0 commit comments