sezanzeb / input-remapper

๐ŸŽฎ โŒจ An easy to use tool to change the behaviour of your input devices.
GNU General Public License v3.0
3.81k stars 156 forks source link

Key detection almost unusable with bluetooth VR controller #73

Closed jose1711 closed 3 years ago

jose1711 commented 3 years ago

I am using EMV101 VR controller via bluetooth obrรกzok

The system sees the device as EGV101:

/dev/input/event23: EGV101 Mouse
/dev/input/event24: EGV101 Keyboard
/dev/input/event25: EGV101 Consumer Control
/dev/input/event26: EGV101

When I click 'click here' to pick up the button and then press some key on the controller I can see that it's picked by Gnome (audio is muted or volume is increased/decreased) but the button just flashes briefly. Here's an example:

https://user-images.githubusercontent.com/1406222/112552108-8cc7ac80-8dc2-11eb-9d67-94ab5bb07ff5.mp4

It all works fine when configuring my extra mouse buttons. As a workaround I used evtest with EGV101 Consumer Control and manually populated the .json file key-mapper is using. Injecting part of key-mapper then does it job.

Here's what evtest produces on a single press of a button:

Event: time 1616711773.811813, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00cd
Event: time 1616711773.811813, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
Event: time 1616711773.811813, -------------- SYN_REPORT ------------
Event: time 1616711773.924108, type 4 (EV_MSC), code 4 (MSC_SCAN), value c00cd
Event: time 1616711773.924108, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
Event: time 1616711773.924108, -------------- SYN_REPORT ------------
sezanzeb commented 3 years ago

are those extra mouse buttons part of the controller? Or are you talking about a different device?

I'm not sure, but maybe it could work if I also accept events as input for the Key column up to 100ms after it lost focus. That way mapping the super key would also work. Lets see. I'll let you know once I have something ready to try

jose1711 commented 3 years ago

are those extra mouse buttons part of the controller? Or are you talking about a different device?

Sorry, I did not make it very clear. The mouse I was talking about is a different device - was only trying to say that key-mapper works as expected with a different peripheral.

There's another thing I noticed. If I click [click here], then activate another window (e. g. terminal emulator) and then press a button on VR controller I get the mouse controller button/joystick action detected in the key-mapper window.

sezanzeb commented 3 years ago

is "the mouse button" btn_left? which device is selected when you do that, the mouse or the controller?

jose1711 commented 3 years ago

Sorry, mouse works while key-mapper window is active, VR controller seems to detect keypresses only while not active (edited my previous post)

sezanzeb commented 3 years ago

pushed a potential fix to main, please try again

jose1711 commented 3 years ago

Hi,

in the meantime I discovered that the device supports 4 modes switchable by key combination @ + A/B/C/D.

