Introduction: STREAM DECK KILLER and OpenSource

About: I am photographer with interest into electronics and DIY tools.

I always wanted a pretty customizable keyboard, and there are a lot of alternatives lately, but some of them are expensive (like the stream deck, that is around 150USD or the LoupeDeck Live 260USD) and other are cheap macropads that are not easy customizable, like cheap macro keypads that runs QMK using an limited Arduino (you have to program it every time you need new buttons or actions). And some other alternatives require to install special software to run on every PC/MAC you use (Like Touch Portal or Autohotkeys).

So I decided to create an alternative! it is budget friendly (just under 50USD!). does not need soldering and complex wiring, and it is open source (that means that there will be upgrades without the need of buying a new device).

This is the InfiniteDeck!


Why Infinite? Because the combinations of actions you can create are almost infinite.

Supplies

The greatest part of the project is that you need only one component!

Looking for microcontrollers with and attached touchscreen I found the Makerfabs ESP32-S2 Capacitive Touchscreen 3.5" development board. This fantastic board with a touch display is capable of working as a keyboard thanks to the ESP32s2 that supports native USB, and also has a SD slot to store all the profiles and actions (also it is WiFi capable for future upgrades).

Why capacitive and not resistive? Each kind of touchscreen has its advantages, but for a macropad it is better a capacitive touchscreen because is the same technology as your smartphone or tablet.

Step 1: Assemble the Case

You can download the STL files and print them using a 3D print service or asking a friend, 3D printers are really common these days.

I made 2 versions of the bottom part one simple cover and one that has a leg if you like to use the gadgets with a certain angle.

You can find the files HERE

Step 2: Program the Board

This is the more long step, but you will do it once.

  • Download and install Arduino IDE. LINK
  • Install the ESP32 libraries.
  • Select File > Preferences.
  • Copy the next text and paste it in the Additional Boards Manager URL:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  • Go to Tools > Boards: ...... > Boards Manager
  • Type and find on the top search bar "esp32".
  • esp32 by Espressif Systems will show up. Click on Install and wait a couple minutes.
  • Install the LovyangGFX Library. Go to Sketch > Include Library > Manage Libraries and enter "lovyangfx" in the search bar and click on Install in LovyanGFX, and wait for a couple of minutes.
  • Once installed those libraries, download the next Zip File from Github. (To download, select the green button Code and then Download ZIP)
https://github.com/Makerfabs/Makerfabs-ESP32-S2-Parallel-TFT-with-Touch
  • For the next library you can uncompress and copy these two files inside the Arduino Project Folder in your Documents folder.
Inside the folder: \Makerfabs-ESP32-S2-Parallel-TFT-with-Touch-main\example\simple_test\touch16_3.5
FT6236.cpp
FT6236.h
  • Note: Make sure these 2 files with the InfiniteDeck.ino file are in the same folder.
  • once all this is set up you can Open the InfiniteDeck.ino file and Select the correct board with Tools > Boards: .... > ESP32 Arduino and find the ESP32S2 Dev Module.
  • Run the compiler, click on "Verify" check mark on the left of the top menu bar.
  • Then connect your board using an USB Cable, the software will detect the device as a COM Port.
  • Then click in the Upload Button (The right-arrow next to the Verify/Compile check mark button).
  • Done!.

Note: If you have more than one serial device connected your PC, you need to select the right COM Port, to detect the COM Port you can enter the Device Manager and look for Ports (COM & LPT). You can plug and unplug the board and check which COM Port appears and disappears.

Download the code: HERE

Step 3: Creating Your Own Actions.

This board will read every action you want from the SD card you need to copy the example files into the SD card or create your own ones. All the actions must be inside a numbered folder. This InfiniteDeck works with Ducky. Ducky are words that you can use to tell your board to work as a Keyboard and convert those words into actions. The Board support the next words and I will list examples so you can create your own ones later.

REM - This is a comment line for ducky, but I use it to tell the board the name of the button and the color.
STRING - This will write everything next to this word.
DELAY - This will wait for milliseconds the number next to the word.
CTRL - is the Control Key
ALT - is the Alt Key
ENTER - is the enter key
SHIFT - is the shift key
GUI or WINDOWS - is the Windows key
UP or UPARROW - is the up arrow key
DOWN or DOWNARROW - is the down arrow key
LEFT or LEFTARROW - is the left arrow key
RIGHT or RIGHTARROW - is the right arrow key
DELETE - is the delete key
PAGEUP - is the PageUp key
PAGEDOWN - is the PageDown key
HOME - is the Home Key
ESC - is the Escape Key
INSERT - is the Insert Key
TAB - is the Tab Key
END - is the End Key
CAPSLOCK - is the Caps Lock key
F1 to F12 - are the F1 to F12 keys
BRDOWN - Brightness Up, will decrease the brightness
BRUP - Brightness Up, will increase the brightness
SAVEBR - will save the Brightness into a config.txt file
If you want to press a regular Key just write the lowercase letter or the number.
there will be more keys supported in the future. Also for MAC users.

EXAMPLES

This are some examples for you to understand how to use them.

Copy

For the classic copy shortcut of Control/Command + C, you can write:

CTRL c

And that's it! and you can save this as a text file and name it as a number button, like 0.txt, but the button will need a name and a color, for this we will use the word REM (in Ducky, REM is just a comment, but I am using it as a word to tell the name and color). For this the text document will look like this:

REM COPY RED
CTRL c

Where REM tell the board the name of this button is COPY and the color is RED (The supported color are below).

Another Example!, let's make an example to open a YouTube video.

REM TROLL BLUE
GUI r
DELAY 600
STRING https://www.youtube.com/watch?v=dQw4w9WgXcQ
ENTER

In this examples we can read, REM tells the board the name of the button is TROLL and the color is BLUE.

Then will press Windows Key (GUI) + the letter R, this opens the Run window to launch a software or a link.

Then the board will wait 600 milliseconds, this is because the Run windows takes a time to appear.

Then the board will write the YouTube link to play.

Finally, the board will press Enter to execute the YouTube link and this will be open on your browser.

As you can see with just pressing a button you can launch a YouTube video.

The supported colors are:

Text Colors 
WHITE 0xFFFFFF
RED 0xFF0000
GREEN 0x00FF00
BLUE 0x0000FF
YELLOW 0xFFFF00
CYAN 0x00FFFF
MAGENTA 0xFF00FF
OLIVE 0xAFB83B
TEAL 0x158FAD
LIME 0x7ECC49
VIOLET 0xAF38EB
PURPLE 0x884DFF
GREY 0xB8B8B8
ORANGE 0xF88800
SKY 0x14AAF5
MINT 0x6ACCBC

If you want an special color you can use the HEX format (6 digits and/or letters that represent the color) you can follow this LINK to enter a web tool where you select a color and it shows you the HEX color code. Just copy the 6 digits/letters on the REM line and the board will display that color.

Note: Remember to Read the example profiles so you can easily create your own profiles.

Step 4: Future Upgrades

By far the board only display 76x86 bitmap icons and MAC support is not tested. The board should work as a regular windows keyboard on MAC and the equivalent keys for command and option should work.

GUI OR WINDOWS should be COMMAND
ALT should be OPTION
On a Budget Challenge

Participated in the
On a Budget Challenge