ฉันจะต้องวางคำสั่ง“ xinput” เพื่อที่จะเรียกใช้งานเมื่อเริ่ม GNOME


10

ใน Thinkpad ของฉันฉันต้องดำเนินการบางอย่างเช่นนี้ในเทอร์มินัล:

xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Middle Button Emulation" 8 1

เพื่อให้ปุ่มของฉัน 2 บนทัชแพดของฉันเลียนแบบการคลิกเมาส์กลาง ตอนนี้ฉันต้องการให้บรรทัดนี้ถูกประหารชีวิตทุกครั้งที่ฉันเริ่ม GNOMe หรือ X หรืออะไรก็ตามเพื่อที่จะ "ใช้งานได้"

ฉันพยายาม ~ / .xsession หรือ ~ / .bashrc แต่ก็ไม่มีประโยชน์ ฉันควรใส่ไว้ในสคริปต์เริ่ม GNOME หรือใน / etc / X

ฉันใช้ Ubuntu 11.10


ลองเพิ่มsleep 5ในตอนต้นของ.xsessionไฟล์ของคุณหรือไม่
โทมัส Ahle

1
@ThomasAhle ที่จะไม่แก้ปัญหาหากมีการโหลดตัวจัดการหน้าต่างและเปลี่ยนคุณสมบัติ evdev หลังจากดำเนินการ. xsession
Marcin Kaminski

คำตอบ:


7

ฉันใช้ตรัสรู้ DM แต่เกี่ยวข้องกับ DM / เดสก์ท็อปอื่น ๆ ฉันเริ่มเซสชันของฉันโดยใช้ xsession ดังนั้นฉันจึงเริ่มใส่คำสั่ง xinput ใน ~ / .xsession ซึ่งไม่ได้เปลี่ยนการตั้งค่าทั้งหมดที่ฉันต้องการเปลี่ยน เพียงบางส่วนของพวกเขา ฉันคาดหวังว่าจะมีการเปลี่ยนแปลงทั้งหมดหรือไม่เลยดังนั้นฉันจึงเพิ่ม 10-interation loop ใน. xsession ของฉันด้วยช่วงเวลา 1 วินาทีใช้คำสั่ง xinput ทุกครั้งและตรวจสอบว่ามีการใช้การตั้งค่าหรือไม่ ฉันประหลาดใจเลยการตั้งค่าทั้งหมดถูกนำไปใช้หลังจากการทำซ้ำครั้งแรก

ซึ่งหมายความว่าเป็น DM ของคุณที่ทำหน้าที่แทนที่การตั้งค่า xinput ของคุณและเนื่องจากคำสั่งที่เรียกใช้ DM ของคุณ (E17 ในกรณีของฉัน) เป็นไฟล์ล่าสุดในไฟล์. xsession ของคุณไฟล์นี้ไม่มีที่สำหรับสิ่งนี้

ฉันได้เพิ่มบรรทัดต่อไปนี้ใน ~ / .profile ของฉันและสิ่งนี้ได้แก้ไขปัญหา:

# don't run unless we're being invoked from an xwindows session
if [[ -n ${DISPLAY} ]]; then

  # set your devices names here
  pointer1="IBM TrackPoint"
  pointer2="Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint"
  pointer3="Logitech USB Trackball"

  id1=$(xinput | awk -F= "/$pointer1.*pointer/ {print \$2}" | cut -f1)
  id2=$(xinput | awk -F= "/$pointer2.*pointer/ {print \$2}" | cut -f1)
  id3=$(xinput | awk -F= "/$pointer3.*pointer/ {print \$2}" | cut -f1)

  if [[ -n "${id1}" ]]; then
    xinput --set-button-map "${id1}" 1 2 3 4 5 6 7
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id1}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id1}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id2}" ]]; then
    xinput --set-button-map "${id2}" 1 2 3 4 5 6 7
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id2}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id2}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id3}" ]]; then
    xinput --set-button-map "${id3}" 1 2 3 4 5 6 7 8 9
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id3}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Button" 8
    xinput set-prop "${id3}"  "Evdev Middle Button Emulation" 1
  fi
fi

PS set-int-prop ถูกคัดค้าน set-prop (man xinput)

หวังว่านี่จะช่วยใครซักคน


สคริปต์ดี แต่น่าเสียดายที่ฉันไม่ได้ให้ทางออก ตอนนี้วิธีเดียวใช้ได้ถ้าฉันเรียกใช้เทอร์มินัลแล้วเรียกใช้ 'xinput set-prop' ด้วยตัวเลือกที่จำเป็น ฉันลองสคริปต์ของ Marcin ซึ่งเป็นแอปพลิเคชันเริ่มต้น แต่สิ่งเหล่านั้นไม่ได้ผล
Geeocode

"set-int-prop ได้ถูกคัดค้านเนื่องจาก set-prop" T • H • A • N • K • Y • O • U • U •
Clément

4

เพิ่มคำสั่งลงในแอปพลิเคชันเริ่มต้นโดยตรง ในช่องคำสั่ง

หรือ

สร้างสคริปต์อย่างง่ายและเพิ่มสคริปต์ลงในแอปพลิเคชันเริ่มต้น


3

สร้างไฟล์/etc/X11/Xsession.d/สำหรับมัน


สำหรับฉันนั่นคือ/etc/X11/xinit/Xsession
โทมัส Ahle

3
โดยทั่วไปฉันไม่สนับสนุนให้ทำการเปลี่ยนแปลงการกำหนดค่าเฉพาะผู้ใช้ในไฟล์กำหนดค่าทั้งระบบ ประการแรกเพราะมันสร้างสิ่งเพิ่มเติมที่ต้องจำไว้เมื่อคุณต้องการโยกย้ายไปยังเครื่องอื่นและอย่างที่สองเพราะไฟล์เหล่านี้ส่วนใหญ่มีไว้เพื่อให้ค่าเริ่มต้นที่มีสติ ยินดีที่ได้เป็นเพียงแค่ถ่ายภาพสแนปชอตของ $ HOME และรายการแพ็คเกจที่ติดตั้งไว้กับคุณเมื่อคุณต้องการติดตั้ง / ย้ายข้อมูลใหม่
Marcin Kaminski

1

นี่คือวิธีที่ฉันทำในUbuntu 14.04จาก terminal:

1) ตรวจสอบชื่ออุปกรณ์ของคุณ:

xinput list

2) ดูตัวเลือกที่ใช้ได้สำหรับอุปกรณ์ของคุณ:

xinput list-props "Your Device Name"

3) แก้ไขการตั้งค่า (เพื่อให้การตั้งค่าสอดคล้องกันหลังจากรีบูต / ปิดเครื่องเพียงเพิ่มคำสั่งนี้ในแอปพลิเคชันเริ่มต้น ):

xinput set-prop "Your Device Name" "Option Name" "Value"

นี่คือคำสั่งตัวอย่างที่ฉันใช้เพื่อเปิดใช้งาน drags ที่ถูกล็อคในทัชแพดของฉัน:

xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Locked Drags" 1

หากต้องการเปิดใช้งาน / เปลี่ยนตัวเลือกอื่นเพียงแค่มองหาตัวเลือกที่มีอยู่ในอุปกรณ์ของคุณและเล่นกับมันจนกว่าคุณจะได้ผลลัพธ์ที่ต้องการจากนั้นเพิ่มคำสั่งลงในแอปพลิเคชันเริ่มต้นแล้วเสร็จ! หวังว่ามันจะช่วย! :)

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