These are my frequently used desktops on laptops, but I always find the drawback
that there is no default software to help us with the touchpad configuration, beyond enable, disable.
I have used this program without problems on lxde, lxqt and xfce desktops (other desktops have default settings)
- the program requires packages: xinput (xorg-xinput), zenity, xmessage (optionally).
- the program is designed not to run completely if these packages are missing from the computer, xmessage (optionally).
- the program detects the desktops: lxde, lxqt, xfce and sends input to the program settings window to the menu, configures the autorun when starting session.
- to completely clean the program files run:
rm ~/.config/autostart/xinput-touchpad-estado-al-inicio.desktop
- to completely clean the program files run:
rm ~/.local/share/applications/xin-touchpad-conf.desktop
it is very easy to manually translate the program by any user, (feel free to do it if necessary)
-
the program can be given any name, it should be able to run without any problems. (in my case:
xin-touchpad.sh
) -
the program has three ways of being called:
xin-touchpad.sh --conf
(launch the settings window)
xin-touchpad.sh --auto
(load the configuration at login)
xin-touchpad.sh
(switch state on > off and off > on, assign a keyboard shortcut to run the program)
My language is Spanish, so it is very likely that my English and Russian translations are wrong.
#!/usr/bin/bash
#dependencias: xinput -o xorg-xinput, xmessage, zenity
#configurcion rapida
dispositivo='Device'
atras='Back'
estado_al_inicio='Status en startup'
estado1='Enabled'
estado0='Disabled'
mas_opciones='More options'
columna_opciones='Options'
mas_ajustes='More settings'
velocidad='Speed'
abrir_hoja_datos='Open data sheet'
metodo_desplazamiento='Displacement method'
metodo_desplazamiento1='two fingers'
metodo_desplazamiento2='edge'
metodo_desplazamiento3='button'
desplazamiento_natural='Natural displacement'
desplazamiento_horizontal='Horizontal displacement'
click_al_tocar='Click when touch'
desactivado_al_escribir='Off when typing'
si='YES'
no='NO'
modo_zurdo_para='Left handed mode for'
refrescar='Refresh'
salir='Leave'
aceptar='Agree'
dispositivo_vacio='empty device'
timeout='0.8s'
#TRADUCIR CON CUIDADO
xin_touchpad_conf='xin touchpad conf'
conf='--conf'
xin_touchpad_auto='xin touchpad auto'
auto_start='--auto'
#modo auto inicio aplica la configuracion en bucle para todos los dispositivos listados
#siempre imprimir en hoja con linea blanca de seguridad hacia arriba"
znt=$(which 'zenity')
xin=$(which 'xinput')
if [[ "$znt" != '' ]] ; then
v1=+1
else
v1=+0
fi
if [[ "$xin" != '' ]] ; then
v2=+1
else
v2=+0
fi
if [ $(($v1 $v2)) == 2 ] ; then
demo=\
"$estado_al_inicio:$estado1
$velocidad:0.40
$metodo_desplazamiento:$metodo_desplazamiento1
$click_al_tocar:$si
$desactivado_al_escribir:$si
$desplazamiento_horizontal:$si
$desplazamiento_natural:$si"
ruta=$(dirname "$0")/.xin-conf.txt
if [ ! -e "$ruta" ] ; then
touch "$ruta"
#DESEKTOP ENTRY > menu
escritorio=$(echo $XDG_CURRENT_DESKTOP)
ok=$(grep -io "lxde\|lxqt\|xfce" <<< $escritorio)
if [[ "$ok" != '' ]] ; then
ok=1
fi
if [[ "$ok" == 1 ]] ; then
echo "escritorio $escritorio detectado"
RUTA_ARCHIVO_desktop_entry=~/.local/share/applications/xin-touchpad-conf.desktop
TEXTO_desktop_entry=\
"[Desktop Entry]
Exec=\"$(readlink -f "$0")\" $conf
Type=Application
Name=$xin_touchpad_conf
Terminal=false
Icon=
Categories=Settings;
StartupNotify=true" # Exec=si se usa rutas cortas del tipo ~/ la accion personalizada no se ejecuta correctamente. desactivar: NotShowIn=LXDE;
if [ ! -e "${RUTA_ARCHIVO_desktop_entry%/*}" ] ; then
mkdir -p "${RUTA_ARCHIVO_desktop_entry%/*}"
fi
if [[ "$TEXTO_desktop_entry" != "$(cat "$RUTA_ARCHIVO_desktop_entry")" ]] ; then
cat <<< "$TEXTO_desktop_entry" > $RUTA_ARCHIVO_desktop_entry
fi
else
cat <<< "$TEXTO_desktop_entry" > "$(dirname "$0")/xin-touchpad-conf.desktop"
fi
#DESEKTOP ENTRY > menu
escritorio=$(echo $XDG_CURRENT_DESKTOP)
ok=$(grep -io "lxde\|lxqt\|xfce" <<< $escritorio)
if [[ "$ok" != '' ]] ; then
ok=1
fi
if [[ "$ok" == 1 ]] ; then
echo "escritorio $escritorio detectado"
RUTA_ARCHIVO_desktop_entry=~/.config/autostart/xinput-touchpad-estado-al-inicio.desktop
TEXTO_desktop_entry=\
"[Desktop Entry]
Exec=\"$(readlink -f "$0")\" $auto_start
Name=$xin_touchpad_auto
Type=Application
Version=1.0" # Exec=si se usa rutas cortas del tipo ~/ la accion personalizada no se ejecuta correctamente. desactivar: NotShowIn=LXDE;
if [ ! -e "${RUTA_ARCHIVO_desktop_entry%/*}" ] ; then
mkdir -p "${RUTA_ARCHIVO_desktop_entry%/*}"
fi
if [[ "$TEXTO_desktop_entry" != "$(cat "$RUTA_ARCHIVO_desktop_entry")" ]] ; then
cat <<< "$TEXTO_desktop_entry" > $RUTA_ARCHIVO_desktop_entry
fi
else
cat <<< "$TEXTO_desktop_entry" > "$(dirname "$0")/xin-touchpad-auto.desktop"
fi
fi
if [ $(wc -w < "$ruta") == 0 ] ; then
cat <<< "$demo" > "$ruta" # el achivo no se escribe si no existe primero (touch)
fi
if [[ "$0 $1" == "$0 $conf" ]] ; then
#motor
prm=true
while $prm ; do
dat=$(cat "$ruta")
dat_clean=$(grep -v "^$" <<< $dat)
if [[ "$dat" != "$dat_clean" ]] ; then
cat <<< "$dat_clean" > "$ruta"
fi
dat="$dat_clean"
ls_disp=$(xinput list --name-only | tr '\n' '|' | sed 's/|$//g')
ls_disp_dat=$(grep "^$dispositivo:" <<< $dat | sed 's/^'"$dispositivo"'://g')
out=$(zenity --forms --separator=$'\n' --extra-button="$refrescar" --cancel-label="$salir" --ok-label="$aceptar" --add-combo="$estado_al_inicio" --combo-values="|$estado1|$estado0" --add-combo="$dispositivo" --combo-values="|$ls_disp" --add-combo="$modo_zurdo_para" --combo-values="|$ls_disp" --add-combo="$mas_opciones" --combo-values="|$mas_ajustes|$velocidad|$abrir_hoja_datos" --text=\
"$dat")
res=$?
if [ $res == 0 ] ; then
est=$(sed -n 1p <<< $out)
dsp=$(sed -n 2p <<< $out)
mdz=$(sed -n 3p <<< $out)
mop=$(sed -n 4p <<< $out)
if [ $(wc -w <<< $est) != 0 ] ; then
if [[ "$est" == "$estado1" ]] ; then
sed -i "s/^$estado_al_inicio:.*/$estado_al_inicio:$est/g" "$ruta"
elif [[ "$est" == "$estado0" ]] ; then
sed -i "s/^$estado_al_inicio:.*/$estado_al_inicio:$est/g" "$ruta"
fi
fi
if [ $(wc -w <<< $dsp) != 0 ] ; then
disp_dat=$(grep "^$dispositivo" <<< $dat)
name=$(sed 's/.*://g' <<< $disp_dat)
if [[ "$dsp" == "$name" ]] ; then
sed -i '/^'"$dispositivo"'.*/d' "$ruta"
else
sed -i '/^'"$dispositivo"'.*/d' "$ruta"
if [ $(tail -n1 < "$ruta" | wc -w) == 0 ] ; then
cat <<< \
"$dispositivo:$dsp" >> "$ruta"
else
cat <<< \
"
$dispositivo:$dsp" >> "$ruta"
fi
fi
fi
if [ $(wc -w <<< $mdz) != 0 ] ; then
disp_dat=$(grep "^$modo_zurdo_para:$mdz" <<< $dat)
est_act=$(sed 's/.* > //g' <<< $disp_dat)
code_x=$(xinput list-props "$mdz" | grep "libinput Left Handed Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
#mdz2=$(sed 's/[[:punct:]]/./g' <<< $mdz)
if [[ "$disp_dat" == "" ]] ; then
xinput set-prop "$mdz" "$code_x" 1
if [ $(tail -n1 < "$ruta" | wc -w) == 0 ] ; then
cat <<< \
"$modo_zurdo_para:$mdz" >> "$ruta"
else
cat <<< \
"
$modo_zurdo_para:$mdz" >> "$ruta"
fi
else
xinput set-prop "$mdz" "$code_x" 0
sed -i "/^$modo_zurdo_para.*/d" "$ruta"
fi
fi
if [ $(wc -w <<< $mop) != 0 ] ; then
if [[ "$mop" == "$mas_ajustes" ]] ; then
#bucle 2
prm2=true
while $prm2 ; do
dat=$(cat "$ruta")
ls_disp_dat=$(grep "^$dispositivo:" <<< $dat | sed 's/^'"$dispositivo"'://g')
act_vl=$(grep "^$velocidad" <<< $dat | grep -o "[0-9]\.[0-9]*")
act_md=$(grep "^$metodo_desplazamiento:" <<< $dat | sed "s/^$metodo_desplazamiento://g")
act_dn=$(grep "^$desplazamiento_natural:" <<< $dat | sed "s/^$desplazamiento_natural://g")
act_dh=$(grep "^$desplazamiento_horizontal:" <<< $dat | sed "s/^$desplazamiento_horizontal://g")
act_ct=$(grep "^$click_al_tocar:" <<< $dat | sed "s/^$click_al_tocar://g")
act_de=$(grep "^$desactivado_al_escribir:" <<< $dat | sed "s/^$desactivado_al_escribir://g")
#aplicar cambios nivel sistema
#metodo desp
if [[ "$act_md" == "$metodo_desplazamiento1" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Scroll Method Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1, 0, 0
elif [[ "$act_md" == "$metodo_desplazamiento2" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Scroll Method Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0, 1, 0
elif [[ "$act_md" == "$metodo_desplazamiento3" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Scroll Method Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0, 0, 1
fi
#velocidad
if [[ "$act_vl" == "" ]] ; then
act_vl=0.40
fi
accel_speed=$(xinput list-props "$ls_disp_dat" | grep "libinput Accel Speed (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$accel_speed" $act_vl
#desp natural
if [[ "$act_dn" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Natural Scrolling Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_dn" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Natural Scrolling Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
#desp horizontal
if [[ "$act_dh" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Horizontal Scroll Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_dh" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Horizontal Scroll Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
#click al tocar
if [[ "$act_ct" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Tapping Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_ct" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Tapping Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
#desac al escribir
if [[ "$act_de" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Disable While Typing Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_de" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Disable While Typing Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
out2=$(zenity --cancel-label="$atras" --ok-label="$aceptar" --list --width=600 --height=250 --column="$columna_opciones" "$metodo_desplazamiento > $act_md" "$desplazamiento_natural > $act_dn" "$desplazamiento_horizontal > $act_dh" "$click_al_tocar > $act_ct" "$desactivado_al_escribir > $act_de")
if [ $? == 0 ] ; then
out2_a=$(sed 's/ > .*$//g' <<< $out2)
if [[ "$out2_a" == "$metodo_desplazamiento" ]] ; then
#modo desplazamiento
md1=$(grep "^$metodo_desplazamiento:$metodo_desplazamiento1" <<< "$dat")
md2=$(grep "^$metodo_desplazamiento:$metodo_desplazamiento2" <<< "$dat")
md3=$(grep "^$metodo_desplazamiento:$metodo_desplazamiento3" <<< "$dat")
md=$(
if [[ "$md1" != '' ]] ; then
cat <<< \
"TRUE
$metodo_desplazamiento1"
else
cat <<< \
"FALSE
$metodo_desplazamiento1"
fi
if [[ "$md2" != '' ]] ; then
cat <<< \
"TRUE
$metodo_desplazamiento2"
else
cat <<< \
"FALSE
$metodo_desplazamiento2"
fi
if [[ "$md3" != '' ]] ; then
cat <<< \
"TRUE
$metodo_desplazamiento3"
else
cat <<< \
"FALSE
$metodo_desplazamiento3"
fi
)
out3=$(IFS=$'\n' ; zenity --cancel-label="$atras" --ok-label="$aceptar" --list --radiolist --column='X' --column="$metodo_desplazamiento" $md)
res3=$?
if [ $res3 == 0 ] ; then
xinput --enable "$ls_disp_dat"
if [[ "$out3" == "$metodo_desplazamiento1" ]] ; then
sed -i "s/^$metodo_desplazamiento:.*/$metodo_desplazamiento:$out3/g" "$ruta"
elif [[ "$out3" == "$metodo_desplazamiento2" ]] ; then
sed -i "s/^$metodo_desplazamiento:.*/$metodo_desplazamiento:$out3/g" "$ruta"
elif [[ "$out3" == "$metodo_desplazamiento3" ]] ; then
sed -i "s/^$metodo_desplazamiento:.*/$metodo_desplazamiento:$out3/g" "$ruta"
fi
elif [ $? == 1 ] ; then
prm3=false
fi
#desp natural
elif [[ "$out2_a" == "$desplazamiento_natural" ]] ; then
xinput --enable "$ls_disp_dat"
if [[ "$act_dn" == "$si" ]] ; then
sed -i "s/^$desplazamiento_natural:.*/$desplazamiento_natural:$no/g" "$ruta"
elif [[ "$act_dn" == "$no" ]] ; then
sed -i "s/^$desplazamiento_natural:.*/$desplazamiento_natural:$si/g" "$ruta"
fi
#desp horizontal
elif [[ "$out2_a" == "$desplazamiento_horizontal" ]] ; then
xinput --enable "$ls_disp_dat"
if [[ "$act_dh" == "$si" ]] ; then
sed -i "s/^$desplazamiento_horizontal:.*/$desplazamiento_horizontal:$no/g" "$ruta"
elif [[ "$act_dh" == "$no" ]] ; then
sed -i "s/^$desplazamiento_horizontal:.*/$desplazamiento_horizontal:$si/g" "$ruta"
fi
#click al tocar
elif [[ "$out2_a" == "$click_al_tocar" ]] ; then
xinput --enable "$ls_disp_dat"
if [[ "$act_ct" == "$si" ]] ; then
sed -i "s/^$click_al_tocar:.*/$click_al_tocar:$no/g" "$ruta"
elif [[ "$act_ct" == "$no" ]] ; then
sed -i "s/^$click_al_tocar:.*/$click_al_tocar:$si/g" "$ruta"
fi
#desac mientras escribe
elif [[ "$out2_a" == "$desactivado_al_escribir" ]] ; then
xinput --enable "$ls_disp_dat"
if [[ "$act_de" == "$si" ]] ; then
sed -i "s/^$desactivado_al_escribir:.*/$desactivado_al_escribir:$no/g" "$ruta"
elif [[ "$act_de" == "$no" ]] ; then
sed -i "s/^$desactivado_al_escribir:.*/$desactivado_al_escribir:$si/g" "$ruta"
fi
fi
elif [ $? == 1 ] ; then
prm2=false
fi
done #bulce 2
elif [[ "$mop" == "$velocidad" ]] ; then
#bucle 4
prm4=true
while $prm4 ; do
dat=$(cat "$ruta")
vel=$(grep "^$velocidad" <<< $dat | grep -o "[0-9]\.[0-9]*")
if [[ "$vel" == "" ]] ; then
vel=0
else
vel=$(
if [[ "$vel" == '1.00' ]] ; then
cat <<< "100"
else
global=$(grep -o "[0-9]" <<< $vel)
n1=$(sed -n 1p <<< $global)
n2=$(sed -n 2p <<< $global)
n3=$(sed -n 3p <<< $global)
cat <<< "$n2$n3"
fi)
fi
out_vel=$(zenity --scale --step='10' --cancel-label="$atras" --ok-label="$aceptar" --value="$vel")
res2=$?
if [ $res2 == 0 ] ; then
out_vel2=$(
if [ $out_vel == 100 ] ; then
cat <<< "1.00"
else
cat <<< "0.$out_vel"
fi)
xinput --enable "$ls_disp_dat"
sed -i "s/^$estado_al_inicio.*/$estado_al_inicio:$estado1/g" "$ruta"
accel_speed=$(xinput list-props "$ls_disp_dat" | grep "libinput Accel Speed (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$accel_speed" "$out_vel2"
sed -i "s/^$velocidad:.*/$velocidad:$out_vel2/g" "$ruta"
#timeout 0.8s xmessage -center -bg green "$estado1"
elif [ $res2 == 1 ] ; then
prm4=false
fi
done #bucle
elif [[ "$mop" == "$abrir_hoja_datos" ]] ; then
xdg-open "$ruta"
fi
fi
elif [[ "$out" == "$refrescar" ]] ; then
echo "$refrescar"
elif [ $res == 1 ] ; then
prm=false
fi
done #bucle
######################################################## auto start
elif [[ "$0 $1" == "$0 $auto_start" ]] ; then
echo 'auto start'
dat=$(cat "$ruta")
ls_disp_dat=$(grep "^$dispositivo:" <<< $dat | sed 's/^'"$dispositivo"'://g')
if [[ "$ls_disp_dat" == "" ]] ; then
echo "$dispositivo_vacio"
else
act_vl=$(grep "^$velocidad" <<< $dat | grep -o "[0-9]\.[0-9]*")
act_ei=$(grep "^$estado_al_inicio" <<< $dat | sed "s/$estado_al_inicio://g")
act_md=$(grep "^$metodo_desplazamiento" <<< $dat | sed "s/$metodo_desplazamiento://g")
act_dn=$(grep "^$desplazamiento_natural" <<< $dat | sed "s/$desplazamiento_natural://g")
act_dh=$(grep "^$desplazamiento_horizontal" <<< $dat | sed "s/$desplazamiento_horizontal://g")
act_ct=$(grep "^$click_al_tocar" <<< $dat | sed "s/$click_al_tocar://g")
act_de=$(grep "^$desactivado_al_escribir" <<< $dat | sed "s/$desactivado_al_escribir://g")
#estado
if [[ "$act_ei" == "$estado1" ]] ; then
xinput --enable "$ls_disp_dat"
elif [[ "$act_ei" == "$estado0" ]] ; then
xinput --disable "$ls_disp_dat"
fi
#metodo desp
if [[ "$act_md" == "$metodo_desplazamiento1" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Scroll Method Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1, 0, 0
elif [[ "$act_md" == "$metodo_desplazamiento2" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Scroll Method Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0, 1, 0
elif [[ "$act_md" == "$metodo_desplazamiento3" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Scroll Method Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0, 0, 1
fi
#velocidad
if [[ "$act_vl" == "" ]] ; then
act_vl=0.40
fi
accel_speed=$(xinput list-props "$ls_disp_dat" | grep "libinput Accel Speed (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$accel_speed" $act_vl
#desp natural
if [[ "$act_dn" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Natural Scrolling Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_dn" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Natural Scrolling Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
#desp horizontal
if [[ "$act_dh" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Horizontal Scroll Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_dh" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Horizontal Scroll Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
#click al tocar
if [[ "$act_ct" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Tapping Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_ct" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Tapping Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
#desac al escribir
if [[ "$act_de" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Disable While Typing Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_de" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Disable While Typing Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
fi #puerta dispositivo vacio
######################################################## toggle
elif [[ "$0" == "$0" ]] ; then
dat=$(cat "$ruta")
ls_disp_dat=$(grep "^$dispositivo:" <<< $dat | sed 's/^'"$dispositivo"'://g')
if [[ "$ls_disp_dat" == "" ]] ; then
echo "$dispositivo_vacio"
else
if [[ "$timeout" == "" ]] ; then
timeout='0.8s'
fi
act_est=$(xinput list-props "$ls_disp_dat" | grep "Device Enabled (" | awk '{print $NF}')
#estado
if [ $act_est == 0 ] ; then
xinput --enable "$ls_disp_dat"
timeout "$timeout" xmessage -center -bg green "$estado1"
#parametros
act_vl=$(grep "^$velocidad" <<< $dat | grep -o "[0-9]\.[0-9]*")
act_ei=$(grep "^$estado_al_inicio" <<< $dat | sed "s/$estado_al_inicio://g")
act_md=$(grep "^$metodo_desplazamiento" <<< $dat | sed "s/$metodo_desplazamiento://g")
act_dn=$(grep "^$desplazamiento_natural" <<< $dat | sed "s/$desplazamiento_natural://g")
act_dh=$(grep "^$desplazamiento_horizontal" <<< $dat | sed "s/$desplazamiento_horizontal://g")
act_ct=$(grep "^$click_al_tocar" <<< $dat | sed "s/$click_al_tocar://g")
act_de=$(grep "^$desactivado_al_escribir" <<< $dat | sed "s/$desactivado_al_escribir://g")
#metodo desp
if [[ "$act_md" == "$metodo_desplazamiento1" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Scroll Method Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1, 0, 0
elif [[ "$act_md" == "$metodo_desplazamiento2" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Scroll Method Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0, 1, 0
elif [[ "$act_md" == "$metodo_desplazamiento3" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Scroll Method Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0, 0, 1
fi
#velocidad
if [[ "$act_vl" == "" ]] ; then
act_vl=0.40
fi
accel_speed=$(xinput list-props "$ls_disp_dat" | grep "libinput Accel Speed (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$accel_speed" $act_vl
#desp natural
if [[ "$act_dn" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Natural Scrolling Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_dn" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Natural Scrolling Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
#desp horizontal
if [[ "$act_dh" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Horizontal Scroll Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_dh" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Horizontal Scroll Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
#click al tocar
if [[ "$act_ct" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Tapping Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_ct" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Tapping Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
#desac al escribir
if [[ "$act_de" == "$si" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Disable While Typing Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 1
elif [[ "$act_de" == "$no" ]] ; then
code_x=$(xinput list-props "$ls_disp_dat" | grep "libinput Disable While Typing Enabled (" | grep -o "([0-9]*" | sed 's/^(//g')
xinput set-prop "$ls_disp_dat" "$code_x" 0
fi
elif [ $act_est == 1 ] ; then
xinput --disable "$ls_disp_dat"
timeout "$timeout" xmessage -center -bg grey "$estado0"
fi
fi #puerta dispositivo vacio
fi
fi
exit
español
dispositivo='Dispositivo'
atras='Atras'
estado_al_inicio='Estado al inicio'
estado1='Activado'
estado0='Desactivado'
mas_opciones='Mas opciones'
columna_opciones='Opciones'
mas_ajustes='Mas ajustes'
velocidad='Velocidad'
abrir_hoja_datos='Abrir hoja datos'
metodo_desplazamiento='Metodo de desplazamiento'
metodo_desplazamiento1='dos dedos'
metodo_desplazamiento2='borde'
metodo_desplazamiento3='boton'
desplazamiento_natural='Desplazamiento natural'
desplazamiento_horizontal='Desplazamiento horizontal'
click_al_tocar='Click al tocar'
desactivado_al_escribir='Desactivado al escribir'
si='SI'
no='NO'
modo_zurdo_para='Modo zurdo para'
refrescar='Refrescar'
salir='Salir'
aceptar='Aceptar'
dispositivo_vacio='dispositivo vacio'
русский
dispositivo='Устройство'
atras='Позади'
estado_al_inicio='Состояние в начале'
estado1='Активирован'
estado0='Недопустимый'
mas_opciones='Больше опций'
columna_opciones='Опции'
mas_ajustes='Больше настроек'
velocidad='Скорость'
abrir_hoja_datos='Открыть лист данных'
metodo_desplazamiento='Вытесняющий метод'
metodo_desplazamiento1='два пальца'
metodo_desplazamiento2='край'
metodo_desplazamiento3='кнопка'
desplazamiento_natural='Естественное смещение'
desplazamiento_horizontal='Горизонтальное смещение'
click_al_tocar='Нажмите на сенсорный'
desactivado_al_escribir='Выключается при наборе текста'
si='ДА'
no='НЕТ'
modo_zurdo_para='Режим левой руки для'
refrescar='Обновить'
salir='Выход'
aceptar='Принять'
dispositivo_vacio='пустое устройство'
To disable xmessage notification, add # to the beginning of the lines:
timeout "$timeout" xmessage -center -bg green "$estado1"
timeout "$timeout" xmessage -center -bg grey "$estado0"
This program is the replacement of this publication:
you can find useful instructions right there