PDA

View Full Version : ANY BUTTON BOX FOR PS4



Tobes
17-10-2017, 17:13
Project cars 2 is a great addition to my racing collection. I use a T300rs wheel and the game gives you a load of options to map buttons to your hearts content which is great, but can any of you guys let me know if there is anything on the market like a button box for PS4 that you can use for Project Cars 2.

EDIT: Thanks for all the replies folks. Think I'll save some money and go the numlock USB root, seen one on amazon with 22 keys. Thanks again.

GreasemonkeyFIN
17-10-2017, 17:34
I have bbj simracing Button box on ps4. Works fine after latest patch.

bbjsimracing.com

Roger Prynne
17-10-2017, 18:43
Any button box should work really.

Trans-Girl
17-10-2017, 20:16
As long as the button box emulates a USB keyboard it will work with the PS4, there are a few on the market but not a difficult thing to make yourself, or you could just use a USB keyboard

moniker_a
18-10-2017, 04:25
Ignition Controls: http://www.ignitioncontrols.com/category-s/154.htm

Works well and looks great.

Roger Prynne
18-10-2017, 09:34
Only trouble with button boxes is that most cost a fortune.

xtremelead
18-10-2017, 10:14
What about a bluetooth numeric keypad? Im thinking about buying one and color the buttons. Will that work?

Sum Dixon-Ear
18-10-2017, 10:28
What about a bluetooth numeric keypad? Im thinking about buying one and color the buttons. Will that work?

It should do, I've used a couple with no issues... other than them going into sleep mode...

playdutch
18-10-2017, 10:56
What about a bluetooth numeric keypad? Im thinking about buying one and color the buttons. Will that work?

yes this works. i use a numlock keyboard in pc and pc2

