Most video games, whether on console or PC, have standardized around either a keyboard and mouse or an analog controller of some sort, with very little differences between various offerings from the likes of Sony, Microsoft, Nintendo, or even Valve. This will get most of us through almost all video games, but for those looking to take their gameplay up a notch or who are playing much more complex games, certain specialized controllers are available, but they might not meet everyone’s specific needs. Thanks to this custom, modular keyboard anyone should be able to make exactly the controller they need.
The device features a grid of 15 interfaces where modules like buttons, potentiometers, encoders, and joysticks can be placed. Each module can be customized to a significant extent on their own, and they can be placed anywhere on the grid. The modules themselves can be assigned to trigger keyboard presses or gamepad motions depending on the needs of the user. A Raspberry Pi handles the inputs and translates them to the computer, so in that regard it functions no differently than a standard keyboard or gamepad would. Programming is done by sending commands via a USB serial port, with the ability to save various configurations as well.
The modular controller is open-source in terms of hardware and software, with easy assembly using through-hole components and a customizable 3D printed cover for anyone looking to make their own. The project’s creator [Daniel] had flight simulators in mind when designing the device, which often benefit from having more specialized controllers, but any game with lots of specific inputs from Starcraft to League of Legends could benefit from a custom controller or keyboard like this. Flight simulators are more often the targets of specialized and unique controls, though, like this custom yoke or this physical control panel.
The Nokia N-Gage might not have put up much of a fight against Nintendo’s handheld dynasty, but you can’t say it didn’t have some pretty impressive technology for the time. [BeardoGuy] happens to have a perfectly functional N-Gage QD, which he turned into a universal Bluetooth gamepad.
The handheld runs a program that makes it act as a gamepad, and a DIY Bluetooth dongle is required on the client side. The dongle consists of an ATtiny85-based development board and HC-06 Bluetooth module, and will be recognized as a USB gamepad by just about anything it plugs in to.
[BeardoGuy]’s custom GamepadBT program sends button events via Bluetooth to the dongle, and those events are then sent via USB and look just like those from any standard gamepad.
This project can be used as a resource for how to implement a USB gamepad, whether on a Nokia N-Gage or not. You can see all the details at the project’s GitHub repository, and watch it in action in the video embedded below.
Input Labs’ mission is to produce open-source Creative Commons hardware and software for creating gaming controllers that can be adapted to anyone. Alpakka is their current take on a generic controller, looking similar to a modern Xbox or PlayStation controller but with quite a few differences. The 3D printed casing has a low-poly count, angular feel to it, but if you don’t like that you can tweak that in blender to just how you want it. Alpakka emulates a standard USB-attached keyboard, mouse, and Xinput gamepad in parallel so should just work out of the box for both Linux and Windows PC platforms. The firmware includes some built-in game profiles, which can be selected on the controller.
The dual D-pads, augmented with an analog stick, is not an unusual arrangement, but what is a bit special is the inventive dual-gyro sensor arrangement –which when used in conjunction with a touch-sensitive pad — emulates a mouse input. Rest your thumb on the right-hand directional pad and the mouse moves, or else it stays fixed, kind of like lifting a mouse off the pad to re-center it.
The wired-only controller is based around a Raspberry Pi Pico, which has plenty of resources for this type of application giving a fast 250 Hz update rate. But to handle no fewer than nineteen button inputs, as well as a scroll wheel, directional switch, and that analog stick, the Pico doesn’t have enough I/O, needing a pair of NXP PCAL6416A I2C IO expanders to deal with it.
The PCB design is done with KiCAD, using a simple 3D printed stand to hold the PCB flat and the through-hole components in place while soldering. Other than a few QFN packages which might be a problem for some people, there is nothing tricky about hand-soldering this design.
Nothing says “1980s gaming” like a black joystick with a single red fire button. But if you prefer better ergonomics, you can connect modern gamepads to your retrocomputers thanks to a variety of modern-to-classic interface adapters. These typically support just the directional pad and one or two action buttons, leaving out modern features like motion control and haptic feedback.
That’s a bit of a shame, because we think it would be pretty cool to feel that shock in our hands whenever Pitfall Harry drowns in quicksand or Frogger gets hit by traffic. We’re therefore happy to report that [Ricardo Quesada] has decided to add rumble functionality to the Bluetooth-to-Joystick-port interface that he’s been working on. He demonstrates the feature on his Commodore 64 in the video embedded after the break.
Naturally, any software needs to be adapted to support haptic feedback, but a trickier problem turned out to be the hardware: joystick ports are input-only devices and therefore cannot send “enable rumble” signals to any connected gamepads. [Ricardo] found a clever way around this, using the analog inputs on the joystick port that were typically used for paddle-type controllers.
The analog-to-digital converter inside the computer works by applying a pulse signal to the analog port and measuring the time it takes to discharge a capacitor. The modern gamepad interface simply detects whether these pulses are present; they can be enabled or disabled through software by toggling the analog readout on the joystick port. This way, the joystick port can be used to send a single bit of information to any device connected to it.
[Ricardo] developed patches for Rambo: First Blood part II and Leman to enable rumble functionality. He describes the process in detail in his blog post, which should enable anyone who knows their way around 6502 machine code to add rumble support to their favorite games.
The adapter works with a variety of retro systems that use the Atari-style joystick interface, but if you’re an Apple II user, you might want to look at this Raspberry Pi-based project that interfaces with its nonstandard joystick interface. If you’re into wireless gaming in general, be sure to also check out our history of wireless game controllers.
[feralAI] and fellow GitHub contributors present for your viewing pleasure GP2040: an open source game pad firmware for RP2040-based hardware. The dual-core RP2040 is a good platform to use for gaming inputs, as there is plenty of CPU grunt to get sub-1 ms USB polling time, regardless of any other tasks the controller may be performing. Currently the firmware supports PC, Android, RPi, Nintendo Switch, PS3, PS4 (legacy mode), and the sweet MiSTer FPGA-based retro-gaming platform.
The firmware supports the older DirectInput API and the newer shiny (but rather restrictive) XInput API (no, it’s not the old X11 input extension with the same name) — as well as the usual controller features like SOCD cleaning, D-pad mapping, and RGB support for additional distractions. There is even support for those tiny OLED displays (SSD1306 and friends), although we can’t think of a use case for that at the moment. Configuration is particularly interesting, however, as it is based upon an embedded web application. This is where the pin mappings to your actual hardware are defined, as well as all that RGB bling, if you so desire.
The first person shooter genre found its feet in the PC world, relying on the holy combination of the keyboard and mouse for input. Over time, consoles have refined their own version of the experience, and the gamepad has become familiar territory for many FPS fans. [Tech Yesterday] was a die hard controller player, but after trying out a mouse, didn’t want to go back. Instead, he built a truly impressive hybrid device.
The build begins with a standard Xbox 360 wired controller, somewhat of a defacto standard for PC gamepads. The left analog stick and triggers remain untouched, however the face buttons are all relocated using mechanical keyboard switches. The D-pad has been relocated to the left hand side with tactile switches, and the right analog stick removed entirely. In its place, a cut-down optical mouse is used on a flat 4″x4″ mousepad attached to the controller, strapped to the player’s thumb.
The resulting controller combines the benefit of analog stick movement and the precision aiming of a mouse. We’re amazed at how comfortable the controller looks to use, particularly in the improved second revision. While currently only used on PC, we can imagine such controllers shaking up the console FPS scene in a serious way.