เลียนแบบการเลื่อนในแนวนอนด้วยปุ่ม Shift


13

ฉันต้องการที่จะเลียนแบบเลื่อนแนวนอนเมื่อฉันใช้ (แนวตั้ง) Shiftล้อเลื่อนของฉันและกด

ในบางแอปพลิเคชัน (Chrom {e, ium}) สิ่งนี้ใช้งานได้แล้ว แต่ฉันกำลังมองหาโซลูชันทั่วไปสำหรับแอปพลิเคชัน X

ที่อยู่ใกล้ฉันได้เพื่อให้ห่างไกล+xbindkeysxdotool

# ~/.xbindkeysrc
"xdotool click 6"
  shift + b:4

"xdotool click 7"
  shift + b:5

ปัญหาคือxbindkeysดูเหมือนว่าจะพลาดเหตุการณ์บางอย่างและบางครั้งเลื่อนแนวตั้ง "ได้รับผ่าน" มันน่ารำคาญมาก ดูเหมือนว่าxbindkeysกำลังใช้การสำรวจบางประเภทอยู่ใช่ไหม

นอกจากนี้ฉันไม่ชอบวางไข่คำสั่งเชลล์หลายร้อยตัวต่อวินาที

ฉันมีหน้าจอขนาดเล็กและต้องเลื่อนในแนวนอนมาก

ฉันจะบรรลุการเลื่อนแนวนอนทั่วไปได้อย่างไร

UPDATE:

มีวิธีอื่นที่ไม่เป็นส่วนใหญ่สิ่งที่ฉันต้องการก็คือและxbindkeysxmodmap

"xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10'"
  c:50
"xmodmap -e 'pointer = default'"
  release + shift + c:50

เมื่อShiftถูกพักปุ่มตัวชี้ 4 และ 5 จะถูกจับคู่กับ 6 และ 7 (ปุ่ม 4/5 เป็นการเลื่อนหน้าในแนวตั้งและ 6/7 สำหรับการเลื่อนในแนวนอน) c:50เป็นShiftปุ่มซ้าย เมื่อปล่อยปุ่มการแมปตัวชี้เริ่มต้นจะถูกกู้คืน

วิธีนี้ช่วยแก้ปัญหา "เหตุการณ์มากเกินไป" ได้อย่างดี อย่างไรก็ตามปุ่ม Shift จะไม่ทำงานเป็นตัวดัดแปลงปกติอีกต่อไป ฉันพยายามที่จะออกเหตุการณ์Shiftกด / ปล่อยอีกครั้งด้วยxdotoolเช่นนี้:

"xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10';  xdotool keydown Shift_L"
  c:50
"xmodmap -e 'pointer = default';  xdotool keyup Shift_L"
  release + shift + c:50

ตามเหตุการณ์ได้รับผ่าน แต่ฉันคิดว่ามันไม่ได้รับการยอมรับเป็นตัวปรับแต่งใด ๆ เพิ่มเติม ยกตัวอย่างเช่นการกด+ จะไม่ผลิตตัวพิมพ์ใหญ่xevShiftShiftAA


1
คุณยังสามารถเลื่อนแนวนอนด้วย Ctrl + ลูกศรสำหรับหลาย ๆ โปรแกรม
terdon

1
ขอบคุณ แต่นี่ใช้ไม่ได้กับฉันใน Firefox ฉันกำลังมองหาโซลูชัน "ทั่วไป" ที่ใช้งานได้ทุกที่
พอล Schyska

จะมีปัญหาในการรันบางสิ่งในฐานะ root หรือไม่เช่นใช้ sudo
brm

มันไม่เหมาะที่จะต้องทำ sudo ฉันถือว่าคุณหมายถึง sudo-ing ทุกครั้งที่กด Shift? คุณช่วยอธิบายสิ่งที่คุณมีในใจได้ไหม?
Paul Schyska

นี้อาจจะไม่มีจุดหมาย แต่กาลครั้งหนึ่งนี้~/.xbindkeysrc.scmทำงานสำหรับฉันใน ในบางจุดมันล้มเหลว แต่มันอาจทำงานบนระบบของคุณ
Sparhawk

คำตอบ:


2

ฉันพบวิธีแก้ปัญหาที่ยอมรับได้สำหรับฉัน

ฉันไม่พบวิธีใช้Shiftหรือปุ่มอื่น ๆ ในฐานะที่เป็นตัวดัดแปลงของฉันในการหมุนแกนล้อตราบเท่าที่กด

ตอนนี้ฉันใช้ง่าย.xbindkeysrcด้วยปุ่มสลับ:

"~/toggle.sh"
  alt + x

สคริปต์ toggle.sh มีลักษณะดังนี้:

#!/bin/sh
on()
{
  xmodmap -e 'pointer = 1 2 3 6 7 4 5 8 9 10'
}

off()
{
  xmodmap -e 'pointer = default'
}

if xmodmap -pp | grep -q '4.*6'; then
  off
else
  on
fi

