1- /* Version V1.0.4
1+ /* Version V1.0.5
22 PS2KeyMap.h - PS2KeyAdvanced library
33 Copyright (c) 2007 Free Software Foundation. All right reserved.
44 Written by Paul Carpenter, PC Services <[email protected] > 55 Created September 2014
66 Updated January 2016 - Paul Carpenter - add tested on Due and tidy ups for V1.5 Library Management
77 January 2020 - Paul Carpenter - extend library properties for V2.2 of Arduino Library Management
8+ March 2020 - Paul Carpenter - add Spanish and Italian Mappings
89
910 PRIVATE to library data and key mapping tables
1011
@@ -60,46 +61,46 @@ const uint16_t PROGMEM _US_ASCII[][ 2 ] = {
6061#else
6162const uint16_t _US_ASCII [][ 2 ] = {
6263#endif
63- { PS2_SHIFT + PS2_KEY_1 , '!' },
64- { PS2_SHIFT + PS2_KEY_2 , '@' },
65- { PS2_SHIFT + PS2_KEY_3 , '#' },
66- { PS2_SHIFT + PS2_KEY_4 , '$' },
67- { PS2_SHIFT + PS2_KEY_5 , '%' },
68- { PS2_SHIFT + PS2_KEY_6 , '^' },
69- { PS2_SHIFT + PS2_KEY_7 , '&' },
70- { PS2_SHIFT + PS2_KEY_8 , '*' },
71- { PS2_SHIFT + PS2_KEY_9 , '(' },
72- { PS2_SHIFT + PS2_KEY_0 , ')' },
73- { PS2_KEY_KP_DOT , '.' },
74- { PS2_KEY_KP_ENTER , PS2_ENTER },
75- { PS2_KEY_KP_PLUS , '+' },
76- { PS2_KEY_KP_MINUS , '-' },
77- { PS2_KEY_KP_TIMES , '*' },
78- { PS2_KEY_KP_DIV , '/' },
79- { PS2_KEY_KP_COMMA , ',' },
80- { PS2_KEY_KP_EQUAL , '=' },
81- { PS2_KEY_APOS , '\'' },
82- { PS2_SHIFT + PS2_KEY_APOS , '"' },
83- { PS2_KEY_COMMA , ',' },
84- { PS2_SHIFT + PS2_KEY_COMMA , '<' },
85- { PS2_KEY_MINUS , '-' },
86- { PS2_SHIFT + PS2_KEY_MINUS , '_' },
87- { PS2_KEY_DOT , '.' },
88- { PS2_SHIFT + PS2_KEY_DOT , '>' },
89- { PS2_KEY_DIV , '/' },
90- { PS2_SHIFT + PS2_KEY_DIV , '?' },
91- { PS2_KEY_SINGLE , '`' },
92- { PS2_SHIFT + PS2_KEY_SINGLE , '~' },
93- { PS2_KEY_SEMI , ';' },
94- { PS2_SHIFT + PS2_KEY_SEMI , ':' },
95- { PS2_KEY_BACK , '\\' },
96- { PS2_SHIFT + PS2_KEY_BACK , '|' },
97- { PS2_KEY_OPEN_SQ , '[' },
98- { PS2_SHIFT + PS2_KEY_OPEN_SQ , '{' },
99- { PS2_KEY_CLOSE_SQ , ']' },
100- { PS2_SHIFT + PS2_KEY_CLOSE_SQ , '}' },
101- { PS2_KEY_EQUAL , '=' },
102- { PS2_SHIFT + PS2_KEY_EQUAL , '+' }
64+ { PS2_SHIFT + PS2_KEY_1 , '!' },
65+ { PS2_SHIFT + PS2_KEY_2 , '@' },
66+ { PS2_SHIFT + PS2_KEY_3 , '#' },
67+ { PS2_SHIFT + PS2_KEY_4 , '$' },
68+ { PS2_SHIFT + PS2_KEY_5 , '%' },
69+ { PS2_SHIFT + PS2_KEY_6 , '^' },
70+ { PS2_SHIFT + PS2_KEY_7 , '&' },
71+ { PS2_SHIFT + PS2_KEY_8 , '*' },
72+ { PS2_SHIFT + PS2_KEY_9 , '(' },
73+ { PS2_SHIFT + PS2_KEY_0 , ')' },
74+ { PS2_KEY_KP_DOT , '.' },
75+ { PS2_KEY_KP_ENTER , PS2_ENTER },
76+ { PS2_KEY_KP_PLUS , '+' },
77+ { PS2_KEY_KP_MINUS , '-' },
78+ { PS2_KEY_KP_TIMES , '*' },
79+ { PS2_KEY_KP_DIV , '/' },
80+ { PS2_KEY_KP_COMMA , ',' },
81+ { PS2_KEY_KP_EQUAL , '=' },
82+ { PS2_KEY_APOS , '\'' },
83+ { PS2_SHIFT + PS2_KEY_APOS , '"' },
84+ { PS2_KEY_COMMA , ',' },
85+ { PS2_SHIFT + PS2_KEY_COMMA , '<' },
86+ { PS2_KEY_MINUS , '-' },
87+ { PS2_SHIFT + PS2_KEY_MINUS , '_' },
88+ { PS2_KEY_DOT , '.' },
89+ { PS2_SHIFT + PS2_KEY_DOT , '>' },
90+ { PS2_KEY_DIV , '/' },
91+ { PS2_SHIFT + PS2_KEY_DIV , '?' },
92+ { PS2_KEY_SINGLE , '`' },
93+ { PS2_SHIFT + PS2_KEY_SINGLE , '~' },
94+ { PS2_KEY_SEMI , ';' },
95+ { PS2_SHIFT + PS2_KEY_SEMI , ':' },
96+ { PS2_KEY_BACK , '\\' },
97+ { PS2_SHIFT + PS2_KEY_BACK , '|' },
98+ { PS2_KEY_OPEN_SQ , '[' },
99+ { PS2_SHIFT + PS2_KEY_OPEN_SQ , '{' },
100+ { PS2_KEY_CLOSE_SQ , ']' },
101+ { PS2_SHIFT + PS2_KEY_CLOSE_SQ , '}' },
102+ { PS2_KEY_EQUAL , '=' },
103+ { PS2_SHIFT + PS2_KEY_EQUAL , '+' }
103104 };
104105
105106#if defined(PS2_REQUIRES_PROGMEM )
@@ -272,6 +273,97 @@ const uint16_t _DEmap[][ 2 ] = {
272273 { PS2_KEY_EUROPE2 , '<' }
273274 };
274275#endif
276+ #ifdef SPANISH
277+ #if defined(PS2_REQUIRES_PROGMEM )
278+ const uint16_t PROGMEM _ESmap [][ 2 ] = {
279+ #else
280+ const uint16_t _ESmap [][ 2 ] = {
281+ #endif
282+ { PS2_KEY_SINGLE , PS2_MASCULINE_ORDINAL },
283+ { PS2_SHIFT + PS2_KEY_SINGLE , PS2_FEMININE_ORDINAL },
284+ { PS2_KEY_SINGLE + PS2_ALT_GR , '\\' },
285+ { '1' + PS2_ALT_GR , '|' },
286+ { PS2_SHIFT + '@' , '"' },
287+ { '2' + PS2_ALT_GR , '@' },
288+ { PS2_SHIFT + '#' , PS2_MIDDLE_DOT },
289+ { '3' + PS2_ALT_GR , '#' },
290+ { '4' + PS2_ALT_GR , '~' },
291+ { PS2_SHIFT + '^' , '&' },
292+ { '6' + PS2_ALT_GR , PS2_NOT_SIGN },
293+ { PS2_SHIFT + '&' , '/' },
294+ { PS2_SHIFT + '*' , '(' },
295+ { PS2_SHIFT + '(' , ')' },
296+ { PS2_SHIFT + ')' , '=' },
297+ { '-' , '\'' },
298+ { PS2_SHIFT + '_' , '?' },
299+ { '=' , PS2_INVERTED_EXCLAMATION },
300+ { PS2_SHIFT + '+' , PS2_INVERTED_QUESTION_MARK },
301+ { '[' , '`' },
302+ { PS2_SHIFT + '{' , '^' },
303+ { '[' + PS2_ALT_GR , '[' },
304+ { ']' , '+' },
305+ { PS2_SHIFT + '}' , '*' },
306+ { ']' + PS2_ALT_GR , ']' },
307+ { ';' , PS2_n_TILDE },
308+ { PS2_SHIFT + ':' , PS2_N_TILDE },
309+ { '\'' , PS2_ACUTE_ACCENT },
310+ { PS2_SHIFT + '"' , PS2_DIAERESIS },
311+ { '\'' + PS2_ALT_GR , '{' },
312+ { '\\' , PS2_c_CEDILLA },
313+ { PS2_SHIFT + '|' , PS2_C_CEDILLA },
314+ { '\\' + PS2_ALT_GR , '}' },
315+ { PS2_SHIFT + PS2_KEY_EUROPE2 , '>' },
316+ { PS2_KEY_EUROPE2 , '<' },
317+ { PS2_SHIFT + '<' , ';' },
318+ { PS2_SHIFT + '>' , ':' },
319+ { PS2_KEY_DIV , '-' },
320+ { PS2_SHIFT + PS2_KEY_DIV , '+' }
321+ };
322+ #endif
323+ #ifdef ITALIAN
324+ #if defined(PS2_REQUIRES_PROGMEM )
325+ const uint16_t PROGMEM _ITmap [][ 2 ] = {
326+ #else
327+ const uint16_t _ITmap [][ 2 ] = {
328+ #endif
329+ { PS2_KEY_SINGLE , '\\' },
330+ { PS2_SHIFT + PS2_KEY_SINGLE , '|' },
331+ { '@' , '"' },
332+ { PS2_SHIFT + '#' , PS2_POUND_SIGN },
333+ { '3' + PS2_ALT_GR , '#' },
334+ { PS2_SHIFT + '^' , '&' },
335+ { PS2_SHIFT + '&' , '/' },
336+ { '7' + PS2_ALT_GR , '{' },
337+ { PS2_SHIFT + '*' , '(' },
338+ { '8' + PS2_ALT_GR , '[' },
339+ { PS2_SHIFT + '(' , ')' },
340+ { '9' + PS2_ALT_GR , ']' },
341+ { PS2_SHIFT + ')' , '=' },
342+ { '0' + PS2_ALT_GR , '}' },
343+ { '-' , '\'' },
344+ { PS2_SHIFT + '_' , '?' },
345+ { '=' , PS2_i_GRAVE },
346+ { PS2_SHIFT + '+' , '^' },
347+ { 'q' + PS2_ALT_GR , '@' },
348+ { '[' , PS2_e_GRAVE },
349+ { PS2_SHIFT + '{' , PS2_e_ACUTE },
350+ { ']' , '+' },
351+ { PS2_SHIFT + '}' , '*' },
352+ { ']' + PS2_ALT_GR , '~' },
353+ { ';' , PS2_o_GRAVE },
354+ { PS2_SHIFT + ':' , PS2_c_CEDILLA },
355+ { '\'' , PS2_a_GRAVE },
356+ { PS2_SHIFT + '"' , PS2_DEGREE_SIGN },
357+ { '\\' , PS2_u_GRAVE },
358+ { PS2_SHIFT + '|' , PS2_SECTION_SIGN },
359+ { PS2_SHIFT + PS2_KEY_EUROPE2 , '>' },
360+ { PS2_KEY_EUROPE2 , '<' },
361+ { PS2_SHIFT + '<' , ';' },
362+ { PS2_SHIFT + '>' , ':' },
363+ { PS2_KEY_DIV , '-' },
364+ { PS2_SHIFT + PS2_KEY_DIV , '+' }
365+ };
366+ #endif
275367#ifdef SPECIAL
276368#if defined(PS2_REQUIRES_PROGMEM )
277369const uint16_t PROGMEM _SpecialMap [][ 2 ] = {
@@ -290,21 +382,29 @@ typedef struct {
290382 } PS2Advmap ;
291383
292384// Actual map structure array ( 2 entries for GB and UK for same map
293- // Because many people dont know ISO code for UK is GB )
294- // Actually held in RAM but small in size
295- const PS2Advmap _KeyMaps [] = {
385+ // Because many people don't know ISO code for UK is GB )
386+ #if defined(PS2_REQUIRES_PROGMEM )
387+ const PS2Advmap PROGMEM _KeyMaps [ ] = {
388+ #else
389+ const PS2Advmap _KeyMaps [ ] = {
390+ #endif
296391 { "US" , sizeof ( _US_ASCII ) / ( 2 * sizeof ( uint16_t ) ), (uint16_t * )_US_ASCII },
297392#ifdef FRENCH
298393 { "FR" , sizeof ( _FRmap ) / ( 2 * sizeof ( uint16_t ) ), (uint16_t * )_FRmap },
299394#endif
300395#ifdef GERMAN
301396 { "DE" , sizeof ( _DEmap ) / ( 2 * sizeof ( uint16_t ) ), (uint16_t * )_DEmap },
302397#endif
398+ #ifdef SPANISH
399+ { "ES" , sizeof ( _ESmap ) / ( 2 * sizeof ( uint16_t ) ), (uint16_t * )_ESmap },
400+ #endif
401+ #ifdef ITALIAN
402+ { "IT" , sizeof ( _ITmap ) / ( 2 * sizeof ( uint16_t ) ), (uint16_t * )_ITmap },
403+ #endif
303404#ifdef SPECIAL
304405 { "--" , sizeof ( _SpecialMap ) / ( 2 * sizeof ( uint16_t ) ), (uint16_t * )_SpecialMap },
305406#endif
306407 { "UK" , sizeof ( _UKmap ) / ( 2 * sizeof ( uint16_t ) ), (uint16_t * )_UKmap },
307408 { "GB" , sizeof ( _UKmap ) / ( 2 * sizeof ( uint16_t ) ), (uint16_t * )_UKmap }
308409 };
309-
310410#endif
0 commit comments