Используя Linux Mint 18.1, я переделал некоторые клавиши мыши и клавиатуры с помощью команды «xinput» (команда ниже). Когда я отсоединяю мышь и снова подключаю ее, команду xinput необходимо перезапустить вручную.
Я читал, что их правильное использование в ~/.xsessionrc
– это правильная вещь. Как вы видите, я это сделал. Я также пробовал ~/.xinputrc
. Он будет запускаться один раз при загрузке, но если я отключу и снова подключу мышь или спящий компьютер, мне нужно повторно запустить команду xinput вручную.
Кто-нибудь знает правильный способ постоянно поддерживать эти команды? Например, как я могу заставить их сохраняться при отключении / повторном подключении устройства?
davidparks21@ghostmint ~ $ cat .xsessionrc # Map mouse button 8 (top right) to button 2 (top left) and vice versa xinput --set-button-map 10 1 8 3 4 5 6 7 2 9 10 11 12 # Fix numeric keypad for shift-home and shift-end setxkbmap -option numpad:microsoft
Вы можете запустить этот скрипт, после подключения или отсоединения устройства USB, код будет выполнен:
while true; do state=$(lsusb) && sleep 2 && [[ $state != $(lsusb) ]] && echo "Change detected, replace echo with your command"; done
Загрузка файлов конфигурации при запуске зависит от того, какая среда рабочего стола используется. Если вы запустили xserver, набрав startx , который обычно укажет, что он будет использовать .xinitrc (хранится в $ HOME).
Внутри .xinitrc вам нужно будет загрузить конфигурацию, которая имеет разные сопоставления, то есть .xsessionrc
Тогда вам понадобится строка (в .xinitrc)
xrdb -merge ~/.xsessionrc
Однако, если вы используете менеджер входа в систему, такой как LightDM или GNOME, вам придется найти тот же эквивалент
За что стоит:
Вы можете использовать файл ~/.xsession
, а не ~/.xsessionrc
.
~/.xsessionrc
является специфичным для Debian, а ~/.xsession
– UNIX-подобным и имеет аналогичное поведение во всех дистрибутивах.
Вот мое окончательное решение, я исправил крайне маловероятное и неуместное состояние гонки в ответе Нира. Также я обращаюсь к тому, что я не могу переназначить ключи, когда мышь отключена (никаких сообщений об ошибках, пока она отключена).
Я добавил к ~/.xinitrc
:
# Map mouse button 8 (top right) to button 2 (top left) and vice versa, run when changes to the mouse occur while true; do NEW_MOUSEID=$(xinput | grep "Expert Mouse" | grep -o -E '[0-9]+' | head -n 1) if [ "$MOUSEID" != "$NEW_MOUSEID" ]; then MOUSEID=$NEW_MOUSEID if [ "$MOUSEID" != "" ]; then xinput --set-button-map $MOUSEID 1 8 3 4 5 6 7 2 9 10 11 12 fi fi sleep 2 done &
Я использовал идентификатор мыши, обработанный из xinput как триггер вместо lsusb
, но он имеет тот же эффект.
Обратите внимание: трубы после команды xinput просто анализируют идентификатор мыши, который может измениться. Дополнительные NEW / OLD ID мыши были анальным, избегая любой возможности состояния гонки.
Спасибо @Nir за предложение.