the programming tutorial was exactly what I needed to start making my own DIY macro keyboards. Thank you soo much. I built the hardware for three different sized keyboards. But none of them have code.
You've made a very clear explanation! Thanks to Maker's muse for the inspiration and your video with the explanation, I'll now be building my own macro keyboard! You're awesome!
@@ConstantijnC thank you! The parts will have to be shipped all the way from china, so I'll have to wait a bit before starting, but I'm doing some research first, so this video is fantastic. Especially for the code
Cool videography. That code looks very useful too. Why do you use delay instead of a millis flag routine and potentially multiple key press situations? I have an old USB auxiliary keyboard that doesn't work. I think I can make it work with this code. I've been meaning to figure out macros and a way to speed up editing my final transparency negatives for PCB etching in GIMP. This looks like just the info I needed. Thanks! -Jake
Thanks man! I used the normal delay because I wanted to keep this code as beginner-friendly as possible. Since basically all stock Arduino examples use the delay routine, I went with that one as well, just to match the programming style as best I could to those examples. It’s the same reason why I decided not to multiplex the buttons, although that would have been the neater way to do it. I‘ve never really used an external hotkey keyboard before but I think it’s a really convenient tool. I think that this will especially be useful for CAD and video editing for me in the future :)
What's the point of using buttons for windows shortcut keys? copy (ctrl-c), paste (shift-insert or ctrl-v) , Shift-F11 , Shift-F12, task manager (CRTL-Shift-Esc), etc. It's usefull though such a devce, but for application specific shortcuts. I built mine (thing 1043977 on thingiverse) mainly for sketchup. Learn Windows shortcuts and benefit from that on every machine, don't waste buttons on that :-)
I'm just using those shortcuts as an example to show how easy it is to implement and automate basically anything you want. On top of that, some people just like to make stuff. Some coding, some cad design, printing and working with electronics might just be enough for people like me to start a project like this one ;)
Oh wow how did i miss this video by Angus? I was going to make myself a programmable numpad that i can set beside a tenkeyless keyboard to the right and to the left, and give it a nice encoder knob which could serve for volume, plus mode buttons for overlay modes, so i could switch different control modes, maybe the knob can pull double and triple duty as something else too, like second scroll wheel or video scrubbing or MIDI device. Thinking of making it wireless. I don't see much reason to use USB specific Arduino chip for HID emulation and MIDI emulation, at least in a device used personally, i tested HID emulation on Digispark ATTiny85 with V-USB and i didn't face issues. I can have computer side an ATTiny driving an nRF24L01, a single one for a bunch of input devices i might yet make, and a network of nRF24L01 devices with ATMegas or even STM8. Didn't get around to though. Of course ATTiny is only available in short bursts while USB protocol is suspended, but nRF has ample FIFOs so it's not a big deal.
Nice work, really interested in these sort of projects! I just got done assembling a custom keyboard with a 3D printed case and configuring it with the QMK firmware. I've started playing around with 3D printing my own keycaps, but I can't get the stems to behave like I want them to yet; they either aren't sturdy enough or don't fit into the space around the stem without lots of manual filing (using Kailh Box switches). I'll see if I can adapt this reduced stem design that you used for the buttons, so thanks for that idea if I get it to work!
You have to be aware of your wall thickness when designing for 3D printing. Make thin walls the thickness of your nozzle diameter or a multiple of that. With a 0.4mm nozzle, that means 0.4, 0.8 or 1.2mm wall thickness. With anything thicker than that is not as important to follow this rule. That's why I didn't fully build around the stems. Of course you also have to make sure that your printer is not overextruding and that you have your tolerances right. I find a 0.1mm tolerance on both sides of the fit to be perfect for a sturdy press fit. Then, if it turns out too loose or too tight, you can adjust your extrusion multiplier slightly (+/-1%) to make it fit perfectly.
hello, i really enjoyed your video and this is exactly what i was looking for. I'm using the code you wrote and i ran into trouble when i write the code to the arduino micro not pro, the button works in a loop and always turns on and does not respond to the button press as if it were pressed all the time maybe have any ideas on how you can help?
this mans a God. This is exactly what I was looking for! Also thank you for also hating on the micro USB port hahaha, anyone who knows it knows its trash
I am trying to add a rotary encoder instead of the push button middle top row. Any help with integrating the code into this sketch would be appreciated. Thanks for the project.
I think easiest would be to copy this encoder library: github.com/PaulStoffregen/Encoder/releases/tag/1.4.1 into your arduino library folder (usually located in your documents folder) and include it with: #include Encoder Enc_0(2, 3); long oldPosition = -999; and this in the loop(): long newPosition = Enc_0.read(); if (newPosition > oldPosition) { //your keyboard command here oldPosition = newPosition; } else if (newPosition < oldPosition) { //your keyboard command here oldPosition = newPosition; } Pins 2 & 3 are interrupt capable pins so it might be beneficial to use those for the encoder. That might make it feel a bit more responsive. But I don''t have an encoder handy so I can't test it. I also haven't tested this code but I'm pretty sure that something like this should work. There are also plenty of other encoder libraries out there which offer things like acceleration control. You could also just program acceleration control yourself, which should be a nice exercise :)
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)
HELPPPPPPPPPP SO this is my situation and need help, I got an Arduino Pro Micro and MX keys, I've programmed it to send (SHIFT +A-J) fire it up open note pad, and bingo works ABCDEFGHIJ / Opened OBS assign the hotkeys to my scenes, scene 1 SHIFT + A etc , test it with my computer keyboard and it works... but when I try it from my macro keypad it jumps to other scenes or nothing at all.. any help?
Hey, my first guess is that you need some sort of delay between sending shift and the letter. Maybe those two get sent so fast in succession that OBS doesn't recognise it
That’s a DuPont crimp connector. You can get sets of many different sizes for very cheap online :) but there are also a lot of other kinds of board to cable connectors on the market
John Marbles Aw great to see you here dude! When I was talking with you about the project I was actually thinking about something slightly different. But then I got sidetracked by Angus and changed my plans 😄
@UCJhgIOJjB2xFJiwqVD3J6qQ im a beginner when coming to Arduino, but im learning, is there a way you could create the Perfboard circuit layout in Fritzing so I can understand what has to go where, because im not able to make this out on my own looking at the perfboard images and what components and wires should go where, that would be really appreciated
Hey, the connections are already all layed out within the code itself :) Button_0 connects between Arduino pin 2 and ground Button_1 connects between Arduino pin 3 and ground Button_2 connects between Arduino pin 4 and ground Button_3 connects between Arduino pin 5 and ground Button_4 connects between Arduino pin 6 and ground Button_5 connects between Arduino pin 7 and ground Button_6 connects between Arduino pin 8 and ground Button_7 connects between Arduino pin 9 and ground Button_8 connects between Arduino pin 10 and ground If you want to use different pins, you can just redefine them in the code. The line "pinmode(Buttons[i], INPUT_PULLUP);" determines that the connection is indeed to ground and not to 5V. That's all there is to it. The resistors which you can see me add in the video are just for the LEDs, because they would quickly burn up without those. Good luck!
Constantijn thanks, I think I understand it. It was the ground connections that I was confused by. I see that all buttons offfcourse need to be connected to ground and a pin. (And one ground to the led)
Hi, ich habe versucht das Keyboard nachzubauen. Ich habe das gleiche Board verwendet (Arduino Pro Micro), den gleichen Code, etc... Ich habe nur dummerweise das Problem, dass mein 10.er Pin durchgängig LOW zurückmeldet und nicht nur wenn ich den Taster drücke. Nach verschieden Tests habe ich das Gefühl, dass dieser Pin keinen PULL-UP Widerstand besitzt. Ich habe es nachdem es mit 10 nicht funktioniert hat auch noch mit 0, 1, 16, 14, 15 und A0 versucht. Überall das gleiche Problem. Das heißt meine ersten 8 Hotkeys funktionieren aber der neunte (Pin 10) nicht. Ich habe es auch mit mehreren Boards versucht, hilft auch nichts. Hat jemand eine Idee?
Hey, das ist mir bisher noch nicht aufgefallen, aber ich habe leider gerade auch nicht die Möglichkeit um das selbst zu testen. Ich meine aber, dass alle Pins einen int. Pullup haben. Hast du denn mal versucht, ob ein externer Pullup (ca. 20kOhm) hilft? Von welchem Hersteller ist dein Pro Micro denn und sind alle deine Pro Micros von demselben Hersteller? Vielleicht liegt das Problem beim Bootloader? Und hast du etwas an meinem Originalcode geändert?
@@ConstantijnC Den Hersteller weiß ich nicht mehr. Warum es nur bei Pin 2 bis 9 funktioniert weiß ich immer nich nicht, allerdings habe ich jetzt einen 1MOhm Widerstand dazugeschaltet - jetzt klappts. Aber danke für die Hilfe.
Ey this guy can read this too ;) And my original thoughts were to use different switches and to slim down the code dramatically. Doesn't that at least count a little bit?
The quality of this video is just stellar. Also the little jokes like unprinting the buttons were just great and had me smiling the whole time
Thank you so much! 😊
thanks a lot
you really take care of beginners who wish to have their extra keyboard
best wishes to you
from Hong Kong
Deine Videos sind sehr sehr gut gefilmt und geschnitten. Danke dafür!
kielerkarl Danke dir für den netten Kommentar 😊
That opening shot was great. I liked the teal color on the black background.
Cheers for this! Making up a macro pad during quarantine to use when I get back to work.
the programming tutorial was exactly what I needed to start making my own DIY macro keyboards. Thank you soo much. I built the hardware for three different sized keyboards. But none of them have code.
Thank you for this. Just getting into programming Arduino's and this was exactly what I've been searching for.
Really nice Design bro
You've made a very clear explanation! Thanks to Maker's muse for the inspiration and your video with the explanation, I'll now be building my own macro keyboard! You're awesome!
Thanks! And good luck!
@@ConstantijnC thank you! The parts will have to be shipped all the way from china, so I'll have to wait a bit before starting, but I'm doing some research first, so this video is fantastic. Especially for the code
Really enjoyed the two videos I've watched so far - subscribed!
like the "search highlighted word "
nice build
Beautiful work keep it up
Cool videography. That code looks very useful too. Why do you use delay instead of a millis flag routine and potentially multiple key press situations?
I have an old USB auxiliary keyboard that doesn't work. I think I can make it work with this code. I've been meaning to figure out macros and a way to speed up editing my final transparency negatives for PCB etching in GIMP. This looks like just the info I needed. Thanks!
-Jake
Thanks man! I used the normal delay because I wanted to keep this code as beginner-friendly as possible. Since basically all stock Arduino examples use the delay routine, I went with that one as well, just to match the programming style as best I could to those examples. It’s the same reason why I decided not to multiplex the buttons, although that would have been the neater way to do it.
I‘ve never really used an external hotkey keyboard before but I think it’s a really convenient tool. I think that this will especially be useful for CAD and video editing for me in the future :)
Thanks this really helped me wrap my brain around this project.
Wonderful graphics for the video.. makes the content very intuitive :) !!!
What's the point of using buttons for windows shortcut keys?
copy (ctrl-c), paste (shift-insert or ctrl-v) , Shift-F11 , Shift-F12, task manager (CRTL-Shift-Esc), etc.
It's usefull though such a devce, but for application specific shortcuts.
I built mine (thing 1043977 on thingiverse) mainly for sketchup.
Learn Windows shortcuts and benefit from that on every machine, don't waste buttons on that :-)
I'm just using those shortcuts as an example to show how easy it is to implement and automate basically anything you want.
On top of that, some people just like to make stuff. Some coding, some cad design, printing and working with electronics might just be enough for people like me to start a project like this one ;)
Oh wow how did i miss this video by Angus?
I was going to make myself a programmable numpad that i can set beside a tenkeyless keyboard to the right and to the left, and give it a nice encoder knob which could serve for volume, plus mode buttons for overlay modes, so i could switch different control modes, maybe the knob can pull double and triple duty as something else too, like second scroll wheel or video scrubbing or MIDI device. Thinking of making it wireless. I don't see much reason to use USB specific Arduino chip for HID emulation and MIDI emulation, at least in a device used personally, i tested HID emulation on Digispark ATTiny85 with V-USB and i didn't face issues. I can have computer side an ATTiny driving an nRF24L01, a single one for a bunch of input devices i might yet make, and a network of nRF24L01 devices with ATMegas or even STM8. Didn't get around to though. Of course ATTiny is only available in short bursts while USB protocol is suspended, but nRF has ample FIFOs so it's not a big deal.
Nice work, really interested in these sort of projects! I just got done assembling a custom keyboard with a 3D printed case and configuring it with the QMK firmware. I've started playing around with 3D printing my own keycaps, but I can't get the stems to behave like I want them to yet; they either aren't sturdy enough or don't fit into the space around the stem without lots of manual filing (using Kailh Box switches). I'll see if I can adapt this reduced stem design that you used for the buttons, so thanks for that idea if I get it to work!
You have to be aware of your wall thickness when designing for 3D printing. Make thin walls the thickness of your nozzle diameter or a multiple of that. With a 0.4mm nozzle, that means 0.4, 0.8 or 1.2mm wall thickness. With anything thicker than that is not as important to follow this rule. That's why I didn't fully build around the stems. Of course you also have to make sure that your printer is not overextruding and that you have your tolerances right. I find a 0.1mm tolerance on both sides of the fit to be perfect for a sturdy press fit. Then, if it turns out too loose or too tight, you can adjust your extrusion multiplier slightly (+/-1%) to make it fit perfectly.
@@ConstantijnC Thanks for your help, adjusting the extrusion multiplier instead of changing the model geometry each time sounds like a great idea!
When i make mine, i’m gonna macro one of my keys to the “unprint” function
thank you
hello, i really enjoyed your video and this is exactly what i was looking for.
I'm using the code you wrote and i ran into trouble
when i write the code to the arduino micro not pro, the button works in a loop and always turns on and does not respond to the button press as if it were pressed all the time
maybe have any ideas on how you can help?
gutes Video, aber eine frage kann man deine Code bearbeiten und wo finde ich diesen?
That's called a perfboard, not a PCB. Otherwise, really cool!
MeepMu Oh damn! Let’s just call it a Perfed Cirquit Board then 😁
this mans a God. This is exactly what I was looking for! Also thank you for also hating on the micro USB port hahaha, anyone who knows it knows its trash
I am trying to add a rotary encoder instead of the push button middle top row. Any help with integrating the code into this sketch would be appreciated. Thanks for the project.
I think easiest would be to copy this encoder library: github.com/PaulStoffregen/Encoder/releases/tag/1.4.1
into your arduino library folder (usually located in your documents folder) and include it with:
#include
Encoder Enc_0(2, 3);
long oldPosition = -999;
and this in the loop():
long newPosition = Enc_0.read();
if (newPosition > oldPosition) {
//your keyboard command here
oldPosition = newPosition;
}
else if (newPosition < oldPosition) {
//your keyboard command here
oldPosition = newPosition;
}
Pins 2 & 3 are interrupt capable pins so it might be beneficial to use those for the encoder. That might make it feel a bit more responsive. But I don''t have an encoder handy so I can't test it. I also haven't tested this code but I'm pretty sure that something like this should work. There are also plenty of other encoder libraries out there which offer things like acceleration control. You could also just program acceleration control yourself, which should be a nice exercise :)
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)
Great implementation.
is it possible to make it wireless with bluetooth? 👀
Super nices Video, ich schau mir die echt gerne an :))
Aber noch ne Frage..
..Wo hast den Lötkolben her ? Der sieht super nice aus :Oo
Fabi du hältsch deine schnautze. th-cam.com/video/hYYMHD76H-g/w-d-xo.html
An alle die sich jetzt wundern: Ich kenn ihn. Ach und das war sein Lötkolben. Jetzt ist es meiner. Er weiß es bloß noch nicht.
Hello, I'm from Design Prototype Tests channel...
HELPPPPPPPPPP SO this is my situation and need help, I got an Arduino Pro Micro and MX keys, I've programmed it to send (SHIFT +A-J) fire it up open note pad, and bingo works ABCDEFGHIJ / Opened OBS assign the hotkeys to my scenes, scene 1 SHIFT + A etc , test it with my computer keyboard and it works... but when I try it from my macro keypad it jumps to other scenes or nothing at all.. any help?
Hey, my first guess is that you need some sort of delay between sending shift and the letter. Maybe those two get sent so fast in succession that OBS doesn't recognise it
Definitely need a panic button on there
if (digitalRead (Buttons[9] ) == LOW) {
launch OpenOffice Writer (Homework.odt) //I don't know code 😞
}
Weiter so deine Videos sind großartig!!
I'm very interested to see how this works when you use the keypad library with it. What would the code than look like?
So cool
Awesome video! Thank you
06:06 unprinted them?
Would this work with a Raspberry Pi Zero W? I’m new to this and want to try this out.
What is the name of that black thingy that is used to join several cable at 5:07 ?
That’s a DuPont crimp connector. You can get sets of many different sizes for very cheap online :) but there are also a lot of other kinds of board to cable connectors on the market
@@ConstantijnC thanks ❤️❤️❤️
How did I miss this being uploaded! We talked about this like 6 months ago!!
John Marbles Aw great to see you here dude! When I was talking with you about the project I was actually thinking about something slightly different. But then I got sidetracked by Angus and changed my plans 😄
@@ConstantijnC yes yes youre right. Different type of keyboard right?
@UCJhgIOJjB2xFJiwqVD3J6qQ im a beginner when coming to Arduino, but im learning, is there a way you could create the Perfboard circuit layout in Fritzing so I can understand what has to go where, because im not able to make this out on my own looking at the perfboard images and what components and wires should go where, that would be really appreciated
Hey, the connections are already all layed out within the code itself :)
Button_0 connects between Arduino pin 2 and ground
Button_1 connects between Arduino pin 3 and ground
Button_2 connects between Arduino pin 4 and ground
Button_3 connects between Arduino pin 5 and ground
Button_4 connects between Arduino pin 6 and ground
Button_5 connects between Arduino pin 7 and ground
Button_6 connects between Arduino pin 8 and ground
Button_7 connects between Arduino pin 9 and ground
Button_8 connects between Arduino pin 10 and ground
If you want to use different pins, you can just redefine them in the code.
The line "pinmode(Buttons[i], INPUT_PULLUP);" determines that the connection is indeed to ground and not to 5V.
That's all there is to it. The resistors which you can see me add in the video are just for the LEDs, because they would quickly burn up without those.
Good luck!
Constantijn thanks, I think I understand it. It was the ground connections that I was confused by. I see that all buttons offfcourse need to be connected to ground and a pin. (And one ground to the led)
My printer doesn't have an undo function. Should I build a new one?
Jinzo Okami Bro the undo function is the absolute best. Do whatever it takes to have one on your printer!
Hi,
ich habe versucht das Keyboard nachzubauen. Ich habe das gleiche Board verwendet (Arduino Pro Micro), den gleichen Code, etc... Ich habe nur dummerweise das Problem, dass mein 10.er Pin durchgängig LOW zurückmeldet und nicht nur wenn ich den Taster drücke. Nach verschieden Tests habe ich das Gefühl, dass dieser Pin keinen PULL-UP Widerstand besitzt. Ich habe es nachdem es mit 10 nicht funktioniert hat auch noch mit 0, 1, 16, 14, 15 und A0 versucht. Überall das gleiche Problem. Das heißt meine ersten 8 Hotkeys funktionieren aber der neunte (Pin 10) nicht. Ich habe es auch mit mehreren Boards versucht, hilft auch nichts. Hat jemand eine Idee?
Hey, das ist mir bisher noch nicht aufgefallen, aber ich habe leider gerade auch nicht die Möglichkeit um das selbst zu testen. Ich meine aber, dass alle Pins einen int. Pullup haben. Hast du denn mal versucht, ob ein externer Pullup (ca. 20kOhm) hilft? Von welchem Hersteller ist dein Pro Micro denn und sind alle deine Pro Micros von demselben Hersteller? Vielleicht liegt das Problem beim Bootloader? Und hast du etwas an meinem Originalcode geändert?
@@ConstantijnC Den Hersteller weiß ich nicht mehr. Warum es nur bei Pin 2 bis 9 funktioniert weiß ich immer nich nicht, allerdings habe ich jetzt einen 1MOhm Widerstand dazugeschaltet - jetzt klappts.
Aber danke für die Hilfe.
@@bacfish_macfly Alles klar. Das ist echt komisch... aber freut mich dass es geklappt hat!
Nice video. I will build this too, but why didnt you directly connect the arduino (per micro USB to USB type A cable) to your pc
Thanks! I did that just because micro usb is a shitty connector type and I'm that kind of elitist I guess ;)
@@ConstantijnC okay. So there's no problem with connecting it directly to the pc?😅
@@timof6364 Nope, none at all :) Good luck!
@@ConstantijnC thank you. 🤩🎉 Nice that you are responding that fast 👌🏼
@@timof6364 That's one perk of being a small youtuber: I can have my comment notifications on without getting spammed :D
Who was the guy in the picture when he minimized the window? I have no clue what the joke is. Can anyone fill me in?
Its Ethan Klein from H3H3 Productions. He and his wife are hilarious. Check this masterpiece: th-cam.com/video/Dkm8Hteeh6M/w-d-xo.html
hii bro can you help me to make one for me i already have all parts so plz reply me
I don't know. Maybe I can :) What's the issue?
@@ConstantijnC bro actually my main problem is wireing, how to connect all switches and 2 potential meter in arduino pro micro pls help ;)
Hi, great video. But where can I find the code?
Thanks! The first link in the description, and then under "Thing files". The arduino file can be found there under the name "Shortcutinator.ino".
@@ConstantijnC Thanks
Tom scott
Wery smort chose of usb type
Not once in this video does this guy have an original thought, "and I agree with...". Blah, Blah, Blah
Ey this guy can read this too ;) And my original thoughts were to use different switches and to slim down the code dramatically. Doesn't that at least count a little bit?
@@ConstantijnC It does, great job.