Controls and Inputs · Volume 7

Feedback, Accessibility and the Input Map — What the Gun Tells the Player, Who Else Can Play It, and Every Control on One Page

Kick, rumble, light and an ammo count close the loop from game to hand. A light gun is also unusually easy to open up to players a gamepad shuts out: a lighter trigger, a hold-to-fire selector, a pedal jack that takes any assistive switch. Then the whole input map, and the decision rows this dive proposes

Figure 1 — The input map for the printed MP7: every control grouped by where it sits on the gun, the switch it uses, and the Pico pin it lands on in the stopgap build and the kit-camera build. The Autofire Sw…
Figure 1 — The input map for the printed MP7: every control grouped by where it sits on the gun, the switch it uses, and the Pico pin it lands on in the stopgap build and the kit-camera build. The Autofire Switch has no pin on the kit-camera board. Own work, from Reference Electronics Volume 2 and this dive.

7.1 Closing the Loop

A light gun is an input device with an unusually rich output side. Every channel by which it tells the player something is owned by another dive; this section only lists them and says what each means for the controls.

Table 1 — 7.1 Closing the Loop

ChannelWhat it tells the playerOwned by
Recoil (solenoid kick)a shot was firedSolenoid Recoil
Rumblean off-screen shot, damage, a game eventMotors and Rumble
Moving ejection porta shot, visiblyMoving Ejection Port
Status light (NeoPixel)the gun’s mode and profile; the profile colour is a per-profile settingOpen-Source Firmware, Volume 5
OLEDpause-menu text; life and ammo when the game sends them7.3, and Open-Source Firmware, Volume 6
The gameeverything elsethe game

Two interactions with the controls are worth stating. First, the selector (Volume 2, §2.5) is the player’s switch for the strongest of these channels: SAFE turns the recoil off without touching the game. Second, the recoil is also a disturbance to the controls: a kick can move a lever or a slide that is not held firmly by its spring (Volume 2, §2.8; Volume 6, §6.7). The feedback channels and the input mechanisms have to be tested together.

7.2 The Feel of Each Control as Feedback

The most immediate feedback a gun gives is mechanical, before any electronics: the click of a switch, the wall and break of a trigger, the stop at the end of a pump stroke. Each one tells the player that an input has happened, without looking.

  • A snap-action switch gives a click at the instant it operates, because the snap is the electrical event (Volume 4, §4.3).
  • The Hall trigger gives none of its own; the detent provides the click, and the firmware is calibrated to fire at it (Volume 4, §4.5). If the two drift apart, the gun fires at a moment the finger did not feel, which is the worst kind of feedback: wrong.
  • A pump without a stop and a detent at the rear gives the player no way to know the stroke counted (Volume 6, §6.7).
  • The five-way switch’s centre press needs about twice the force of its directions (Alps: 2.35 N against 1.23 N), so a thumb that presses Home knows it did.

7.3 The Ammo Count

The owner has decided to keep the OLED on the first carrier, “at least for now, as a later ammo-count display” (decision D37, 2026-10-19). The firmware already has that function. Open-Source Firmware, Volume 6 lists OpenFIRE’s serial commands for it: MDx1, x2 and x3 select life only, ammo only or both on the OLED, and FDAx<n> and FDLx<n> set the ammo and life counts. The counts come from the game, through an output tool such as MAMEHooker or QMamehook, so the ammo count works only in games whose outputs those tools expose.

For the controls, the ammo count changes one thing: the reload becomes a visible event. A player who presses the magazine catch and sees the count refill learns the gun’s reload is real. A count that does not refill (because the game reloaded on something else, or not at all) is the first sign that a reload mapping is wrong.

7.4 Accessibility

A light gun can be opened to more players than a gamepad, because so many of its parameters are settings rather than mouldings. What follows lists what this build already has, and the cost of each.

Hands and grip strength.

  • Trigger weight. The Hall trigger’s pull is a spring, and the build makes it swappable (Volume 4, §4.8). A player with little grip strength can have a pull far lighter than any microswitch trigger; the firing point is still set at the detent.
  • Autofire. The selector’s BURST position makes a held trigger fire continuously (Volume 2, §2.5), which replaces a hundred pulls with one hold. On the kit-camera board, where the selector’s autofire contact has no pin, the same setting is in OpenFIRE’s pause menu (Open-Source Firmware, Volume 5, §5.9).
  • One hand. H&K describes the real MP7 as able to be fired “with one or both hands”. Every input used during play (trigger, reload, A) is on the firing hand (Volume 2); the reload can also go to a foot.
  • Fewer buttons. OpenFIRE’s Simple Pause Menu lets a gun with few buttons drive the menus with A, B and the trigger, and Low Buttons Mode makes A and B act as Start and Select off-screen (Open-Source Firmware, Volume 5). Every button’s meaning can be remapped in the App (Volume 6).

