Making a custom macro keyboard with REAL arcade buttons
ฝัง
- เผยแพร่เมื่อ 6 ก.ย. 2024
- This macro keyboard can be programmed to control hotkeys, type words and even execute shortcuts! It uses satisfying Sanwa OSBF-24 Arcade Pushbuttons in a #3DPrinted case.
For now, the files are available on Gumroad (enter 0 to download for free) - gumroad.com/pr...
Programming is up to you! Be sure to check out David's awesome build of his DIY Stream Deck "Stream Cheap" for which I drew a lot of inspiration for this project. www.partsnotinc...
Like the Midi Fighter 3D? You can buy one here (I love mine, no affiliation)! store.djtechto...
Support Maker's Muse on Patreon
www.patreon.co...
50 3D Printing Tips and Tricks - gumroad.com/l/...
3D Printing Essentials - www.amazon.com...
Every time you said "I'm not great at coding" I thought it would be a segue into a Skillshare advert. Thank you *so much* for not doing that.
I was thinking the exact same thing! XD
Ha.
“I am not great at coding”
*AND THAT’S WHY I USE SKILLSHARE*
*IT’S A PLATFORM WIDE LEARNING PLATFPRM*
*IFF YUU WANT SMROE TO DTIS WEBSITR I CAGNM J GIVE U 100# dev OFF SGS GFVDGVUUS*
Instead of making it type the hotkeys from the arcuino, you could make it press function keys from F13 to F24 (which actually exist, they just aren’t on your keyboard) and then use autohotkey to code more complex functions on the press of the buttons, so it would make it a bit easier to use and reprogram, since you can write functions only for certain apps or make it do some low level windows stuff.
Yep that's exactly what Davids code does it works very well
Maker's Muse oops, sorry, I didn’t look at that page
@@MakersMuse I've done ctrl-f13-24 for stuff like mic mute and also media keys with that same library as you have (I think? It's Nico Hood's hid-project). Macros are a lot easier to do when the macro code has more access to the computer.
Saw the thumbnail and wondered how you'd managed to print those buttons so smoothly! Love the speckly filament for the case though.
He didn't print the buttons
Jack Sloan pretty sure Keef figured that out... his use of “though” in the next sentence suggests as much.
quen e o melhor jogador do mundo
Obviously he didn't print the buttons, he said that was what he thought from *before* watching the video. The thumbnail was a little confusing for me too. -- but the video cleared it right up.
I saw This Old Tony's collaboration with Alex French Guy cooking, and if my hopes and predictions are correct, I'd love to see one between you and Angus. Not sure how, but tech and cooking seem to go hand in hand like... like chocolate-covered strawberries!
This is awesome! I love it when the maker community improves on each-other's projects, everyone brings something different to the table. I really appreciate the shoutout too, and I'm glad you found my stuff helpful
Thanks dude! Really loved your write up and build. Big influence
Keeping something always plugged in to the pro micro's USB port (and well isolated from strain) is a good choice. I've built a handful of PS/2 to USB keyboard converters with those boards and the TMK firmware (so I can use my old keyboards on modern computers), and those micro USB ports are definitely the weak point of the pro micro clones - they don't survive many cycles, either not connecting internally or tearing right off the board far easier than they ought to.
I made the original streamdeck that you used as your base. His arduino is set to utilize the F13-20 keys that most keyboard do not have, instead of modifying the code to change that I instead utilized AutoHotKey which is a program that lets you write scripts to run on specific key presses. If you use that instead the programming for it is a lot easier. The downside is you wont be able to take this to different machines since the arduino will still be sending the F12-20 keys. It does make it really easy though if you are using it on a few machines since you can just copy around the AutoHotKey script and load it up on each machines so its ready to go when you plug it in and press a key. You can also do some advanced things like using key presses to compute things for you which is nice if utilize some formulas, you can just map a key to run the formula with the values highlighted. Ive seen some interesting stuff with it. It also makes it a lot easier to change what the buttons are doing since you can just modify the script and rerun it or run a different script which is easier than having to reflash the arduino if yours is anything like mine where i have to short power and ground to do a reset twice to load up the bootloader for it to accept uploads.
If you have files that go with it, bake in a USB hub and either a throwaway flash drive, or heck, an SD card reader would be neat. Then you'll always have the latest version of your scripts and an installer for your program or whatever.
I got a X7g-100 a while back to set up a macro keyboard. I use a program unoriginaly called "Lua macros" to load a set of autohotkey scripts. Don't know if it's the most elegant solution, but it gets the job done.
That Idea with AHK and the F13-F20 keys was the exactly same as I thought before reading your comment. Would do exactly the same way.
Oh man, well done. I actually got all the parts to make one of these back in Feb.. But as usual it's another project that I didn't get around to starting even after I fully planned it 😅
Your's looks great
It's ok I've literally has these buttons since I was in uni >_>!
I've done the same with ordering parts for a small combat robot as I got inspired by Angus here.
That was well over a year ago (if not 2) I think and well yeah I don't even really have a base body yet......
You could add LED feedback with the same kind of matrix configuration.
Also you could put a knob or two (or three) on the side to adjust things like volume, led brightness, zoom...
Hey Angus. I like that you are so honest in what you are not good at yet. And as me and many others like and use your designs we are happy to help you with coding and understanding the microcontroller world.
I think its really important to show works in progress, less than perfect results. If people see only the perfect results, not the hours of work and iteration and failure, its kinda like the social media effect where people compare themselves to curated and idealized versions of other people, it can be discouraging. I like the openness about still learning, being part of this community we are all voracious learners and just want to keep improving, there's always something new to learn or something we know enough of that we want to really master.
I like those arcade buttons with the concave surface and micro switches, nostalgy from playing too many arcade games in the 80s.
I will be watching for v.2 closely. This is something right up my alley and with you, I am very bad at coding. I've been trying on and off for over a decade and its just a type of logic my brain doesn't compute.
Pull down resistors are often used to limit the current. Otherwise you have a dead short from a pulled-up signal to ground.
I made this kind of keyboard some time ago, to use with some tricky hotkey combinations in blender. But I used small fiddly buttons so it never got much use. I have already ordered these big buttons that can be quickly slammed. I have the programming done already. Thank you for the inspiration!
I was using the MIDIUSB library when I was making a similar project. It’s easy to use, I recommend it. It has well done examples that perfectly teach you how to write/read MIDI commands through USB
Am I the only one who really wants that RGB wall lamp thing?
Holy crap, $200 to $300 USD
@powerChriZ Thanks for the name...now to find a tear down....so I can clone it :)
I wouldn't bother unless you have lots of spare cash lol. I considered getting them but just for 1 the price is ridiculous. And i wanted multiple; would have cost thousands... just for cool lighting.
@powerChriZ you could probably figure something out with frosted panels (material of your choice) with some adafruit neopixels behind it so you can address each one separately. It shouldn't be too hard to wire in a mic and write code to respond to music like the panels do.
It looks very vibrant and bright in person. But you're definitely paying for it.
Really enjoyed your admissions here, it's always nice when someone can admit a lack of expertise when it's presumed by so many. I really love your videos and I've learned a ton about modeling from them and just reworking my own thought process when it comes to designing. I'm currently in my first university CAD class and I'm constantly surprised how much easier it is after playing around for a hobby. Even if I do hate Solidworks.
You can still use the midifighter to trigger hot heys. I use Bomes MIDI Classic. Really simple, just learns the midi and then you set the hotkey. I've done this with a Launchpad.
In the scheme with a resistor you have a 220 Ohm one. Well done though. And the Prusament looks amazing.
Yeah just an example I grabbed from Arduino not related to the project :) pull up was far cleaner and easier!
For macro, midi, DIY game controllers, flight sim inputs, and other USB HID interfaces both analog and digital I highly recommend the Teensy line of microcontrollers developed by PJRC. I've used them for a few different USB projects. They sport a huge amount of features and there are several to choose from to fit your application, and the best part is that they're completely coded using the Arduino IDE (though with a lot more programming features / commands available).
Nice. I actually just finished making a simple Pro-micro setup for a friend this last weekend. It takes a Controler Thumbstick input and sends wasd keys to the pc.
I've definitely been wanting to build one of these as a streamdeck style input.
Neat. Trust me, your wiring isn't THAT bad. However, I think I'd use spades and crimps. Alternatively, heat shrink sleeve over the soldered connections :-) That aside, a pleasing interface project. I, like you, can't program to save my life so I use examples I find online too! I love the design process, that's why I make stuff.
So true
Okay. First off I love your account and creations. My friends and I are actually making a 100%, 60% and 50% grid keyboard using clear macros and an Audrino Pro Micro too. We are also 3D printing the key caps and laser cutting the case in layers. So this is exactly like what we are doing. I'm happy to share what we have so far and help if you want. We are massive tech nerds and also AUSSIES.
I made one a couple years ago for setting up autorun and macrokeys. was a fun project
That is a cool project. I will have to add it to my list of things to do.
Very cool project. I can think of many uses.
Nice project and if the code works then it’s good. Doesn’t have to be pretty to work.
Thanks for the idea of sourcing and using panel mount USB type B connectors. I just ordered some for a current & future project.
Amazing design! Functional and aesthetically pleasing! Nice job!
V1 already looks amazing I can't wait to see version 2 or 3
It's great to see that nice skill balance!
I'm so-so at designing, talented at programming but absolutely horrifying at electronics..
Watching you going over this type of project really motivates me a lot, I've got a LOT of electronic-based 3D print projects, and they're really intimidating..
Atleast you're honest and don't annoy yourself with resoldering black wires just for the video ^^
Use QMK! It’s a super easy and powerful keyboard firmware which runs on your promicro! It’s also really well documented and has a great support community on reddit and discord!
Very easy, no programming, plug-n-play solution:
1. Buy a USB keyboard.
2. Open up the keyboard and follow the tracks to the small circuit. If you have a tester, put it in continuity to test the tracks, it's even easier that way. Note down what connectors give you the keys you want to simulate.
3. Solder cable between your buttons to those connectors.
4. Plug it to your computer. It will detect it as a USB keyboard. Press the switches, it will give you the keys you selected earlier.
I have done that a few times. It's the easiest electronic project you can do. You don't need to understand anything about electronic nor programming. And it's so satisfying to plug it to the computer and it just work. No need to install anything. The only issue is that you can't easily reconfigure it to a different key mapping...
If you want to keep using arduino, I would probably use the arduino code to send F13 through F24 and then use AutoHotkey or something similar to actually control the hotkey functions. This would allow you to have a nearly infinite number of configurations without having to reflash the arduino. There is a way to put multiple configurations into the arduino itself, but idk how to do it.
As a professional software developer, I feel your pain, a lot of the open source Arduino stuff isn't great learning material. -- Though HID device projects are super fun. Before the ATMEGA 32u4 was common place, we used to use a library called V-USB for the ATMEGA chips (no arduino required, chips are super cheap like, $3 or $4), with a little bit of extra hardware (2x 3.6v Z-Diodes, 16mhz oscillator, some caps, 7805 and two 10k pullups) you could emulate a USB 1.1 device by bit-banging the IO pins. I built a HID joystick a while back with that approach, and yes, the built in pull down resistors were a life saver, you just plugged one button side into ground and the other directly to one of the pins. Was super fun for Mame games for awhile (p.s. Don't solder arcade buttons, use the crimp connectors that slide on instead!) -- Seems like your device might be useful for an Elite Dangerous playthrough, or maybe some common 3D modeling operations? Keep in mind you're not limited to keyboard keys with that, you can send mouse commands, joystick commands... You could even integrate it with a timer or Wi-Fi, and write an app the let you use your phone as a hardware keyboard. -- Heck, you could also throw a USB hub in there, so you could plug more devices into the back? -- Anyway, thanks for posting the video, keep up the good work, Angus! 👍👍
I agree, "a lot of the open source Arduino stuff isn't great learning material". Most of the material is very application specialized and small changes break things. It's very easy to run into library conflicts and there isn't great information on how to properly deal with such conflicts. I even ended up creating a hack job of a library for running two Pololu dual-vnh5019-motor-shield boards since it's common to run 4 motors. The stock library was only designed for a single board and no one could explain how to run 4 motors with two shields. I ended up spending weeks dealing with conflicts using the servo library and this 2 shield board - 4 motor setup only to find out about pin and library conflicts.
@@WaltSorensen exactly. And a lot of that could have been avoided if the developers had used any sort of best practices. Instead you have the blind teaching the even more blind, with the mentality that as long as it "works", it's golden -- no SOLID (completely closed for extension except by modification, zero objects, etc.), no unit tests (can the Arduino IDE even run unit tests?), and zero organization... It's very common to find stuff that's just a hot mess. :(
Michael Jensen the Arduino IDE doesn't do unit tests, but with github and travis CI (or another CI service) you can run some tests. I helped pololu add a very basic testing environment to one of their libraries which they then used as a template to test other libraries. I wouldn't call it a true unit test but it's at least something of a test.
was just looking for something similar to this the other day, but I'm looking for probably a 1x4 or a 2x3. This'll work out great. Timing is everything, and this came out just at the right time. Thanks! :)
Can I just say I love this kind of video and whole heatedly and enthusiastically encourage you to make a lot of videos like this?
This kind of reminds me the "El gato stream deck" but this one looks so much better a retro. Definitely a good project to enjoy and upgrade to be a beast!
bravo! This is practically what i need for my project of a custom controller. Still in the parts assembly phase. I'll try to send you updates or something.
The cycling looks to be a result of not using oneshot logic. The processor will register that button press several times with even a light tap. If you're not aggressively macro-ing, you can probably just add a time delay after each interrupt to space out the commands.
Let me know if you're completely stuck. I've been programming a stream deck for our channel lately, but I do a lot of work with Arduinos (Especially now that Marlin is so popular).
I've seen commercially produced stuff that has similarly ugly wiring inside it... Some manufacturers just use whatever they have available, and sometimes it's just cheaper to pay someone to solder it all than to develop a neater method. If it works, it works.
For anyone trying to map keys A-Z with this code delete the KEY_F13 and replace it with ('a'). Replace A with whatever letter you want to control.
I know you are probably using solder with flux core but if you want better soldering you need to add more flux, the flux core is burning so fast that it doesn't really protect the solder especially if you are soldering to bigger parts such as button connector etc. it's because it absorbs more heat causing the flux to burn away while you trying to warm it up
Very nice and looks like a fun project.
This is CRAZY! I was JUST thinking about something like this on my way home from work!
If you don't want to code at all then look into a cheap Chinese DIY arcade joystick kit. They're on eBay for really cheap and they work as a simple USB interface that shows up as a joystick. Then just use a programme like 'joy to key' to add your macros.
I used this when I first got MS because I had nerve damage to my left hand so I couldn't always tell where my fingers were. I had macros for things like Adobe Premiere Pro so I didn't have to use complicated key binds and I mapped the joystick to be WASD keys so I could move the whole joystick to walk around in games. Thankfully I don't need to use this now as after a lot of physiotherapy can *mostly* use my hands properly again - but that was my solution to the problem and I didn't have to learn a single line of code.
(I don't have anything against coding. I would love to learn and I know how useful it would be. I just would have taken too long to figure out and I needed a way to use my PC as quickly as possible.)
This is sort of random, but love your wall art (the plugged in thing which looks as though it can be modified and yah, changes color). It looks awesome.
Angus! YES!! Ive been wanting to make my own MidiFighter since its release! Just recently got my Printer and I think its finally happening! :D
Soldering arcade buttons? You monster! They eventually die, so you should just get some spade terminals and crimp the buggers ;)
Hah! Yeah, in the V2 and I doubt I'll punish them as much as in a real arcade!
Just don't solder the crimp connections or everyone will yell at you in the comments :p
How many clicks to death? Because in many cases I’ve found that the cost/space/effort vs lifetime make it more sensible to just desolder and replace old switches instead of adding spade terminals.
The button eventually fails, not the connection.
If you do not need to take it apart, it is better to solder it.
I also have zero experience with coding but this would be awesome to use as a streamdeck like I've seen retro Ralph using to exit one and enter another arcade emulator.
Taran Van Hemert will very pleased! :) You should send one to him!
I just want to add that not all Arduino boards support keyboard write. Only the Leonardo, Esplora, Zero, Due and MKR Family support the keyboard write functions.
Every time I see something cool or think of something I write to u.
Saw a clock thats round with LED lights around circle on the back where u can't see them. They all are facing in the circle and when some1 puts there finger in the middle of circle. The shadow of there finger makes all three hands on the clock.
Anyway. Enjoy watching ur vids
Well I don't know much if anything about coding myself but have you maybe thought about adding in some weights to the bottom and non slip pads so it sits more stable and still on your desk?
Cool filament!
You are doing so well keep going love all the vids
Even though you don't Know a lot about electronics or programming, I like how you didn't said a lot of bs :3
hello!
you don't need soldering for this project at all\
there are crimp terminals for both buttons and arduino pins wires ends
Add a 3 position or dip switch to turn the 9 buttons into 27. Also, the Teensy LC might be a better choice for the controller.
I design a lot of custom pcb's but haven't got into designing mechanical stuff
I have Sovol x1 for 3d printing but like you I'm working learning.I can modify your code to support the colors however you want.
I would change the cpu to adafruit itsy bitsy m4 so you can use circuit Python for code.
Great video, glad to see you branching out
Great video as always. I would have prefered a teensy board for such a task, but arduinos are much more popular and thus better/more varied documentation is available
Teensys are awesome, but they cost 20$ compared to 3$ for the pro micro and are super overkill for this application. In fact, running the pro micro at 5V for the increased clock speed is already totally overkill. So I'd say the pro micro is by far the best choice...
Lucky for you learning to code with arduino is super easy.
I'm equally horrible with code, so i think i'd just try JoyToKey. They should be button inputs into the PC, and even though the programm originally existed to use an xbox controller wirh games that had no support for it, i found it takes any button input. It let's you assign up to a 4-chain command and also has options for auto-repeat and so on
this is sooo cool! now I want to make my own controllers as well.
oh and that Drum & Bass beat you did on the end was sick!
That's awesome and I was just thinking about making something like that, but I think I have decided to just buy a Stream Deck for my Fusion 360/Inventor shortcuts and hotkeys. And it's not out of laziness, but since I know I'm going to change the layout all the time until I find somthing I like, I dont want to keep remaking pictirs
You might want to look into using a matrix keypad wiring. It requires less wiring and has become a rather standard way to wire up multiple buttons. So much so that the Arduino Playground has a Matrix Keypad library and several sketches using it.
Problem with matrix wiring is that without proper scanning code it can leave dead spots when you press multiple buttons at the same time. (That's why some keyboards have trouble with dead spots.) Also you can't just wire each button to ground...
Cool you have a G5! I bought a G7 and trying to get back into 3d printing as I havent 3d printed much
I too love arcade style buttons and the satisfaction of printing out your own designs. :{J
Got me inspired to build a shortcut keyboard for Fusion 360 👍
this looks really cool , perhaps making one for vtubers to change their expressions plus a sound board would be dope to have
Hey Angus, check out autohotkey, it might look scary but it's super easy once you get the hang of it.
Nice!, I have some ESP32 boards laying around and this got me thinking that i could use Bluetooth and make a wireless version
Nice work! Then i think you could make a loop-station. If you make it, you are pretty great guy lol
If that's what you're after you definitely need to subscribe to Look Mum No Computer!!! I'd love a loop machine though.
@@MakersMuse lol Yeah i did it lol
Anyway loop machine gave us nice life quality. Like washing machine lol.
Don’t worry, dude, I designed and coded a system that takes a series of images and creates a 3D STL from the data but even I feel like a total noob. It just takes time and a desire to learn :)
pretty sure there is a way to map normal shortcuts on a midi controller. though it's probably super conveluted
Love the idea of a hotkeys pad..maybe i would allow sometida space between buttons to add sort of a template with the keys i'm using according to the software..as the original idea of the Arduino code maker that had images on buttons. Thanks for showing this Angus. 😁👍
Realy cool Project.
I thought about that aswell, but i wanted to know what i push and maybe rebind it and other Stuff so i bought the Elgato Streamdeck.
But if you want more like to see is it active or not you could use a transperent Filament and emmbed LEDs on it so you can toogle (example on obs) you're Cam, switch a Scene or
do other cool stuff like that. 😁
(Maybe you can use it to fish on a MMORPG and do things that you cann't programm to any mouse or Tastatur yet) 😅
You can design a basic PCB to help with the wire mess :P
How about making it modular, using magnets and some kind of terminal to link different types of macro pad. Like potentiometers to provide analog input, or slide pots, maybe even a mini joystick.
You should put your code on github to maintain some version control. Code lesson one: always start with version control, it will help save you from yourself.
I hope the lamp in the Back is also 3d printed!! ^^
Our Angus, Impaler of Creativity and Wiring since... Forever 😂 💟 👍 💕
I used to use something called "Xkeys".. apparently they're still in business, building pricey industrial macro keyboard systems.
Great video. Looking forward to more projects like this.
Love this and really look forward to more contel like it, combining two of my greatest interests! I would particularly like so see exploration into IOT using esp 32 or esp 8266
Now there is an idea, I want to make a custom controller for simulator and was thinking of hacking up an ol keyboard. It never crossed my mind to use Arduino to mimic these control inputs instead, allowing me full creative freedom of how I can design it.
This is awesome! Did you ever complete a V2? Thanks for sharing!
I just subscribed and I am excited to see whatelse is on your channel.
Hi.
Nice job.
Can you help me out with digital caliper read and send the measuring to the PC (to CAD, or Excel cell) after pushing a button? (May be more buttons - 4 pcs.: tab, enter, /2 and just send measuring)
a fun coding for arduino is "xod" it is block logic not script. its alot easier to follow
love your content, I always find your thought process fascinating
What should be the size of holes ..pls??
Can i ask how you design something for 3d printing and make everything fit? Do you repeatedly print "bad brittle shells" as a prototype to make sure everything fits perfectly? or are your prints spot on? if so, how do you do it? Could you make a video on your process on designing something? :)
Coding? Umm, hmm, yeah... umm..... **head explodes**
Me neither, I'm a nuts, bolts and wire kinda guy myself too, lol.
It really is funny, you and I are in such similar boats, I'm just on a more basic project :p
I'm doing the DIY Midi fighter; so far I've used someone else's STLs (which I fixed/modified), a teensy LC with some plug and play MIDI code I found online, and then using a generic "flexi" midi controller script for the DAW I used (the script made by a user). I know nothing about coding but just enough to make this thing work :P
Oh and I can't decide on what USB adapter I want; I actually think Micro USB to Micro USB would be nice, since I have a lot of those cables. Also, if I get a few adapters, they can be replaced when worn out.
Nice work. If your device is big I recommend USB-B for superior durability, as those micro ports wear out just like the cables do.
That would come in so handy at my work’s CADD station.
I don't know how many buttons I'll need, so I should make a modular one where more button modules can be added
I love seeing your work Angus and I think this is a fun project but just to be a miserable pommie bastard I have to say that for this job I use a Logitech G13 which I got second hand off eBay. I know it's supposed to be used as a gaming pad but it works amazingly well as a macro control surface. It can store up to 73 macros per application profile but I tend to keep it down to about 20 or so. I use it for both Reaper and Davinci Resolve. Nonetheless, keep up the good work.
Looking forward to watching more videos like this. Just wondering if you have thought of taking a product and redesigning something about it to make it better. Like taking a mouse, redesigning the shell and buttons to better fit you or your needs.