commit 3381caae95247720283ad9e11366da83dde0f173 Author: Dia Pacifica Date: Tue Oct 1 18:04:21 2024 -0700 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2695717 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +input-setup diff --git a/README.md b/README.md new file mode 100644 index 0000000..995b001 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# ThinkPad Trackpoint Configuration Script (Linux) + +This script configures ThinkPad Trackpoint devices on several different models of ThinkPad keyboards running under Linux. + +I created it for my own convenience in order to automatically set some preferences including disabling middle-click scrolling and increasing Trackpoint sensitivity. diff --git a/tp-input-setup b/tp-input-setup new file mode 100755 index 0000000..6a94b24 --- /dev/null +++ b/tp-input-setup @@ -0,0 +1,206 @@ +#!/bin/bash + +# See 'man 4 libinput' or 'man 4 syntaptics' + +get_dev_id () { + DISPLAY=:0 xinput list --id-only "$1" 2>/dev/null +} + +set_natural_scrolling () { + # + # 1 boolean value, 1 enables natural scrolling + # + + # Get libinput "Natural Scrolling Enabled" ID + local id=$(DISPLAY=:0 xinput list-props $1 | \ + grep -Po 'Natural Scrolling Enabled \(\K[0-9]+') + + # enable natural scrolling + DISPLAY=:0 xinput set-prop $1 $id $2 +} + +set_scroll_method () { + # + # 3 boolean in order "two-finger", "edge", "button" + # + + # Get libinput "Scroll Method Enable" ID + local id=$(DISPLAY=:0 xinput list-props $1 | \ + grep -Po 'Scroll Method Enabled \(\K[0-9]+') + + # enable button scroll method + DISPLAY=:0 xinput set-prop $1 $id $2 $3 $4 +} + +set_accel_speed () { + # + # 32-bit float in range -1, 1 + # + + # Get libinput "Accel Speed" ID + local id=$(DISPLAY=:0 xinput list-props $1 | grep -Po 'Accel Speed \(\K[0-9]+') + + # set accel speed + DISPLAY=:0 xinput set-prop $1 $id $2 +} + +set_accel_profile () { + # + # 2 boolean values in order "adaptive", "flat" + # + + # Get libinput "Accel Profile Enabled" ID + local prop_id=$(DISPLAY=:0 xinput list-props $1 | \ + grep -Po 'Accel Profile Enabled \(\K[0-9]+') + + DISPLAY=:0 xinput set-prop $1 $prop_id $2 $3 +} + +disable_touchpad () { + # + # 1 boolean value, enabled=1 + # + + local prop_id=$(DISPLAY=:0 xinput list-props $syntchid | grep -Po 'Device Enabled \(\K[0-9]+') + + DISPLAY=:0 xinput set-prop $prop_id 0 +} + + +### DEVICES ### + +# ThinkPad P72 (libinput driver) +trackpoint_string="Elan TrackPoint" +touchpad_string="Elan Touchpad" +name="ThinkPad P72 (libinput)" + +if trackpoint_id=$(get_dev_id "$trackpoint_string"); then + echo "Applying settings for $name" + set_natural_scrolling $trackpoint_id 1 + set_scroll_method $trackpoint_id 0 0 1 # enable button + set_accel_speed $trackpoint_id -0.2 + set_accel_profile $trackpoint_id 1 0 # 0 1 flat | 1 0 adaptive + + # this no longer works. 'sensitivity' doesn't exist + # if syntpdev="$(find /sys/devices -type f -name 'sensitivity' | grep 'serio')"; then + # echo -n 200 | sudo tee $syntpdev >/dev/null + # fi +fi + + +# ThinkPad P72 (for synaptics driver?) +trackpoint_string="ETPS/2 Elantech TrackPoint" +touchpad_string="Elan Touchpad" +name="ThinkPad P72 (synaptics)" + +if trackpoint_id=$(get_dev_id "$trackpoint_string"); then + echo "Applying settings for $name" + set_natural_scrolling $trackpoint_id 1 + set_scroll_method $trackpoint_id 0 0 1 # enable button + set_accel_speed $trackpoint_id 1.00 + set_accel_profile $trackpoint_id 1 0 # adaptive + + if syntpdev="$(find /sys/devices -type f -name 'sensitivity' | grep 'serio')"; then + echo -n 190 | sudo tee $syntpdev >/dev/null + fi + + if touchpad_id=$(get_dev_id "$touchpad_string"); then + echo "Disabling touchpad for $name" + disable_touchpad $touchpad_id + fi +fi + +# ThinkPad T580 +trackpoint_string="TPPS/2 IBM TrackPoint" +touchpad_string="SynPS/2 Synaptics TouchPad" +name="ThinkPad T580" + +if trackpoint_id=$(get_dev_id "$trackpoint_string"); then + echo "Applying settings for $name" + set_natural_scrolling $trackpoint_id 1 + set_scroll_method $trackpoint_id 0 0 1 # enable button + set_accel_speed $trackpoint_id -0.20 + set_accel_profile $trackpoint_id 1 0 # adaptive + + if syntpdev="$(find /sys/devices -type f -name 'sensitivity' | grep 'serio')"; then + echo -n 215 | sudo tee $syntpdev >/dev/null + fi + + if touchpad_id=$(get_dev_id "$touchpad_string"); then + echo "Disabling touchpad for $name" + disable_touchpad $touchpad_id + fi +fi + + +# ThinkPad T550 +trackpoint_string="pointer:TPPS/2 IBM TrackPoint" +touchpad_string="pointer:Synaptics TM3053-003" +name="ThinkPad T550" + +if trackpoint_id=$(get_dev_id "$trackpoint_string"); then + echo "Applying settings for $name" + set_natural_scrolling $trackpoint_id 1 + set_scroll_method $trackpoint_id 0 0 1 # enable button + set_accel_speed $trackpoint_id -0.20 + set_accel_profile $trackpoint_id 1 0 # adaptive + + if syntpdev="$(find /sys/devices -type f -name 'sensitivity' | grep 'serio')"; then + echo -n 215 | sudo tee $syntpdev >/dev/null + fi + + if touchpad_id=$(get_dev_id "$touchpad_string"); then + echo "Disabling touchpad for $name" + disable_touchpad $touchpad_id + fi +fi + +# Lenovo TrackPoint Keyboard II +name="pointer:Lenovo TrackPoint Keyboard II" + +if trackpoint_id=$(get_dev_id "$name"); then + echo "Applying settings for $name" + set_natural_scrolling $trackpoint_id 1 + set_scroll_method $trackpoint_id 0 0 1 # enable button + set_accel_speed $trackpoint_id 0.2 + set_accel_profile $trackpoint_id 0 1 # 0 1 flat | 1 0 adaptive + + sudo tp2ctl -s 8 + # if tpcpusbdev="$(find /sys/devices -type f -name 'sensitivity' | grep 'usb1')"; then + # echo -n "9" |sudo tee $tpcpusbdev >/dev/null + # fi + +fi + +# Lenovo ThinkPad Compact USB Keyboard +name="ThinkPad Compact USB Keyboard" + +if trackpoint_id=$(get_dev_id "$name"); then + echo "Applying settings for $name" + set_natural_scrolling $trackpoint_id 1 + set_scroll_method $trackpoint_id 0 0 1 # enable button + set_accel_speed $trackpoint_id -0.18 + set_accel_profile $trackpoint_id 1 0 # adaptive + + if tpcpusbdev="$(find /sys/devices -type f -name 'sensitivity' | grep 'usb1')"; then + echo -n "9" |sudo tee $tpcpusbdev >/dev/null + fi + +fi + +# ThinkPad Compact Bluetooth Keyboard +name="ThinkPad Compact Bluetooth Keyboard" + +if trackpoint_id=$(get_dev_id "$name"); then + echo "Applying settings for $name" + set_natural_scrolling $trackpoint_id 1 + set_scroll_method $trackpoint_id 0 0 1 # enable button + set_accel_speed $trackpoint_id -0.100 + set_accel_profile $trackpoint_id 1 0 # adaptive + + if tpcpbtdev="$(! find /sys/devices -type f -name 'sensitivity' | grep 'bluetooth')"; then + echo -n "7" |sudo tee "$tpcpbtdev" >/dev/null + fi +fi + +