Friday, May 3, 2024
10
rated 0 times [  10] [ 0]  / answers: 1 / hits: 3698  / 1 Year ago, wed, january 4, 2023, 7:39:09

Kubuntu 11.10 (netbook edition)



My wife's netbook has the following problem: when the lid is closed, it activates the touchpad every now and then - it makes small movements and taps. The notebook is set not to go to sleep while the AC adapter is plugged in, so whenever the lid closes, it keeps doing things on its own.



Especially annoying when pausing a film and going to sleep, as after a while it will tap on the player window and resume the film, scaring the crap out of everyone around.



I didn't find any option to disable the touchpad while the lid is down, but maybe there's some kind of an event I could hook into and disable/re-enable it manually?


More From » ubuntu-netbook

 Answers
4

Since nobody could tell me how to do exactly what I wanted, here's the solution I came up with:



Disabling the touchpad/mouse



$ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ FSPPS/2 Sentelic FingerSensingPad id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ USB2.0 UVC PC Camera id=10 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
↳ MSI Laptop hotkeys id=13 [slave keyboard (3)]


As we can see, my touchpad is the one with id=12. To disable it, I need to run:



$ xinput set-int-prop 12 "Device Enabled" 8 0


and to enable it again:



$ xinput set-int-prop 12 "Device Enabled" 8 1


Getting the lid state



First of all, I can get the state of the lid on my system from this file:



$ cat /proc/acpi/button/lid/LID0/state 
state: open


When I close the lid, the state becomes closed.



Now to get the state as a variable, I can check the exit status of a nifty grep command:



$ grep -q closed /proc/acpi/button/lid/*/state
$ echo $?
1


So to enable or disable the touchpad depending on the lid state, all I need to do is:



$ grep -q closed /proc/acpi/button/lid/*/state
$ xinput set-int-prop 12 "Device Enabled" 8 $?


Hooking the ACPI lid event



To execute the above commands every time the lid closes or opens, I created the file /etc/acpi/local/lid.sh.post with the following content:



export XAUTHORITY=`ls -1 /home/*/.Xauthority | head -n 1`
export DISPLAY=":`ls -1 /tmp/.X11-unix/ | sed -e s/^X//g | head -n 1`"

grep -q closed /proc/acpi/button/lid/*/state
xinput set-int-prop 12 "Device Enabled" 8 $?


XAUHTORITY and DISPLAY need to be set in order to allow root (who runs the acpid process) to access the user's X session.


[#41221] Wednesday, January 4, 2023, 1 Year  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
olouredping

Total Points: 259
Total Questions: 100
Total Answers: 121

Location: New Caledonia
Member since Wed, Sep 15, 2021
3 Years ago
olouredping questions
;