Сделайте мышь левой и тачпад правой рукой

Я вижу, что могу настроить мышь и сенсорную панель на одной панели (Ubuntu 13.10, по умолчанию, Gnome). Что в некоторой степени. А именно, я хочу, чтобы тачпад был настроен иначе, чем мышь и ...

Когда у меня подключена мышь (USB), я обычно использую ее левой рукой. Поэтому я переключаю кнопки на левшей. Но когда я использую тачпад, я чувствую себя немного потерянным с такой конфигурацией. Поэтому я хочу, чтобы это было правшой.

Есть ли способ добиться следующего: когда я подключаю мышь (соответственно, когда она обнаружена), автоматически переключаюсь на левую руку, а когда я отключаю ее, автоматически переключаюсь на правую?

10
задан 10 April 2015 в 02:39

4 ответа

Я обнаружил, что команда запуска в другом ответе работает, только если идентификатор представляет собой двузначное число. Вот мои модификации, которые должны работать как для однозначных, так и для двузначных чисел:

В Startup Applications

bash -c "for id in `/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o id=[0-9][0-9]*`; do xinput set-button-map ${id:3} 3 2 1; done;"
0
ответ дан 10 April 2015 в 02:39

Есть даже более простой способ, чем в ответе Раду Радеану . xinput принимает имя устройства ввода в качестве альтернативы его числовому идентификатору. Поскольку ваша USB-мышь, вероятно, обрабатывается в общем, ее имя, скорее всего, USB Mouse. Поэтому вам, вероятно, даже не нужно запускать xinput list.

Таким образом, ваш xinput set-button-map с этим именем вместо числового идентификатора становится:

xinput set-button-map "USB Mouse" 3 2 1

Это занимает место xinput set-button-map id 3 2 1 и должно достигать того же самого, с 3 2 1 делая это левая мышь, точно так же, как при использовании числового идентификатора . (И замена 3 2 1 на 1 2 3 будет по-прежнему работать, чтобы переключить его на праворукую мышь.)

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

0
ответ дан 10 April 2015 в 02:39

Я понимаю ваше разочарование, но эту проблему можно решить очень просто с помощью инструмента xinput.

Сначала подключите USB-мышь, затем выполните следующую команду:

xinput list

, чтобы увидеть id вашей мыши. Вывод вышеуказанной команды может быть похож на:

xinput | cat
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=14   [slave  pointer  (2)]
⎜   ↳ USB Mouse                                 id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ...

В приведенном выше примере USB-мышь имеет id=11. Мы будем использовать это id в следующей команде, которая поменяет кнопки, предназначенные для левой руки, только для USB-мыши (а не для тачпада):

xinput set-button-map 11 3 2 1

В общем:

xinput set-button-map id 3 2 1

Чтобы отменить изменение, используйте:

xinput set-button-map id 1 2 3

Чтобы сделать изменение постоянно, добавьте следующую команду в Startup Applications (поиск в Dash для ] Startup Applications ):

sh -c "xinput set-button-map id 3 2 1"

Обновление:

Поскольку идентификатор может измениться после перезагрузки, но имя USBmouse нет, вы также можете использовать имя мыши и применить его. Чтобы пропустить детали рег. выбрав имя, окончательное решение выглядит следующим образом:

for id in `/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o [0-9][0-9]`; do xinput set-button-map $id 3 2 1; done;

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

sh -c "for id in `/usr/bin/xinput list | /bin/grep 'USB Mouse' | /bin/grep -o [0-9][0-9]`; do xinput set-button-map $id 3 2 1; done;"
0
ответ дан 10 April 2015 в 02:39
device_id=$(/usr/bin/xinput list \
            | /bin/grep 'slave  pointer' \
            | /bin/grep 'Wireless Keyboard&Mouse' \
            | tr " " "\n" \
            | /bin/grep "id=" \
            | /bin/grep -o [0-9][0-9]* \
        )
/usr/bin/xinput set-button-map $device_id 3 2 1 

Вот более подробное решение, которое решает две проблемы:

  • Оно работает для идентификаторов устройств с любым количеством цифр (аналогично решению @robbie, но написано немного по-другому)
  • Считает, что имя устройства может быть продублировано. В моем случае у меня есть беспроводная мышь + клавиатура, поэтому xinput list показывает 2 записи с одинаковым именем («2.4G Wireless Keyboard & Mouse»), за исключением одного «[slave pointer (2)]», а другой «» [подчиненная клавиатура (3)] ". Так, с решением @reedstrm у меня была эта ошибка: «Существует несколько устройств с именем« 2.4G Wireless Keyboard & amp; Mouse ».» клавиатура, имеющая сообщение об ошибке «устройство не имеет кнопок» со вторым.
0
ответ дан 10 April 2015 в 02:39

Другие вопросы по тегам:

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