1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #include "keysyms.h" 4 #include <linux/ctype.h> 5 #include <linux/kernel.h> 6 7 const char *key_name(int key, char *bf, size_t size) 8 { 9 if (isprint(key)) { 10 scnprintf(bf, size, "%c", key); 11 } else if (key < 32) { 12 scnprintf(bf, size, "Ctrl+%c", key + '@'); 13 } else { 14 const char *name = NULL; 15 16 switch (key) { 17 case K_DOWN: name = "Down"; break; 18 case K_END: name = "End"; break; 19 case K_ENTER: name = "Enter"; break; 20 case K_ESC: name = "ESC"; break; 21 case K_F1: name = "F1"; break; 22 case K_HOME: name = "Home"; break; 23 case K_LEFT: name = "Left"; break; 24 case K_PGDN: name = "PgDown"; break; 25 case K_PGUP: name = "PgUp"; break; 26 case K_RIGHT: name = "Right"; break; 27 case K_TAB: name = "Tab"; break; 28 case K_UNTAB: name = "Untab"; break; 29 case K_UP: name = "Up"; break; 30 case K_BKSPC: name = "Backspace"; break; 31 case K_DEL: name = "Del"; break; 32 default: 33 if (key >= SL_KEY_F(1) && key <= SL_KEY_F(63)) 34 scnprintf(bf, size, "F%d", key - SL_KEY_F(0)); 35 else 36 scnprintf(bf, size, "Unknown (%d)", key); 37 } 38 39 if (name) 40 scnprintf(bf, size, "%s", name); 41 } 42 43 return bf; 44 } 45