User guide / Chapter 9

Worked Intent examples

Guide for app 1.0.0 · Updated 2 October 2026

Download the complete PDFBack to Learn

Example 1: aim and shoot with one button

Use this if pressing aim and fire together is difficult. First check the game's controls. This example assumes L2 = aim and R2 = fire.

  1. Open the input you want to use, such as an ESP32 foot switch.
  2. Add or open its Switch mapping.
  3. Select the physical source port, key, or button.
  4. Tap Edit Intent.
  5. Name it Aim and shoot.
  6. In SEND, set the first row to L2 → Hold.
  7. Tap + Add output.
  8. Set the new row to R2 → Hold.
  9. Leave TAP vs LONG PRESS off.
  10. Leave ONLY WHEN HELD empty and THEN (sequence) empty.
  11. Leave auto-release off if long aiming holds are intentional.
  12. Tap Save & Close, then Done.
  13. Tap Start Mapping and test in a practice area.
What you do What the app sends
Press the switch L2 and R2 become active together
Keep holding Both remain active
Let go Both release

See Figure 31 for the completed editor.

This presses the game's aim and fire controls. You still aim with the game's aiming control, such as the right stick. It does not automatically line up a shot.

Variation: repeated fire while aiming. Keep L2 as Hold and change R2 to Tap while held. Start at a slow rate such as 5 taps/sec. Use this only if the game benefits from repeated presses. For a weapon that already fires continuously while held, ordinary R2 Hold may be better.

Variation: aim first, then fire. Some games need time to aim before shooting. Keep L2 → Hold in SEND. Put R2 in a sequence step with a delay and duration that you have tested, such as after 200 ms for 100 ms. Keep the source held through the step. Increase the delay if firing starts too soon.

Example 2: only shoot while another input holds aim

Use this when you want separate aim and fire controls, but want to prevent fire when aim is not held.

  1. Make one input send L2 → Hold.
  2. Make a second mapping send R2 → Hold.
  3. Open the second mapping's Edit Intent.
  4. Name it Shoot only while aiming.
  5. Open ONLY WHEN HELD.
  6. Tap + Add modifier and choose L2.
  7. Save the Intent and input editor.
  8. Start mapping.
  9. Hold aim, then press fire. Fire should work.
  10. Let go of aim and check that the fire Intent no longer passes its requirement.

The fire Intent does not create L2. The first mapping supplies it. This is different from the one-button combination in Example 1.

Example 3: tap for one action, hold for another

Suppose South means jump and L3 means sprint in your game.

  1. Open the source mapping's Edit Intent.
  2. Name it Tap jump, hold sprint.
  3. Set SEND to South.
  4. Turn on TAP vs LONG PRESS.
  5. Choose L3 as the long-press output.
  6. Set Hold for to 500 ms.
  7. Save and test.
Source movement Result
Short press South sends a short tap
Hold past 500 ms South tapped at the start; L3 then stays active
Release after the hold L3 releases

If you want sprint without that first jump, use a separate normal Long press action instead. See Figure 32.

Example 4: a Mortal Kombat finishing-move sequence

Use a sequence when a finishing move needs several precise button presses and making them separately is difficult.

The pattern below is a training example, not a claimed Fatality for a particular character. Mortal Kombat moves depend on the game, character, move, distance, and controller settings. Get the real command from that game's move list, then replace the example controls.

Prepare

  1. Open a training or practice mode that lets you test the required move.
  2. Find the finishing move in the game's move list.
  3. Note every direction, button, and required distance.
  4. Translate its buttons using the button-name table.
  5. Decide how long you can comfortably hold your source switch.

Back and Forward depend on which way your character faces. Intent Controller sends actual left and right controls. It does not automatically swap them when the opponent changes sides. You may need two named Intents or profiles for opposite directions.

Build the example

Our practice pattern is:

Down → Right → Down → West.

  1. Open a source switch mapping and tap Edit Intent.
  2. Name it Training sequence.
  3. Set SEND to DPad Down → Tap. Use the normal 80 ms tap.
  4. Leave TAP vs LONG PRESS off and ONLY WHEN HELD empty.
  5. Open THEN (sequence).
  6. Tap + Add step.
  7. Choose DPad Right → Tap.
  8. Open that row's clock control. Set after = 130 ms, for = 100 ms.
  9. Tap + Add step again.
  10. Choose DPad Down → Tap, after = 50 ms, for = 100 ms.
  11. Add the final step: West → Tap, after = 50 ms, for = 100 ms.
  12. Check the order and save.
  13. Start mapping and hold the source for about one second while testing.

The intended windows for this example are:

Action Starts after the source press Ends after the source press
SEND: DPad Down 0 ms 80 ms
Step 1: DPad Right 130 ms 230 ms
Step 2: DPad Down 280 ms 380 ms
Step 3: West 430 ms 530 ms

The first 130 ms delay leaves a gap after the 80 ms SEND tap. Each later 50 ms delay starts after the previous step finishes. Actual delivery also depends on the output connection and the game; this is not a frame-perfect timing guarantee.

See Figures 34 and 35 for the editor and timings.

Replace it with the real move

  1. Change SEND to the move's first control.
  2. Replace, add, or remove steps to match the move list.
  3. Use ↑ / ↓ if the order is wrong.
  4. Set the required gap and press length for each step.
  5. Position the character at the required distance.
  6. Hold the source until the whole sequence finishes.
  7. If it fails, change one timing at a time and test again.

If releasing the switch is part of how you normally press it, remember that release cancels unfinished steps. Choose an input you can keep active long enough. Also check the Control Map for another mapping that may be taking priority over a direction or button in the sequence.

Example 5: a pressure sensor for movement

Use this for a sensor with two directions around a resting value, such as a sip/puff-style control.

  1. Add a board Centered Axis mapping.
  2. Choose the correct analog source port.
  3. Rest the sensor and tap Record.
  4. Set one side's action, such as a left direction, and the other side's action, such as right.
  5. Check the neutral and active zones on the calibration bar.
  6. Activate each side separately and watch the preview.
  7. Save, start mapping, and test gently.

If rest triggers one side, correct the neutral value or active zone. A dual-axis stick needs two source channels; one centred sensor does not create two independent axes.