From 4c1482202957828a37e88e42c49e9ac8ef12c960 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Tue, 13 Oct 2015 18:20:34 +0200 Subject: [PATCH 1/3] keymap: Recognize KEY_* aliases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit linux/input.h contains alias definitions like #define KEY_COFFEE 152 #define KEY_SCREENLOCK KEY_COFFEE #define KEY_ROTATE_DISPLAY 153 #define KEY_DIRECTION KEY_ROTATE_DISPLAY But we ignored these when building keyboard-keys-list.txt. Also allow the value to start with "K" now (for KEY_*), and drop the hardcoded COFFEE → SCREENLOCK aliasing. This fixes assignments to key "direction". Fixes #1151 --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 8646e55450f..e3e07b8c7db 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3483,7 +3483,7 @@ noinst_LTLIBRARIES += \ src/udev/keyboard-keys-list.txt: $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include linux/input.h - < /dev/null | $(AWK) '/^#define[ \t]+KEY_[^ ]+[ \t]+[0-9]/ { if ($$2 != "KEY_MAX") { print $$2 } }' | sed 's/^KEY_COFFEE$$/KEY_SCREENLOCK/' > $@ + $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include linux/input.h - < /dev/null | $(AWK) '/^#define[ \t]+KEY_[^ ]+[ \t]+[0-9K]/ { if ($$2 != "KEY_MAX") { print $$2 } }' > $@ src/udev/keyboard-keys-from-name.gperf: src/udev/keyboard-keys-list.txt $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct key { const char* name; unsigned short id; };"; print "%null-strings"; print "%%";} { print tolower(substr($$1 ,5)) ", " $$1 }' < $< > $@ From c6853957f535263882e953764d5fc3ae43f979fd Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Tue, 13 Oct 2015 18:24:47 +0200 Subject: [PATCH 2/3] keymap: Drop ThinkPad Yoga The Yoga's firmware sends key events whenever it's being folded or unfolded. These are thus *not* a button for requesting a screen orientation change, just an indication that this already happened. Thus they should not be assigned to "direction", but be ignored. Assigning them to "reserved" does not silence the "unknown key pressed" kernel warning, so there's no point in maintaining a mapping here. Fixes #1440 --- hwdb/60-keyboard.hwdb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb index 24db0d2ba6a..3e49449ae9c 100644 --- a/hwdb/60-keyboard.hwdb +++ b/hwdb/60-keyboard.hwdb @@ -648,11 +648,6 @@ evdev:atkbd:dmi:bvn*:bvr*:svnLENOVO*:pn*IdeaPad*Z370*:pvr* evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*Lenovo*V480*:pvr* KEYBOARD_KEY_f1=f21 -# Thinkpad Yoga 12 (2015) -evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPadS1Yoga12* - KEYBOARD_KEY_d8=direction - KEYBOARD_KEY_d9=direction - # enhanced USB keyboard evdev:input:b0003v04B3p301B* KEYBOARD_KEY_90001=prog1 # ThinkVantage From 1d3f8fa747b71db60872bc21df5b6489b73b740d Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Wed, 14 Oct 2015 06:52:41 +0200 Subject: [PATCH 3/3] keymap: Drop keyboard-keys-to-name.h We don't use that anywhere any more. With the introduction of alias names it also is not a proper mapping any more as several keys (e. g. KEY_COFFEE and KEY_SCREENLOCK) have the same numerical mapping. --- Makefile.am | 6 +----- src/udev/.gitignore | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/Makefile.am b/Makefile.am index e3e07b8c7db..336ba0afce2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1229,7 +1229,7 @@ BUILT_SOURCES += \ $(gperf_gperf_m4_sources:-gperf.gperf.m4=-gperf-nulstr.c) \ $(gperf_gperf_sources:-gperf.gperf=-gperf.c) \ $(gperf_txt_sources:-list.txt=-from-name.h) \ - $(gperf_txt_sources:-list.txt=-to-name.h) + $(filter-out %keyboard-keys-to-name.h,$(gperf_txt_sources:-list.txt=-to-name.h)) CLEANFILES += \ $(gperf_txt_sources:-list.txt=-from-name.gperf) @@ -3491,9 +3491,6 @@ src/udev/keyboard-keys-from-name.gperf: src/udev/keyboard-keys-list.txt src/udev/keyboard-keys-from-name.h: src/udev/keyboard-keys-from-name.gperf $(AM_V_GPERF)$(GPERF) -L ANSI-C -t -N keyboard_lookup_key -H hash_key_name -p -C < $< > $@ -src/udev/keyboard-keys-to-name.h: src/udev/keyboard-keys-list.txt - $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const key_names[KEY_CNT] = { "} { print "[" $$1 "] = \"" $$1 "\"," } END{print "};"}' < $< > $@ - gperf_txt_sources += \ src/udev/keyboard-keys-list.txt @@ -3520,7 +3517,6 @@ libudev_core_la_SOURCES = \ nodist_libudev_core_la_SOURCES = \ src/udev/keyboard-keys-from-name.h \ - src/udev/keyboard-keys-to-name.h \ src/udev/net/link-config-gperf.c gperf_gperf_sources += \ diff --git a/src/udev/.gitignore b/src/udev/.gitignore index ba112ce218d..f5d8be3dc1a 100644 --- a/src/udev/.gitignore +++ b/src/udev/.gitignore @@ -1,5 +1,4 @@ /udev.pc /keyboard-keys-from-name.gperf /keyboard-keys-from-name.h -/keyboard-keys-to-name.h /keyboard-keys-list.txt