สิ่งนี้ทำให้ฉันสามารถสลับพฤติกรรม เมื่อฉันกดAlt+ Xแกนล้อเมาส์ของฉันจะหมุนและเมื่อฉันกดอีกครั้งมันจะถูกตั้งเป็นค่าเริ่มต้น

ที่ควรจะทำงานตอนนี้

หากใครบางคนพบวิธีที่จะทำด้วยการShiftเป็น "ตัวปรับ" (แกนเมาส์หมุนตราบใดที่มันกด) โปรดแจ้งให้เราทราบ

แก้ไข: เนื่องจากAlt+ xเป็นแป้นลัดที่ใช้กันทั่วไปฉันจึงเปลี่ยนเป็น:

(xbindkey '(control "b:3") "toggle-wheel.sh")

(ฉันเปลี่ยนไปใช้การกำหนดค่าที่หลอกลวงดังนั้นสิ่งที่กล่าวมาข้างต้นควรอยู่ในชื่อไฟล์.xbindkeysrc.scm)

สิ่งนี้จะสลับทิศทางล้อเลื่อนด้วยCtrl+ ปุ่มเมาส์ขวา


0

คุณสามารถใช้btnxและเป็นเครื่องมือกำหนดค่าgui

แพ็คเกจ Ubuntuล่าสุดและที่นี่

หลังจากคุณตรวจจับปุ่มบนเมาส์ของคุณโดยใช้ btnx-config เพียงแค่แมป "เลื่อนขึ้น" พร้อมกับตัวปรับเปลี่ยนปุ่ม Shift กับปุ่ม x ที่คุณต้องการกดปุ่มใดก็ได้


ขอบคุณฉันมีปัญหาในการสร้างมันบน fedora แม้ว่า
Paul Schyska

1
ฉันพบแพ็คเกจ rpm สำหรับ btnx แล้ว ฉันไม่พบวิธีแมปตัวปรับแต่งเป็นเหตุการณ์แหล่งที่มา (เช่น Shift + WheelUp) ฉันสามารถแมปจาก WheelUp ไปยัง Shift + คีย์อื่น ๆ ได้เท่านั้น ฉันพลาดอะไรไปรึเปล่า? ฉันพยายาม "ตรวจจับ" Shift + WheelUp ตั้งแต่แรก แต่ก็พูดว่า "ปุ่มแมปแล้ว" rawcode คือ 0x02010008 สำหรับทั้งสองกรณี (กด Shift แล้วไม่กด) ฉันไม่คิดว่า btnx สามารถจัดการอุปกรณ์ป้อนข้อมูลได้หลายอย่างเลย (Mouse + Keyboard)
Paul Schyska

0

ตามที่บอกไว้ที่นี่ฉันติดตั้งimwheelจากนั้นสร้างขึ้น~/.imwheelrcด้วยเนื้อหาต่อไปนี้

".*"
Shift_L, Up, Left
Shift_L, Down, Right

ฉันวิ่งเข้าไปimwheel -b 45ในสถานี ฉันทดสอบและฉันไม่ได้สังเกตเห็นปัญหาในแนวทแยงที่เกี่ยวข้องกับการเลื่อนและ xbindkeys ที่สูง

NB -b 45จำกัดimwheelการจับภาพเฉพาะการเลื่อนขึ้นและลงเท่านั้นป้องกันจากการบล็อก (เช่น) xbindkeysการผูกสำหรับปุ่มนิ้วหัวแม่มือ

ปัญหาที่เกิดขึ้น

อย่างไรก็ตามมีปัญหาหลายอย่างที่เกี่ยวข้องกับสิ่งนี้

  • มันไม่สอดคล้องกัน ฉันสามารถทำให้มันใช้งานได้กับ Firefox และ Gwenview นอกกรอบ แต่ Inkscape และ GIMP ไม่ทำงาน ฉันสามารถใช้การจับคู่หน้าต่างเพื่อไม่จับคู่ Inkscape / GIMP แต่ควรมีวิธีที่จะทำให้มันทำงานได้ในระดับสากล
  • ยิ่งแย่ไปกว่านั้นคือช่วยป้องกันเหตุการณ์เริ่มต้นอื่น ๆ เช่นCtrl+ Scroll wheelซึ่งปกติจะใช้เพื่อซูม ฉันพยายามใส่สิ่งต่าง ๆControl_L, Up, Control_L|Upใน~/.imwheelrcแต่สิ่งนี้ไม่ได้ผล
  • imwheelส่งเหตุการณ์ล้อเลื่อนแนวนอนไปยังหน้าต่างที่ใช้งานไม่ใช่หน้าต่างใต้เคอร์เซอร์ของเมาส์ นี่คือสิ่งที่ตรงกันข้ามกับพฤติกรรมเริ่มต้นของล้อเลื่อน สิ่งนี้ยังแสดงให้เห็นว่าCtrlวิธีแก้ปัญหาในจุดด้านบนจะเหมาะสมที่สุดเช่นกัน
  • imwheelดูเหมือนจะไม่อยู่ในการพัฒนาอีกต่อไป มันติดอยู่ในรุ่นก่อนวางจำหน่ายในช่วง 10 ปีที่ผ่านมา (ตั้งแต่ปี 2004)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.