Sum Dixon-Ear
18-10-2017, 12:32
These are a great option as well - Delux T9 47-Key Professional One/Single Hand USB Wired Esport Gaming Keyboard with 3-level LED Backlit Illuminated Backlight (https://www.tomtop.com/p-c3545.html?currency=GBP&Warehouse=CN&%7Bifdbm:&aid=dc2dynamic&mid=10000008003&utm_source=SEM&utm_medium=DoubleClick&utm_campaign=$%7BINSERTION_ORDER_ID%7D&utm_adgroup=$%7BCAMPAIGN_ID%7D%7D&aid=gplaukyly&gclid=Cj0KCQjw95vPBRDVARIsAKvPd3L4xr0wB2UJlEFx2rEVZ0qcPw7P9xdHh5yBtXHuU1efcL_r0-LvKxAaArxsEALw_wcB)

243146

Trans-Girl
18-10-2017, 14:04
Ignition Controls: http://www.ignitioncontrols.com/category-s/154.htm

Works well and looks great.

Ouch, expensive

Atak Kat
18-10-2017, 20:57
Ignition Controls: http://www.ignitioncontrols.com/category-s/154.htm

Works well and looks great.

I have this one from Ignition Controls.
http://cdn3.volusion.com/yfzaj.qdyju/v/vspfiles/photos/0PS4-NA1LEDS-2.jpg

I think it's discontinued or replaced now though.
Yes, expensive.
Yes, quite high quality. Looks so pretty I put it on a display shelf when I'm not using it... Very nice product.
It's quite big though.... bigger and heavier than I thought when I ordered it.
Works as expected. No issues so far with functionality

But probably a usb numeric keypad would be just as good. Maybe better because it can likely be a cheap, compact, and light-weight solution that does-the-job... The only thing a numeric keypad will not give you is rotary encoders (I'm not so sure they are really any big benefit vs. buttons/keys...), number of buttons, and specialty look&feel buttons (i.e.. the nice start button, toggle switches, etc....).

If you want functionality, likely keypad is enough. If you want something that looks cool....= $$$$

Trans-Girl
18-10-2017, 22:23
I made my own, pleased for a first attempt243201

anlygi
19-10-2017, 07:12
I made my own, pleased for a first attempt243201

That looks great. What interface do you use when making your own? Is it like the USB interface you use for building MAME arcade cabinets? I wouldn't mind a go myself.

Trans-Girl
19-10-2017, 07:19
That looks great. What interface do you use when making your own? Is it like the USB interface you use for building MAME arcade cabinets? I wouldn't mind a go myself.

I used an Arduino Leonardo to emulate a usb keyboard, each button push is recognised as a keystroke, leonaedo boards can be picked up for as little as 5, then its a matter of programing it and wiring up the buttons, there are a couple of threads on the pcars1 side of the forum that cover it in more detail

maxx69
19-10-2017, 08:15
Just bought one from eBay (bbj I think ) for about 50 . Think it has 16 buttons .
You apparently need to buy ones marked PS4 as PC ones don't work .
Everyone and their dog are buying them , don't think he can make them quick enough.

Was using a Bluetooth keyboard , although it worked fine , my head didn't......found it a bit fiddly during the race .
At my age big red buttons are more appropriate and who doesn't like big red buttons :)

anlygi
19-10-2017, 18:25
I used an Arduino Leonardo to emulate a usb keyboard, each button push is recognised as a keystroke, leonaedo boards can be picked up for as little as 5, then its a matter of programing it and wiring up the buttons, there are a couple of threads on the pcars1 side of the forum that cover it in more detail

Thanks. I think I'll look into it and get the soldering iron out! If anything it'll be more satisfying and I'll save some money in the process. Yours looks well.

jerry555
19-10-2017, 19:58
Lots of info from the old forum..

http://forum.projectcarsgame.com/showthread.php?31840-SEE-PATCH-2-0-Playstation-4-button-box

rcnavigated76
17-11-2017, 15:58
I used an Arduino Leonardo to emulate a usb keyboard, each button push is recognised as a keystroke, leonaedo boards can be picked up for as little as 5, then its a matter of programing it and wiring up the buttons, there are a couple of threads on the pcars1 side of the forum that cover it in more detail

I have just built my box using a Arduino pro micro. I am having trouble with the sketches. The ps4 recognizes it as a keyboard but does not recognize the switch. It works great on iRacing tho.

Atak Kat
17-11-2017, 16:31
I wanted to post something related to button boxes on PS4, and in particular those with encoders.

I had a lot of help from Rem, at IgnitionContols (supplier of the box I have) on this.

I was having difficulty that the rotary encoders were not registering with every click of the encoder.
When connected to PC, it was perfect, but with PS4 it was only registering every 2nd or 3rd click.

We messed around with the settings and basically coded it so that the 'key press' was held a bit longer whenever the rotary encoder was turned a click. I'm sorry I don't know how to explain that technically.

I have found that it now works much better. Each click of the rotary encoder now registers in PC2.

Maybe others have run into that same situation with their rotary encoders on boxes with PS4.

Hope it can help.

rcnavigated76
17-11-2017, 16:36
I wanted to post something related to button boxes on PS4, and in particular those with encoders.

I had a lot of help from Rem, at IgnitionContols (supplier of the box I have) on this.

I was having difficulty that the rotary encoders were not registering with every click of the encoder.
When connected to PC, it was perfect, but with PS4 it was only registering every 2nd or 3rd click.

We messed around with the settings and basically coded it so that the 'key press' was held a bit longer whenever the rotary encoder was turned a click. I'm sorry I don't know how to explain that technically.

I have found that it now works much better. Each click of the rotary encoder now registers in PC2.

Maybe others have run into that same situation with their rotary encoders on boxes with PS4.

Hope it can help.

Mine actually pops up like a keyboard connected. But, when you press any button or switch nothing happens.

Atak Kat
17-11-2017, 16:55
Mine actually pops up like a keyboard connected. But, when you press any button or switch nothing happens.

Buttons always worked fine with mine. The issue was only with the encoders.

Have you tried it with a PC (and just a text edit window or something) to see if it's working that way? If it works on a PC and registers the key press, then it's likely an issue from the PS4 side where there seems to be some sort of delay or hesitation for the PS4 to register the keypress.

rcnavigated76
17-11-2017, 17:00
Actually, it works great with pc. That is using strokes likes like dev button 0. The ps4 doesnt recognize that. I'm now needing to just find the proper sketch for a 32 button box.

Atak Kat
17-11-2017, 17:06
Actually, it works great with pc. That is using strokes likes like dev button 0. The ps4 doesnt recognize that. I'm now needing to just find the proper sketch for a 32 button box.

Well I wish I had some technical ability that could help. All I can say is that it was clear on mine, that the coding needed to be adjusted to simulate a longer hold of the keypress signal sent. At least to work with PS4. It could be that my buttons were already in the right range, but encoders not.

If it can help to tell you the settings for mine let me know (but I don't know if it's applicable in your case). The programming interface used for mine is a program called Arcaze.

rcnavigated76
17-11-2017, 19:32
Well, I found an 8 button sketch and it works great on ps4. Buttt, only for 8 buttons. The encoders take over those 8 and function great. Everything else shows up as LFT CTRL.

Trans-Girl
17-11-2017, 20:44
I have just built my box using a Arduino pro micro. I am having trouble with the sketches. The ps4 recognizes it as a keyboard but does not recognize the switch. It works great on iRacing tho.

Have you tried opening a chat box and seeing what letters are created with each button you press?
sorry just read the rest of the thread....

maybe the way it is wired?

rcnavigated76
17-11-2017, 22:42
Have you tried opening a chat box and seeing what letters are created with each button you press?
sorry just read the rest of the thread....

maybe the way it is wired?

No, we have chased it down to a definite code issue. It is sending codes that the ps4 doesnt recognize and I am having problems finding the correct script.

rcnavigated76
18-11-2017, 11:27
his is the sketch that sends a dev button press instead of a keystroke. Copied straight from the Arduino 1.8.5 program.

//BUTTON BOX
//USE w ProMicro
//Tested in WIN10 + Assetto Corsa
//AMSTUDIO
//20.8.17

#include <Keypad.h>
#include <Joystick.h>

#define ENABLE_PULLUPS
#define NUMROTARIES 4
#define NUMBUTTONS 24
#define NUMROWS 5
#define NUMCOLS 5


byte buttons[NUMROWS][NUMCOLS] = {
{0,1,2,3,4},
{5,6,7,8,9},
{10,11,12,13,14},
{15,16,17,18,19},
{20,21,22,23},
};

struct rotariesdef {
byte pin1;
byte pin2;
int ccwchar;
int cwchar;
volatile unsigned char state;
};

rotariesdef rotaries[NUMROTARIES] {
{0,1,24,25,0},
{2,3,26,27,0},
{4,5,28,29,0},
{6,7,30,31,0},
};

#define DIR_CCW 0x10
#define DIR_CW 0x20
#define R_START 0x0

#ifdef HALF_STEP
#define R_CCW_BEGIN 0x1
#define R_CW_BEGIN 0x2
#define R_START_M 0x3
#define R_CW_BEGIN_M 0x4
#define R_CCW_BEGIN_M 0x5
const unsigned char ttable[6][4] = {
// R_START (00)
{R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START},
// R_CCW_BEGIN
{R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START},
// R_CW_BEGIN
{R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START},
// R_START_M (11)
{R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START},
// R_CW_BEGIN_M
{R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW},
// R_CCW_BEGIN_M
{R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW},
};
#else
#define R_CW_FINAL 0x1
#define R_CW_BEGIN 0x2
#define R_CW_NEXT 0x3
#define R_CCW_BEGIN 0x4
#define R_CCW_FINAL 0x5
#define R_CCW_NEXT 0x6

const unsigned char ttable[7][4] = {
// R_START
{R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START},
// R_CW_FINAL
{R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW},
// R_CW_BEGIN
{R_CW_NEXT, R_CW_BEGIN, R_START, R_START},
// R_CW_NEXT
{R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START},
// R_CCW_BEGIN
{R_CCW_NEXT, R_START, R_CCW_BEGIN, R_START},
// R_CCW_FINAL
{R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW},
// R_CCW_NEXT
{R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START},
};
#endif

byte rowPins[NUMROWS] = {21,20,19,18,15};
byte colPins[NUMCOLS] = {14,16,10,9,8};

Keypad buttbx = Keypad( makeKeymap(buttons), rowPins, colPins, NUMROWS, NUMCOLS);

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
JOYSTICK_TYPE_JOYSTICK, 32, 0,
false, false, false, false, false, false,
false, false, false, false, false);

void setup() {
Joystick.begin();
rotary_init();}

void loop() {

CheckAllEncoders();

CheckAllButtons();

}

void CheckAllButtons(void) {
if (buttbx.getKeys())
{
for (int i=0; i<LIST_MAX; i++)
{
if ( buttbx.key[i].stateChanged )
{
switch (buttbx.key[i].kstate) {
case PRESSED:
case HOLD:
Joystick.setButton(buttbx.key[i].kchar, 1);
break;
case RELEASED:
case IDLE:
Joystick.setButton(buttbx.key[i].kchar, 0);
break;
}
}
}
}
}


void rotary_init() {
for (int i=0;i<NUMROTARIES;i++) {
pinMode(rotaries[i].pin1, INPUT);
pinMode(rotaries[i].pin2, INPUT);
#ifdef ENABLE_PULLUPS
digitalWrite(rotaries[i].pin1, HIGH);
digitalWrite(rotaries[i].pin2, HIGH);
#endif
}
}


unsigned char rotary_process(int _i) {
unsigned char pinstate = (digitalRead(rotaries[_i].pin2) << 1) | digitalRead(rotaries[_i].pin1);
rotaries[_i].state = ttable[rotaries[_i].state & 0xf][pinstate];
return (rotaries[_i].state & 0x30);
}

void CheckAllEncoders(void) {
for (int i=0;i<NUMROTARIES;i++) {
unsigned char result = rotary_process(i);
if (result == DIR_CCW) {
Joystick.setButton(rotaries[i].ccwchar, 1); delay(50); Joystick.setButton(rotaries[i].ccwchar, 0);
};
if (result == DIR_CW) {
Joystick.setButton(rotaries[i].cwchar, 1); delay(50); Joystick.setButton(rotaries[i].cwchar, 0);
};
}
}

Trans-Girl
19-11-2017, 22:18
do you have a wiring diagram to go with that sketch?

rcnavigated76
20-11-2017, 01:32
do you have a wiring diagram to go with that sketch?

Actually just got done making it. We are using a 5 by 5 grid, with encoders.
245518

torsteinvh
27-11-2017, 13:27
We messed around with the settings and basically coded it so that the 'key press' was held a bit longer whenever the rotary encoder was turned a click. I'm sorry I don't know how to explain that technically.

I have found that it now works much better. Each click of the rotary encoder now registers in PC2.
Do you mind sharing what settings you are using?
I'm experimenting with my own box from Ignitioncontrols, and it would be useful to know what values you are using for Pulse Width and Cycle Time.

Atak Kat
27-11-2017, 15:33
Do you mind sharing what settings you are using?
I'm experimenting with my own box from Ignitioncontrols, and it would be useful to know what values you are using for Pulse Width and Cycle Time.

For the encoders, I used Pulse Width 25, and Cycle Time 40. (I had no issue with button, so those were not changed at all from default)
Make sure to make a backup of your settings first.
I find with these settings the encoder triggers almost every time it's clicked (estimate 90+%). Definitely much better than before.
Had some good help through email from Rem at IgnitionControls on this as well. Very supportive and wanting to help find a solution.

I only had the issue with the PS4. When connected to PC, it was flawless (with the default settings). But there seems to be some difficulty for the PS4 to recognize the encoder clicks with the normal settings.

torsteinvh
28-11-2017, 07:41
For the encoders, I used Pulse Width 25, and Cycle Time 40. (I had no issue with button, so those were not changed at all from default)

I was too smart for my own good ;)
The GUI in the configuration tool displays 'x10 ms' after the input fields, so I figured I had to divide the suggested values by 10...
After entering your suggestions everything works perfectly :)

I really like the configuration tool for the Ignitioncontrol boxes. I only use the light HUD, and occasionally the telemetry HUD, so I configured one of the toggle switches to send the same key press three times when toggled off. That way I can switch between the telemetry HUD and the light HUD with one toggle switch without having to remember where in the HUD sequence the other two HUDs are.