Riyyi
6 years ago
6 changed files with 139 additions and 28 deletions
@ -0,0 +1,130 @@
|
||||
#!/bin/sh |
||||
|
||||
help() { |
||||
B=$(tput bold) |
||||
U=$(tput smul) |
||||
N=$(tput sgr0) |
||||
|
||||
cat << EOF |
||||
${B}NAME${N} |
||||
inputctl.sh - input manager |
||||
|
||||
${B}SYNOPSIS${N} |
||||
${B}inputctl.sh${N} [${U}OPTION${N}] [${U}ARG${N}] |
||||
|
||||
${B}OPTIONS${N} |
||||
${B}-h${N} |
||||
Display usage message and exit. |
||||
|
||||
${B}-d${N} [${U}ARG${N}] |
||||
Perform action on touchpad. |
||||
|
||||
${B}-k${N} [${U}ARG${N}] |
||||
Perform action on keyboard. |
||||
|
||||
${B}-s${N} [${U}ARG${N}] |
||||
Perform action on touchscreen. |
||||
|
||||
${B}ARGS${N} |
||||
toggle |
||||
Toggle input device / keyboard customizations. |
||||
|
||||
on |
||||
Enable input device / keyboard customizations. |
||||
|
||||
off |
||||
Disable input device / keyboard customizations. |
||||
EOF |
||||
} |
||||
|
||||
# If no option is provided |
||||
[ "$#" -eq 0 ] && help && exit |
||||
|
||||
SCRIPT="$(basename "$0")" |
||||
# Option handling |
||||
while getopts ':h?d:k:s:' opt; do |
||||
case $opt in |
||||
h) |
||||
help |
||||
exit |
||||
;; |
||||
d) |
||||
dev="SYNA3602:00 0911:5288 Touchpad" |
||||
;; |
||||
k) |
||||
dev="Keyboard" |
||||
;; |
||||
s) |
||||
dev="pointer:04F3200A:00 04F3:2373" |
||||
;; |
||||
:) |
||||
echo "$SCRIPT: option requires an argument '$OPTARG'" |
||||
echo "Try '$SCRIPT -h' for more information." |
||||
exit 1 |
||||
;; |
||||
\?) |
||||
echo "$SCRIPT: invalid option '$OPTARG'" |
||||
echo "Try '$SCRIPT -h' for more information." |
||||
exit 1 |
||||
;; |
||||
esac |
||||
done |
||||
|
||||
toggle_device() { |
||||
STATUS=$(xinput --list-props "$dev" | awk '/Device Enabled/ { print $4 }') |
||||
[ "$STATUS" -eq 1 ] && xinput --disable "$dev" || xinput --enable "$dev" |
||||
} |
||||
|
||||
keyboard() { |
||||
[ -z "$1" ] && return 1 |
||||
|
||||
if [ "$1" = "toggle" ]; then |
||||
if setxkbmap -query | grep -q options; then |
||||
keyboard "off" |
||||
else |
||||
keyboard "on" |
||||
fi |
||||
|
||||
elif [ "$1" = "on" ]; then |
||||
# Swap caps lock with escape |
||||
setxkbmap -option caps:swapescape |
||||
|
||||
# Swap left crtl with left alt |
||||
# setxkbmap -option ctrl:swap_lalt_lctl |
||||
|
||||
# Set touchpad toggle keyboard symbol |
||||
# xmodmap -e "keycode 93 = XF86iTouch" |
||||
|
||||
elif [ "$1" = "off" ]; then |
||||
# Clear all key mappings |
||||
setxkbmap -option '' |
||||
fi |
||||
} |
||||
|
||||
shift $((OPTIND - 2)) |
||||
# Command handling |
||||
if [ "$dev" = "Keyboard" ]; then |
||||
keyboard "$1" |
||||
else |
||||
case "$1" in |
||||
toggle) |
||||
toggle_device |
||||
;; |
||||
on) |
||||
xinput --enable "$dev" |
||||
;; |
||||
off) |
||||
xinput --disable "$dev" |
||||
;; |
||||
esac |
||||
fi |
||||
|
||||
# Useful input diagnostics packages: |
||||
# - xinput |
||||
# - xev |
||||
# - evtest |
||||
# |
||||
# - setxkbmap -query |
||||
# - xmodmap -pke |
||||
# |
||||
# Kernel 5.1.4 works properly on my hardware with the i2c_hid module |
@ -1,11 +0,0 @@
|
||||
#!/bin/sh |
||||
|
||||
device="04F3200A:00 04F3:2373" |
||||
state=$(xinput --list-props "$device" | grep "Device Enabled" | sed -nr 's/.*:\t([0-9])/\1/p') |
||||
|
||||
if [ "$state" = "0" ] && [ -z "$1" ]; then |
||||
xinput --enable "$device" |
||||
else |
||||
xinput --disable "$device" |
||||
fi |
||||
|
Loading…
Reference in new issue