A second job for an idle Joy-Con

Your idle Joy-Con is now a keypad.

Voice input, in your hand. Talk, send, switch windows. One hand does it all, and the keyboard can move aside.

Free & open source · Never records audio · macOS 13+

JoyHarness Connection page in dark mode, showing the Joy-Con's connection, battery and everyday buttons
What it is

Nothing to buyThe controller you own is the hardware. Pair it over Bluetooth.

One is enoughLeft or right, either one does everything.

Three presses a messageInto the field, say it, send it.

Why I made it

I talk leaning back. Then I sit up to press Return.

I dictate code and messages all day, far faster than I type. To talk from a reclined chair, I got a desk mic on a boom arm. Still, after every sentence, I had to sit up to hit Return and reach for the mouse.

Keypads were either pricey or meant to lie flat on the desk. The Joy-Con in my drawer was made to be held. VaderCheng/JoyHarness had already mapped it to keyboard shortcuts in Python; I redesigned the button layout on top of it and built a native Mac app.

JoyHarness is a free, open-source Mac app. Once it's installed, a Joy-Con is a wireless Bluetooth keypad. It doesn't do the listening: it presses the key that starts your own voice input, and that tool hears you.

The part you'll use most

A message takes three presses.

Left and right Joy-Cons do the same things, so hold it in whichever hand you like. Every button can be changed.

X

Press · cursor into the field

Focus

No need to click the field. One press and the cursor is in it.

ZR

Press to start · press again to stop

Talk

Just talk. Your own voice input turns it into text.

A

Press · send

Send

Hold it for a new line.

ZR sends fn. Set fn as your voice input's start shortcut first, or nothing picks it up.

Connected? Battery? It's on the first screen.

The controller's state and what every button does, in one window.

JoyHarness Connection page showing whether a Joy-Con is connected, its battery, and whether presses get through
See whether it's ready Connection, battery and whether presses get through, on one page. When something is wrong, it says what to do next.

Why holding it beats a keypad on the desk.

01

A layout worn in, not drawn up

The most frequent actions sit where your fingers already rest: index finger on ZR to talk, thumb on A to send. I use these defaults every day, and anything awkward was replaced long ago.

Red right Joy-Con
02

One button, two jobs

A tap and a hold can do different things: tap to send, hold for a new line. A dozen buttons goes a long way.

03

The keyboard mostly just sits there

A long conversation or a whole document needs the keypad and the mouse. The keyboard is still there; you rarely need to touch it.

The farther from the desk, the more it helps.

For long stretches of talking to a screen, editing, and sending.

01

Leaning back

Pull the mic over and lean back. Focus, talk and send are in your hand, so there's no sitting up to reach the keyboard.

02

Sitting, then standing

You move; the keyboard stays on the desk. The buttons in your hand go where you go.

03

A whole day of conversation

Asking AI to write code, writing, replying to messages: the same three moves every time. Focus, talk, send.

It doesn't listen. It only presses keys.

JoyHarness reads the buttons on the controller and sends shortcuts. It never records audio and never sees what you say. That stays in the voice input tool you chose, such as Typeless.

The first time you open it, you practice twice.

After that, it's simply how you use it.

  1. 1

    Allow one permission

    Allow Accessibility. That's how it presses keys for you.

  2. 2

    Pair the controller

    Hold the small round button on the rail until the lights run back and forth, then click Connect in Bluetooth settings. It buzzes once when it connects.

  3. 3

    Practice twice

    Round one: X to focus, ZR to say a line, A to send. Round two: paste, hold B to trim the extra bit, hold A for a new line, then say one more line and send.

    JoyHarness walkthrough practice: the right Joy-Con with A lit on the left, and on the right a field holding the line just spoken, with a prompt to press A to send it

What you need.

  • A MacmacOS 13 or later, Intel or Apple silicon
  • At least one Joy-ConLeft or right, one is enough; no need for a pair
  • A voice input toolTypeless, or anything you can start with a shortcut. In its settings, set the start shortcut to fn first. JoyHarness sends fn; that tool picks it up
  • One permissionAllow Accessibility so it can press keys for you

You'll probably ask.

Do I need to know how to code?

No. Pair it over Bluetooth once, click Allow once, then press buttons. To change what a button does, click it in the app. No code involved.

Does it cost anything?

No. It's free, and the code is open source.

I don't have a Joy-Con. Should I buy one for this?

It exists to give an idle controller something to do. If you don't have one, don't buy one for this yet. First make sure you really use voice input a lot.

How is it different from a $10 keypad?

A keypad lies flat on the desk, and you look down to find the keys. A Joy-Con is held, with the buttons under your fingers, and it's wireless, so your hand can rest wherever it likes.

Do I need a pair of Joy-Cons?

No. The left or the right one on its own covers talking, sending, deleting and switching apps.

Does it record what I say?

No. JoyHarness reads controller buttons and sends shortcuts. It doesn't record audio and can't see what you said. Your own voice input tool does the recognition.

Which voice input tools work with it?

Any tool you can start with a keyboard shortcut. I use Typeless, and the defaults are set up for it; you can change them to any tool's shortcut.

Why does it need Accessibility permission?

That's the macOS switch that lets an app press keys for you. Without it, no shortcuts go out. JoyHarness reads the Joy-Con directly and doesn't watch your keyboard.

Is there a Windows version?

Not for now.

JoyHarness for macOS

Give that Joy-Con something to do again.

macOS 13 or later, one Joy-Con, free.

JoyHarness app icon
System
macOS 13 or later
Controller
Nintendo Switch Joy-Con
Connection
Bluetooth

Download

Get JoyHarness

The latest macOS installer is on the download page.

Go to downloads