| 1 |
|
| 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 | }
|