Feet, or no feet. The pedal jack (Volume 6, §6.4) takes any switch with a 3.5 mm plug that closes tip to sleeve. That is the convention of the Xbox Adaptive Controller’s switch inputs, Microsoft’s controller for players with limited mobility, which has “Nineteen 3.5mm ports” for them. So the very large range of assistive switches made for it (large push pads, sip-and-puff switches, chin and head switches) works as this gun’s Pedal input without any adapter. A player who cannot use a pedal can reload or take cover with whatever switch suits them; a player who cannot hold the gun up for long can rest it and use one.

Left-handed players. The real MP7 is fully ambidextrous; the light gun mirrors the magazine catch and A (Volume 2, §2.8), which are the in-play controls a left-handed player needs on the other side.

Hearing and sensory load. A solenoid kick is loud: the Time Extension review of the Sinden found its default recoil “so strong it often drowns out the game audio”. The selector’s SAFE position, and OpenFIRE’s separate rumble and solenoid toggles, let a player keep the aiming and drop the noise.

Eyes. The status light’s profile colours are red, green, blue and magenta by default (Open-Source Firmware, Volume 5); red and green are the pair most often confused in colour-vision deficiency. The OLED shows the profile name in pause mode, which is the unambiguous cue. Choosing profile colours that differ in brightness as well as hue costs nothing.

7.5 The Input Map

The complete map for the printed MP7. Pins are from Reference Electronics, Volume 2, §2.5, except the Autofire Switch on GP15, proposed here. Default reports and debounce times are OpenFIRE v6.2’s (OpenFIREprefs.h; Open-Source Firmware, Volume 6, §6.3).

Table 2 — 7.5 The Input Map

InputControl on the MP7SwitchPull-upPin (stopgap)Pin (kit camera)Firmware functionDefault report (mouse mode)Debounce
TriggertriggerDRV5056A4 Hall (fork) or DRV5023 (stock)— (sensor output)GP26GP26Triggerleft mouse button15 ms (stock); none in the fork (CI-6)
Reloadmagazine catch, hard stopD2F-01F3.3 kΩ externalGP2GP2Button Cmouse button 415 ms
Athumb button, left (and right, in parallel)B3F-1000internalGP0GP0Button Aright mouse button15 ms
Bbolt-catch leverD2F-01F3.3 kΩGP1GP1Button Bmiddle mouse button15 ms
D-padfive-way switch, left panelSKRHABE010internalGP6–GP9GP6–GP9D-Padgamepad D-pad (v6.2 table)20 ms
Homefive-way centre pressSKRHABE010internalGP5GP5Home Buttonpause mode15 ms
Startcharging handleD2F-01F3.3 kΩGP3GP3Startplayer start key (1 for P1)20 ms
Selectstock release leverD2F-01F3.3 kΩGP4GP4Selectplayer coin key (5 for P1)20 ms
Pumpsliding fore-grip, rear stop (optional)D2F-01F3.3 kΩGP13GP21Pump Actionright mouse button15 ms
Pedal3.5 mm TRS tippedal’s own, gold fitted3.3 kΩGP14GP22Pedalmouse button 415 ms
Alt PedalTRS ring——unwiredunwiredAlt Pedalmouse button 515 ms
Recoil on/offselector SAFE / SEMID2F-01F on a cam3.3 kΩGP12GP20Solenoid Switchtoggle—
Autofireselector BURSTD2F-01F on a cam3.3 kΩGP15noneAutofire Switchtoggle—

Notes on the map:

  • Button C and Pedal send the same report by default (mouse button 4), so the magazine catch and the pedal both reload in any game that binds it. In gamepad mode they differ (A and X).
  • A and Pump send the same report by default (right mouse button). A game that uses right-click for a grenade will throw one on every pump. Remap one of them in the App.
  • The IMU (D36) and the OLED (D37) sit on the peripheral I²C bus and take no input pins.
  • Connectors: the D-pad and Home on one six-way JST PH from the panel’s small PCB (Reference Electronics allocates five-way for the D-pad; Home adds one); the catch, B and the selector’s two contacts on one lead from the trigger-guard area; Start and Select on one from the rear; the pump on its own. The groups follow the shell, which Reference Electronics, Volume 4, §4.8 asks for (“grouped by location in the shell”).

7.6 What to Buy for the First Gun

Prices from LCSC’s and Adafruit’s own pages, 2026-10-19 (Volume 3, §3.9; Volume 6, §6.3).

Table 3 — 7.6 What to Buy for the First Gun

PartQuantity (with spares)Unit priceLine
Omron D2F-01F (LCSC C403989)10$0.5377 (10+)$5.38
Omron B3F-1000 (LCSC C93157)5 (minimum order)$0.1874$0.94
Alps SKRHABE010 (LCSC C139794)2$0.78$1.56
3.3 kΩ resistors, 060310(any)
3.5 mm TRS panel or inline jack1(any)
Adafruit Foot switch (423)1$7.50$7.50
Total, switches and pedalabout $15.40 before shipping

The Hall sensor and its magnet are on Reference Electronics, Volume 9’s bill of materials. Springs for the trigger, the detent plunger and the stainless ball are printed-build parts.

7.7 Proposed Decision Rows

For the decision log (Light-Guns/DECISIONS.md); none is decided until the owner rules.

Table 4 — 7.7 Proposed Decision Rows

