Input Layar Sentuh Tidak Memutar: Lenovo Yoga 13 / Yoga 2 Pro

8

Setelah menerima Lenovo Yoga 13 untuk Natal, saya senang dengan kinerjanya dengan Ubuntu. Mudah untuk mengubah orientasi tampilan di bawah menu Pengaturan tampilan atau dengan mengetik, misalnya xrandr -o inverteddi terminal. Namun, hal tersebut tidak memutar input layar sentuh (atau — yang kurang penting — touchpad).

Saya telah mencari solusi untuk masalah ini, dan menemukan dua sumber yang menjanjikan.
(1) http://cc.oulu.fi/~rantalai/synaptics/ . Menginstal paket di sini dan menjalankan perintah yang disarankan memutar input display dan touchpad (tetapi tidak pada touchscreen).
(2) http://www.elfsternberg.com/2013/05/25/thinkpad-yoga-ubuntu-12/ . Situs web ini merekomendasikan untuk memperbarui paket input, yang belum saya coba.

pengguna28549
sumber
Masalahnya (dan solusinya) sama pada Yoga 2 Pro
rubo77
Mungkin Anda dapat menambahkan rotasi otomatis dengan skrip ini juga: krizka.net/projects/autorotate
rubo77

Jawaban:

8

Saya menemukan jawaban langsung untuk pertanyaan saya dengan membaca informasi bermanfaat di Ubuntu Wiki: X - Input Coordinate Transformation .

Perintah-perintah ini dapat digunakan untuk menyelaraskan rotasi perangkat input dan tampilan:

  1. Perintah pertama memutar layar, di mana dapat dibiarkan, kanan, normal, atau terbalik:
    xrandr -o <orientation>

  2. remap perangkat input:
    xinput set-prop '<device name>' 'Coordinate Transformation Matrix' <matrix-elements-rowwise>

Perintah kedua remaps perangkat input (yaitu, touchpad atau touchscreen) di mana <matrix-elements-rowwise>adalah 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, atau -1 0 1 0 -1 1 0 0 1; sesuai dengan orientasi di atas.

Nama-nama touchpad dan layar sentuh dapat ditemukan bersama xinput listdan keduanya dapat dinonaktifkan sepenuhnya xinput disable <device-name>. Selanjutnya, xinput enable <device-name>akan mengaktifkan kembali perangkat input.

Dalam kasus saya, dan mungkin untuk orang lain dengan Yoga 13 (juga pada Yoga 2 Pro), layar sentuh disebut ELAN Touchscreendan touchpad SynPS/2 Synaptics TouchPad.

Jadi, saya meletakkan skrip pendek di direktori home saya yang disebut rotate-inverted.shdengan konten berikut:

    #! / bin / bash
    # Skrip ini memutar layar dan input layar sentuh 180 derajat, menonaktifkan panel sentuh, dan mengaktifkan keyboard virtual
    xrandr -o terbalik
    xinput set-prop 'ELAN Touchscreen' 'Matriks Transformasi Koordinat' -1 0 1 0 -1 1 0 0 1
    xinput menonaktifkan 'SynPS / 2 Synaptics TouchPad'
    di atas kapal &

Lalu saya membuat skrip dengan executable

chmod u+x rotate-inverted.sh

dan menetapkan perintah ~/rotate-inverted.shuntuk pintasan keyboard Ctrl+ Alt+ Idi
Pengaturan Sistem -> Keyboard .

Setelah saya keluar dan masuk kembali, saya dapat memutar keyboard dengan menekan pintasan itu.

Saya melakukan hal yang sama untuk posisi rotasi lainnya, menggunakan perintah xinput enable 'SynPS/2 TouchPad'dan killall onboardbukannya xinput disable 'SynPS/2 TouchPad'dan onboard &untuk rotate-normal.sh.

Beberapa orang lain di utas ini telah membahas menugaskan skrip tersebut ke tombol tambahan pada
Yoga - seperti tombol kunci - serta secara otomatis mengeksekusi mereka ketika mengubah posisi Yoga; tetapi saya tidak yakin bagaimana melakukan ini.

pengguna28549
sumber
Terima kasih untuk pekerjaan Anda yang mendetail. Saya bertanya-tanya apakah Anda telah menemukan penelitian yang berbicara tentang cara mendapatkan reorientasi ini segera terjadi (menggunakan accelerometer, saya kira)?
A.Wan
Ini juga berfungsi sempurna pada Yoga 2 Pro saya! Skrip yang disempurnakan di bawah ini oleh user267578 berfungsi dengan sempurna! Saya akan menambahkannya di Panduan
rubo77
Mungkin Anda tahu Cara menggunakan Kunci yang benar untuk memetakan skrip Anda di sini ?
rubo77
4

Saya menambahkan beberapa baris lagi, jalankan script kedua akan mengubah layar kembali normal dan mengaktifkan touchpad, diuji dengan Ideapad 2 Pro. By the way saya memang menempatkan peluncur untuk skrip di panel samping HowTo: peluncur baru .

Accelerometer belum didukung di kernel, tetapi mungkin ada sesuatu yang akan datang pada rilis berikutnya.

buat skrip /usr/local/bin/rotate-screen.sh

#!/bin/bash
# This script rotates the screen and touchscreen input 180 degrees, disables the touchpad, and enables the virtual keyboard
# And rotates screen back if the touchpad was disabled

isEnabled=$(xinput --list-props 'SynPS/2 Synaptics TouchPad' | awk '/Device Enabled/{print $NF}')

if [ $isEnabled == 1 ] 
then
    echo "Screen is turned upside down"
    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'
    # Remove hashtag below if you want pop-up the virtual keyboard  
    # onboard &
else
    echo "Screen is turned back to normal"
    xrandr -o normal
    xinput set-prop 'ELAN Touchscreen' 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1
    xinput enable 'SynPS/2 Synaptics TouchPad'
    # killall onboard 
fi

dan berikan hak yang dapat dieksekusi:

sudo chmod +x /usr/local/bin/rotate-screen.sh
pengguna267578
sumber
1
Kerja bagus, saya meningkatkan skrip Anda di sini: gist.github.com/rubo77/daa262e0229f6e398766
rubo77
Terima kasih! Bagus sekali. Saya telah membuat peluncur untuk membuatnya lebih mudah digunakan.
Guillaume Sorel
1

Putaran utilitas dirancang untuk bekerja dengan ThinkPad Yogas, sehingga menangani informasi stylus dan sebagainya, dan ia menawarkan segala macam kontrol orientasi (dengan tombol, rotasi layar, dan akselerometer). Mungkin patut dicoba.

d3pd
sumber
0

Solusi tanpa xrandr(yang tidak berfungsi di jalan)

Solusi pada Ubuntu 19.04 dengan wayland adalah dengan mengatur rotate-monitorkunci untuk beberapa keybinding menggunakan gsettingsatau dconf-editor.

Misalnya, perintah berikut akan menyebabkan Ctrl+F8layar diputar berlawanan arah jarum jam:

$ gsettings set org.gnome.mutter.keybindings rotate-monitor "['XF86RotateWindows', '<Control>F8']"

Ini tidak memungkinkan pengguna untuk menentukan orientasi target, tetapi hanya memutar layar sampai orientasi yang diinginkan tercapai.

(asli diposting di sini: https://unix.stackexchange.com/a/465395/20661 )

rubo77
sumber