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