Elgato Stream Deck

Main Image.jpg

One of the most recent gadgets that I've picked up is the Elgato Stream Deck, a programmable keypad with mini LCD displays built into keys. Designed primarily for video game streamers, the pad  3 x 5 grid of keys with built in LCD screens can change based on the mode for the pad. In spite of the intended design, the Stream Deck ends up being great for other uses with the easily relabeled keys. This solves one of my biggest problems in the past with other key pads because they end up becoming application specific due to the time and difficulty of changing labels. The Stream Deck solves this by being able to change the labels through the included software which must be run with the pad. The one downside of this is that it prevents the Stream Deck from being an HID device that won't run without the software. Aside from needing the software, the Stream Deck is great for users on the go that want to be able to have programmable user keys for whatever program they are using.

Stream Deck Programming.PNG

The included software for the Stream Deck is easy to work with and makes very easy to set up hot key functions, though it can be a bit limiting if you need more steps than a single key-press. At its heart the Stream Deck is designed to aid video game streamers using Twitch and similar services so majority of the software settings are designed around it but it still offers ways to control things through application hot keys. The programming structure is centered around Profiles which can be application specific and switch to things when that application is in the foreground. Within a profile you can add folders which expand the 15 keys to another 15 in each folder giving you quite a bit of depth to play with. I order to setup a you find what you want from the list of options available on the left panel and drag it onto the space you want to use. You then have the option of entering a label text or dropping picture onto the key. Elgato does offer an online tool for generating your own labels but I just ended up using Photoshop to generate my own. As you work through creating keys they are automatically added to pad for use. The one thing that I found was lacking in the ability to do more complex key macros that can be done in X-Keys. 

Label Making.PNG

Here is an example of how I have two pages (folders) set up to work with Vectorworks. One is for working in 3D and the other is more for general lighting/ use with the Lightning Tapes plugin.  The top part is the action and bottom is the keyboard setup. There may be custom key bindings set in Vectorworks so your mileage may vary

 

 

Lightning Tapes-

Lightning Tape.jpg
Truss Tape.PNG

3D-

3D Stuff.jpg
3D.PNG

DIY Programmable Keypads

2016-07-09 16.49.25-1.jpg

In my last post I mentioned off the shelf options for creating custom button options but there is a fairly easy way to do it yourself using an Arduino. To make this work you need and Arduino Leonardo/ Pro Micro because they are able to emulate a HID keyboard device. Luckily they can be found pretty easily and cheaply. Knock off Pro Micro's/ Leonardos can be found all over eBay and Amazon. On my own version I began using cheap arcade buttons which adds gaming fun element when using you keypad. The one downside I've found in this project is that you need to have the Arduino IDE installed on computer you wish to use your keypad with.

My first attempt was a two button module that I could use as a "Go" and "Back button for ETC's Nomad software. After using it for a while I began to think of using it for other things such as a screen switcher for Windows 10 that I can attach below my monitor to control the new desktop features. Luckily its fairly straightforward to add more buttons as needed for a given project on both the hardware side.

 

Hardware

Here is a diagram of the hardware side that can be expanded to as many buttons as needed:

 

Each digital pin as set high and pulled to ground when activated.

My suggested hardware list is:

Arduino Pro Micro

Arcade Buttons

Software

The coding end is also fairly straight forward. Here is my example for the "Go" button:

#include "Keyboard.h"


const int buttonA = 2;
const int buttonB = 3;


void setup() 
{
  pinMode(buttonA, INPUT);
  pinMode(buttonB, INPUT);
  digitalWrite(buttonA, HIGH);
  digitalWrite(buttonB, HIGH);
  Keyboard.begin();
}

void loop() 
{
  int b_A = digitalRead(buttonA);
  int b_B = digitalRead(buttonB);

  if(b_A == LOW)// Green Go Button (Control G)
  {
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press('g');
    delay(100);
    Keyboard.releaseAll();
  }

  if(b_B == LOW) //Red Stop/ Back Button (Control F3)
  {
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press(KEY_F3);
    delay(100);
    Keyboard.releaseAll();
  }
}

To add more buttons replicate the code for the first two.

Keys are added with the Keyboard.press('x') command the desired key going inside the brackets with single quotation marks, here is the full explanation.

If you want to use any special keys (Control, Alt) here is a link to the Arduino reference on keyboard modifiers.

Inserting a delay helps to ensure that everything has to to execute properly and can be tweaked as needed.

Finally remember to use the Keyboard.releaseAll() command otherwise repeating key problems with occur.