Page 1 of 2

PS3 Controller joysticks sticks

Posted: Sat May 12, 2012 11:25 pm
by McPandaBurger
Hi guys,

I'm trying to use my PS3 controller as an input device.

I found this thread viewtopic.php?f=5&t=618&p=5980&hilit=analogue#p5980

And it seems that there is some way to see what buttons constants are but I can't seem to find it on the wiki.

What I mean is, the X,circle, square and so on buttons seem to be a number between 1 and 19 which I found out from trial and error along with the numbers for all the other buttons, I can't seem to work out how to use the sticks,

this returns 0 : AxisNumber = love.joystick.getNumHats(1);
also zero: balls = love.joystick.getNumBalls(1)


So I'm a bit confused as how you find out what to put in: buttonDown = love.joystick.isDown(1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23); to identify that the sticks are being used.

I understand from reading around the web that the should go from 1 to -1 in each axis, which is exactly the control I'm after.

any examples of what to do would be really helpful or even if you know of a gizmo that points me in the right direction would be cool.

I'm Guessing I'm just being a plum and missing something really obvious as there doesn't seem to be too many people with this issue or similar on this forum, but feel free to point out my stupidity anyway, all part of the learning curve I guess.

thanks for your time in advance and sorry if I've missed a thread that answers this already (I looked all afternoon, but haven't come across much that helps).

Re: PS3 Controller joysticks sticks

Posted: Sun May 13, 2012 8:17 am
by bartbes
You are missing something obvious.

And why are you calling isDown with so many parameters? It return if any is down, so this would give you an amazing amount of lack of information.

Re: PS3 Controller joysticks sticks

Posted: Sun May 13, 2012 8:56 am
by McPandaBurger
Thanks for the reply dude, I tried that before I posted, which is why I know it knows they are there. the trouble is it simply returned how many there were (as its name suggests) which is 4 (which makes sense up/down on both and left/right on both), but what it doesn't tell me is how to register if they are used.

the .isDown having all those numbers in was simply so I could test that all the buttons were working, which they are.


see here from the wiki:



anyDown = love.joystick.isDown( joystick, button1, button2, button3, ... )
Arguments

number joystick
The joystick to be checked
number buttonN
A button to check
Returns

boolean anyDown
True if any supplied button is down, false if not.


I can successfully map all the buttons, but I can't get my head around what they are called, for example in the thread I linked to in my last post, it looked like an xbox controller puts them down as "axe 1" and so on but that doesn't work as .isDown only wants a number from what I can tell. (I tried, 1-4 and none of them are right, I tired A1-A4 and none of those work either.)


I'm definitely being a gibbon, but I'm not sure how.

Re: PS3 Controller joysticks sticks

Posted: Sun May 13, 2012 9:36 am
by bartbes
Aww, I messed my link, I meant to link to love.joystick.getAxis.

Re: PS3 Controller joysticks sticks

Posted: Sun May 13, 2012 10:21 am
by McPandaBurger
Tried that as well but I'm not sure what to put in the Axis part

Code: Select all

direction = love.joystick.getAxis( joystick, axis )
So my joystick is definately 1 so I have:

Code: Select all

direction = love.joystick.getAxis(1, axis )
but I'm not sure what to put in axis, 1, 2 don't work and it won't except X and Y as they are letters. it is safe to say I R TEH STUMPED :ultrashocked:

Re: PS3 Controller joysticks sticks

Posted: Sun May 13, 2012 10:47 am
by bartbes
You could try this.

Re: PS3 Controller joysticks sticks

Posted: Sun May 13, 2012 10:57 am
by McPandaBurger
you're gonna hate me in a minute, but yeah I found that too, that's where I got the A1-A4 Idea, but it seems that it doesn't like it coz it's not a number. I haven't been able to find the source for that little script either as that's have the answer in there. I'm so close yet so far. Sad times man, Sad times.

Re: PS3 Controller joysticks sticks

Posted: Sun May 13, 2012 11:12 am
by bartbes
I made that, and the source is in there.. anyway, it should tell you which axes are what.

Re: PS3 Controller joysticks sticks

Posted: Sun May 13, 2012 11:23 am
by McPandaBurger
oh right I changed the .love to a .zip and got the main.lua so cheers for that, now to figure out what it is you're doing, good stuff though dude, As you can tell I'm new to this, so the going is slow. What would help if you have time, is to put in a few comments on your code below so I can get the idea behind what you're doing and why, if you don't have time no worries I can work out, just interesting to see why you did what you did.

Code: Select all

state = {}

function love.load()
	love.graphics.setFont(love.graphics.newFont())
end

function love.update()
	for joy = 1, love.joystick.getNumJoysticks() do
		local j = state[joy]
		if not j then
			state[joy] = {}
			j = state[joy]
			j.name = love.joystick.getName(joy)
			j.axes = {}
			j.numAxes = love.joystick.getNumAxes(joy)
			for axis = 1, j.numAxes do
				j.axes[axis] = 0
			end
			j.buttons = {}
			j.numButtons = love.joystick.getNumButtons(joy)
			for button = 1, j.numButtons do
				j.buttons[button] = false
			end
		end
		for axis = 1, j.numAxes do
			j.axes[axis] = love.joystick.getAxis(joy, axis)
		end
		for button = 1, j.numButtons do
			j.buttons[button] = love.joystick.isDown(joy, button)
		end
	end
end

function love.draw()
	local y = 0
	local height = love.graphics.getFont():getHeight()
	for _, joy in ipairs(state) do
		y = y + height
		love.graphics.print(joy.name .. ":", 10, y)
		for axis, value in ipairs(joy.axes) do
			y = y + height
			love.graphics.print("A" .. axis .. ": " .. value, 20, y)
		end
		for button, value in ipairs(joy.buttons) do
			y = y + height
			love.graphics.print("B" .. button .. ": " .. tostring(value), 20, y)
		end
	end
end

Re: PS3 Controller joysticks sticks

Posted: Sun May 13, 2012 6:32 pm
by bartbes
You should be more specific, what is it you want explained?