屏幕旋转时旋转触摸板

屏幕旋转时旋转触摸板

我最近得到了 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 

相关内容