# joyful-config.yml - TEMPLATE: bare passthrough config. # # Copy this into a new / 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