Сделайте прокрутку движений мыши, когда нажата средняя кнопка

29

В Windows я привык нажимать центральную кнопку, и она предлагает вариант «быстрой прокрутки» вверх или вниз. Как я могу получить это поведение в Linux? В настоящее время кажется, что вместо кнопки центра нажмите кнопку «Назад».

Я использую Gnome под CentOS.

some1
источник
Что конкретно не работает? У мыши Unix было три кнопки с первого дня, поэтому средняя кнопка мыши обычно работает из коробки.
Жиль "ТАК - перестань быть злым"
Я привык нажимать центральную кнопку, и она предлагала вариант «быстрой прокрутки» вверх или вниз. В настоящее время кажется, что вместо кнопки центра нажмите кнопку «Назад».
1
2
Ах, вам нужно поведение Windows средней кнопки (или, скорее, нажатия колеса) вместо поведения Unix (где средняя кнопка обычно вставляет содержимое буфера обмена). Вы действительно должны сказать это в своем вопросе, мы не можем читать ваши мысли! Это требует поддержки со стороны приложений; какие приложения вы используете? В какой среде рабочего стола (например, Gnome, KDE, XFCE,…)?
Жиль "ТАК - перестань быть злым"
Ну, я подумал, что где-то будет панель конфигурации, где я смогу это настроить, но я даже не мог зайти так далеко. Я полагаю, рабочий стол - Gnome, это по умолчанию? И проблема в Firefox.
1
1
Для Firefox есть решение в почти повторяющемся вопросе .
Жиль "ТАК - перестань быть злым"

Ответы:

26

Эта функция Windows никогда по-настоящему не попала в мир Unix. В мире Unix основная цель средней кнопки мыши - вставить содержимое буфера обмена (или, точнее, текст, выделенный с помощью мыши, который автоматически копируется). Пара кроссплатформенных приложений, таких как Firefox и Chrome, которые поддерживают среднюю кнопку мыши в стиле Linux под Windows и наоборот, но, кроме этого, большинство приложений не поддерживают этот вид детальной прокрутки.

Тем не менее, вы можете подойти довольно близко на системном уровне. Можно настроить кнопку мыши таким образом, чтобы при ее нажатии движения мыши превращались в события колесика. Это та же самая функция, к которой вы привыкли, но вы, вероятно, найдете прерывистое движение, потому что приложения получают события колесика, которые обычно интерпретируются как прокрутка одной целой строкой или столбцом.

Чтобы поиграть с этой конфигурацией, используйте программу xinput (я не знаю, есть ли для нее интерфейс GUI). Сначала запустите следующую команду, чтобы увидеть имя вашего указывающего устройства:

$ xinput --list       
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Generic USB Mouse                         id=8    [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation          id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳   USB Keyboard                            id=9    [slave  keyboard (3)]

Например, в приведенном выше выводе указатель устройства имеет вид Generic USB mouse. Вы можете запустить следующую команду, чтобы получить список свойств, которые можно настроить:

xinput --list-props 'Generic USB Mouse'

Набор свойств, которые вы ищете, это «Эмуляция колеса Evdev». При следующих настройках, когда нажата средняя кнопка мыши (кнопка 2), перемещение мыши отправляет события вращения колеса (4 = вверх, 5 = вниз, 6 = влево, 7 = вправо).

xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation' 1
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Button' 2
xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Axes' 6 7 4 5

Вы можете настроить другие параметры (инерция, время ожидания).

Вы можете поместить эти команды в скрипт. Добавьте #!/bin/shв качестве самой первой строки и сделайте исполняемый файл скрипта (например chmod +x ~/bin/activate-wheel-emulation.sh). Затем добавьте этот сценарий в список команд, запускаемых при запуске сеанса ( gnome-session-propertiesэто можно настроить).

Если у вас есть root-доступ и вы хотите внести изменения для всех пользователей (приемлемо для домашнего компьютера), это проще сделать с помощью файла конфигурации сервера X.org . В качестве пользователя root создайте файл, /etc/X11/xorg.conf.d/wheel-emulation.confсодержащий настройки для драйвера мыши . Настройки одинаковы, но они организованы немного по-другому.

Section "InputClass"
    Identifier "Wheel Emulation"
    MatchProduct "Generic USB Mouse"
    Option "EmulateWheel" "on"
    Option "EmulateWheelButton" "2"
    Option "XAxisMapping" "6 7"
    Option "YAxisMapping" "4 5"
EndSection
Жиль "ТАК - перестань быть злым"
источник
Вы хотите проявлять осторожность при настройке других параметров. Если вы Evdev Wheel Emulation Timeoutслишком сильно уменьшите параметр, вы можете полностью потерять функциональность средней кнопки мыши (щелчка). Например, если вы уменьшите значение Evdev Wheel Emulation Timeoutдо значения ниже, Evdev Middle Button Timeoutвы больше не будете генерировать события нажатия средней кнопки. Исходя из личного опыта, кажется, что следующее работает достаточно хорошо:
agnussmcferguss
xinput --set-prop 'Generic USB Mouse' 'Evdev Middle Button Emulation' 1, xinput --set-prop 'Generic USB Mouse' 'Evdev Middle Button Timeout' 50, xinput --set-prop 'Generic USB Mouse' 'Evdev Wheel Emulation Timeout' 100, Это обеспечивает разумную функциональность щелчка и прокрутки, хотя, если вы обнаружите, что она срабатывает слишком быстро, попробуйте увеличить ее Evdev Wheel Emulation Timeout(по-моему, 200 по умолчанию)
agnussmcferguss,
Жиль, я думаю, что-то не так в твоем предложенном файле конфигурации xorg.conf.d. Когда я использовал его, мой X.Org загрузился на черный экран. Я получил версию, которая работает, добавляя Device "evdev"и помещая двойные кавычки вокруг "EmulateWheelButton"значения "2". (Извините, у меня нет времени, чтобы выяснить, решает ли проблема одно или оба этих изменения.)
Arkanon
@Arkanon Отсутствующие двойные кавычки - это определенно синтаксическая ошибка. Я не думаю, что Device "evdev"может иметь смысл, ты имел в виду Driver "evdev"? Я думаю, что это будет альтернативой MatchProductдирективе, которая устанавливает параметры для всех устройств ввода, а не только для обычных USB-мышей.
Жиль "ТАК - перестань быть злым"
1
@Wallacoloo Я не знаю, сможете ли вы получить этот точный эффект, но вы можете заставить цифровую клавиатуру перемещать мышь, набрав Pointer_EnableKeys(Google или задайте новый вопрос здесь), и вы можете настроить более изящное поведение с помощью XKB (клавиатура поиска) : mousekeys, или задайте новый вопрос, описывающий, что именно вы хотите, и с чем вы согласитесь, если у вас его точно не будет).
Жиль "ТАК - перестань быть злым"
25

Оказывается, это можно сделать через настройки Firefox.

  1. Из выпадающего меню: Edit -> Preferences
  2. Затем выберите вкладки: Дополнительно -> Общие
  3. Затем отметьте «Использовать автопрокрутку»

Скриншот

   сс

some1
источник
0

потому что chromeвы можете использовать это расширение для автопрокрутки

Автопрокрутка

не забудьте перезапустить Chrome после установки расширения

codegames
источник