РЕДАКТИРОВАТЬ: TL; DR версия (своего рода): на мыши с тремя кнопками, можно ли отключить фактическую среднюю кнопку при сохранении эмуляции средней кнопки в xorg?

Полная версия:

Я купил клавиатуру Lenovo с трекпойнтом и пытаюсь заставить ее работать в Linux/xorg. Проблема в том, что я заметил, что при прокрутке с помощью среднего щелчка (вы нажимаете и удерживаете среднюю кнопку, а затем используете трекпоинт для прокрутки), она сначала отправляет событие нажатия средней кнопки, которое, конечно, вставляет текст или открывает ссылки или что-то еще, в зависимости от где ты. Прокрутка работает просто отлично, но бесполезна.

Итак, я попытался отключить средний щелчок с помощью xinput set-button-map <id> 1 0 3 . Теперь прокрутка работает, и нет события предварительного нажатия кнопки прокрутки, но я также не могу использовать средний щелчок, когда захочу.

Итак, я думал, что я просто включить эмуляцию средней кнопки. Очевидно, отключение среднего щелчка также отключает его эмуляцию, потому что эмуляция работает, если я повторно включаю средний щелчок, но не иначе.

Итак, я думал, что могу жить без вставки с помощью среднего щелчка, и Firefox может открывать ссылки в новой вкладке с помощью Ctrl + клик. Однако это работает только для обычных ссылок. Если у вас странная ссылка, то, кажется, единственный способ открыть ссылку на новой вкладке - это щелчок средней кнопкой мыши (который работает, даже если ctrl + click не ... wtf?). Кроме того, нажатие Ctrl + щелчок одной рукой требует больше работы, чем нажатие левой + правой кнопкой мыши.

Что делать? Я думаю, что в идеале я хотел бы отключить события среднего щелчка, исходящие от реальной средней кнопки, при этом сохраняя эмуляцию среднего щелчка и эмуляцию среднего щелчка. Или, может быть, как-то запрограммировать среднюю кнопку так, чтобы она ничего не делала при нажатии кнопки вниз. Затем, если кнопка нажата и трекпоинт перемещен, происходит прокрутка. Если между кнопкой вниз и кнопкой вверх ничего не происходит, то при нажатии кнопки вверх отправляется событие среднего щелчка. На самом деле это второе решение, вероятно, является идеальным.

Другие предложения тоже приветствуются. Примечание: я не могу переключиться в браузер Chrome (если это сработает, я не знаю), потому что ему не нравятся мои странные раскладки клавиатуры. Также я бы предпочел более "глобальное" исправление.

1 ответ1

1

Итак, очевидно, это уже реализовано. Нужно просто сказать xinput set-prop <device-id> "Evdev Wheel Emulation" 1 (интересно, почему он почти не работал). Затем можно контролировать время ожидания, чтобы клик был короче обычного среднего клика.

Но это не идеально: если вы начинаете прокрутку до истечения времени ожидания, то в любом случае отправляется событие щелчка. Я вижу два решения, не связанные со взломом драйвера: 1) установить тайм-аут на 0 и использовать эмуляцию среднего щелчка (что теперь работает), или 2) научиться ждать некоторое время перед прокруткой. Ни один из них не идеален, но пока хорош.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .