143 lines
3.7 KiB
YAML
143 lines
3.7 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 ---
|
|
- device: grip
|
|
type: axis
|
|
input: TODO_ABS_STICK_X
|
|
output: ABS_X
|
|
- device: grip
|
|
type: axis
|
|
input: TODO_ABS_STICK_Y
|
|
output: ABS_Y
|
|
- 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
|