Емуляція горизонтальної прокрутки за допомогою клавіші Shift


13

Я хочу імітувати горизонтальну прокрутку, коли використовую (вертикальне) колесо прокрутки та натискання Shift.

У деяких програмах (Chrom {e, ium}) це вже працює, але я шукаю загальне рішення для X-додатків.

Найближчий я до цього часу є xbindkeys+ xdotool.

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

"xdotool click 7"
  shift + b:5

Проблема полягає в тому, що, xbindkeysздається, пропускають деякі події, а іноді вертикальна прокрутка "пробивається". Це дуже дратує. Схоже xbindkeys, використовується якесь опитування?

Також я не люблю нерестувати сотні команд оболонок за секунду.

У мене маленький екран і мені доведеться багато прокручувати горизонтально.

Як я можу досягти загальної горизонтальної прокрутки?

ОНОВЛЕННЯ:

Є ще один спосіб, який робить переважно те, що я хочу xbindkeysі з xmodmap.

"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

Згідно xevз Shiftподіями пройти, але я думаю , що це не визнається в якості модифікатора більше. Наприклад, натискання Shift+ Aне призведе до великої літери A.


1
Ви також можете прокручувати горизонтальне прокручування за допомогою Ctrl + стрілок для багатьох програм.
terdon

1
Дякую, але це не працює для мене у Firefox. Я шукаю «загальне» рішення, яке працює скрізь.
Павло Шиска

Чи буде проблемою запустити щось як root, наприклад, використовувати sudo?
брм

Не оптимально мати судо. Я припускаю, що ви маєте на увазі судо-вання кожного разу, коли натискається Shift? Не могли б ви розробити те, що ви маєте на увазі?
Павло Шиська

Це може бути безглуздим, але колись це працювало для мене ~/.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як "модифікатор" (вісь миші обертається до тих пір, поки вона натиснута), будь ласка, дайте мені знати.

EDIT: Оскільки Alt+ x- це звичайна гаряча клавіша, я змінив її на:

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

(Я перейшов на конфігурацію guile, тому вищезазначене має бути у файлі з назвою .xbindkeysrc.scm)

Це переключить напрямок колеса прокрутки за допомогою Ctrl+ правої кнопки миші.


0

Ви можете використовувати btnx і це інструмент gui config .

Більш свіжий пакет Ubuntu і тут

Після того, як ви зробите виявлення кнопок на миші за допомогою btnx-config, просто нанесіть на карту "Прокручування вгору" разом з модифікатором кнопки перемикання на будь-який натискання кнопки x.


Дякую, у мене виникають проблеми змусити його нарощувати на Fedora.
Пол Шиська

1
Я знайшов пакет rpm для btnx зараз. Я не знаходжу способу відобразити модифікатор як вихідну подію (тобто Shift + WheelUp). Я можу лише зіставити карту від WheelUp до Shift + якусь іншу клавішу. Я щось пропускаю? Я також спробував в першу чергу "виявити" Shift + WheelUp, але він сказав "Кнопка вже відображена". Сировий код становив 0x02010008 для обох випадків (Shift натискається та не натискається). Я не думаю, що btnx взагалі може працювати з декількома пристроями введення (миша + клавіатура)
Paul Schyska

0

Як тут натякав , я встановив імпульс , а потім створив ~/.imwheelrcіз наступним вмістом.

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

Потім я побіг imwheel -b 45у терміналі. Я тестував, і не помітив діагональних проблем, пов’язаних з високою прокруткою та xbindkeys.

Примітка -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 року).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.