อินพุตหน้าจอสัมผัสไม่หมุน: Lenovo Yoga 13 / Yoga 2 Pro


8

หลังจากได้รับ Lenovo Yoga 13 สำหรับคริสต์มาสแล้วฉันก็พอใจกับการทำงานของมันกับ Ubuntu ง่ายต่อการเปลี่ยนการวางแนวการแสดงผลภายใต้เมนูการตั้งค่าการแสดงผลหรือโดยการพิมพ์เช่นxrandr -o invertedในเทอร์มินัล อย่างไรก็ตามสิ่งนี้ไม่หมุนอินพุทของหน้าจอสัมผัส (หรือที่สำคัญกว่าทัชแพด)

ฉันดูรอบ ๆ เพื่อหาวิธีแก้ไขปัญหานี้และพบแหล่งข้อมูลที่น่าเชื่อถือสองแห่ง
(1) http://cc.oulu.fi/~rantalai/synaptics/ การติดตั้งแพ็กเกจที่นี่และการรันคำสั่งที่แนะนำจะหมุนอินพุตและทัชแพด (แต่ไม่ใช่ของหน้าจอสัมผัส)
(2) http://www.elfsternberg.com/2013/05/25/thinkpad-yoga-ubuntu-12/ เว็บไซต์นี้แนะนำให้อัปเดตแพ็คเกจการป้อนข้อมูลซึ่งฉันยังไม่ได้ลอง


ปัญหา (และวิธีแก้ปัญหา) เหมือนกันใน Yoga 2 Pro
rubo77

บางทีคุณสามารถเพิ่มการหมุนอัตโนมัติด้วยสคริปต์นี้ด้วย: krizka.net/projects/autorotate
rubo77

คำตอบ:


8

ผมพบคำตอบที่ตรงไปตรงมาคำถามของฉันโดยการอ่านข้อมูลที่เป็นประโยชน์ที่อูบุนตูวิกิพีเดีย: X - ป้อนข้อมูลประสานงานการเปลี่ยนแปลง

คำสั่งเหล่านี้สามารถใช้เพื่อจัดตำแหน่งการหมุนของอุปกรณ์อินพุตและจอแสดงผล:

  1. คำสั่งแรกหมุนจอแสดงผลซึ่งสามารถซ้ายขวาปกติหรือกลับด้าน:
    xrandr -o <orientation>

  2. ทำการแมปอุปกรณ์อินพุตอีกครั้ง:
    xinput set-prop '<device name>' 'Coordinate Transformation Matrix' <matrix-elements-rowwise>

คำสั่งที่สอง remaps อุปกรณ์อินพุท (นั่นคือทัชแพดหรือหน้าจอสัมผัส) ซึ่ง<matrix-elements-rowwise>เป็น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หรือ-1 0 1 0 -1 1 0 0 1; สอดคล้องกับทิศทางข้างต้น

ชื่อของทัชแพดและหน้าจอสัมผัสที่สามารถพบได้ด้วยและทั้งสามารถใช้งานทั้งหมดด้วยxinput list xinput disable <device-name>จากนั้นxinput enable <device-name>จะเปิดใช้งานอุปกรณ์อินพุตอีกครั้ง

ในกรณีของฉันและอาจจะให้คนอื่น ๆ ด้วยโยคะ 13 (ยังโยคะ 2 Pro), หน้าจอสัมผัสที่เรียกว่าและทัชแพดELAN Touchscreen SynPS/2 Synaptics TouchPad

ดังนั้นฉันจึงใส่สคริปต์สั้น ๆ ในโฮมไดเร็กตอรี่ของฉันที่เรียกว่าrotate-inverted.shมีเนื้อหาต่อไปนี้:

    #! / bin / ทุบตี
    # สคริปต์นี้หมุนหน้าจอและหน้าจอสัมผัส 180 องศาปิดการใช้งานทัชแพดและเปิดใช้งานแป้นพิมพ์เสมือนจริง
    xrandr -o inverted
    xinput set-prop 'ELAN Touchscreen' 'ประสานงานการแปลงเมทริกซ์' -1 0 1 0 -1 1 0 0 1 1
    xinput ปิดการใช้งาน 'SynPS / 2 Synaptics TouchPad'
    บนกระดาน &

จากนั้นฉันก็ทำให้สคริปต์ทำงานด้วย

chmod u+x rotate-inverted.sh

