Android emulator keyboard mapping on Mac: on-screen buttons and per-game layouts
Most Android games expect a finger. On a Mac you already have a keyboard, a mouse, and maybe a controller, and tapping a trackpad for an hour gets old. SiliconPlay puts buttons on the game picture and ties those buttons to keys. That is keyboard mapping in this Android emulator for Mac: a key or a stick becomes a touch, in the place you chose.
SiliconPlay runs only on Apple Silicon, from M1 through M5 and newer chips in that line. It is not compatible with Intel Macs. I have tested it on macOS Tahoe. If you are on another macOS version, tell me what happened.
Direct touch, until you want keys
Direct touch is the default. The pointer is a finger, which is what you want for a menu, a shop, or any app that has no keymap. When a known game is in front, SiliconPlay can offer a community preset. The preset stays off until you accept it. No keymap is loaded just because the app opened.
Click the Android image so the keyboard goes to the keymap. If a text field is focused, the toolbar says Typing and the keys go into Android instead of the buttons. F12 or Command-K switches between Typing and Game keys. Command-key menu shortcuts stay with macOS.
Keys still work while the SiliconPlay window is focused. The first time the app follows the emulator’s own window, macOS asks for Accessibility. Until you allow that, keep the SiliconPlay window focused and the keys still land.
The default layout: MMORPG (WASD)
The generic layout that ships with the app is named MMORPG (WASD). It is not tied to a package, so it is not suggested automatically. You apply it to any game, then fix whatever misses. The stick touches down in the center of its button and drags outward while any of its keys is held. It slides back to the center when you let go.
| On-screen control | Keys | What the touch does |
|---|---|---|
| Move | W A S D, or the arrow keys | Virtual stick. Hold a direction. |
| Attack | J | Hold. The finger stays down while J is held. |
| Skill 1 | 1, or gamepad X | Tap |
| Skill 2 | 2, or gamepad Y | Tap |
| Skill 3 | 3 | Tap |
| Skill 4 | 4, or the right shoulder button | Tap |
| Skill 5 | 5 | Tap |
| Skill 6 | 6, or the right trigger | Tap |
| Jump | Space, or gamepad B | Tap |
| Interact | F | Tap |
| Map | M | Tap |
| Bag | B | Tap |
| Camera | Right mouse button | Look. Drag to turn the view. |
The notes on that preset say to adjust it in the editor. Treat the positions as a starting point. They are fractions of the game picture, from 0 to 1, with the origin at the top left, so they scale when the window changes size.
Move the buttons until they sit on the game
Edit layout opens the keymap editor. Drag a button to move it. Click it to rebind a key or a mouse button. Drag the gold dot to resize. You can add a WASD joystick, a camera drag, a tap, a long-press, a swipe, or a repeat. Done saves. Cancel puts the profile back to how it was when you opened Edit. Escape cancels a key capture if you are mid-rebind.
On the separate emulator window, a glass bubble follows the window. Drag the bubble to move it. Click it for the overlay, opacity, size, edit, and reset. That spot is saved on the profile. Command-Shift-G toggles the overlay. Empty space on the picture still clicks the game.
F10 switches to direct touch, which is the simpler path when a menu wants a real finger instead of a mapped button. Shift-Escape releases every virtual finger if one gets stuck down.
A controller uses the same buttons
A chip can listen for more than one input. In the default layout, skill 1 is both the 1 key and gamepad X, jump is both Space and gamepad B, and so on. You can also bind the face buttons, shoulders, triggers, D-pad, menu, and options buttons when you rebind a chip. The controller is not a second control scheme. It presses the same on-screen buttons the keyboard does.
Per-game layouts
Some apps have their own preset, matched by package. When that game is in front, SiliconPlay offers it and waits. Accept it, then drag anything that misses the art. The copy on these files calls them community presets.
Minecraft is a clear example of a layout that is not the generic one. Its preset uses WASD to move, left click to break, right click to use, Space to jump, E for inventory, 1 through 3 for the hotbar, and right mouse to look. A game whose buttons live in different corners needs that kind of pass, not the MMORPG row along the bottom.
The same build also ships presets for games such as Genshin Impact, Roblox, Call of Duty Mobile, Clash of Clans, and others. I am not going to pretend one layout fits all of them. Accept the suggestion, play for a minute, and move the chips.
Finding a keymap online
The reliable copy is the one in the app. If you do find a layout someone posted, it has to be a SiliconPlay keymap: JSON whose format id is stardroid.keymap. A file that is not valid JSON for that format is rejected. Positions in a shared file were drawn for someone else’s screen, so open the editor and line the buttons up with yours.
Pro Mode, in the toolbar, the View menu, and Settings, shows hardware, keymaps, and diagnostics on the main window. It is off until you turn it on. The bubble on the emulator window still has edit, overlay, opacity, size, and reset.
FAQ
Does SiliconPlay work on Intel Macs?
No. It is only for Apple Silicon: M1, M2, M3, M4, M5, and newer chips in that line.
Do I have to use a keymap?
No. Direct touch is the default. A suggested preset stays off until you accept it.
Can I use a controller?
Yes. Bind gamepad buttons to the same on-screen chips as the keyboard. The MMORPG layout already does this for a few skills and for jump.
Where do I get a keymap for my game?
Use the preset the app offers, or apply MMORPG (WASD) and edit it. A file from somewhere else has to be valid stardroid.keymap JSON.
More from the blog: the keyboard shortcuts, using SiliconPlay to test an APK, and SiliconPlay on M1 through M5 and newer. Or go back to the SiliconPlay homepage.