Следующее правило udev работает частично, оно выключит сенсорную панель однако, оно не повторно включит сенсорную панель, если мышь Bluetooth будет разъединена.
Я заметил, что xinput обновляет, если мышь добавляется, который берет первую часть правила UDEV однако xinput, не обновляет, если та же самая мышь разъединяется, как в удаляют мышь Bluetooth из списка xinput. Я думал, что, возможно, который является проблемой с перевключением сенсорной панели, но понятия не имеет, как пойти об этом?
/etc/udev/rules.d/01-touchpad.rules
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/username/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=1"
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/username/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=0"
От https://wiki.archlinux.org/index.php/Touchpad_Synaptics#Disable_touchpad_on_mouse_detection
Это - то, как это работало на меня на Ubuntu 16.04.
, Сначала создают сценарий для включения и выключения сенсорной панели. Знайте, как сенсорную панель называют:
xinput list
Затем создают NAMEOFSCRIPT.sh
, файл
#!/bin/sh
#
# Enables the touchpad if and only if there aren't any external mice connected.
#
# Originally from:
# https://wiki.archlinux.org/index.php/Touchpad_Synaptics#System_with_multiple_X_sessions
#Here puts how is named
TOUCHPAD="PS/2 Synaptics TouchPad"
FOUND=0
for MOUSE in `find /sys/class/input -name mouse\*`
do
if [ "`cat $MOUSE/device/name`" != "$TOUCHPAD" ]
then
FOUND=1
#Find a Mouse device other than the TouchPad and record the variable.
break
fi
done
DISPLAY=:0
export DISPLAY
for USER in `w -h | cut -d\ -f1 | sort | uniq`
do
XAUTHORITY=`sudo -Hiu $USER env | grep ^HOME= | cut -d= -f2`/.Xauthority
export XAUTHORITY
TOUCHPADDEVICE=$(($(xinput list | grep -i touchpad | cut -d= -f2 | cut -d[ -f1)+0))
#Find the Touchpad Id
if [ $FOUND -eq 1 ]; then
#If another device is founded, disable touchpad
xinput disable $TOUCHPADDEVICE
else
#else enable touchpad
xinput enable $TOUCHPADDEVICE
fi
done
не забывает, делают это исполняемым файлом!
chmod +x NAMEOFSCRIPT.sh
Затем создают правило (потребуйте корня)
gksudo gedit /etc/udev/rules.d/01-touchpad_toggle.rules
(Это может быть любым именем, предпочтительно присвоиться 01
к началу)
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/**$USERNAME**/.Xauthority", RUN+="**PATH TO NAMEOFSCRIPT.SH**"
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/**$USERNAME**/.Xauthority", RUN+="**PATH TO NAMEOFSCRIPT.SH**"
, Если все подходит, когда я подключаю мышь USB, она отключает Сенсорную панель, и при разъединении активирует его. Для тех, у кого есть проблемы, которые будут распознаны мышью USB, выполнение lsusb
разъединенный и затем lsusb
соединенный.
Источники: https://rufflewind.com/2014-06-24/auto-disable-touchpad-linux
Я хочу добавить редактирование для людей, отчаянных с сенсорной панелью ALPS, которая распознана в человечности 16.04 как мышь и не как сенсорная панель.
Достаточно изменить сценарий следующим образом:
#!/bin/sh
#
# Enables the touchpad if and only if there aren't any external mice connected.
#
# Originally from:
# https://wiki.archlinux.org/index.php/Touchpad_Synaptics#System_with_multiple_X_sessions
# This supports also ALPS touchpads.
#Here puts how is named (Run 'xinput list' for the name to put below)
TOUCHPAD="ALP..."
FOUND=0
for MOUSE in `find /sys/class/input -name mouse\*`
do
if [ "`cat $MOUSE/device/name`" != "$TOUCHPAD" ]
then
FOUND=1
#Find a Mouse device other than the TouchPad and record the variable.
break
fi
done
DISPLAY=:0
export DISPLAY
for USER in `w -h | cut -d\ -f1 | sort | uniq`
do
XAUTHORITY=`sudo -Hiu $USER env | grep ^HOME= | cut -d= -f2`/.Xauthority
export XAUTHORITY
TOUCHPADDEVICE=$(($(xinput list | grep -i "$TOUCHPAD" | cut -d= -f2 | cut -d[ -f1)+0))
#Find the Touchpad Id
if [ $FOUND -eq 1 ]; then
#If another device is founded, disable touchpad
xinput disable $TOUCHPADDEVICE
else
#else enable touchpad
xinput enable $TOUCHPADDEVICE
fi
done