Skip to content

Presets

import { presets } from "@f0rbit/forge/presets";
PresetActionsNotes
movement_2dmove.x, move.y (axes)Arrows + WASD + left stick + d-pad pairs.
movement_4waymove.left, move.right, move.up, move.down (digital)Tile-step games — digital edges only, no axes, no diagonals.
movement_8waymove.left, move.right, move.up, move.down (digital), plus the movement_2d axesUseful when you want both stick smoothing and crisp digital edges.
platformerjump (digital, Space + pad south), move.x (axis)Side-scrolling.
twinstickmove.x, move.y (left stick / WASD), aim.x, aim.y (right stick / arrows)Top-down shooter.
menuup, down, left, right, confirm, cancel (digital)Pure d-pad / arrow / Enter / Esc menu controls.

Presets are plain Bindings records — combine them with merge_bindings:

import { merge_bindings } from "@f0rbit/forge";
import { presets } from "@f0rbit/forge/presets";
const bindings = merge_bindings(presets.platformer, presets.menu);

merge_bindings and empty_bindings are exported from both @f0rbit/forge (the main entry) and @f0rbit/forge/input (the canonical location). Either import path works — pick the one that reads better at the call site.

Three presets were renamed for snake_case consistency:

v0.2.0v0.3.0
movement2dmovement_2d
movement8waymovement_8way
movement_4way_digitalmovement_4way

platformer, twinstick, menu are unchanged.