我最近得到了 Ubuntu 17.10,它很棒。我在 HP Pavilion 上使用它,当我旋转屏幕时,触摸板不会旋转。我没有触摸屏。我想让触摸板和屏幕一起旋转,但无法让它工作。我在这里看了很多问题,比如这一个,还有许多其他的,但都不起作用。有人能帮帮我吗?
答案1
我不确定您是否仍在寻找解决方案,但不久前我编写了一个脚本来实现此功能。它使用 xrandr 和 xinput。
将 eDP1 替换为触摸板要跟随的屏幕后,将以下内容放入 ~/bin 中。可以通过运行 xrandr 获取屏幕列表。
如果要旋转所有屏幕,请更改--output eDP1
为。-o
您可能需要尝试一下获取触摸板的 xinput id 的代码。
确保它是可执行的并且 bin 在 $PATH 变量中。
不包含与你的问题无关的内容
#!/bin/bash
#inverted -> right -> normal -> left -> inverted
status="$(xrandr -q|grep eDP1|awk '{print $3}')"
if [ $status == 'primary' ]; then
state="$(xrandr -q|grep eDP1|awk '{print $5}')"
else
state="$(xrandr -q|grep eDP1|awk '{print $4}')"
fi
touchpad=$(xinput | awk '/Touchpad/ {print $7}' | grep -oP [0-9]+) #
case "${state}" in
'inverted')
xrandr --output eDP1 --rotate right
xinput set-prop "$touchpad" --type=float "Coordinate Transformation Matrix" 0 1 0 -1 0 0 0 0 1
;;
'right')
xrandr --output eDP1 --rotate normal
xinput set-prop ${touchpad} --type=float "Coordinate Transformation Matrix" 1 0 0 0 1 0 0 0 1
;;
'(normal')
xrandr --output eDP1 --rotate left
xinput set-prop ${touchpad} --type=float "Coordinate Transformation Matrix" 0 -1 0 1 0 0 0 0 1
;;
'left')
xrandr --output eDP1 --rotate inverted
xinput set-prop ${touchpad} --type=float "Coordinate Transformation Matrix" -1 0 0 0 -1 0 0 0 1
;;
esac
我也让它做一些自定义的事情
#!/bin/bash
#inverted -> right -> normal -> left -> inverted
state="$(orientation)"
#[ "${state}" == 'inverted' ] && xrandr --output eDP1 --rotate right || ([ "${state}" == 'right' ] && xrandr --output eDP1 --rotate normal || ([ "${state}" == 'left' ] && xrandr --output eDP1 --rotate inverted || xrandr --output eDP1 --rotate left));
#sleep 2
#xrandr-invert-colors;
touchpad=$(xinput | awk '/Touchpad/ {print $7}' | grep -oP [0-9]+) #xinput list --id-only "ipts 1B96:005E Touchscreen"
libinput_enabled=false
gestures_enabled=true
case "${state}" in
'inverted')
xrandr --output eDP1 --rotate right
xinput set-prop "$touchpad" --type=float "Coordinate Transformation Matrix" 0 1 0 -1 0 0 0 0 1
if [ "$libinput_" = true ]; then
cp ~/.config/libinput-gestures.conf_right ~/.config/libinput-gestures.conf
libinput-gestures-setup restart
fi
;;
'right')
xrandr --output eDP1 --rotate normal
xinput set-prop ${touchpad} --type=float "Coordinate Transformation Matrix" 1 0 0 0 1 0 0 0 1
if [ "$libinput_" = true ]; then
cp ~/.config/libinput-gestures.conf_normal ~/.config/libinput-gestures.conf
libinput-gestures-setup restart
fi
;;
'(normal')
xrandr --output eDP1 --rotate left
xinput set-prop ${touchpad} --type=float "Coordinate Transformation Matrix" 0 -1 0 1 0 0 0 0 1
if [ "$libinput_" = true ]; then
cp ~/.config/libinput-gestures.conf_left ~/.config/libinput-gestures.conf
libinput-gestures-setup restart
fi
;;
'left')
xrandr --output eDP1 --rotate inverted
xinput set-prop ${touchpad} --type=float "Coordinate Transformation Matrix" -1 0 0 0 -1 0 0 0 1
if [ "$libinput_" = true ]; then
cp ~/.config/libinput-gestures.conf_inverted ~/.config/libinput-gestures.conf
libinput-gestures-setup restart
fi
;;
esac
if [ "$gestures_enabled" = true ]; then
restartTouchpad;
fi