Skip to content

Hardware Guide

valis-world edited this page Dec 14, 2025 · 4 revisions

Computer

Chassis

Keyboard

This page is a compact, practical reference for the MspArcade keyboard hardware and the arcade_keyboard QMK definition.

Quickstart

What you need beforehand:

  1. Verify wiring and pins (see "Wiring checklist").
  2. Install a QMK build environment (QMK_MSYS on Windows, or the QMK CLI setup on other platforms) and follow the official QMK setup instructions.
  3. Make the arcade_keyboard QMK folder available to your local QMK tree — see "Repo keyboard folder" below.
  4. Build the firmware:
qmk compile -kb arcade_keyboard -km V1
  1. Flash the firmware (QMK CLI or QMK_MSYS):

Before flashing, put the Pro Micro into bootloader mode by shorting the RST and GND pins briefly, or use an in-layout QK_BOOT key if assigned.

qmk flash -kb arcade_keyboard -km V1

Repo keyboard folder

The repository includes a keyboard folder with a KiCAD project containing the schematic, the arcade_keyboard folder inside of the folder qmk and a precompiled firmware file of the V1 keymap in keyboard/firmware/V1. The KiCAD files are hardware sources and are not required to build the firmware, but they are included for reference and hardware work.

To build the QMK firmware locally, copy or symlink the arcade_keyboard folder into your QMK firmware source tree under qmk_firmware/keyboards/arcade_keyboard/ so the QMK build system can find it.

After copying, build from your qmk_firmware directory with the Quickstart qmk compile command above.

If you want to use the precompiled version copy the arcade_keyboard_V1.hex into your qmk_firmware folder and just run

qmk flash -kb arcade_keyboard -km V1

Wiring checklist

  • Matrix dimensions: 4 rows × 5 columns.
  • Row pins (top → bottom): D10, D16, D15, D14.
  • Column pins (left → right): D2, D3, D4, D5, D6.
  • For quick reference, see the wiring schematic below (rows/cols labeled).

Arcade keyboard wiring schematic

Key to pin mapping (V1 — full matrix)

The table below lists every position in the V1 4×5 matrix. KC_NO denotes an unassigned pad.

Key QMK code Matrix [row,col] Row pin Column pin
W KC_W [0,4] 10 6
A KC_A [1,4] 16 6
S KC_S [2,4] 15 6
D KC_D [3,4] 14 6
E KC_E [0,3] 10 5
G KC_G [1,3] 16 5
F KC_F [2,3] 15 5
Q KC_Q [3,3] 14 5
(none) KC_NO [0,2] 10 4
(none) KC_NO [1,2] 16 4
T KC_T [2,2] 15 4
Z KC_Z [3,2] 14 4
I KC_I [0,1] 10 3
J KC_J [1,1] 16 3
K KC_K [2,1] 15 3
L KC_L [3,1] 14 3
O KC_O [0,0] 10 2
R KC_R [1,0] 16 2
P KC_P [2,0] 15 2
U KC_U [3,0] 14 2

This table corresponds to the LAYOUT_ortho_4x5 keymap array shown in the examples below; use the matrix coordinates when editing keymap.c.

Keymap V1 (actionable notes)

The V1 keymap implements the arcade layout used by this project.

Button matrix (physical → matrix coordinates)

The image below shows the matrix implemented in the V1 keymap with coordinates you can use when editing the keymap array.

Arcade keyboard button matrix annotated with matrix coordinates

Example: the top-left pad O = [0,0], the bottom-right pad D = [3,4].

Edit the keymap

To change key behavior, edit the V1 keymap file. Typical path inside your local QMK tree:

qmk_firmware/keyboards/arcade_keyboard/keymaps/V1/keymap.c

Or create a new keymap at:

qmk_firmware/keyboards/arcade_keyboard/keymaps/YOUR_NEW_KEYMAP/keymap.c

Find the layout matrix (an array of keycodes). Example replacement to set Esc and Boot:

Before (example snippet):

[0] = LAYOUT_ortho_4x5(
	KC_O, KC_I, KC_NO, KC_E, KC_W,
	KC_R, KC_J, KC_NO, KC_G, KC_A,
	KC_P, KC_K, KC_T, KC_F, KC_S,
	KC_U, KC_L, KC_Z, KC_Q, KC_D
)

After (set Esc at [0,2] and Boot at [1,2]):

[0] = LAYOUT_ortho_4x5(
	KC_O, KC_I, KC_ESC, KC_E, KC_W,
	KC_R, KC_J, KC_BOOT, KC_G, KC_A,
	KC_P, KC_K, KC_T, KC_F, KC_S,
	KC_U, KC_L, QK_Z, KC_Q, KC_D
)

Save and rebuild with the Quickstart commands above.

Verification & troubleshooting

  • Use qmk console or hid_listen to observe produced keycodes while pressing pads.
  • If one whole row/column is offset, swap/check MATRIX_ROW_PINS / MATRIX_COL_PINS ordering in config.h and keyboard.json.
  • If USB isn't recognized after flashing or no keys register, try to reflash the Pro Micro using the Quickstart steps or QMK Toolbox.
  • Use qmk console or hid_listen to observe produced keycodes while pressing pads.
  • If one whole row/column is offset, swap/check MATRIX_ROW_PINS / MATRIX_COL_PINS ordering in config.h and keyboard.json.
  • If USB isn't recognized after flashing or no keys register, try to reflash the Pro Micro using the Quickstart steps or QMK Toolbox.