Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf ui browser: Add key_name() helper

We'll use it to show unhandled keys in the various TUI browsers.

Suggested-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Ingo Molnar <mingo@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/Z_TYux5fUg2pW-pF@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

+47
+1
tools/perf/ui/Build
··· 8 8 CFLAGS_setup.o += -DLIBDIR="BUILD_STR($(LIBDIR))" 9 9 10 10 perf-ui-$(CONFIG_SLANG) += browser.o 11 + perf-ui-$(CONFIG_SLANG) += keysyms.o 11 12 perf-ui-$(CONFIG_SLANG) += browsers/ 12 13 perf-ui-$(CONFIG_SLANG) += tui/
+44
tools/perf/ui/keysyms.c
··· 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 + }
+2
tools/perf/ui/keysyms.h
··· 27 27 #define K_SWITCH_INPUT_DATA -4 28 28 #define K_RELOAD -5 29 29 30 + const char *key_name(int key, char *bf, size_t size); 31 + 30 32 #endif /* _PERF_KEYSYMS_H_ */