Intereting Posts
проблема безопасности вокруг добавления пользователя cron в группу веб-приложений На OpenRC есть ли какие-либо условные обозначения, например,? Заменить значение в одинарных кавычках в строке, содержащей определенное слово, используя команду sed Как установить систему Unix V? Как присоединиться к двум файлам на основе полей с изменением порядка колонок? Команда Sed запускается с жестко заданным значением в регулярном выражении, но с ошибкой с переменной в сценарии Выбор технологии / программы для программного обеспечения для просмотра изображений В системах на базе Debian, как мы очищаем файлы конфигурации упаковок, которые уже были удалены? переменная echo с содержимым из подстановки команды Вытягивание IP-адреса из команды ping с помощью sed? приложение требует, чтобы 32-битные библиотеки были установлены на моей 64-битной системе – возникли проблемы с их установкой Сортировка пакетов по размеру с одним слоем как функция Простое многопоточное дифференцирование на macOS Ubuntu – пользователь root не может видеть переменную $ JAVA_HOME, расширенную до $ PATH Отображать временную метку в dd / mm / yyyy_hh: mm: ss: ms в Unix или Linux

Как сделать команды xinput постоянными

Используя 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 за предложение.