Отображение дополнительных mmo боковых кнопок мыши

Я недавно купил мышь 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.

Я не действительно уверен, куда пойти отсюда...

0
задан 23 November 2018 в 21:44

2 ответа

У моей жены очень похожая мышь. Я сделал пару изменений в вашем решении. Файл /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, кроме того, все работает отлично.

Она использует это для блендера.

Ах, а может кто знает как отключить эти светодиоды на этой мышке?

1
ответ дан 19 May 2020 в 16:14

БОЛЬШИЕ НОВОСТИ ВСЕ!

Мне наконец удалось заставлять это работать. Я разочаровался в этой проблеме некоторое время назад и просто пошел о вещах. С тех пор я узнал намного больше о программировании и среде 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
0
ответ дан 27 October 2019 в 02:21

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

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