DosBox; Mapping mouse to PS3 Analog Stick
-
Please advice, it fails to map the mouse to left analog PS3 gamepad, mouse cursor is still in the upper left corner. The mouse buttons work well.
# Map Mouse axis vendor=0x054c product=0x0268 src=0 target=mouse axis=0 axis vendor=0x054c product=0x0268 src=1 target=mouse axis=1 button vendor=0x054c product=0x0268 src=14 target=mouse button=0 button vendor=0x054c product=0x0268 src=15 target=mouse button=1
-
@Mayki
Are you mapping the mouse for dosbox, or PPSSPP? During my own troubleshooting, I tested for PPSSPP and the mouse didn't work either. -
Mapping mouse for DosBox. Tested in the game Albion, Abuse and directly in DOSBox, the mouse cursor will automatically move into the upper left corner and not move him.
-
@Mayki
That might be due to a poor deadzone on the analog stick. I think this is my issue as well. I know you can write additional scripts in the mapper, and the developer made reference to creating one for a deadzone of sorts on his wiki. I'm not sure I know how to do it properly... was hoping @dudleydes would help troublehsoot :) -
@Mayki To use the mouse, DOSBox needs to capture it. This can be done by pressing CTRL+F10 or left-clicking, which, if using the mapping above, you can do by pressing X on your PS3 controller.
@Concat I've not had any luck mapping keys to the analogue stick. All I would suggest is leave a message for the developer at the sourceforge page, which you have already done.
-
Not problem with capture, problem is analog axis. The left analog stick in the middle : constantly sends the cursor to the upper left corner, analog stick in the right down position : the cursor stops at the zero position.
-
@dudleydes
Just thought I'd ask what version of joymap you are using... -
@Concat I'm using version 0.3.1.
-
Hmmm... well I'm at a loss. I can't get the mouse to map properly in Dosbox either. Cursor just sits in the top left corner like Mayki.
Do you launch Albion from the command line? I suppose I could try that. Right now I have it set up to load the map in the .emulators.cfg file, much the same way you suggested I do it for PPSSPP. Perhaps there is some confliction with emulationstation(?)
-
-
hi, i'm trying to do this config with sorr (Streets of rage remake) but i'm struggling to make this work, can you help me on this?
nvm, sorted it out :)
-
@Mayki said in DosBox; Mapping mouse to PS3 Analog Stick:
Mapping mouse for DosBox. Tested in the game Albion, Abuse and directly in DOSBox, the mouse cursor will automatically move into the upper left corner and not move him.
The linuxjoystickmapper dev released a new version which fixed this issue for me. Give it a try.
Unfortunately, I still have issue mapping keys to axes. It doesn't release the key press when the axis returns to neutral no matter what I try. Oh well. At least the mouse is working.
-
Yes, I noticed it. We're currently investigating a problem with the PC, then I try it likes. Thank you for the warning.
-
I've successfully created all the necessary files etc. (and it somewhat works in dosbox) but how do you figure out which button id comes from which button?
I've used Kodi's logging before to get id's etc but the dpad returns a hat value and I can't find anything in the joymap docs about hat values.
Also the buttons id's from Kodi's log aren't the same as what joymap recognizes.
i.e button id 10 is my startbutton in kodi, but when I map
button vendor=0x045e product=0x028e src=10 target=kbd button="enter"
it doesn't work -
@GetKeyOpenDoor You can use jstest. From the command line, run:
jstest /dev/input/js0
-
That works, thank you.
so dpad left is -32767 and dpad right is 32767 on axis 4
same for dpad up/down. up = -32767 and down is 32767 on axis 5
and the same for the thumbs. but on axes 0-3
No idea how to map this in joymap, I don't understand how
src=0 target=mouse axis=0
interprets the axes valuesbecause how does this work when dpad up and down is both on axis 5
axis vendor=0x045e product=0x028e src=5 target=kbd button="up"
axis vendor=0x045e product=0x028e src=5 target=kbd button="down"
EDIT: read something in the docs about
plus
andminus
but no explanation on how to use it.
I've triedaxis vendor=0x045e product=0x028e src=5 minus target=kbd button="up"
but that doesn't seem to do anything :EDITAlso did you guys already figure out how to use the extra values like
deadzone
andspeed
?
Do you just paste that on the same line as the button config? -
Ok, so I just tested this with the game Abuse after getting all the values from
jstest
button vendor=0x045e product=0x028e src=2 target=mouse button=0
button vendor=0x045e product=0x028e src=0 target=mouse button=1
Using a 360wired, I've mapped X to mousebutton 0 (left?) and a to button 1 (right?)
nothing happens in game when pressedI'm about to give up lol, i've been at it for 2 days already and it's proven to be way to difficult.
-
You're asking so many specific questions it's hard to understand what you're even trying to do. lol. You should start there. And post your entire mapping file in something like pastebin for us to look at. If you have one error in the file, it will fail to load any of it.
As for plus and minus, look at this mapping:
axis vendor=0x054c product=0x0268 src=0 target=kbd plus="k" minus="i" axis vendor=0x054c product=0x0268 src=1 target=kbd plus="l" minus="j"
First line is axis, because I'm targeting an axes on my controller.
Vendor and product define which controller.
src defines what input on my controller I'm targetting. In this case, 0 is the X-axis on the left joystick, and 1 is the Y-axis on the left joystick. I've already told the script it's an axis, so it won't look for button 0 and button 1.
On the left joystick, when I push right, the input delivers a positive value, so it's mapped to k. Left is negative, so i.
Y axis is reverse on the ps3 controller. Up is negative and down is positive.That's how plus and minus work. It's used to map joystick axes to buttons (either keyboard, or a different controller button). I had a hell of a time making this work until the developer released a new version with a "trinary" flag. I dont really understand what it does, but there is documentation on it. so my mapping becomes:
axis vendor=0x054c product=0x0268 src=0 target=kbd plus="k" minus="i" flags="trinary" axis vendor=0x054c product=0x0268 src=1 target=kbd plus="l" minus="j" flags="trinary"
I have not mapped a button to a mouse click, but this looks fine (at least the format does):
button vendor=0x045e product=0x028e src=2 target=mouse button=0 button vendor=0x045e product=0x028e src=0 target=mouse button=1
I just don't know what the numbers are for a wired 360 controller. I googled PS3 and found one that works.
This is gibberish:
axis vendor=0x045e product=0x028e src=5 target=kbd button="up" axis vendor=0x045e product=0x028e src=5 target=kbd button="down"
You are trying to map axis 5 to both up and down without specifying + is up/down, and what - is. I find it strange that your dpad is registering as an axis in general. The ps3 dpad acts as buttons.
Deadzone is a new feature. I put in 1000 and the file failed to load. 100 loads, but I swear it doesn't do anything. I gave up on that because it wasn't needed in my case. At any rate, you would just put Deadzone=100 at the end of an axis target. I never looked into speed.
Overall it is a difficult tool to use. You have to cobble together information from the wiki, the documentation and topics like this. If you think 2 days is bad... look at when I posted first posted this topic. I had to harass the developer because I could not get joystick to keyboard mappings to work without chaos. He listened, found a bug or two, and introduced new features. With the trinary flag , it finally works for me and now I can play shadow warrior with dual joysticks.
The developer himself said he made the tool for himself some time ago, so don't expect some polished product with great instructions. Just keep trying and eliminate all sources of error. Try some easy first, like mapping a single button to a keyboard press, then loading dosbox and see if the button returns the key in the command line. If it doesn't, you are doing something fundamentally wrong. Wrong product number, wrong button number, wrong script to load the map file when the game runs, etc.
-
@Concat Thank you so much for the proper explanation, I'll try to experiment again in a little bit.
As for
axis vendor=0x045e product=0x028e src=5 target=kbd button="up"
axis vendor=0x045e product=0x028e src=5 target=kbd button="down"
That was just an example to explain what was confusing me about my dpad, not actually something I put in my mapping file. Because my dpad up/down is bothscr=5
I didn't understand how to map that. -
Ok, so I've been messing around again for a bit. I can confirm joymap loads, and that my vendor and product ID's are correct. This is my
runcommand.log
Found device Microsoft X-Box 360 pad (vendor=0x045e, product=0x028e) Found device JOYMAP Code Device (vendor=0x00ff, product=0x0000) DOSBox version SVN
So joymap loads, dosbox loads and the game loads. (I tried again with the game Abuse)
Confirmed buttonA
is0
viajstest
and I've mapped theup
keyboard button toA
on my controller.button vendor=0x045e product=0x028e src=0 target=kbd button="up"
But in game pressing the A button does nothing. Tried mapping other buttons as well, like
escape
toselect
andenter
tostart
but got nothing.button vendor=0x045e product=0x028e src=8 target=kbd button="esc" button vendor=0x045e product=0x028e src=9 target=kbd button="enter"
Then I tried tumbstick mapping.
# mouse to right thumb axis vendor=0x045e product=0x028e src=2 target=mouse axis=0 axis vendor=0x045e product=0x028e src=3 target=mouse axis=1 # kbd arrows to left thumb axis vendor=0x045e product=0x028e src=0 target=kbd plus="right" minus="left" axis vendor=0x045e product=0x028e src=1 target=kbd plus="down" minus="up"
That somewhat worked, but it's constantly registering something because the character is jumping and moving around unless I keep the thumbstick in a fixed position.
Same for the mouse, it's constantly registering up and I can't really control it.
So I tried with thedeadzone
value set to 100 but that had no effect.
Then I read the documentation again and found that you can set thebinary
flag.
From the joymap docs:The binary flag can be used to trigger events only when the axis is moved completely in the other direction.
But this didn't help either, and neither did thetrinary
flag.So unless I'm missing something obvious and I'm being an idiot again, I think I give up.
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.