Kids & Kiosk Mode, coming back [testers needed!]
-
@zigurana Woaw excellent, i didn't see this ES test project before, i love it, so easy and fast to test branch :)
I have test your branch : JumpToLetterWhenFiltered and it works perfectly for me in KIOSK mode and KID mode.
For the KONAMI code, it's with my x360 GamePad i can't perform it :(
With the SFC30 it's work at first try ... i don't understand why? -
@darknior Try to remap the X360 controller in ES. Odds are you have some buttons swapped? Or maybe you're using the "swap ES A/B buttons" setting, and maybe that affects it?
-
@pjft said in Kids & Kiosk Mode, coming back [testers needed!]:
@darknior Try to remap the X360 controller in ES. Odds are you have some buttons swapped? Or maybe you're using the "swap ES A/B buttons" setting, and maybe that affects it?
No i swap no buttons, and don't use the swap ES A/B buttons. I already think to that and also try the code with a b and b a.
Ans all other skin options working fine with the good button when i want to launch a game, quit a list, put a fav ... etc ... -
@darknior Hm.
Have you tried to run
jstest
and confirm that the joystick is only sending those events in order (i.e. that there are no unintended events being sent, like an overly sensitive analog joystick movement or something)? Sometimes my Dual Shock 3 does that, as the analog joysticks are kind of worn out, and they're no longer quite centered at all times.I don't know, if
jstest
doesn't give you any insight into extra events being sent, I don't have any further ideas. -
I have try
https://github.com/recalbox/recalbox-os/wiki/Tester-votre-joystick-avec-jstest-(FR)ls /dev/input/js* jstest /dev/input/js0 (FSC30) and jstest /dev/input/js0 (x360)
I'm not sure to make fine the test, but if i understand fine when i push a key, it works same.
The difference was in the Joystick settings, maybe it is the problem ?
I take this on this folder : /opt/retropie/configs/all/retroarch/autoconfig
# Xbox 360 Wireless Receiver settings input_up_btn = "15" input_down_btn = "16" input_left_btn = "13" input_right_btn = "14"
# 8Bitdo SFC30 GamePad settings input_up_axis = "-1" input_down_axis = "+1" input_left_axis = "-0" input_right_axis = "+0"
Or there : /opt/retropie/configs/all/emulationstation/es_input.cfg
<inputConfig type="joystick" deviceName="Xbox 360 Wireless Receiver (XBOX)"> <input name="pageup" type="button" id="4" value="1"/> <input name="start" type="button" id="9" value="1"/> <input name="up" type="button" id="15" value="1"/> <input name="a" type="button" id="0" value="1"/> <input name="b" type="button" id="1" value="1"/> <input name="down" type="button" id="16" value="1"/> <input name="pagedown" type="button" id="5" value="1"/> <input name="right" type="button" id="14" value="1"/> <input name="x" type="button" id="2" value="1"/> <input name="select" type="button" id="8" value="1"/> <input name="y" type="button" id="3" value="1"/> <input name="left" type="button" id="13" value="1"/> </inputConfig> <inputConfig type="joystick" deviceName="8Bitdo SFC30 GamePad" deviceGUID="05000000102800000900000000010000"> <input name="pageup" type="button" id="6" value="1"/> <input name="start" type="button" id="11" value="1"/> <input name="up" type="axis" id="1" value="-1"/> <input name="a" type="button" id="0" value="1"/> <input name="b" type="button" id="1" value="1"/> <input name="down" type="axis" id="1" value="1"/> <input name="pagedown" type="button" id="7" value="1"/> <input name="right" type="axis" id="0" value="1"/> <input name="x" type="button" id="3" value="1"/> <input name="select" type="button" id="10" value="1"/> <input name="y" type="button" id="4" value="1"/> <input name="left" type="axis" id="0" value="-1"/> </inputConfig>
SFC30 Pad use axis and x360 Pad use button.
-
@darknior
Hey!
It's a long shot, but I have an hunch what could be going on.
I created a test-branch which also includes some additional logging, to see what inputs are actually detected.
Could you maybe try it out?repo: zigurana\EmulationStation
branch: ControllerInputTo enable the debug logging, you will need to run it from the commandline with an additional flag:
>emulationstation --debug
The logging will end up somewhere in:
home/pi/.emulationstation/
-
@zigurana I'm curious, what's your hypothesis? :)
The file will be es_log.txt
-
@zigurana said in Kids & Kiosk Mode, coming back [testers needed!]:
emulationstation --debug
pi@retropie:/root $ DISPLAY=:0 emulationstation --debug
lvl2: Added known joystick Xbox 360 Wireless Receiver (instance ID: 2, device index: 1) lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: u lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 1 lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: u lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 1 lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: u lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 1 lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: u lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 1 lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: u lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 1 lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input does not match, resetting counter lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: u lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 1 lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: d lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 2 lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: d lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 3 lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: l lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 4 lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: r lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 5 lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: l lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 6 lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: r lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 7 lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: b lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 8 lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: a lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 9 lvl3: Window::PassKeyListener::isUIModeChanged(): input matches with current passkey char: lvl3: Window::PassKeyListener::isUIModeChanged(): mPassKeyCounter = 10 lvl3: Window::PassKeyListener::isUIModeChanged(): Passkey sequence completed, switching UIMode to full
It not recognise any of my x360 keys, I try two times ...
Only one, the "u" for UP lol ... but why ???
And after on SFC30 all working 100% first try ! -
No idea for this controller bug ?
I really don't understand why in some case like here, or N64 emu or Dreamcast ... the x360 controller not working fine.
I haven't any problems in ES, Retroarch, DS, OpenBOR, ScummVM ...
And many of my friends are using x360 controllers they already have from they're old xBox 360 lol -
@darknior hey man, I'm sorry, but I am working from weak hypotheses only here.
What I see in your logging from above: the first 'up' input is registered correctly, directly followed by another event which was recognized as being incorrect (maybe a trigger bounce? , an event to say 'back to center'? Something else?). Then the second 'up' input is recognized, accepted, but only because it is the same as the first! My expectation is that you could keep on pressing 'up', and will only see these two lines, and never progress the counter beyond 1.
Why the controller mixes in these other inputs, who knows?
But without an Xbox360 controller to try it out, it's difficult to find the root-cause. -
@zigurana Ok, yes i understand :(
And i can't help you better ... -
I'm in the process to make a clear install of RetroPie, and something just came up my mind.
How does Kid, Kiosk Mode work with Custom Collections?
On my current system i had combined several systems into single systems (eg. gamegear, mastersystem, megadrive into just Sega) and had it set up to only show only this system.
Is this achieveable now without dirty hacks? I thought of adding the hide tag to games but I'm not sure if they would then show up in a custom collection. And i don't know if games would show up in custom collections if i remove the origin system from es_systems.cfg. -
@ectoone
For most use cases, the new UI-modes should 'just' work with Collections, although there are some limitations of course.
The thing to keep in mind is that collections are nothing more than ad-hoc systems containing arbitrary items based on certain criteria.So, for instance: the 'favorites' collection contains all items with the metadata flag favorite set to true, across all systems.
When enabling UI mode 'kid', there will be an additional criterion : kidgame needs to be 'true' as well. So now the favorite collection only contains those items that fulfill both criteria.The thing you cannot do in this situation is showing it in one system, while hiding it in the other. Because, in the end, it all points back to a single game, which either is shown in the current UI mode or not.
In a future update you will be able to work with more automatic collections that are based on the Metadata, for kidgames and hidden games as well, as a way to manage / maintain these collections.
I hope that answers your question?
-
@zigurana It does, and now I'm kinda sad that i have already deleted my backup. Well i guess i can finish the whole clean setup, make a new backup and use the script from @meleu to recreate my collections and be able to hide the ones i don't want. At least then i don't have to bother with a complete new installation whenever it's possible to do that without weird hacks.
-
@ectoone said in Kids & Kiosk Mode, coming back [testers needed!]:
And i don't know if games would show up in custom collections if i remove the origin system from es_systems.cfg.
This will not work.
-
@pjft Oh yeah, i remember that we already had that discussion in another thread. Stupid me.
-
@zigurana said in Kids & Kiosk Mode, coming back [testers needed!]:
In a future update you will be able to work with more automatic collections that are based on the Metadata, for kidgames and hidden games as well, as a way to manage / maintain these collections.
It is really a good news if you project to update these options :)
- Don't forget to tell me if i can help for the x360 Pad problem, maybe with a Joy2Key log recording ?
- Have you plan one day to replace the KID TAG by a PEGI TAG ?
Because it is really cool, i love your KID mode, but i can only filter games for my little girl 4 years old.
If i want to change the filter for his 13 year old daughter, i can't.
With a PEGI TAG, integer 2 number, i can filter games by maximum year old.
I think it is better, the only real problem will be to found *PEGI for all our games :(
-
@darknior said in Kids & Kiosk Mode, coming back [testers needed!]:
- Don't forget to tell me if i can help for the x360 Pad problem, maybe with a Joy2Key log recording ?
Showing the input that the system sees with joy2key - logging might be useful yes. If it is a specific input that basically means: null, then we might be able to filter them out.
- Have you plan one day to replace the KID TAG by a PEGI TAG ?
Because it is really cool, i love your KID mode, but i can only filter games for my little girl 4 years old.
If i want to change the filter for his 13 year old daughter, i can't.
With a PEGI TAG, integer 2 number, i can filter games by maximum year old.
I think it is better, the only real problem will be to found *PEGI for all our games :(
Yeah, this had crossed my mind, and I believe we discussed this earlier, or not? It would allow parents to set a maximum PEGI level to filter out the games, which I agree, would be cool.
In any case, as long as there is no source to scrape that data from, it is not a very useful function, do you think?
-
@zigurana said in Kids & Kiosk Mode, coming back [testers needed!]:
In any case, as long as there is no source to scrape that data from, it is not a very useful function, do you think?
You can scrap it on many site. Like on ScreenScrapper with the Classification TAG ;)
Some games are TAG 6+ : https://www.screenscraper.fr/gamesinfos.php?plateforme=49&alpha=0&numpage=0
They don't have it for all the games, but it will come with time ...
And if we can use it on ES, it will help more people to work on this cool TAG :p
They already take this tag when it is available on each site they scrap with their bot. -
I made the code 2 time, with START in the MIDDLE.
Driver version is 2.1.0. Joystick (Xbox 360 Wireless Receiver) has 6 axes (X, Y, Rx, Ry, Hat0X, Hat0Y) and 17 buttons (BtnX, BtnY, BtnTL, BtnTR, BtnTR2, BtnSelect, BtnStart, BtnMode, BtnThumbL, BtnThumbR, ?, ?, ?, (null), (null), (null), (null)). Testing ... (interrupt to exit) Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:on 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4:-32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:on 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4:-32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:on 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4:-32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:on 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4:-32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:on 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:on 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:on 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:on 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:on Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:on 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4:-32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:on 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4:-32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:on 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4:-32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:on 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4:-32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:on 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5:-32767 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:on 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 32767 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:on 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:on 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off Axes: 0: -363 1: -292 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off 13:off 14:off 15:off 16:off
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.