Трекпойнт для прокрутки по среднему и среднему щелчкам в Linux

2053
nonpop

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

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

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

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

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

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

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

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

0

1 ответ на вопрос

1
nonpop

Okay, so apparently this is kind of implemented already. One just has to say xinput set-prop <device-id> "Evdev Wheel Emulation" 1 (I wonder why it almost worked without). Then one can control the timeout so that a click shorter than that is just a regular middle click.

But it's not perfect: if you start scrolling before timeout then it sends a click event anyway. I see two solutions not involving driver hacking: 1) set timeout to 0 and use middle click emulation (which now works), or 2) learn to wait a while before scrolling. Neither is ideal but fine for now.

Похожие вопросы