sol-r1-linux-game-mappings/template/joyful-config.yml

146 lines
4.0 KiB
YAML

# joyful-config.yml - TEMPLATE: bare passthrough config.
#
# Copy this into a new <game>/ folder and customize. As-is, every
# physical control is mapped straight through 1:1 (axis->axis,
# button->button), no remapping and no key emulation - i.e. the
# Sol-R1 behaves like a normal, unmodified joystick/gamepad. Start
# here, confirm the game plays sanely with stock behavior, then only
# add `key`-type rules or axis remaps for the specific controls that
# particular game actually needs changed (e.g. a throttle axis a game
# misreads as a trigger - see space-engineers/ for a worked example).
#
# UNVERIFIED: joyful's exact per-rule-type field names below were not
# checked against `examples/ruletypes.yml` in the installed version -
# check that file before trusting this.
#
# Every TODO_* is a placeholder. Run find_codes.py (repo root) against
# the actual hardware and replace every one before use.
devices:
base:
match: "TODO: Sol-R Base" # evdev device name substring, see find_codes.py --list
grip:
match: "TODO: Sol-R Grip"
modes:
default:
devices: [base, grip]
rules:
# --- base: throttle axis ---
- device: base
type: axis
input: TODO_ABS_THROTTLE
output: ABS_Y
# --- grip: main stick + ministick axes (routed to distinct output
# axes from the base throttle above - this is bare passthrough, not
# a functional assignment; nothing here means "look" or "strafe"
# until a specific game's config says so, see space-engineers/) ---
- device: grip
type: axis
input: TODO_ABS_STICK_X
output: ABS_RX
- device: grip
type: axis
input: TODO_ABS_STICK_Y
output: ABS_RY
- device: grip
type: axis
input: TODO_ABS_MINISTICK_X
output: ABS_Z
- device: grip
type: axis
input: TODO_ABS_MINISTICK_Y
output: ABS_RZ
# --- grip: trigger + orange buttons ---
- device: grip
type: button
input: TODO_BTN_TRIGGER_STAGE1
output: BTN_TRIGGER
- device: grip
type: button
input: TODO_BTN_TRIGGER_STAGE2
output: BTN_THUMB
- device: grip
type: button
input: TODO_BTN_ORANGE_1
output: BTN_THUMB2
- device: grip
type: button
input: TODO_BTN_ORANGE_2
output: BTN_TOP
# --- base: rotary knobs (assumed BTN detent pulses - confirm with
# find_codes.py; if either is an ABS axis instead, use joyful's
# segmented axis-to-button rule type there instead) ---
- device: base
type: button
input: TODO_BTN_KNOB1_CW
output: BTN_TRIGGER_HAPPY1
- device: base
type: button
input: TODO_BTN_KNOB1_CCW
output: BTN_TRIGGER_HAPPY2
- device: base
type: button
input: TODO_BTN_KNOB2_CW
output: BTN_TRIGGER_HAPPY3
- device: base
type: button
input: TODO_BTN_KNOB2_CCW
output: BTN_TRIGGER_HAPPY4
# --- base: 4-button group ---
- device: base
type: button
input: TODO_BTN_GROUP_1
output: BTN_TRIGGER_HAPPY5
- device: base
type: button
input: TODO_BTN_GROUP_2
output: BTN_TRIGGER_HAPPY6
- device: base
type: button
input: TODO_BTN_GROUP_3
output: BTN_TRIGGER_HAPPY7
- device: base
type: button
input: TODO_BTN_GROUP_4
output: BTN_TRIGGER_HAPPY8
# --- base: 4 tilt switches, 2 held-position buttons each (8 codes) ---
- device: base
type: button
input: TODO_BTN_SWITCH1_UP
output: BTN_TRIGGER_HAPPY9
- device: base
type: button
input: TODO_BTN_SWITCH1_DOWN
output: BTN_TRIGGER_HAPPY10
- device: base
type: button
input: TODO_BTN_SWITCH2_UP
output: BTN_TRIGGER_HAPPY11
- device: base
type: button
input: TODO_BTN_SWITCH2_DOWN
output: BTN_TRIGGER_HAPPY12
- device: base
type: button
input: TODO_BTN_SWITCH3_UP
output: BTN_TRIGGER_HAPPY13
- device: base
type: button
input: TODO_BTN_SWITCH3_DOWN
output: BTN_TRIGGER_HAPPY14
- device: base
type: button
input: TODO_BTN_SWITCH4_UP
output: BTN_TRIGGER_HAPPY15
- device: base
type: button
input: TODO_BTN_SWITCH4_DOWN
output: BTN_TRIGGER_HAPPY16