Правило UDEV для внешнего обнаружения мыши для включения и выключения Сенсорной панели

Следующее правило 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

1
задан 14 September 2016 в 02:06

2 ответа

Это - то, как это работало на меня на Ubuntu 16.04.

, Сначала создают сценарий для включения и выключения сенсорной панели. Знайте, как сенсорную панель называют:

xinput list

example

Затем создают 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

0
ответ дан 8 December 2019 в 08:54

Я хочу добавить редактирование для людей, отчаянных с сенсорной панелью 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
0
ответ дан 8 December 2019 в 08:54

Другие вопросы по тегам:

Похожие вопросы: