From: Johannes Stezenbach <js@sig21.net>
To: linux-hotplug@vger.kernel.org
Subject: [PATCH] keymap: support for force_release quirk
Date: Mon, 14 Dec 2009 00:12:19 +0000 [thread overview]
Message-ID: <20091214001219.GA17792@sig21.net> (raw)
Hi,
I got no response for my last patch so I just continued trying
to get it into a mergable state. I tested it and it works for me.
Changes from last version:
- put force-release key list into extras/keymap/keymaps/force-release/
- use relative path to find force-release key list file
in the keyboard-force-release.sh script
- add script, rule and key list file in Makefile.am
Thanks
Johannes
From 501d9230390886afc7d98b2d1c33288aa6b1fa7e Mon Sep 17 00:00:00 2001
From: Johannes Stezenbach <js@sig21.net>
Date: Sun, 13 Dec 2009 23:54:05 +0100
Subject: [PATCH] keymap: handle atkbd force_release quirk
Some laptop keyboards don't generate release events
for some hotkeys. Since linux-2.6.32 the list of scancodes
for which to enable the force_release quirk can be set
via sysfs.
Apply this to Samsung N130.
Signed-off-by: Johannes Stezenbach <js@sig21.net>
---
Makefile.am | 6 +++++
| 24 +++++++++++++++++++++
| 22 +++++++++++++++++++
| 10 ++++++++
4 files changed, 62 insertions(+), 0 deletions(-)
create mode 100644 extras/keymap/95-keyboard-force-release.rules
create mode 100644 extras/keymap/keyboard-force-release.sh
create mode 100644 extras/keymap/keymaps/force-release/samsung-other
diff --git a/Makefile.am b/Makefile.am
index 3e9713f..4435398 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -480,8 +480,10 @@ BUILT_SOURCES += $(nodist_extras_keymap_keymap_SOURCES)
EXTRA_DIST += extras/keymap/check-keymaps.sh
dist_udevrules_DATA += extras/keymap/95-keymap.rules
+dist_udevrules_DATA += extras/keymap/95-keyboard-force-release.rules
libexec_PROGRAMS += extras/keymap/keymap
dist_libexec_SCRIPTS += extras/keymap/findkeyboards
+dist_libexec_SCRIPTS += extras/keymap/keyboard-force-release.sh
dist_doc_DATA = extras/keymap/README.keymap.txt
CLEANFILES += \
@@ -535,6 +537,10 @@ dist_udevkeymap_DATA = \
extras/keymap/keymaps/toshiba-satellite_a110 \
extras/keymap/keymaps/zepto-znote
+udevkeymapforcereldir = $(libexecdir)/keymaps/force-release
+dist_udevkeymapforcerel_DATA = \
+ extras/keymap/keymaps/force-release/samsung-other
+
extras/keymap/keys.txt: /usr/include/linux/input.h
$(AM_V_GEN)$(AWK) '/^#define.*KEY_[^ ]+[ \t]+[0-9]/ { if ($$2 != "KEY_MAX") { print $$2 } }' < $< | sed 's/^KEY_COFFEE$$/KEY_SCREENLOCK/' > $@
--git a/extras/keymap/95-keyboard-force-release.rules b/extras/keymap/95-keyboard-force-release.rules
new file mode 100644
index 0000000..8771a1e
--- /dev/null
+++ b/extras/keymap/95-keyboard-force-release.rules
@@ -0,0 +1,24 @@
+# Set model specific atkbd force_release quirk
+#
+# Serveral laptops have hotkeys which don't generate release events,
+# which can cause problems with software key repeat.
+# The atkbd driver has a quirk handler for generating synthetic
+# release events, which can be configured via sysfs since 2.6.32.
+# Simply add a file with a list of scancodes for your laptop model
+# in /lib/udev/keymaps, and add a rule here.
+# If the hotkeys also need a keymap assignment you can copy the
+# scancodes from the keymap file, otherwise you can run
+# /lib/udev/keymap -i /dev/input/eventX
+# on a Linux vt to find out.
+
+ACTION!="add", GOTO="force_release_end"
+SUBSYSTEM!="serio", GOTO="force_release_end"
+KERNEL!="serio*", GOTO="force_release_end"
+DRIVER!="atkbd", GOTO="force_release_end"
+
+ENV{DMI_VENDOR}="$attr{[dmi/id]sys_vendor}"
+
+
+ENV{DMI_VENDOR}="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}="*N130*", RUN+="keyboard-force-release.sh $sys$devpath samsung-other"
+
+LABEL="force_release_end"
--git a/extras/keymap/keyboard-force-release.sh b/extras/keymap/keyboard-force-release.sh
new file mode 100644
index 0000000..5abb016
--- /dev/null
+++ b/extras/keymap/keyboard-force-release.sh
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+# read list of scancodes, convert hex to decimal and
+# append to the atkbd force_release sysfs attribute
+# $1 sysfs devpath for serioX
+# $2 file with scancode list (hex or dec)
+
+case "$2" in
+ /*) scf="$2" ;;
+ *) scf="${0%keyboard-force-release.sh}/keymaps/force-release/$2" ;;
+esac
+
+attr=`cat "$1/force_release"`
+while read scancode dummy; do
+ case "$scancode" in
+ \#*) ;;
+ *)
+ scancode=$(($scancode))
+ [ -n "$attr" ] && attr="$attr,$scancode" || attr="$scancode"
+ ;;
+ esac
+done <"$scf"
+echo "$attr" >"$1/force_release"
--git a/extras/keymap/keymaps/force-release/samsung-other b/extras/keymap/keymaps/force-release/samsung-other
new file mode 100644
index 0000000..c51123a
--- /dev/null
+++ b/extras/keymap/keymaps/force-release/samsung-other
@@ -0,0 +1,10 @@
+# list of scancodes (hex or decimal), optional comment
+0x82 # Fn+F4 CRT/LCD
+0x83 # Fn+F2 battery
+0x84 # Fn+F5 backlight on/off
+0x86 # Fn+F9 WLAN
+0x88 # Fn-Up brightness up
+0x89 # Fn-Down brightness down
+0xB3 # Fn+F8 switch power mode (battery/dynamic/performance)
+0xF7 # Fn+F10 Touchpad on
+0xF9 # Fn+F10 Touchpad off
--
1.6.5.4
next reply other threads:[~2009-12-14 0:12 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-14 0:12 Johannes Stezenbach [this message]
2009-12-14 9:14 ` [PATCH] keymap: support for force_release quirk Martin Pitt
2009-12-14 10:28 ` Johannes Stezenbach
2009-12-14 10:34 ` Kay Sievers
2009-12-14 12:37 ` Johannes Stezenbach
2009-12-14 12:45 ` Martin Pitt
2009-12-14 12:50 ` Kay Sievers
2009-12-14 12:55 ` Johannes Stezenbach
2009-12-14 13:32 ` Martin Pitt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091214001219.GA17792@sig21.net \
--to=js@sig21.net \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.