3939namespace {
4040auto & lcd = M5 .Display;
4141LGFX_Sprite canvas (&lcd);
42+
43+ const char * special_key_name (const char ch)
44+ {
45+ switch (ch) {
46+ case ' \b ' :
47+ return " BS" ;
48+ case ' \t ' :
49+ return " TAB" ;
50+ case ' \n ' :
51+ return " LF" ;
52+ case ' \r ' :
53+ return " CR" ;
54+ case 0x1B :
55+ return " ESC" ;
56+ case 0x7F :
57+ return " DEL" ;
58+ default :
59+ break ;
60+ }
61+ #if defined(USING_UNIT_CARDKB)
62+ using namespace m5 ::unit;
63+ switch (ch) {
64+ case UnitCardKB::SCHAR_LEFT :
65+ return " LEFT" ;
66+ case UnitCardKB::SCHAR_UP :
67+ return " UP" ;
68+ case UnitCardKB::SCHAR_DOWN :
69+ return " DOWN" ;
70+ case UnitCardKB::SCHAR_RIGHT :
71+ return " RIGHT" ;
72+ default :
73+ break ;
74+ }
75+ #elif defined(USING_UNIT_CARDKB2)
76+ using namespace m5 ::unit::cardkb2;
77+ switch (ch) {
78+ case SCHAR_LEFT :
79+ return " LEFT" ;
80+ case SCHAR_UP :
81+ return " UP" ;
82+ case SCHAR_DOWN :
83+ return " DOWN" ;
84+ case SCHAR_RIGHT :
85+ return " RIGHT" ;
86+ default :
87+ break ;
88+ }
89+ #elif defined(USING_UNIT_FACES_QWERTY)
90+ using namespace m5 ::unit;
91+ switch (ch) {
92+ case UnitFacesQWERTY::SCHAR_UP :
93+ return " UP" ;
94+ case UnitFacesQWERTY::SCHAR_INS :
95+ return " INS" ;
96+ case UnitFacesQWERTY::SCHAR_HOME :
97+ return " HOME" ;
98+ case UnitFacesQWERTY::SCHAR_END :
99+ return " END" ;
100+ case UnitFacesQWERTY::SCHAR_PAGE_UP :
101+ return " PGUP" ;
102+ case UnitFacesQWERTY::SCHAR_PAGE_DOWN :
103+ return " PGDN" ;
104+ case UnitFacesQWERTY::SCHAR_LEFT :
105+ return " LEFT" ;
106+ case UnitFacesQWERTY::SCHAR_DOWN :
107+ return " DOWN" ;
108+ case UnitFacesQWERTY::SCHAR_RIGHT :
109+ return " RIGHT" ;
110+ case UnitFacesQWERTY::SCHAR_SPEAKER :
111+ return " SPK" ;
112+ default :
113+ break ;
114+ }
115+ #endif
116+ return nullptr ;
117+ }
42118m5::unit::UnitUnified Units;
43119#if defined(USING_UNIT_CARDKB)
44120#pragma message "Using UnitCardKB (I2C)"
@@ -208,8 +284,9 @@ void loop_cardkb(bool& dirty, char& ch)
208284 // Gets the input characters
209285 if (unit.updated ()) {
210286 while (unit.available ()) {
211- ch = unit.getchar ();
212- M5 .Log .printf (" Char:[0x%02X=%d %c]\n " , ch, ch, std::isprint (ch) ? ch : ' ' );
287+ ch = unit.getchar ();
288+ auto sname = special_key_name (ch);
289+ M5 .Log .printf (" Char:[%02X %s]\n " , (uint8_t )ch, sname ? sname : m5::utility::formatString (" %c" , ch).c_str ());
213290 if (std::isprint (ch)) {
214291 str += ch;
215292 } else if (ch == ' \r ' || ch == ' \n ' ) {
@@ -313,8 +390,9 @@ void loop_cardkb2_i2c(bool& dirty, char& ch)
313390 // Gets the input characters
314391 if (unit.updated ()) {
315392 while (unit.available ()) {
316- ch = unit.getchar ();
317- M5 .Log .printf (" Char:[0x%02X=%d %c]\n " , ch, ch, std::isprint (ch) ? ch : ' ' );
393+ ch = unit.getchar ();
394+ auto sname = special_key_name (ch);
395+ M5 .Log .printf (" Char:[%02X %s]\n " , (uint8_t )ch, sname ? sname : m5::utility::formatString (" %c" , ch).c_str ());
318396 if (std::isprint (ch)) {
319397 str += ch;
320398 } else if (ch == ' \r ' || ch == ' \n ' ) {
@@ -337,8 +415,9 @@ void loop_cardkb2_uart(bool& dirty, char& ch)
337415 // Gets the input characters
338416 if (unit.updated ()) {
339417 while (unit.available ()) {
340- ch = unit.getchar ();
341- M5 .Log .printf (" Char:[0x%02X=%d %c]\n " , ch, ch, std::isprint (ch) ? ch : ' ' );
418+ ch = unit.getchar ();
419+ auto sname = special_key_name (ch);
420+ M5 .Log .printf (" Char:[%02X %s]\n " , (uint8_t )ch, sname ? sname : m5::utility::formatString (" %c" , ch).c_str ());
342421 if (std::isprint (ch)) {
343422 str += ch;
344423 } else if (ch == ' \r ' || ch == ' \n ' ) {
@@ -432,8 +511,9 @@ void loop_faces(bool& dirty, char& ch)
432511 // Gets the input characters
433512 if (unit.updated ()) {
434513 while (unit.available ()) {
435- ch = unit.getchar ();
436- M5 .Log .printf (" Char:[0x%02X=%d %c]\n " , ch, ch, std::isprint (ch) ? ch : ' ' );
514+ ch = unit.getchar ();
515+ auto sname = special_key_name (ch);
516+ M5 .Log .printf (" Char:[%02X %s]\n " , (uint8_t )ch, sname ? sname : m5::utility::formatString (" %c" , ch).c_str ());
437517 if (std::isprint (ch)) {
438518 str += ch;
439519 } else if (ch == ' \r ' || ch == ' \n ' ) {
0 commit comments