summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Pitt <martin.pitt@ubuntu.com>2009-05-14 23:56:52 +0200
committerMartin Pitt <martin.pitt@ubuntu.com>2009-05-14 23:56:52 +0200
commit4bdefc30c0b9672a3ea8390354793e8f4338679a (patch)
tree59443d122a2d91db5bd59c3e7bf57ebccb3a9e24
parent82509f1714275723e57461f5a0863974854ac0d0 (diff)
keymap: add findkeyboards script
findkeyboards prints out the device names of all "real" keyboards (atkbd and the separate modules as found in ThinkPads or Sonys). This makes it much easier to use a tool like keymap -i or do other debugging.
-rw-r--r--keymap/Makefile.am1
-rwxr-xr-xkeymap/findkeyboards45
2 files changed, 46 insertions, 0 deletions
diff --git a/keymap/Makefile.am b/keymap/Makefile.am
index 77476e5..74c788a 100644
--- a/keymap/Makefile.am
+++ b/keymap/Makefile.am
@@ -62,6 +62,7 @@ udevkeymap_DATA = \
keymaps/toshiba-satellite_a100 \
keymaps/toshiba-satellite_a110
+dist_pkgdata_SCRIPTS = findkeyboards
# keymap program
diff --git a/keymap/findkeyboards b/keymap/findkeyboards
new file mode 100755
index 0000000..e39084c
--- /dev/null
+++ b/keymap/findkeyboards
@@ -0,0 +1,45 @@
+#!/bin/sh -e
+# Find "real" keyboard devices and print their device path.
+# Author: Martin Pitt <martin.pitt@ubuntu.com>
+#
+# Copyright (C) 2009, Canonical Ltd.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+
+
+# print a list of input devices which are keyboard-like
+keyboard_devices() {
+ input_devs=`udevadm trigger --dry-run --verbose --subsystem-match=input --attr-match=dev`
+
+ # standard AT keyboard
+ for dev in $input_devs; do
+ info=`udevadm info --attribute-walk --path=$dev`
+
+ if echo "$info" | grep -q 'DRIVERS=="atkbd"'; then
+ echo -n 'AT keyboard: '
+ udevadm info --query=name --path=$dev
+ fi
+ done
+
+ # modules
+ module=`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='*Extra Buttons'`
+ module="$module
+`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='Sony Vaio Keys'`"
+ for m in $module; do
+ evdev=`ls -d $m/event* 2>/dev/null`
+ if [ -e "$evdev/dev" ]; then
+ echo -n 'module: '
+ udevadm info --query=name --path=$evdev
+ fi
+ done
+}
+
+keyboard_devices