Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2
3#include "keysyms.h"
4#include <linux/ctype.h>
5#include <linux/kernel.h>
6
7const 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}