Any Open Source Controllers out there?
- ifohancroft
- Location: Sofia, Bulgaria
- Main keyboard: ErgoDox w/ SA Carbon on Box Jades
- Main mouse: Razer Viper Ultimate
- Favorite switch: Beamspring
- DT Pro Member: -
- Contact:
I have seen open source/custom builds of pretty much any common input device (keyboards (obviously), mice, trackballs, fight sticks, even whole arcade cabinets, flight simmulation joysticks) but I can't seem to find a single project for controllers (I mean controllers in the sense of game controllers like the PlayStation and Xbox controllers). It doesn't even have to be for use with consoles, just for PC.
Has anyone seen/know of any such projects? Even non opensource, just custom built ones?
Has anyone seen/know of any such projects? Even non opensource, just custom built ones?
-
- Location: Stockholm, Sweden
- DT Pro Member: 0011
I have seen some clunky ones for sure, but neglected to save the links.
People don't have hardware to make rubber-dome buttons at home, so most projects have been digital joysticks or based on analogue thumb-sticks.
XBox 360/One and maybe PlayStation 3/4 allow only licensed controllers with a cryptographic license key in the controller (even though PC does not have that restriction), so many DIY projects I've seen have been using the innards of a store-bought controller and wired new buttons to them instead of using completely new electronics and firmware.
Otherwise, both protocols and the one Nintendo Switch uses have been reverse-engineered. Specs and firmware should be out there.
Most firmware projects have been using the standard USB HID protocol instead. However. it gives only each button a number — it does not specify what each button does. With Windows PCs, this protocol is what is often called "DirectInput", whereas XBox's protocol is called "XInput", named after the API's used to access them.
People don't have hardware to make rubber-dome buttons at home, so most projects have been digital joysticks or based on analogue thumb-sticks.
XBox 360/One and maybe PlayStation 3/4 allow only licensed controllers with a cryptographic license key in the controller (even though PC does not have that restriction), so many DIY projects I've seen have been using the innards of a store-bought controller and wired new buttons to them instead of using completely new electronics and firmware.
Otherwise, both protocols and the one Nintendo Switch uses have been reverse-engineered. Specs and firmware should be out there.
Most firmware projects have been using the standard USB HID protocol instead. However. it gives only each button a number — it does not specify what each button does. With Windows PCs, this protocol is what is often called "DirectInput", whereas XBox's protocol is called "XInput", named after the API's used to access them.
- ifohancroft
- Location: Sofia, Bulgaria
- Main keyboard: ErgoDox w/ SA Carbon on Box Jades
- Main mouse: Razer Viper Ultimate
- Favorite switch: Beamspring
- DT Pro Member: -
- Contact:
I would like to eventually make myself one for use with a PC.
I've always had it in the back of my head that I'll just use some sort of mechanical switches (maybe mouse switches?) if I make myself one as I am not limited by what the manufacturer chose, but I can see why people might decide to use the rubber-domes of existing ones.
What you said about the USB HID protocol and the buttons is interesting. I didn't know that. Thanks! I need to look into how I can make it so software can recognize the buttons as specific controller ones (although maybe that is not needed?). I mean there must be an open protocol for that. I need to check what Linux uses. I thought it was XInput but I guess not and I am getting confused with Xorg's tool.
I'd love the fancy features that the PS4 and the Steam Controller brought to the table but I am fine with making myself one that's not even wireless and has the features of the PS3 with a slightly different shape and either more trigger buttons at the back of the controller or just moved there.
I've always had it in the back of my head that I'll just use some sort of mechanical switches (maybe mouse switches?) if I make myself one as I am not limited by what the manufacturer chose, but I can see why people might decide to use the rubber-domes of existing ones.
What you said about the USB HID protocol and the buttons is interesting. I didn't know that. Thanks! I need to look into how I can make it so software can recognize the buttons as specific controller ones (although maybe that is not needed?). I mean there must be an open protocol for that. I need to check what Linux uses. I thought it was XInput but I guess not and I am getting confused with Xorg's tool.
I'd love the fancy features that the PS4 and the Steam Controller brought to the table but I am fine with making myself one that's not even wireless and has the features of the PS3 with a slightly different shape and either more trigger buttons at the back of the controller or just moved there.
-
- Location: Stockholm, Sweden
- DT Pro Member: 0011
The retro-gaming scene seems to be quite strong though and there are lots of replacement parts for other controllers: rubber dome pads, analogue sticks, switches, stick tops, button tops etc.
A custom gamepad could probably be made to use some of those ... but the company behind the original part might not like it.
Some home-made gamepads, and even the recent Neo Geo Mini's gamepad use analogue thumb-sticks instead of D-pad or digital stick. Then there is a circuit or software that converts the signals from analogue to digital.
The Neo Geo Mini's gamepad is widely disliked because of how inexact it is, not providing any tactile feedback. (and compared to the original Neo Geo CD's gamepad which was digital and used microswitches ...)
On the other hand, unlike D-pads, diagonals feel the same as the cardinal directions, which I think is a drawback with D-pads.
My favourite Atari-style joystick is the handheld TAC-II where the "restrictor gate" is the switches. This makes every actuation distinct. The construction is very primitive: There is a conductive ball on the axis, which actuates by touching sheet-metal walls inside the joystick.
I have been thinking that maybe an analogue thumb-stick for digital input could be improved by adding an active restrictor gate to it. But unlike the TAC-II, the gate would not need to sense direction, as that would be done by the analogue part of the stick. The gate would only need to sense on or off.
Instead of a gate as a hole around a shaft, make the gate as a touch-sensitive ring mounted to the PCB around the stick, and have the bottom edge of the hemispherical stick bottom strike it. Make the shape of the gate by shaping the hemisphere's edge.
Alternatively, make the gate as a shaped hole from two parts of sheet metal sandwiched with an insulator in-between. Make the shaft be conductive (there are stick tops of metal) and use a capacitive sensor circuit connected to the sheet metal parts.
A custom gamepad could probably be made to use some of those ... but the company behind the original part might not like it.
Some home-made gamepads, and even the recent Neo Geo Mini's gamepad use analogue thumb-sticks instead of D-pad or digital stick. Then there is a circuit or software that converts the signals from analogue to digital.
The Neo Geo Mini's gamepad is widely disliked because of how inexact it is, not providing any tactile feedback. (and compared to the original Neo Geo CD's gamepad which was digital and used microswitches ...)
On the other hand, unlike D-pads, diagonals feel the same as the cardinal directions, which I think is a drawback with D-pads.
My favourite Atari-style joystick is the handheld TAC-II where the "restrictor gate" is the switches. This makes every actuation distinct. The construction is very primitive: There is a conductive ball on the axis, which actuates by touching sheet-metal walls inside the joystick.
I have been thinking that maybe an analogue thumb-stick for digital input could be improved by adding an active restrictor gate to it. But unlike the TAC-II, the gate would not need to sense direction, as that would be done by the analogue part of the stick. The gate would only need to sense on or off.
Instead of a gate as a hole around a shaft, make the gate as a touch-sensitive ring mounted to the PCB around the stick, and have the bottom edge of the hemispherical stick bottom strike it. Make the shape of the gate by shaping the hemisphere's edge.
Alternatively, make the gate as a shaped hole from two parts of sheet metal sandwiched with an insulator in-between. Make the shaft be conductive (there are stick tops of metal) and use a capacitive sensor circuit connected to the sheet metal parts.
- ifohancroft
- Location: Sofia, Bulgaria
- Main keyboard: ErgoDox w/ SA Carbon on Box Jades
- Main mouse: Razer Viper Ultimate
- Favorite switch: Beamspring
- DT Pro Member: -
- Contact:
Thanks a lot for the insight!
I love the idea of setting/getting the direction by making the stick shaft be conductive or having a touch sensitive ring around it.
I love the idea of setting/getting the direction by making the stick shaft be conductive or having a touch sensitive ring around it.
-
- Location: Stockholm, Sweden
- DT Pro Member: 0011
Not open source but pretty cool mod anyway: Replacing the Jaguar D-pad with a clicky thumbstick.
The guy developed and 3D-printed his own clicky thumbstick. No plans are available, because he sells modified Jaguar controllers. Once those are sold, he will mod other people's controllers for a fee.
The guy developed and 3D-printed his own clicky thumbstick. No plans are available, because he sells modified Jaguar controllers. Once those are sold, he will mod other people's controllers for a fee.
- ifohancroft
- Location: Sofia, Bulgaria
- Main keyboard: ErgoDox w/ SA Carbon on Box Jades
- Main mouse: Razer Viper Ultimate
- Favorite switch: Beamspring
- DT Pro Member: -
- Contact:
That's awesome! Thanks for sharing this!
By the way, is there a way to configure Deskthority to show me a notification when I open it, if someone has commented on a post I did or I have started? I thought I've set it up but it didn't notify me about your comment
By the way, is there a way to configure Deskthority to show me a notification when I open it, if someone has commented on a post I did or I have started? I thought I've set it up but it didn't notify me about your comment
-
- Location: United States, Texas
- Favorite switch: Hall Effect
Click the little wrench icon -> subscribe topic?ifohancroft wrote: ↑10 May 2020, 02:54That's awesome! Thanks for sharing this!
By the way, is there a way to configure Deskthority to show me a notification when I open it, if someone has commented on a post I did or I have started? I thought I've set it up but it didn't notify me about your comment
- ifohancroft
- Location: Sofia, Bulgaria
- Main keyboard: ErgoDox w/ SA Carbon on Box Jades
- Main mouse: Razer Viper Ultimate
- Favorite switch: Beamspring
- DT Pro Member: -
- Contact:
That's the thing. I am subscribed to the topic. However, now it seems it suddenly works. I opened the forum and I saw '1' on the Notifications button letting me know about your comment.chzcake44s wrote: ↑11 May 2020, 14:48Click the little wrench icon -> subscribe topic?ifohancroft wrote: ↑10 May 2020, 02:54That's awesome! Thanks for sharing this!
By the way, is there a way to configure Deskthority to show me a notification when I open it, if someone has commented on a post I did or I have started? I thought I've set it up but it didn't notify me about your comment
-
- Location: Poland
- Main mouse: trackball
- Favorite switch: Buckling Springs
Arduino + switches and or analog joysticks of your choice and you may tinker some stuff yourself.
- ifohancroft
- Location: Sofia, Bulgaria
- Main keyboard: ErgoDox w/ SA Carbon on Box Jades
- Main mouse: Razer Viper Ultimate
- Favorite switch: Beamspring
- DT Pro Member: -
- Contact:
That's definitely the plan!keyboardist wrote: ↑11 Jun 2020, 16:42Arduino + switches and or analog joysticks of your choice and you may tinker some stuff yourself.
-
- Location: Germany
- Main keyboard: Apple
- Main mouse: Trackball Kensington
- Favorite switch: Cherry MX
- Contact:
USB specifies a lot of detailed "usages" for control elements. Unfortunately few is any software does make use of this.ifohancroft wrote: ↑16 Mar 2020, 02:07What you said about the USB HID protocol and the buttons is interesting. I didn't know that. Thanks! I need to look into how I can make it so software can recognize the buttons as specific controller ones (although maybe that is not needed?).
Theoretically you can assign a control to be the collective for a helicopter, or a dive pane for a submarine. But in reality I have yet to see any software that makes use of this.
Unfortunately few if any game developers seem to care for good game controller support. It is very hard to convince them to add it to their games as they seem to think that it does not help to sell products…
…not quite right with simulators…