และได้รับมอบหมายคำสั่ง~/rotate-inverted.shไปยังแป้นพิมพ์ลัดCtrl+ Alt+ Iใน
การตั้งค่าระบบ -> คีย์บอร์ด

หลังจากที่ฉันออกจากระบบและกลับเข้าสู่ระบบฉันสามารถหมุนแป้นพิมพ์ได้โดยกดปุ่มลัดนั้น

ฉันได้ประเภทเดียวกันของสิ่งสำหรับตำแหน่งหมุนอื่น ๆ โดยใช้คำสั่งxinput enable 'SynPS/2 TouchPad'และkillall onboardแทนxinput disable 'SynPS/2 TouchPad'และสำหรับonboard &rotate-normal.sh

บางคนในหัวข้อนี้ได้พูดคุยเกี่ยวกับการกำหนดสคริปต์ดังกล่าวให้กับปุ่มพิเศษบน
โยคะ - เช่นปุ่มล็อค - และดำเนินการโดยอัตโนมัติเมื่อเปลี่ยนตำแหน่งของโยคะ แต่ฉันไม่แน่ใจว่าจะทำอย่างไร


ขอบคุณสำหรับการทำงานอย่างละเอียดของคุณ ฉันสงสัยว่าคุณเคยเจองานวิจัยใด ๆ ที่ได้พูดคุยกันเกี่ยวกับวิธีทำให้การปรับแนวนี้เกิดขึ้นทันที (โดยใช้ accelerometer ฉันเดา)
A.

มันใช้งานได้ดีกับ Yoga 2 Pro ของฉัน! สคริปต์ที่ปรับปรุงแล้วด้านล่างโดย user267578 ทำงานได้สมบูรณ์แบบ! ฉันจะเพิ่มลงในคำแนะนำ
rubo77

บางทีคุณอาจจะหาวิธีการใช้ที่สำคัญที่ถูกต้องเพื่อ map สคริปต์ของคุณได้ที่นี่ ?
rubo77

4

ฉันได้เพิ่มอีกสองสามบรรทัดสคริปต์ที่สองจะเปลี่ยนหน้าจอให้กลับมาเป็นปกติและเปิดใช้งานทัชแพดทดสอบกับ Ideapad 2 Pro โดยวิธีการที่ผมไม่ใส่ปล่อยสำหรับสคริปต์บนแผงด้านข้างHowTo: ปล่อยใหม่

Accelerometer ยังไม่ได้รับการสนับสนุนในเคอร์เนล แต่อาจมีบางอย่างกำลังออกวางจำหน่ายในครั้งต่อไป

สร้างสคริปต์ /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

และให้สิทธิ์ปฏิบัติการ:

sudo chmod +x /usr/local/bin/rotate-screen.sh

1
ทำงานได้ดีมากฉันปรับปรุงสคริปต์ของคุณที่นี่: gist.github.com/rubo77/daa262e0229f6e398766
rubo77

ขอบคุณ! ใช้งานได้ดี ฉันได้สร้างตัวเรียกใช้งานเพื่อให้ใช้งานได้ง่ายขึ้น
Guillaume Sorel

1

ยูทิลิตี้สปินได้รับการออกแบบให้ทำงานกับ ThinkPad Yogas ดังนั้นจึงสามารถจัดการข้อมูลสไตลัสและอื่น ๆ ได้และมีการควบคุมทิศทางทุกประเภท (โดยปุ่มการหมุนหน้าจอและมาตรวัดความเร็ว) มันอาจจะคุ้มค่าที่จะลอง


0

วิธีการแก้ปัญหาที่ไม่มีxrandr(ซึ่งใช้งานไม่ได้บนเวย์แลนด์)

วิธีการแก้ปัญหาบน Ubuntu 19.04 กับ Wayland คือการตั้งค่าrotate-monitorที่สำคัญในการใช้ปุ่มลัดบางหรือgsettingsdconf-editor

ตัวอย่างเช่นคำสั่งต่อไปนี้จะทำให้Ctrl+F8หน้าจอหมุนทวนเข็มนาฬิกา:

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

สิ่งนี้ไม่อนุญาตให้ผู้ใช้ระบุการวางแนวเป้าหมาย แต่เพียงหมุนหน้าจอจนกว่าจะถึงการวางแนวที่ต้องการ

(โพสต์ต้นฉบับที่นี่: https://unix.stackexchange.com/a/465395/20661 )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.