A hot-key, shortcut, or macro keyboard built with an Arduino Pro Micro. This macro pad has as many features as it does mistakes during the design process. I wanted to make a macro keyboard to improve my workflow with some CAD programs. I added some of my favorite ideas from other's creations, like two rotary encoders, a mode switch, and a breakout to use a foot-petal for discrete keyboard stealthiness.
Some basic trouble shooting:
4. Make sure the Arduino Micro 32u4 is selected when programming this board. Tools> Board> Arduino Micro.
5. Make sure all the solder jumpers are soldered! You’ll get really weird results (phantom keys) if you miss a jumper.
6. You may have to hold down the reset button, hit upload sketch, wait for the IDE to try to ‘upload’ to the Arduino, then release the reset button.
The boot-loader for uploading is a short window in the Arduino Pro Micro. The Pro Micro wants to default to the USB HID mode. Catching the short window for uploading a program might take a few tries; i.e to get a feel for the timing (my experience).
Ryan's Pro Tips for navigating the <keyboard.h> and <mouse.h> HID library commands.
=============== Keyboard Control================================================================================
Keyboard.write(); Sends a keystroke to a connected computer.
This is similar to pressing and releasing a key on your keyboard.
Will send a shift command if applicable. Example: Keyboard.write('K') will automatically do SHIFT + k.
Can also accept ASCII code like this:
//Keyboard.write(32); // This is space bar (in decimal)
Helpful list of ASCII + decimal keys: http://www.asciitable.com/
Keyboard.press(); Best for holding down a key with multi-key commands; like copy/ paste
This example is [ctrl] + [shift] + [e]
Keyboard.print(); Sends a keystroke(s)
Keyboard.print("stop using aim bot"); // types this in as a string
Keyboard.println(); Sends a keystroke followed by a newline (carriage return)
Very practical if you want to type a password and login in one button press!
SOMETIMES, applications are coded to recognize Keyboard.press() and not Keyboard.write() and vice versa.
You might have to experiment.
=============== Mouse Control================================================================================
Mouse.move(x, y, wheel); Moves the mouse and or scroll wheel up/down left/right.
Range is -128 to +127. units are pixels
-number = left or down
+number = right or up
Mouse.press(b); Presses the mouse button (still need to call release). Replace "b" with:
MOUSE_LEFT //Left Mouse button
MOUSE_RIGHT //Right Mouse button
MOUSE_MIDDLE //Middle mouse button
MOUSE_ALL //All three mouse buttons
Mouse.release(b); Releases the mouse button.
Mouse.click(b); A quick press and release.
Buy the PCB on Tindie: https://www.tindie.com/products/ryanbatesrbg/pcb-for-programmable-macro-keyboard-encoders/
Here's an 8 key or( 6-key + 2 encoder ) version of the same thing. The schematic is cleaned up a bit; now slightly more intuitive. All features remain in-tact. A few new feature include:
Fits either Arduino Pro Micro- the mini USB or micro USB version.
Breakout for I2C (add an LCD). Note VCC =3.3V