I found a straightforward answer to my question by reading the helpful information at Ubuntu Wiki: X - Input Coordinate Transformation.
These commands can be used to align rotations of the input devices and the display:
The first command rotates the display, where can be left, right, normal, or inverted:
xrandr -o <orientation>
remap the input device:
xinput set-prop '<device name>' 'Coordinate Transformation Matrix' <matrix-elements-rowwise>
The second command remaps the input device (that is, the touchpad or the the touchscreen) where <matrix-elements-rowwise>
is 0 -1 1 1 0 0 0 0 1
, 0 1 0 -1 0 1 0 0 1
, 1 0 0 0 1 0 0 0 1
, or -1 0 1 0 -1 1 0 0 1
; corresponding to the orientations above.
The names of the touchpad and touchscreen can be found with xinput list
and either can be disabled entirely with xinput disable <device-name>
. Subsequently, xinput enable <device-name>
will re-enable the input device.
In my case, and probably for others with a Yoga 13 (also on Yoga 2 Pro), the touchscreen is called ELAN Touchscreen
and the touchpad
SynPS/2 Synaptics TouchPad
.
Thus, I put a short script in my home directory called rotate-inverted.sh
with the following content:
#!/bin/bash
# This script rotates the screen and touchscreen input 180 degrees, disables the touchpad, and enables the virtual keyboard
xrandr -o inverted
xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1
xinput disable 'SynPS/2 Synaptics TouchPad'
onboard &
Then I made the script executable with
chmod u+x rotate-inverted.sh
and assigned the command ~/rotate-inverted.sh
to the keyboard shortcut Ctrl+Alt+I in
System Settings -> Keyboard.
After I logged out and logged back in, I was able to rotate the keyboard by pressing that shortcut.
I did the same type of thing for the other rotation positions, using the commands xinput enable 'SynPS/2 TouchPad'
and killall onboard
instead of xinput disable 'SynPS/2 TouchPad'
and onboard &
for rotate-normal.sh
.
Some others on this thread have discussed assigning such scripts to the extra buttons on the
Yoga — such as the lock button — as well as automatically executing them upon changing the Yoga's position; but I was not sure how to do this.
Run in terminal:
sudo rmmod psmouse && sudo modprobe psmouse
You can run it at startup by pasting the above code in this file (by doing this you will not have to run it in terminal every time you turn on your computer):
/etc/rc.local
In Yoga 11s and other Lenovo models, I think we need to wait for a new kernel update to solve the problem definitely.
Best Answer
I had the same issue so a few search.
I went to
https://linuxwacom.github.io/
and chose the kernel driver which led to
https://github.com/linuxwacom/input-wacom/wiki/Installing-input-wacom-from-source
and basically followed the instructions and did a reboot, touch input started to work again.
For my pen input, it was working without any fix required.