#ChoiceCandidatesPickStatusWhy, and why not the othersVol
CI-1Input setarcade minimum; OpenFIRE default set; + sticks; + more buttonsOpenFIRE default set, Alt Pedal unwired, no sticksProposedCovers every genre but GunCon 3 sticks; sticks need two ADC pins; extra buttons have no firmware function1
CI-2Placement on the MP7real controls reused; GunCon-style side buttonsCatch = reload, selector = recoil/autofire, bolt catch = B, charging handle = Start, stock lever = Select, five-way switch behind the selector, A at the thumbProposedUses H&K’s placement; in-play inputs on the firing hand; rare inputs where a squeeze cannot press them2
CI-3Microswitch pull-upRP2040 internal (41–66 µA); external 3.3 kΩ (1 mA)3.3 kΩ external on every microswitch inputProposedOmron’s minimum applicable load is 1 mA for gold contacts, 100–160 mA for silver; internal pull-up is far below both. Affects Reference Electronics Vol 4’s circuit3
CI-4Switch partsV-15-1C25; D2F; D2F-01F; SS-01; B3F-1000/-1002/-1005; SKRHABE010; four tact switchesD2F-01F for every lever; B3F-1000 for A; SKRHABE010 for D-pad + HomeProposedGold contacts and low force for levers, one part number; longest-life tact force; one part for five inputs3
CI-5Trigger firing pointfixed 50/40 % of span; three-point calibrationCalibrate rest, break and full; fire just past the felt breakProposed (fork)Shot and break coincide whatever the detent’s printed position4
CI-6Trigger debounce in the forkbutton library (32 reads + 15 ms); ADC threshold hysteresis onlyHysteresis only; bypass the button libraryProposed (fork)A contactless sensor cannot bounce; removes the 32-read delay5
CI-7Pedal connectionSinden USB pedal; jack on the gun; jack at the cable’s far end3.5 mm TRS (tip Pedal, ring Alt Pedal); jack at the far end via spare GX pins, else on the gunProposedOne cable from the gun; any assistive switch fits. Needs GX pin allocation (Power Supplies, Fully Wired)6
CI-8Pumpsliding fore-grip; charging handle; none; IMU flickOptional sliding fore-grip, one D2F-01F at the rear stopWaiting on JeffThe real MP7 has no pump; a realism compromise to be decided6
CI-9Trigger feelspring only; spring + detent; spring + unwired microswitchSpring + non-magnetic detent + two set-screw stops; swappable spring, start near 5 NTestingA Hall sensor has no wall; detent gives one without wear; pull weight to be chosen by feel4
CI-10Autofire Switch pinnone (pause menu); GP15GP15 on the stopgap board; pause menu on the kit-camera boardProposedGP15 is the stopgap budget’s one spare; the kit-camera budget has none1, 2

7.8 Owed Measurements

Ranked by what they would change:

  1. The run-mode button latency (Volume 5, §5.9): the one number that decides whether the stock button filter needs changing.
  2. The Hall trigger’s force-travel curve with its detent, against the sensor output (Volume 4, §4.9): proves the firing point sits at the break.
  3. A solenoid kick against every lever input (Volume 2, §2.8): finds a catch or slide that the recoil moves.
  4. Bounce captures of each switch type, and the pedal at the end of its cable (Volume 5, §5.9).
  5. The long-run micro-load test of a D2F-01F on the internal and the external pull-up (Volume 3, §3.4).
  6. The printed test grip with both builders’ thumb reach marked (Volume 2, §2.7).

7.9 What Could Not Be Verified

  • Which games expose ammo counts through MAMEHooker or QMamehook was not surveyed.
  • No survey of assistive-switch types against the 1.8 V pull-up the Xbox Adaptive Controller uses versus this gun’s 3.3 V was made; a passive switch closure works on both, but a powered assistive switch with an active output should be checked against 3.3 V before use.
  • The colour-vision point is general knowledge, not a measured study of the OpenFIRE status light.

Sources

  1. TeamOpenFIRE, OpenFIRE-Firmware v6.2, OpenFIREprefs.h (button table), read 2026-10-19; and the Open-Source Firmware dive, Volumes 5 and 6.
  2. Reference Electronics dive, Volumes 2, 4 and 9.
  3. Microsoft, Xbox Adaptive Controller product page, https://www.xbox.com/en-US/accessories/controllers/xbox-adaptive-controller (read 2026-10-19).
  4. Adafruit Learning System, DIY Adaptive Game Controllers, “XAC Standards”, https://learn.adafruit.com/diy-adaptive-game-controllers/xac-standards (read 2026-10-19).
  5. Time Extension, Sinden Light Gun review (read 2026-10-19).
  6. Heckler & Koch, MP7 A1 Operators Manual (fax 2011), via the H&K MP7 dive’s research file.
  7. Alps Alpine, SKRHABE010 product page (read 2026-10-19).
  8. LCSC and Adafruit product pages as listed in Volumes 3 and 6 (read 2026-10-19).

Comments (0)

  1. Loading…

Comments are held for moderation — nothing appears until approved.