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.


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.


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

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.


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 )

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.