Я недавно купил мышь Venus Utechsmart: http://www.utechsmart.com/product/show/id/477/US-D16400-GM
Я не мог связать те боковые кнопки (и "быстрая кнопка огня около левой кнопки мыши) к различным ключам, не изменяя ключи, на которые указывают сторона и скоропалительные кнопки.
Причина этого состоит в том, что я не мог на самом деле заставить xev распознавать сторону и быстрые кнопки огня как их собственное событие. Вместо этого когда я нажимаю боковую кнопку или быструю кнопку огня, xev тестер события немедленно сообщает привязку, на которой отображается кнопка.
Т.е. Я нажимаю боковую кнопку "1", отчеты о картопостроителе события:
KeyPress event, serial 74, . . .
KeyRelease event, serial 74 . . .
Когда я нажимаю левую кнопку мыши отчеты о картопостроителе:
ButtonPress event, serial 37, . . .
Button Release event, serial 37, . . .
Очевидно, я не могу отобразить кнопку от мыши, если не сообщение мне, что кнопка "адрес" как в этих двух связанных сообщениях:
Как настроить дополнительные кнопки в Logitech Mouse
Ярлыки мыши запутываются с клавишами на клавиатуре в Kubuntu
У кого-либо есть совет далее попытаться узнать то, что эти кнопки находятся на мыши?
Очевидно, мышь работает, ее просто не отображенный на кнопках способом, что я предпочел бы. Поэтому мне кажется, что там должен, чтобы быть решением этого, и я был бы более, чем рад погрузиться вполне глубоко для решения этой проблемы. Я смотрел на документацию для Xorg и evdev драйверов, но я даже не уверен, является ли это корректным направлением.
Не обязательно ища кого-то для решения этой проблемы непосредственно для меня. Но помощь мне провести мозговой штурм для некоторых идей о том, как пойти о решении этой проблемы, значительно ценилась бы.
Спасибо за Ваше терпение!
ОБНОВЛЕНИЕ:
Таким образом, я нашел сообщение на archlinux форумах о razer naga, который является очень похожей мышью. Это кажется обнадеживающим: https://bbs.archlinux.org/viewtopic.php? id=145502. Это приводит меня к подобной проблеме с инфракрасными дистанционными управлениями сюда: введите описание ссылки здесь. Существует богатство информации там, которая входит в достойную глубину о проблеме. Было бы хорошо, если бы они объяснили лучше, как они выясняют то, что "ключи" находятся в сценариях, но после чтения большого количества дополнительного материала кажется, что прибывает из конвенции (и так как кнопки на мыши соответствуют тем ключевым отображениям, это только имеет дальнейший смысл...
Однако у меня все еще есть что-то вроде проблемы. Я еще не создал хижину, вместо этого я только что попытался выполнить команду вручную.
Сначала я создал файл/usr/share/x11/xkb/symbols/custom символов (я не совсем уверен, почему они используют tmp каталог), и включал следующее:
xkb_symbols "venus" {
2 key <AE01> { [ y, Y ]
3 key <AE02> { [ i, I ]
4 key <AE03> { [bracketleft, braceleft ]
5 key <AE04> { [bracketright, braceright ]
6 key <AE05> { [ slash, question ]
7 key <AE06> { [ j, J ]
8 key <AE07> { [ k, K ]
9 key <AE08> { [ l, L ]
10 key <AE09> { [ semicolon, colon ]
11 key <AE10> { [ comma, less ]
12 key <AE11> { [ minus, underscore ]
13 key <AE12> { [ equal, plus ]
14 };
Затем я выполнил список xinput, который уступил:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ USB Laser Game Mouse id=9 [slave pointer (2)]
⎜ ↳ USB Laser Game Mouse id=11 [slave pointer (2)]
⎜ ↳ EST Gaming keyboard id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Power Button id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ USB Laser Game Mouse id=10 [slave keyboard (3)]
↳ EST Gaming keyboard id=12 [slave keyboard (3)]
↳ EST Gaming keyboard id=14 [slave keyboard (3)]
↳ C-Media Electronics Inc. USB Audio Device id=15 [slave keyboard (3)]
↳ USB Laser Game Mouse id=16 [slave keyboard (3)]
↳ EST Gaming keyboard id=17 [slave keyboard (3)]
После анализа сценария, записанного в двух ссылках выше, я вывел, что моя переменная $remote_id будет 16, таким образом, я выполнил следующее:
setxkbmap -device 16 -print | sed's/\(xkb_symbols.*\)"/\1+custom(venus)"/' | xkbcomp -I /usr/share/X11/xkb -i 16 -synch $DISPLAY
Я не передавал свой вывод по каналу в/dev/null, потому что я хотел видеть то, чем будет вывод (очевидно, когда я сделаю сценарий, затем я сделаю это, но я пытаюсь понять то, что я делаю в данный момент). Мой вывод был следующим:
Warning: Too many file names on command line
Compiling /usr/share/X11/xkb, writing to -, ignoring :0
syntax error: line 1 of /usr/share/X11/xkb
last scanned symbol is:
Errors encountered in /usr/share/X11/xkb; not compiled.
Я не действительно уверен, куда пойти отсюда...
У моей жены очень похожая мышь. Я сделал пару изменений в вашем решении. Файл /usr/share/X11/xkb/symbols/venus
имеет следующее содержимое:
xkb_symbols "venus" {
key <AE01> { [ KP_1 , KP_1 ] };
key <AE02> { [ KP_2 , KP_2 ] };
key <AE03> { [ KP_3 , KP_3 ] };
key <AE04> { [ KP_4 , KP_4 ] };
key <AE05> { [ KP_5 , KP_5 ] };
key <AE06> { [ KP_6 , KP_6 ] };
key <AE07> { [ KP_7 , KP_7 ] };
key <AE08> { [ KP_8 , KP_8 ] };
key <AE09> { [ KP_9 , KP_9 ] };
key <AE10> { [ F2 , F2 ] };
key <KPAD> { [ XF86Calculator, XF86Calculator ] };
key <KPSU> { [ period , period ] };
};
И скрипт ~/bin/mouse_config.sh
, который я добавил в MATE Desktop Environment. Контент запуска следующий:
#!/bin/sh
venus_keyboard=$(xinput list | sed -n 's/.*USB Gaming Mouse[[:space:]]*id=\([0-9]*\).*keyboard.*/\1/p')
[ "$venus_keyboard" ] || exit
setxkbmap -device $venus_keyboard -print | sed 's/\(xkb_symbols.*\)"/\1+venus"/' > ~/.venus_keymap
xkbcomp ~/.venus_keymap -i $venus_keyboard -synch $DISPLAY
вы заметите, что мне нужно было немного подправить название USB Gaming Mouse
, кроме того, все работает отлично.
Она использует это для блендера.
Ах, а может кто знает как отключить эти светодиоды на этой мышке?
БОЛЬШИЕ НОВОСТИ ВСЕ!
Мне наконец удалось заставлять это работать. Я разочаровался в этой проблеме некоторое время назад и просто пошел о вещах. С тех пор я узнал намного больше о программировании и среде Unix в общем включая понимание, как использовать sed, который использовался в этом сценарии. Для предоставления некоторой перспективы я даже не знал о страницах справочника назад, когда я сделал этот вопрос... Само собой разумеется, его легкое для наблюдения то, что вернулись некоторые мои ошибки, когда я сделал это сообщение.
Однако фиксации тех ошибок не было достаточно для решения проблемы. По любой причине (что я все еще не могу выяснить), передавая ключевое отображение по каналу в xkbcomp не закончит тем, что компилировал изменения, которые я хочу внести в файле символов сделанный выше.
Однако, если я просто работаю:
setxkbmap -device $venus_keyboard -print | sed 's/\(xkb_symbols.*\)"/\1+venus"/' > keymap
xkbcomp keymap -i $venus_keyboard -synch $DISPLAY
Ключи компилируют очень хорошо. Честно, я все еще смущен относительно того, почему я не могу только передать вывод по каналу sed в xkbcomp, но это действительно отображает ключи на моей мыши при оставлении ключей на моей клавиатуре абсолютно незатронутыми.
Надо надеяться, это будет справкой к кому-то, у кого есть подобная проблема как я.
Ниже весь сценарий оболочки, который я записал (кроме файла символов, который был объяснен в сообщениях из ссылок, которые я предоставил).
Если у кого-либо есть объяснение, почему передача по каналу вывода sed в xkbcomp не работает (или интересуется попыткой помочь мне понять это), стреляют в меня ответ на здесь. Это все еще прослушивает меня немного.
#!/bin/sh
venus_keyboard=$(xinput list | sed -n 's/.*USB Laser Game Mouse[[:space:]]*id=\([0-9]*\).*keyboard.*/\1/p')
[ "$venus_keyboard" ] || exit
setxkbmap -device $venus_keyboard -print | sed 's/\(xkb_symbols.*\)"/\1+venus"/' > ~/xkb/keymap
xkbcomp ~/xkb/keymap -i $venus_keyboard -synch $DISPLAY 2>/dev/null