Зробіть мишу лівою рукою та сенсорною панеллю праворукою


10

Я бачу, що я можу налаштувати мишу та тачпад все на одній панелі (Ubuntu 13.10, за замовчуванням, Gnome). Що в деякій мірі. А саме, я хочу, щоб тачпад був налаштований по-іншому, потім миша та ...

Коли у мене приєднана (USB) миша, я використовую її як правило лівою рукою. Тому перемикаю кнопки ліворуч. Але коли я використовую тачпад, я відчуваю себе трохи втраченою при такій конфігурації. Тому я хочу, щоб це було праворуч.

Чи є спосіб досягти наступного: коли я підключаю мишку (відповідно, коли вона виявлена) автоматично перемикається на лівшу, а коли я відключаю її, автоматично перемикаюся на праву?

Відповіді:


10

Я розумію ваше розчарування, але цю проблему можна вирішити дуже просто за допомогою xinputінструменту.

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

xinput list

щоб побачити idмишу. Вихід з вищевказаної команди може бути подібним до:

xinput | кіт
⎡ Ідентифікатор віртуального ядра id = 2 [головний покажчик (3)]
⎜ ↳ Віртуальна ядро ​​XTEST pointer id = 4 [підлеглий покажчик (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 14 [підлеглий покажчик (2)]
⎜ ↳ USB-миша id = 11 [підлеглий вказівник (2)]
Id Ідентифікатор віртуальної основної клавіатури = 3 [головна клавіатура (2)]
    ...

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

xinput set-button-map 11 3 2 1

В загальному:

ідентифікатор кнопки встановлення xinput id -карта 3 2 1

Щоб скасувати зміну, використовуйте:

ідентифікатор кнопки встановлення xinput id -map 1 2 3

Щоб внести зміни постійно, додайте таку команду в програмах запуску (шукайте в тире для програм запуску ):

sh -c " ідентифікатор кнопки набору xinput 3 3 1"

Оновлення:

Оскільки ідентифікатор може змінитися після перезавантаження, але ім'я USBmouse немає, ви також можете привласнити ім'я миші та застосувати його. Щоб пропустити рек. Рег. Вибір назви остаточного рішення виглядає так:

для id у списку `/ usr / bin / xinput | / bin / grep ' Миша USB ' | / bin / grep -o [0-9] [0-9] `; зробити xinput set-button-map $ id 3 2 1; зроблено;

упакуйте його у вищезазначені програми запуску, нарешті ви отримаєте:

sh -c "для id в` / usr / bin / xinput list | / bin / grep ' USB Mouse ' | / bin / grep -o [0-9] [0-9] `; зробити xinput set-button-map $ id 3 2 1; зроблено; "

2
Я не знаю, чи варто редагувати вашу публікацію чи ні. Ваш підхід дав мені правильний напрямок, але проблема полягала в тому, що перезапуск може змінити ідентифікатор миші. Тому я змінив це на це, sh -c "for id in '/usr/bin/xinput list | /bin/grep 'Razer' | /bin/grep -o [0-9][0-9]'; do xinput set-button-map $id 3 2 1; done;"і це працює (можливо, треба дбати про належні дефіси). Thx для підказки.
LeO

@LeO У моєму випадку перезавантаження, не змінює ідентифікатор миші. Я не тестував більше мишей або міняв положення USB-порту.
Radu Rădeanu

@LeO У будь-якому випадку, ваша ідея дуже гарна, тому, продовжуйте, будь ласка, відредагуйте відповідь. Якщо ні, я зроблю це останньою.
Radu Rădeanu

8

Є ще простіший спосіб, ніж у відповіді Раду Редеану . xinputприймає ім'я пристрою введення як альтернативу його числовому ідентифікатору. Так як ваш USB миша ймовірно , оброблялася в загальному, це назва, швидше за все USB Mouse. Тому вам, швидше за все, навіть не потрібно бігати xinput list.

Таким чином, ваш xinput set-button-map, з цим ім'ям замість числового ідентифікатора, стає:

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

Це займає місце і повинно досягти того ж самого, зробивши його лівою мишею, як і коли використовується числовий шлях ID . (І заміна з ще буде працювати , щоб переключити його , щоб бути правою рукою миша) .xinput set-button-map id 3 2 13 2 13 2 11 2 3

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


1
Ця відповідь заслуговує на більшу кількість відгуків.
Мефісто

У моєму випадку у мене є бездротова миша + клавіатура, тому xinput listвідображаються 2 записи з тим самим іменем ("2.4G Wireless Keyboard & Mouse"), за винятком того, що один говорить "[slave pointer (2)]", а інший говорить "[slave-клавіатура (3 )] ". Тож у вашому рішенні є помилка "Є кілька пристроїв під назвою" 2.4G Wireless Keyboard & Mouse "." На даний момент я використовую додавання рішення Раду grep 'slave pointer'. Мені цікаво, чи дозволяє xinput якось вказати, ми маємо на увазі покажчик, не роблячи все це.
matiascelasco

1

Я виявив, що команда запуску в іншій відповіді працює лише в тому випадку, якщо id - двоцифрове число. Ось мої модифікації, які повинні працювати як для одно-, так і для двозначних чисел:

У запуску програм

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
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)]", а інший говорить "[slave-клавіатура (3 )] ". Тож із рішенням @reedstrm у мене виникла помилка "Існує кілька пристроїв з назвою" 2.4G Wireless Keyboard & Mouse ".", Тоді як з рішенням @Radu Rădeanu forітерація перевищувала 2 ідентифікатори, один для миші та один для клавіатури повідомлення про помилку "у пристрою немає кнопок" з другою.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.