diff options
author | Harald Hoyer <harald@redhat.com> | 2011-11-07 14:54:47 +0100 |
---|---|---|
committer | Martin Pitt <martin.pitt@ubuntu.com> | 2011-11-07 17:54:04 +0100 |
commit | 7b9cebf082719251f628832dadeb8178d7b904ba (patch) | |
tree | 77475e74d2a07133ee92a9577014152a14017dd0 /extras | |
parent | 5101923ff965cf35af7897e4dda378a1607f8f69 (diff) |
extras/keymap/findkeyboards: beautify shell code and get rid of grep
- save some extra forks and grep with shell code instead of calling
grep
- use $() instead of backticks (improves readability and addes
nesting capabilities)
Signed-off-by: Harald Hoyer <harald@redhat.com>
Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
Diffstat (limited to 'extras')
-rwxr-xr-x | extras/keymap/findkeyboards | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/extras/keymap/findkeyboards b/extras/keymap/findkeyboards index 5d636de3af..537d163132 100755 --- a/extras/keymap/findkeyboards +++ b/extras/keymap/findkeyboards @@ -14,6 +14,20 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. +# returns OK if $1 contains $2 +strstr() { + [ "${1#*$2*}" != "$1" ] +} + +# returns OK if $1 contains $2 at the beginning +str_starts() { + [ "${1#$2*}" != "$1" ] +} + +str_line_starts() { + while read a; do str_starts "$a" "$1" && return 0;done + return 1; +} # print a list of input devices which are keyboard-like keyboard_devices() { @@ -23,12 +37,12 @@ keyboard_devices() { env=`udevadm info --query=env --path=$dev` # filter out non-event devices, such as the parent input devices which # have no devnode - if ! echo "$env" | grep -q '^DEVNAME='; then + if ! echo "$env" | str_line_starts 'DEVNAME='; then continue fi - if echo "$walk" | grep -q 'DRIVERS=="atkbd"'; then + if strstr "$walk" 'DRIVERS=="atkbd"'; then echo -n 'AT keyboard: ' - elif echo "$env" | grep -q '^ID_USB_DRIVER=usbhid'; then + elif echo "$env" | str_line_starts 'ID_USB_DRIVER=usbhid'; then echo -n 'USB keyboard: ' else echo -n 'Unknown type: ' @@ -37,17 +51,18 @@ keyboard_devices() { done # modules - module=`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='*Extra Buttons'` + 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='*extra buttons'`" +$(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'`" +$(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 + for evdev in $m/event*/dev; do + if [ -e "$evdev" ]; then + echo -n 'module: ' + udevadm info --query=name --path=${evdev%%/dev} + fi + done done } |