Meniru gulir horizontal dengan tombol Shift


13

Saya ingin meniru pengguliran horizontal ketika saya menggunakan roda gulir (vertikal) saya dan menekan Shift.

Pada beberapa aplikasi (Chrom {e, ium}) ini sudah berfungsi, tetapi saya sedang mencari solusi generik untuk aplikasi X.

Yang paling dekat yang saya dapatkan sejauh ini adalah xbindkeys+ xdotool.

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

"xdotool click 7"
  shift + b:5

Masalahnya adalah bahwa xbindkeystampaknya melewatkan beberapa peristiwa, dan kadang-kadang gulir vertikal "melewati". Ini sangat menyebalkan. Sepertinya xbindkeysmenggunakan semacam polling?

Saya juga tidak suka menelurkan ratusan perintah shell per detik.

Saya mendapat layar kecil dan harus banyak menggulir secara horizontal.

Bagaimana saya bisa mencapai pengguliran horizontal generik?

MEMPERBARUI:

Ada cara lain yang melakukan sebagian besar apa yang saya inginkan xbindkeysdan xmodmap.

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

Ketika Shiftditahan, tombol penunjuk 4 dan 5 dipetakan ke 6 dan 7. (Tombol 4/5 adalah pengguliran vertikal kedepan dan 6/7 untuk pengguliran horizontal). c:50adalah tombol kiri Shift. Pada rilis kunci, pemetaan pointer default dikembalikan.

Ini menyelesaikan masalah "terlalu banyak acara" dengan baik. Namun, tombol Shift tidak berfungsi sebagai pengubah normal lagi. Saya mencoba menerbitkan kembali acara Shiftpers / rilis dengan xdotoolseperti ini:

"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

Menurut xevpara Shiftperistiwa melewati, tapi saya berpikir itu tidak diakui sebagai pengubah lagi. Misalnya, menekan Shift+ Atidak akan menghasilkan huruf besar A.


1
Anda juga dapat melakukan pengguliran horizontal dengan Ctrl + Panah untuk banyak program.
terdon

1
Terima kasih, tetapi ini tidak berhasil untuk saya di Firefox. Saya mencari solusi "generik" yang berfungsi di mana-mana.
Paul Schyska

Apakah masalah menjalankan sesuatu sebagai root, misalnya menggunakan sudo?
brm

Tidak perlu harus sudo. Saya berasumsi maksud Anda sudo-ing setiap Shift ditekan? Bisakah Anda menguraikan apa yang ada dalam pikiran Anda?
Paul Schyska

Ini mungkin tidak ada gunanya, tetapi pada suatu saat ini berhasil bagi saya ~/.xbindkeysrc.scm. Pada titik tertentu itu gagal, tetapi mungkin bekerja pada sistem Anda.
Sparhawk

Jawaban:


2

Saya menemukan solusi yang dapat diterima untuk saya.

Saya tidak menemukan cara untuk menggunakan Shiftatau tombol lain sebagai pengubah untuk memutar sumbu roda selama ditekan.

Saya sekarang menggunakan sederhana .xbindkeysrcdengan tombol sakelar:

"~/toggle.sh"
  alt + x

Skrip toggle.sh terlihat seperti ini:

#!/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

Ini memungkinkan saya untuk beralih perilaku. Ketika saya menekan Alt+ X, sumbu roda mouse saya diputar, dan ketika saya menekannya lagi, itu diset ke default.

Itu seharusnya bekerja untuk saat ini.

Jika seseorang menemukan cara untuk melakukannya dengan Shift"pengubah" (sumbu mouse diputar selama ditekan), beri tahu saya.

EDIT: Karena Alt+ xadalah hotkey yang umum digunakan, saya mengubahnya menjadi:

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

(Saya beralih ke konfigurasi tipuan sehingga di atas harus dalam file bernama .xbindkeysrc.scm)

Ini akan mengubah arah roda gulir dengan Ctrltombol + mouse kanan.


0

Anda bisa menggunakan btnx dan ini adalah alat konfigurasi gui .

Paket Ubuntu yang lebih baru dan di sini

Setelah Anda melakukan deteksi tombol pada mouse Anda menggunakan btnx-config just map "Scroll Up" bersama dengan pengubah tombol shift ke tombol x apa pun yang Anda inginkan.


Terima kasih, saya mengalami masalah saat membuatnya dibangun di atas fedora.
Paul Schyska

1
Saya menemukan paket rpm untuk btnx sekarang. Saya tidak menemukan cara untuk memetakan pengubah sebagai acara sumber (yaitu Shift + WheelUp). Saya hanya dapat memetakan dari WheelUp ke Shift + beberapa tombol lainnya. Apakah saya melewatkan sesuatu? Saya juga mencoba untuk "mendeteksi" Shift + WheelUp di tempat pertama, tetapi katanya "Tombol sudah dipetakan". Kode mentah adalah 0x02010008 untuk kedua kasus (Shift ditekan dan tidak ditekan). Saya tidak berpikir btnx dapat menangani beberapa perangkat input sama sekali (Mouse + Keyboard)
Paul Schyska

0

Seperti yang diisyaratkan di sini , saya menginstal imwheel , kemudian dibuat ~/.imwheelrcdengan konten berikut.

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

Saya kemudian berlari imwheel -b 45di terminal. Saya menguji, dan saya belum melihat masalah diagonal terkait dengan scrolling tinggi dan xbindkeys.

NB -b 45membatasi imwheeluntuk menangkap hanya gulir ke atas dan ke bawah, mencegahnya menghalangi (misalnya) xbindkeysbinding untuk tombol jempol.

Masalah

Namun, ada beberapa masalah yang terkait dengan ini.

  • Itu tidak konsisten. Saya bisa membuatnya bekerja dengan Firefox dan Gwenview di luar kotak, tetapi Inkscape dan GIMP tidak berfungsi. Saya bisa menggunakan pencocokan jendela untuk tidak cocok dengan Inkscape / GIMP, tetapi harus ada beberapa cara untuk membuatnya bekerja secara universal.
  • Lebih buruk lagi, ini mencegah beberapa peristiwa default lainnya, seperti Ctrl+ Scroll wheel, yang biasanya digunakan untuk memperbesar. Aku mencoba memasukkan hal-hal seperti Control_L, Up, Control_L|Updi ~/.imwheelrc, tapi ini tidak bekerja.
  • imwheelmengirimkan peristiwa roda gulir horizontal ke jendela aktif, bukan jendela di bawah kursor mouse. Ini berlawanan dengan perilaku standar roda gulir. Ini juga menunjukkan bahwa Ctrlsolusi pada poin di atas juga akan kurang optimal.
  • imwheeltampaknya tidak lagi dalam pengembangan. Sudah macet pada versi pra-rilis selama 10 tahun terakhir (sejak 2004).
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.