I first made a test of all modes with version 0.7.1 (https://github.com/sezanzeb/key-mapper/commit/c22d56f9af7114812b80578fe1df683e3036dcb5)

@ + A (Media)

key/joystick events only detected if window out of focus

@ + B (Game)

joystick in Buttons mode

      nothing
ABS_Y D    ABS_Y D
      ABS_X R

A = BTN_WEST
B = BTN_A
C = BTN_NORTH
D = BTN_B

front1 = BTN_TL
front2 = BTN_TR

@ + C (VR/Video)

      ABS_HAT0Y U
ABS_HAT0X L   ABS_HAT0XR
     ABS_HAT0Y U

A = BTN_WEST
B = BTN_B
C = return
D = not detected (flashes)

front1 = BTN_WEST
front2 = BTN_B

@ + D (Mouse)

no joystick action detected (joystick generates mouse events - moves X11 cursor)

A = not detected (flashes)
B = BTN_SIDE
C = not detected (flashes)
D = not detected (flashes)

front1 = not detected (flashes)
front2 = escape

Then I did the same set of tests with the latest 0.80 (https://github.com/sezanzeb/key-mapper/commit/12c9ee6f443e3b454d1f18fc63b553095e549243):

First thing I noticed was a new mouse icon and joystick controls removed.

@ + A (Media)

       xf86audioforward
xf86audioprev        xf86audionext
       xf86audiorewind

A = xf86audioplay
B = xf86homepage
C = xf86audioraisevolume
D = xf86audiolowervolume

front1 = xf86audioplay
front2 = xf86audiomute

@ + B (Game)

no joystick action detected

A = BTN_WEST
B = BTN_A
C = BTN_NORTH
D = BTN_B

front1 = BTN_TL
front2 = BTN_TR

@ + C (VR/Video)

       ABS_HAT0Y U
ABS_HAT0X L   ABS_HAT0XR
       ABS_HAT0Y U

A = BTN_WEST
B = BTN_B
C = return
D = xf86audioraisevolume

front1 = BTN_WEST
front2 = BTN_B

@ + D (Mouse)

no joystick action detected (joystick generates mouse events - moves X11 cursor)

A = not detected (flashes)
B = BTN_SIDE
C = xf86audioraisevolume
D = xf86audiolowervolume

front1 = not detected (flashes)
front2 = escape

Furthermore in some modes a joystick events appears on joystick (/dev/input/jsX) device: mode A = no events seen mode B = axis and buttons events seen mode C = axis seen but only get max/min values (-32767 or 32767), some buttons generate events mode D = no events seen

So overall there's been no regression and several improvements across the modes. I have not test this setup with any actual game/program so far however.

Not sure if anything more can be done to get rid of the few remaining "not detected" buttons but I'd say it's a lot more usable already.

sezanzeb commented 3 years ago

Glad it improved it. If nothing pops up in evtest for the "not detected" buttons nothing can be done by key-mapper. in that case lets close the issue. Please reopen if there is an event in evtest that cannot be mapped by key-mapper

in the second @ + B (Game) section you had the joysticks not in button mode anymore I guess?

sezanzeb commented 3 years ago

could you please show me the evtest output for the joystick on @ + B (Game)?

jose1711 commented 3 years ago

could you please show me the evtest output for the joystick on @ + B (Game)?

On this mode I see events for device EVG101 and integer values ranging from 0 to 255.

Event: time 1616931277.230878, -------------- SYN_REPORT ------------
Event: time 1616931277.238378, type 3 (EV_ABS), code 1 (ABS_Y), value 156
Event: time 1616931277.238378, -------------- SYN_REPORT ------------
Event: time 1616931277.253360, type 3 (EV_ABS), code 1 (ABS_Y), value 155
Event: time 1616931277.253360, -------------- SYN_REPORT ------------
Event: time 1616931277.260873, type 3 (EV_ABS), code 0 (ABS_X), value 240
Event: time 1616931277.260873, type 3 (EV_ABS), code 1 (ABS_Y), value 156
Event: time 1616931277.260873, -------------- SYN_REPORT ------------
Event: time 1616931277.268376, type 3 (EV_ABS), code 0 (ABS_X), value 219
Event: time 1616931277.268376, type 3 (EV_ABS), code 1 (ABS_Y), value 155
Event: time 1616931277.268376, -------------- SYN_REPORT ------------
Event: time 1616931277.275876, type 3 (EV_ABS), code 0 (ABS_X), value 194
Event: time 1616931277.275876, type 3 (EV_ABS), code 1 (ABS_Y), value 152
Event: time 1616931277.275876, -------------- SYN_REPORT ------------
Event: time 1616931277.283374, type 3 (EV_ABS), code 0 (ABS_X), value 169
Event: time 1616931277.283374, type 3 (EV_ABS), code 1 (ABS_Y), value 137

Here are the extremes for each axis (no idea why horizontal axis is called "Y" and vice versa): obrรกzok

jose1711 commented 3 years ago

in the second @ + B (Game) section you had the joysticks not in button mode anymore I guess?

No, because 0.8.0 does not provide a section for that: obrรกzok

jose1711 commented 3 years ago

Taking another look at mode D in 0.8.0. In evtest both button A and front1 generate BTN_LEFT event for EGV101 Mouse device:

Event: time 1616931978.525084, -------------- SYN_REPORT ------------
Event: time 1616931978.652570, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001
Event: time 1616931978.652570, type 1 (EV_KEY), code 272 (BTN_LEFT), value 1
Event: time 1616931978.652570, -------------- SYN_REPORT ------------
Event: time 1616931978.765091, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001
Event: time 1616931978.765091, type 1 (EV_KEY), code 272 (BTN_LEFT), value 0
Event: time 1616931978.765091, -------------- SYN_REPORT ------------
Event: time 1616931978.862577, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001
Event: time 1616931978.862577, type 1 (EV_KEY), code 272 (BTN_LEFT), value 1
Event: time 1616931978.862577, -------------- SYN_REPORT ------------

And that seems to be the reason for the GUI element flashing. Seems related to #37.

sezanzeb commented 3 years ago

please activate mode B, and then share the evtest output containing the Supported events section

it is needed to figure out why key-mapper would recognize it as a mouse. There are EV_REL events probably for some reason

sezanzeb commented 3 years ago

please try the "joystick-correct-abs-range" branch

jose1711 commented 3 years ago

please activate mode B, and then share the evtest output containing the Supported events section

it is needed to figure out why key-mapper would recognize it as a mouse. There are EV_REL events probably for some reason

Input device name: "EGV101 Consumer Control"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 28 (KEY_ENTER)
    Event code 74 (KEY_KPMINUS)
    Event code 78 (KEY_KPPLUS)
    Event code 103 (KEY_UP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 108 (KEY_DOWN)
    Event code 110 (KEY_INSERT)
    Event code 111 (KEY_DELETE)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 119 (KEY_PAUSE)
    Event code 120 (KEY_SCALE)
    Event code 128 (KEY_STOP)
    Event code 130 (KEY_PROPS)
    Event code 131 (KEY_UNDO)
    Event code 133 (KEY_COPY)
    Event code 134 (KEY_OPEN)
    Event code 135 (KEY_PASTE)
    Event code 136 (KEY_FIND)
    Event code 137 (KEY_CUT)
    Event code 138 (KEY_HELP)
    Event code 139 (KEY_MENU)
    Event code 140 (KEY_CALC)
    Event code 142 (KEY_SLEEP)
    Event code 144 (KEY_FILE)
    Event code 150 (KEY_WWW)
    Event code 152 (KEY_SCREENLOCK)
    Event code 155 (KEY_MAIL)
    Event code 156 (KEY_BOOKMARKS)
    Event code 158 (KEY_BACK)
    Event code 159 (KEY_FORWARD)
    Event code 161 (KEY_EJECTCD)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 167 (KEY_RECORD)
    Event code 168 (KEY_REWIND)
    Event code 169 (KEY_PHONE)
    Event code 171 (KEY_CONFIG)
    Event code 172 (KEY_HOMEPAGE)
    Event code 173 (KEY_REFRESH)
    Event code 174 (KEY_EXIT)
    Event code 176 (KEY_EDIT)
    Event code 177 (KEY_SCROLLUP)
    Event code 178 (KEY_SCROLLDOWN)
    Event code 181 (KEY_NEW)
    Event code 182 (KEY_REDO)
    Event code 206 (KEY_CLOSE)
    Event code 207 (KEY_PLAY)
    Event code 208 (KEY_FASTFORWARD)
    Event code 209 (KEY_BASSBOOST)
    Event code 210 (KEY_PRINT)
    Event code 212 (KEY_CAMERA)
    Event code 216 (KEY_CHAT)
    Event code 217 (KEY_SEARCH)
    Event code 219 (KEY_FINANCE)
    Event code 223 (KEY_CANCEL)
    Event code 224 (KEY_BRIGHTNESSDOWN)
    Event code 225 (KEY_BRIGHTNESSUP)
    Event code 228 (KEY_KBDILLUMTOGGLE)
    Event code 229 (KEY_KBDILLUMDOWN)
    Event code 230 (KEY_KBDILLUMUP)
    Event code 231 (KEY_SEND)
    Event code 232 (KEY_REPLY)
    Event code 233 (KEY_FORWARDMAIL)
    Event code 234 (KEY_SAVE)
    Event code 235 (KEY_DOCUMENTS)
    Event code 240 (KEY_UNKNOWN)
    Event code 241 (KEY_VIDEO_NEXT)
    Event code 244 (KEY_BRIGHTNESS_ZERO)
    Event code 256 (BTN_0)
    Event code 353 (KEY_SELECT)
    Event code 354 (KEY_GOTO)
    Event code 358 (KEY_INFO)
    Event code 362 (KEY_PROGRAM)
    Event code 366 (KEY_PVR)
    Event code 370 (KEY_SUBTITLE)
    Event code 372 (KEY_ZOOM)
    Event code 374 (KEY_KEYBOARD)
    Event code 375 (KEY_SCREEN)
    Event code 376 (KEY_PC)
    Event code 377 (KEY_TV)
    Event code 378 (KEY_TV2)
    Event code 379 (KEY_VCR)
    Event code 380 (KEY_VCR2)
    Event code 381 (KEY_SAT)
    Event code 383 (KEY_CD)
    Event code 384 (KEY_TAPE)
    Event code 386 (KEY_TUNER)
    Event code 387 (KEY_PLAYER)
    Event code 389 (KEY_DVD)
    Event code 392 (KEY_AUDIO)
    Event code 393 (KEY_VIDEO)
    Event code 396 (KEY_MEMO)
    Event code 397 (KEY_CALENDAR)
    Event code 398 (KEY_RED)
    Event code 399 (KEY_GREEN)
    Event code 400 (KEY_YELLOW)
    Event code 401 (KEY_BLUE)
    Event code 402 (KEY_CHANNELUP)
    Event code 403 (KEY_CHANNELDOWN)
    Event code 405 (KEY_LAST)
    Event code 407 (KEY_NEXT)
    Event code 408 (KEY_RESTART)
    Event code 409 (KEY_SLOW)
    Event code 410 (KEY_SHUFFLE)
    Event code 412 (KEY_PREVIOUS)
    Event code 416 (KEY_VIDEOPHONE)
    Event code 417 (KEY_GAMES)
    Event code 418 (KEY_ZOOMIN)
    Event code 419 (KEY_ZOOMOUT)
    Event code 420 (KEY_ZOOMRESET)
    Event code 421 (KEY_WORDPROCESSOR)
    Event code 422 (KEY_EDITOR)
    Event code 423 (KEY_SPREADSHEET)
    Event code 424 (KEY_GRAPHICSEDITOR)
    Event code 425 (KEY_PRESENTATION)
    Event code 426 (KEY_DATABASE)
    Event code 427 (KEY_NEWS)
    Event code 428 (KEY_VOICEMAIL)
    Event code 429 (KEY_ADDRESSBOOK)
    Event code 430 (KEY_MESSENGER)
    Event code 431 (KEY_DISPLAYTOGGLE)
    Event code 432 (KEY_SPELLCHECK)
    Event code 433 (KEY_LOGOFF)
    Event code 439 (KEY_MEDIA_REPEAT)
    Event code 442 (KEY_IMAGES)
    Event code 576 (KEY_BUTTONCONFIG)
    Event code 577 (KEY_TASKMANAGER)
    Event code 578 (KEY_JOURNAL)
    Event code 579 (KEY_CONTROLPANEL)
    Event code 580 (KEY_APPSELECT)
    Event code 581 (KEY_SCREENSAVER)
    Event code 582 (KEY_VOICECOMMAND)
    Event code 583 (KEY_ASSISTANT)
    Event code 584 (?)
    Event code 592 (KEY_BRIGHTNESS_MIN)
    Event code 593 (KEY_BRIGHTNESS_MAX)
    Event code 608 (KEY_KBDINPUTASSIST_PREV)
    Event code 609 (KEY_KBDINPUTASSIST_NEXT)
    Event code 610 (KEY_KBDINPUTASSIST_PREVGROUP)
    Event code 611 (KEY_KBDINPUTASSIST_NEXTGROUP)
    Event code 612 (KEY_KBDINPUTASSIST_ACCEPT)
    Event code 613 (KEY_KBDINPUTASSIST_CANCEL)
  Event type 2 (EV_REL)
    Event code 6 (REL_HWHEEL)
    Event code 12 (REL_HWHEEL_HI_RES)
  Event type 3 (EV_ABS)
    Event code 32 (ABS_VOLUME)
      Value      0
      Min        0
      Max      896
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
jose1711 commented 3 years ago

please try the "joystick-correct-abs-range" branch

I see this mostly as a regression, even buttons stopped working. Also I got this error while testing:

8700 0.04305 DEBUG helper.py:92: Received command "EGV101"
8700 0.04333 DEBUG helper.py:137: Starting reading keycodes from "EGV101", "EGV101 Consumer Control", "EGV101 Keyboard", "EGV101 Mouse"
8700 16.5711 ERROR utils.py:184: Failed to get ABS info of "device /dev/input/event25, name "EGV101 Consumer Control", phys "XX:XX:XX:XX:XX:XX"" for 0
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Traceback (most recent call last) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ /usr/sbin/key-mapper-helper:58 in <module>                                                       โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   55 โ”‚   atexit.register(on_exit)                                                                โ”‚
โ”‚   56 โ”‚                                                                                           โ”‚
โ”‚   57 โ”‚   helper = RootHelper()                                                                   โ”‚
โ”‚ โฑ 58 โ”‚   helper.run()                                                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚  __annotations__ = {}                                                                        โ”‚ โ”‚
โ”‚ โ”‚     __builtins__ = <module 'builtins' (built-in)>                                            โ”‚ โ”‚
โ”‚ โ”‚       __cached__ = None                                                                      โ”‚ โ”‚
โ”‚ โ”‚          __doc__ = 'Starts the root helper.'                                                 โ”‚ โ”‚
โ”‚ โ”‚         __file__ = '/usr/sbin/key-mapper-helper'                                             โ”‚ โ”‚
โ”‚ โ”‚       __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7f5606edec10>    โ”‚ โ”‚
โ”‚ โ”‚         __name__ = '__main__'                                                                โ”‚ โ”‚
โ”‚ โ”‚      __package__ = None                                                                      โ”‚ โ”‚
โ”‚ โ”‚         __spec__ = None                                                                      โ”‚ โ”‚
โ”‚ โ”‚   ArgumentParser = <class 'argparse.ArgumentParser'>                                         โ”‚ โ”‚
โ”‚ โ”‚           atexit = <module 'atexit' (built-in)>                                              โ”‚ โ”‚
โ”‚ โ”‚           helper = <keymapper.gui.helper.RootHelper object at 0x7f56069c3460>                โ”‚ โ”‚
โ”‚ โ”‚          on_exit = <function on_exit at 0x7f56061e2310>                                      โ”‚ โ”‚
โ”‚ โ”‚          options = Namespace(debug=True)                                                     โ”‚ โ”‚
โ”‚ โ”‚               os = <module 'os' from '/usr/lib/python3.9/os.py'>                             โ”‚ โ”‚
โ”‚ โ”‚           parser = ArgumentParser(prog='key-mapper-helper', usage=None, description=None,    โ”‚ โ”‚
โ”‚ โ”‚                    formatter_class=<class 'argparse.HelpFormatter'>,                         โ”‚ โ”‚
โ”‚ โ”‚                    conflict_handler='error', add_help=True)                                  โ”‚ โ”‚
โ”‚ โ”‚       RootHelper = <class 'keymapper.gui.helper.RootHelper'>                                 โ”‚ โ”‚
โ”‚ โ”‚           signal = <module 'signal' from '/usr/lib/python3.9/signal.py'>                     โ”‚ โ”‚
โ”‚ โ”‚              sys = <module 'sys' (built-in)>                                                 โ”‚ โ”‚
โ”‚ โ”‚ update_verbosity = <function update_verbosity at 0x7f56064983a0>       
..
..                      
sezanzeb commented 3 years ago

what else is there in the traceback, can you post that as well please?

sezanzeb commented 3 years ago

I think I found what went wrong. Pull and try again please

jose1711 commented 3 years ago

I think I found what went wrong. Pull and try again please

Thank you, that indeed fixed it. Buttons get detected properly but along that I see many errors in terminal:

14518 125.876 ERROR utils.py:186: Failed to get ABS info of "device /dev/input/event26, name "EGV101", phys "XX:XX:XX:XX:XX:XX"" for 4
14518 125.876 ERROR utils.py:186: Failed to get ABS info of "device /dev/input/event26, name "EGV101", phys "XX:XX:XX:XX:XX:XX"" for 311
14518 127.466 ERROR utils.py:186: Failed to get ABS info of "device /dev/input/event26, name "EGV101", phys "XX:XX:XX:XX:XX:XX"" for 4
14518 127.466 ERROR utils.py:186: Failed to get ABS info of "device /dev/input/event26, name "EGV101", phys "XX:XX:XX:XX:XX:XX"" for 310
14518 127.593 ERROR utils.py:186: Failed to get ABS info of "device /dev/input/event26, name "EGV101", phys "XX:XX:XX:XX:XX:XX"" for 4
14518 127.593 ERROR utils.py:186: Failed to get ABS info of "device /dev/input/event26, name "EGV101", phys "XX:XX:XX:XX:XX:XX"" for 310

Joystick movements are ignored in mode B.

sezanzeb commented 3 years ago

in https://github.com/sezanzeb/key-mapper/issues/73#issuecomment-808948336 joystick capabilities are missing, yet you were able to show joystick events in https://github.com/sezanzeb/key-mapper/issues/73#issuecomment-808884710

that should not be possible. can you please double-check that both logs were produced in mode b? If there are multiple entries for the gamepad in evtest, show the "Supported events" for all of them

~python-evdev remembers capabilities for the device, so if they change on the fly when switching modes it may cause problems, therefore causing the error logs seen above. To verify that, switch to mode b first and then open key-mapper, which might make it work~ edit: bs

jose1711 commented 3 years ago

in #73 (comment) joystick capabilities are missing, yet you were able to show joystick events in #73 (comment)

that should not be possible. can you please double-check that both logs were produced in mode b? If there are multiple entries for the gamepad in evtest, show the "Supported events" for all of them

Sorry, you're right. I selected incorrect device (not the one that shows activity in mode B). Below are the supported events for all devices:

EGV101 Mouse

Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 272 (BTN_LEFT)
    Event code 273 (BTN_RIGHT)
    Event code 274 (BTN_MIDDLE)
    Event code 275 (BTN_SIDE)
    Event code 276 (BTN_EXTRA)
  Event type 2 (EV_REL)
    Event code 0 (REL_X)
    Event code 1 (REL_Y)
    Event code 8 (REL_WHEEL)
    Event code 11 (REL_WHEEL_HI_RES)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)

EGV101 Keyboard

Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
    Event code 8 (KEY_7)
    Event code 9 (KEY_8)
    Event code 10 (KEY_9)
    Event code 11 (KEY_0)
    Event code 12 (KEY_MINUS)
    Event code 13 (KEY_EQUAL)
    Event code 14 (KEY_BACKSPACE)
    Event code 15 (KEY_TAB)
    Event code 16 (KEY_Q)
    Event code 17 (KEY_W)
    Event code 18 (KEY_E)
    Event code 19 (KEY_R)
    Event code 20 (KEY_T)
    Event code 21 (KEY_Y)
    Event code 22 (KEY_U)
    Event code 23 (KEY_I)
    Event code 24 (KEY_O)
    Event code 25 (KEY_P)
    Event code 26 (KEY_LEFTBRACE)
    Event code 27 (KEY_RIGHTBRACE)
    Event code 28 (KEY_ENTER)
    Event code 29 (KEY_LEFTCTRL)
    Event code 30 (KEY_A)
    Event code 31 (KEY_S)
    Event code 32 (KEY_D)
    Event code 33 (KEY_F)
    Event code 34 (KEY_G)
    Event code 35 (KEY_H)
    Event code 36 (KEY_J)
    Event code 37 (KEY_K)
    Event code 38 (KEY_L)
    Event code 39 (KEY_SEMICOLON)
    Event code 40 (KEY_APOSTROPHE)
    Event code 41 (KEY_GRAVE)
    Event code 42 (KEY_LEFTSHIFT)
    Event code 43 (KEY_BACKSLASH)
    Event code 44 (KEY_Z)
    Event code 45 (KEY_X)
    Event code 46 (KEY_C)
    Event code 47 (KEY_V)
    Event code 48 (KEY_B)
    Event code 49 (KEY_N)
    Event code 50 (KEY_M)
    Event code 51 (KEY_COMMA)
    Event code 52 (KEY_DOT)
    Event code 53 (KEY_SLASH)
    Event code 54 (KEY_RIGHTSHIFT)
    Event code 55 (KEY_KPASTERISK)
    Event code 56 (KEY_LEFTALT)
    Event code 57 (KEY_SPACE)
    Event code 58 (KEY_CAPSLOCK)
    Event code 59 (KEY_F1)
    Event code 60 (KEY_F2)
    Event code 61 (KEY_F3)
    Event code 62 (KEY_F4)
    Event code 63 (KEY_F5)
    Event code 64 (KEY_F6)
    Event code 65 (KEY_F7)
    Event code 66 (KEY_F8)
    Event code 67 (KEY_F9)
    Event code 68 (KEY_F10)
    Event code 69 (KEY_NUMLOCK)
    Event code 70 (KEY_SCROLLLOCK)
    Event code 71 (KEY_KP7)
    Event code 72 (KEY_KP8)
    Event code 73 (KEY_KP9)
    Event code 74 (KEY_KPMINUS)
    Event code 75 (KEY_KP4)
    Event code 76 (KEY_KP5)
    Event code 77 (KEY_KP6)
    Event code 78 (KEY_KPPLUS)
    Event code 79 (KEY_KP1)
    Event code 80 (KEY_KP2)
    Event code 81 (KEY_KP3)
    Event code 82 (KEY_KP0)
    Event code 83 (KEY_KPDOT)
    Event code 85 (KEY_ZENKAKUHANKAKU)
    Event code 86 (KEY_102ND)
    Event code 87 (KEY_F11)
    Event code 88 (KEY_F12)
    Event code 89 (KEY_RO)
    Event code 90 (KEY_KATAKANA)
    Event code 91 (KEY_HIRAGANA)
    Event code 92 (KEY_HENKAN)
    Event code 93 (KEY_KATAKANAHIRAGANA)
    Event code 94 (KEY_MUHENKAN)
    Event code 95 (KEY_KPJPCOMMA)
    Event code 96 (KEY_KPENTER)
    Event code 97 (KEY_RIGHTCTRL)
    Event code 98 (KEY_KPSLASH)
    Event code 99 (KEY_SYSRQ)
    Event code 100 (KEY_RIGHTALT)
    Event code 102 (KEY_HOME)
    Event code 103 (KEY_UP)
    Event code 104 (KEY_PAGEUP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 107 (KEY_END)
    Event code 108 (KEY_DOWN)
    Event code 109 (KEY_PAGEDOWN)
    Event code 110 (KEY_INSERT)
    Event code 111 (KEY_DELETE)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 117 (KEY_KPEQUAL)
    Event code 119 (KEY_PAUSE)
    Event code 121 (KEY_KPCOMMA)
    Event code 122 (KEY_HANGUEL)
    Event code 123 (KEY_HANJA)
    Event code 124 (KEY_YEN)
    Event code 125 (KEY_LEFTMETA)
    Event code 126 (KEY_RIGHTMETA)
    Event code 127 (KEY_COMPOSE)
    Event code 128 (KEY_STOP)
    Event code 129 (KEY_AGAIN)
    Event code 130 (KEY_PROPS)
    Event code 131 (KEY_UNDO)
    Event code 132 (KEY_FRONT)
    Event code 133 (KEY_COPY)
    Event code 134 (KEY_OPEN)
    Event code 135 (KEY_PASTE)
    Event code 136 (KEY_FIND)
    Event code 137 (KEY_CUT)
    Event code 138 (KEY_HELP)
    Event code 140 (KEY_CALC)
    Event code 142 (KEY_SLEEP)
    Event code 150 (KEY_WWW)
    Event code 152 (KEY_SCREENLOCK)
    Event code 158 (KEY_BACK)
    Event code 159 (KEY_FORWARD)
    Event code 161 (KEY_EJECTCD)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 173 (KEY_REFRESH)
    Event code 176 (KEY_EDIT)
    Event code 177 (KEY_SCROLLUP)
    Event code 178 (KEY_SCROLLDOWN)
    Event code 179 (KEY_KPLEFTPAREN)
    Event code 180 (KEY_KPRIGHTPAREN)
    Event code 183 (KEY_F13)
    Event code 184 (KEY_F14)
    Event code 185 (KEY_F15)
    Event code 186 (KEY_F16)
    Event code 187 (KEY_F17)
    Event code 188 (KEY_F18)
    Event code 189 (KEY_F19)
    Event code 190 (KEY_F20)
    Event code 191 (KEY_F21)
    Event code 192 (KEY_F22)
    Event code 193 (KEY_F23)
    Event code 194 (KEY_F24)
    Event code 240 (KEY_UNKNOWN)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33

EGV101 Consumer Control

Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
    Event code 28 (KEY_ENTER)
    Event code 74 (KEY_KPMINUS)
    Event code 78 (KEY_KPPLUS)
    Event code 103 (KEY_UP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 108 (KEY_DOWN)
    Event code 110 (KEY_INSERT)
    Event code 111 (KEY_DELETE)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 119 (KEY_PAUSE)
    Event code 120 (KEY_SCALE)
    Event code 128 (KEY_STOP)
    Event code 130 (KEY_PROPS)
    Event code 131 (KEY_UNDO)
    Event code 133 (KEY_COPY)
    Event code 134 (KEY_OPEN)
    Event code 135 (KEY_PASTE)
    Event code 136 (KEY_FIND)
    Event code 137 (KEY_CUT)
    Event code 138 (KEY_HELP)
    Event code 139 (KEY_MENU)
    Event code 140 (KEY_CALC)
    Event code 142 (KEY_SLEEP)
    Event code 144 (KEY_FILE)
    Event code 150 (KEY_WWW)
    Event code 152 (KEY_SCREENLOCK)
    Event code 155 (KEY_MAIL)
    Event code 156 (KEY_BOOKMARKS)
    Event code 158 (KEY_BACK)
    Event code 159 (KEY_FORWARD)
    Event code 161 (KEY_EJECTCD)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 167 (KEY_RECORD)
    Event code 168 (KEY_REWIND)
    Event code 169 (KEY_PHONE)
    Event code 171 (KEY_CONFIG)
    Event code 172 (KEY_HOMEPAGE)
    Event code 173 (KEY_REFRESH)
    Event code 174 (KEY_EXIT)
    Event code 176 (KEY_EDIT)
    Event code 177 (KEY_SCROLLUP)
    Event code 178 (KEY_SCROLLDOWN)
    Event code 181 (KEY_NEW)
    Event code 182 (KEY_REDO)
    Event code 206 (KEY_CLOSE)
    Event code 207 (KEY_PLAY)
    Event code 208 (KEY_FASTFORWARD)
    Event code 209 (KEY_BASSBOOST)
    Event code 210 (KEY_PRINT)
    Event code 212 (KEY_CAMERA)
    Event code 216 (KEY_CHAT)
    Event code 217 (KEY_SEARCH)
    Event code 219 (KEY_FINANCE)
    Event code 223 (KEY_CANCEL)
    Event code 224 (KEY_BRIGHTNESSDOWN)
    Event code 225 (KEY_BRIGHTNESSUP)
    Event code 228 (KEY_KBDILLUMTOGGLE)
    Event code 229 (KEY_KBDILLUMDOWN)
    Event code 230 (KEY_KBDILLUMUP)
    Event code 231 (KEY_SEND)
    Event code 232 (KEY_REPLY)
    Event code 233 (KEY_FORWARDMAIL)
    Event code 234 (KEY_SAVE)
    Event code 235 (KEY_DOCUMENTS)
    Event code 240 (KEY_UNKNOWN)
    Event code 241 (KEY_VIDEO_NEXT)
    Event code 244 (KEY_BRIGHTNESS_ZERO)
    Event code 256 (BTN_0)
    Event code 353 (KEY_SELECT)
    Event code 354 (KEY_GOTO)
    Event code 358 (KEY_INFO)
    Event code 362 (KEY_PROGRAM)
    Event code 366 (KEY_PVR)
    Event code 370 (KEY_SUBTITLE)
    Event code 372 (KEY_ZOOM)
    Event code 374 (KEY_KEYBOARD)
    Event code 375 (KEY_SCREEN)
    Event code 376 (KEY_PC)
    Event code 377 (KEY_TV)
    Event code 378 (KEY_TV2)
    Event code 379 (KEY_VCR)
    Event code 380 (KEY_VCR2)
    Event code 381 (KEY_SAT)
    Event code 383 (KEY_CD)
    Event code 384 (KEY_TAPE)
    Event code 386 (KEY_TUNER)
    Event code 387 (KEY_PLAYER)
    Event code 389 (KEY_DVD)
    Event code 392 (KEY_AUDIO)
    Event code 393 (KEY_VIDEO)
    Event code 396 (KEY_MEMO)
    Event code 397 (KEY_CALENDAR)
    Event code 398 (KEY_RED)
    Event code 399 (KEY_GREEN)
    Event code 400 (KEY_YELLOW)
    Event code 401 (KEY_BLUE)
    Event code 402 (KEY_CHANNELUP)
    Event code 403 (KEY_CHANNELDOWN)
    Event code 405 (KEY_LAST)
    Event code 407 (KEY_NEXT)
    Event code 408 (KEY_RESTART)
    Event code 409 (KEY_SLOW)
    Event code 410 (KEY_SHUFFLE)
    Event code 412 (KEY_PREVIOUS)
    Event code 416 (KEY_VIDEOPHONE)
    Event code 417 (KEY_GAMES)
    Event code 418 (KEY_ZOOMIN)
    Event code 419 (KEY_ZOOMOUT)
    Event code 420 (KEY_ZOOMRESET)
    Event code 421 (KEY_WORDPROCESSOR)
    Event code 422 (KEY_EDITOR)
    Event code 423 (KEY_SPREADSHEET)
    Event code 424 (KEY_GRAPHICSEDITOR)
    Event code 425 (KEY_PRESENTATION)
    Event code 426 (KEY_DATABASE)
    Event code 427 (KEY_NEWS)
    Event code 428 (KEY_VOICEMAIL)
    Event code 429 (KEY_ADDRESSBOOK)
    Event code 430 (KEY_MESSENGER)
    Event code 431 (KEY_DISPLAYTOGGLE)
    Event code 432 (KEY_SPELLCHECK)
    Event code 433 (KEY_LOGOFF)
    Event code 439 (KEY_MEDIA_REPEAT)
    Event code 442 (KEY_IMAGES)
    Event code 576 (KEY_BUTTONCONFIG)
    Event code 577 (KEY_TASKMANAGER)
    Event code 578 (KEY_JOURNAL)
    Event code 579 (KEY_CONTROLPANEL)
    Event code 580 (KEY_APPSELECT)
    Event code 581 (KEY_SCREENSAVER)
    Event code 582 (KEY_VOICECOMMAND)
    Event code 583 (KEY_ASSISTANT)
    Event code 584 (?)
    Event code 592 (KEY_BRIGHTNESS_MIN)
    Event code 593 (KEY_BRIGHTNESS_MAX)
    Event code 608 (KEY_KBDINPUTASSIST_PREV)
    Event code 609 (KEY_KBDINPUTASSIST_NEXT)
    Event code 610 (KEY_KBDINPUTASSIST_PREVGROUP)
    Event code 611 (KEY_KBDINPUTASSIST_NEXTGROUP)
    Event code 612 (KEY_KBDINPUTASSIST_ACCEPT)
    Event code 613 (KEY_KBDINPUTASSIST_CANCEL)
  Event type 2 (EV_REL)
    Event code 6 (REL_HWHEEL)
    Event code 12 (REL_HWHEEL_HI_RES)
  Event type 3 (EV_ABS)
    Event code 32 (ABS_VOLUME)
      Value      0
      Min        0
      Max      896
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)

EGV101

Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 304 (BTN_SOUTH)
    Event code 305 (BTN_EAST)
    Event code 306 (BTN_C)
    Event code 307 (BTN_NORTH)
    Event code 308 (BTN_WEST)
    Event code 309 (BTN_Z)
    Event code 310 (BTN_TL)
    Event code 311 (BTN_TR)
    Event code 312 (BTN_TL2)
    Event code 313 (BTN_TR2)
    Event code 314 (BTN_SELECT)
    Event code 315 (BTN_START)
    Event code 316 (BTN_MODE)
    Event code 317 (BTN_THUMBL)
    Event code 318 (BTN_THUMBR)
    Event code 319 (?)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value    127
      Min        0
      Max      255
      Flat      15
    Event code 1 (ABS_Y)
      Value    128
      Min        0
      Max      255
      Flat      15
    Event code 2 (ABS_Z)
      Value    127
      Min        0
      Max      255
      Flat      15
    Event code 5 (ABS_RZ)
      Value    128
      Min        0
      Max      255
      Flat      15
    Event code 16 (ABS_HAT0X)
      Value      0
      Min       -1
      Max        1
    Event code 17 (ABS_HAT0Y)
      Value      0
      Min       -1
      Max        1
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
sezanzeb commented 3 years ago

ah of course that is how it works. yeah that makes sense. Don't worry about that other stuff with changing capabilities that I wrote

sezanzeb commented 3 years ago

I made the output of that error (https://github.com/sezanzeb/key-mapper/issues/73#issuecomment-808951330) more verbose, looking forward to seeing what it logs now

jose1711 commented 3 years ago

joystick-correct-abs-range branch, mode B:

sezanzeb commented 3 years ago

ah ok I see

In https://github.com/sezanzeb/key-mapper/issues/73#issuecomment-808951330 you mentioned that "it" was fixed. Does that also include showing the joystick configuration? image or is that still hidden?

sezanzeb commented 3 years ago

pushed a better solution for the whole problem to the branch bcab57b

I would expect the menu to be shown now

jose1711 commented 3 years ago

Menu shows up and I am able to map buttons in mode B now. Thank you! Hope it's going to be pushed to master soon. Closing.

sezanzeb commented 3 years ago

nice. Thanks for staying with this issue and providing the information

As soon as I wrote tests for all the changes I'll push it to main, which will happen within the next few days

sezanzeb commented 3 years ago

Menu shows up and I am able to map buttons in mode B now. Thank you! Hope it's going to be pushed to master soon. Closing.

merged to main