Hammerspoon configuration for using the WorkLouder Creator Micro 2 macro keyboard with Obvious and studio equipment.
- Dial (top-left): Control Elgato Key Light brightness with smooth easing
- Joystick (top-right): Pan/tilt Insta360 Link camera continuously while held
- Keys: Obvious app shortcuts for power-user workflows
- WorkLouder Creator Micro 2 - 13 keys + dial + joystick
- Elgato Key Light (optional) - HTTP API control
- Insta360 Link (optional) - UVC PTZ control
brew install --cask hammerspoongit clone https://github.com/FlatFilers/worklouder-obvious.git
cd worklouder-obvious# Back up existing config if you have one
mv ~/.hammerspoon ~/.hammerspoon.backup
# Symlink this repo's config
ln -s $(pwd)/hammerspoon ~/.hammerspooncd ~/.hammerspoon
cp config.lua.example config.luaEdit config.lua with your settings:
Find your Elgato Key Light IP:
dns-sd -B _elg._tcp
# Then resolve the hostname:
dns-sd -G v4 elgato-key-light-XXXX.localFind your Insta360 device index:
~/.hammerspoon/bin/uvc-util --list-devices./scripts/build-uvc-util.shThis requires Xcode Command Line Tools. The binary will be placed in bin/uvc-util.
Download WorkLouder Input and set up your layers:
Layer 1 - Studio Control:
| Key | Mapping |
|---|---|
| Dial CW | F17 |
| Dial CCW | F18 |
| Dial Press | F19 |
| Key 1 | F20 |
| Joystick Up | Ctrl+Shift+Alt+Up |
| Joystick Down | Ctrl+Shift+Alt+Down |
| Joystick Left | Ctrl+Shift+Alt+Left |
| Joystick Right | Ctrl+Shift+Alt+Right |
Layer 2 - Obvious:
| Key | Mapping | Action |
|---|---|---|
| Key 1 | F13 | Search (Cmd+K) |
| Key 2 | F14 | New Project |
| Key 3 | F15 | Toggle Sidebar |
| Key 4 | F16 | Go Back (Esc) |
| Shift+Key 1 | Shift+F13 | Go Home |
| Shift+Key 2 | Shift+F14 | Go Projects |
| Shift+Key 3 | Shift+F15 | Go Tasks |
| Shift+Key 4 | Shift+F16 | Go Library |
| Alt+Key 1 | Alt+F13 | New Thread |
| Alt+Key 2 | Alt+F14 | Toggle Split View |
| Alt+Key 3 | Alt+F15 | Previous Thread |
| Alt+Key 4 | Alt+F16 | Next Thread |
Click the Hammerspoon menu bar icon and select "Reload Config", or:
open -g "hammerspoon://reload"| Input | Action |
|---|---|
| Dial rotate | Elgato brightness up/down |
| Dial press | Toggle light on/off |
| F20 (Key 1) | Toggle color temperature (morning/evening) |
| Joystick hold | Pan/tilt Insta360 camera continuously |
| Input | Action | Shortcut Sent |
|---|---|---|
| F13 | Open search | Cmd+K |
| F14 | New project | Cmd+N |
| F15 | Toggle sidebar | Cmd+B |
| F16 | Go back | Escape |
| Shift+F13 | Go Home | Ctrl+1 |
| Shift+F14 | Go Projects | Ctrl+2 |
| Shift+F15 | Go Tasks | Ctrl+6 |
| Shift+F16 | Go Library | Ctrl+7 |
| Ctrl+F13 | Switch workspace | Ctrl+W |
| Ctrl+F14 | Jump to project | Ctrl+J |
| Ctrl+F15 | Quick note | Cmd+Opt+N |
| Ctrl+F16 | Toggle theme | Ctrl+Shift+D |
| Alt+F13 | New thread | Ctrl+T |
| Alt+F14 | Toggle split view | Ctrl+\ |
| Alt+F15 | Previous thread | Ctrl+[ |
| Alt+F16 | Next thread | Ctrl+] |
Edit hammerspoon/obvious.lua to add new shortcut functions:
function M.myNewShortcut()
sendKey({"cmd", "shift"}, "x")
hs.printf("[Obvious] My new shortcut")
endThen bind it in hammerspoon/init.lua:
hs.hotkey.bind({}, "F13", obvious.myNewShortcut)In config.lua, adjust elgato.step for faster/slower brightness changes.
The animation uses ease-out cubic for smooth deceleration. Edit hammerspoon/elgato.lua to change the easing function or duration.
Adjust insta360.moveSpeed and insta360.moveInterval in config.lua for different pan/tilt speeds.
- Check the IP address is correct in
config.lua - Ensure your computer is on the same network as the light
- Test with:
curl http://YOUR_IP:9123/elgato/lights
- Run
uvc-util --list-devicesto find the correct device index - Ensure no other app (Zoom, etc.) is using the camera
- Try different
deviceIndexvalues inconfig.lua
Grant Hammerspoon accessibility permissions in: System Settings > Privacy & Security > Accessibility
MIT