OSD for Steam Controller
The HID Library fork with crude edits you'll need to compile this project from source: https://github.com/Nielk1/HidLibrary
- DualShock 4
- Default by Nielk1
- Steam Controller
- Default by Nielk1
- ahNOMinal 2 by ahMEmon
- Buh-Lack by ahMEmon
- Docteur Controller by Docteur Controller
- Black Stencil by RambleTan
- Outline 2018 by RambleTan
- Outline 2019 by RambleTan
- Grey Minimal by CriticalComposer
- Line Art by Ishmobile
- Silly/Cat Paws by Nielk1
- Fire Sale by Nielk1, Twenty-Six Twelve
- White Cerberus by 8BitCerberus
- Steam Controller Chell
- Default by Nielk1
- root
- name - string
- height - number
- width - number
- version - theme structure version
- children - array of elements
- Item
"type": null- AKA not supplied- x - number, position
- y - number, position
- rot - number, rotation degrees clockwise
- winform.smoothing - enum, valid values:
- "Default"
- "HighSpeed"
- "HighQuality"
- "None"
- "AntiAlias"
- winform.interpolation - enum, valid values:
- "Default"
- "Low"
- "High"
- "Bilinear"
- "Bicubic"
- "NearestNeighbor"
- "HighQualityBilinear"
- "HighQualityBicubic"
- children - array of elements
- GraphicalItem (everything in Item plus)
"type": "image"- image - string, filename of image, start with
\to use a path relative to themes folder instead of current theme - center - boolean, draw image from center instead of top left
- height - number
- width - number
- ShowHide (everything in Item plus)
"type": "showhide"- input - Flee formula string, 0/1 active state
- Slider (everything in Item plus)
"type": "slider"- inputX - Flee formula string, X offset
- inputY - Flee formula string, Y offset
- inputR - Flee formula string, Rotation offset
- TrailPad (everything in Slider plus)
"type": "trailpad"- input - Flee formula string, 0/1 active state
- image - string, filename of image, start with
\to use a path relative to themes folder instead of current theme - length - number, length of trail
- height - number
- width - number
- PBar (everything in Item plus)
"type": "pbar"- image - string, if not set will render solid color, filename of image, start with
\to use a path relative to themes folder instead of current theme - foreground - hex string, used if image not set, example `"FFFFFFFF"
- background - hex string, used if image not set, example `"FFFFFFFF"
- direction - enum, valid values:
- "up"
- "down"
- "left"
- "right"
- mode - enum, valid values:
- "" - default, same as no value
- "stretch"
- center - boolean, draw image from center instead of top left
- height - number
- width - number
- input - Flee formula string
- min - Flee formula string, default 0.0, yes this means it can be dynamic
- max - Flee formula string, default 1.0, yes this means it can be dynamic
- PPie (everything in Item plus)
"type": "ppie"- image - string, if not set will render solid color, filename of image, start with
\to use a path relative to themes folder instead of current theme - background - hex string, used if image not set, example `"FFFFFFFF"
- center - boolean, draw image from center instead of top left
- height - number
- width - number
- input - Flee formula string
- ang - Flee formula string, initial angle degrees
- min - Flee formula string, default 0.0, yes this means it can be dynamic
- max - Flee formula string, default 1.0, yes this means it can be dynamic
- Basic3D1 (legacy component, no Flee expressions) (everything in Item plus)
"type": "basic3d1"- image - string, filename of image, start with
\to use a path relative to themes folder instead of current theme - shadowl - string, filename of image, start with
\to use a path relative to themes folder instead of current theme - shadowr - string, filename of image, start with
\to use a path relative to themes folder instead of current theme - shadowu - string, filename of image, start with
\to use a path relative to themes folder instead of current theme - shadowd - string, filename of image, start with
\to use a path relative to themes folder instead of current theme - height - number
- width - number
- tilttranslatex - number
- tilttranslatey - number
- mode - enum, valid values:
- "accel"
- "gyro"
- DualShock 4
"quad_left"= ControlDPad()"quad_right"= ControlButtonQuad()"bumpers"= ControlButtonPair()"bumpers2"= ControlButtonPair()"triggers"= ControlTriggerPair(HasStage2: false)"menu"= ControlButtonPair()"home"= ControlButton()"stick_left"= ControlStick(HasClick: true)"stick_right"= ControlStick(HasClick: true)"touch_center"= ControlTouch(TouchCount: 2, HasClick: true)"motion"= ControlMotion()
- Steam Controller
"quad_left"= ControlDPad()"quad_right"= ControlButtonQuad()"bumpers"= ControlButtonPair()"triggers"= ControlTriggerPair(HasStage2: true)"menu"= ControlButtonPair()"grip"= ControlButtonPair()"home"= ControlButton()"stick_left"= ControlStick(HasClick: true)"touch_left"= ControlTouch(TouchCount: 1, HasClick: true)"touch_right"= ControlTouch(TouchCount: 1, HasClick: true)"motion"= ControlMotion()
- Steam Controller Chell
"quad_left"= ControlDPad()"quad_right"= ControlButtonQuad()"bumpers"= ControlButtonPair()"triggers"= ControlTriggerPair(HasStage2: true)"menu"= ControlButtonPair()"grip"= ControlButtonPair()"home"= ControlButton()"touch_left"= ControlTouch(TouchCount: 1, HasClick: true)"touch_right"= ControlTouch(TouchCount: 1, HasClick: true)"grid_center"= ControlButtonGrid(2, 2)"motion"= ControlMotion()
- ControlTrigger
analog- 0.0 to 1.0 valuestage2- Stage2 0/1
- ControlTriggerPair
l:analog- 0.0 to 1.0 value left triggerr:analog- 0.0 to 1.0 value right triggerl:stage2- Stage2 0/1 left triggerr:stage2- Stage2 0/1 right trigger
- ControlDPad
s- South button(D-Pad Down)pressed 0/1e- East button(D-Pad Right)pressed 0/1w- West button(D-Pad Left)pressed 0/1n- North button(D-Pad Up)pressed 0/1
- ControlButtonQuad
s- South button(A for Steam Controller, ⨉ for PlayStation Controllers)pressed 0/1e- East button(B for Steam Controller, ○ for PlayStation Controllers)pressed 0/1w- West button(X for Steam Controller, □ for PlayStation Controllers)pressed 0/1n- North button(Y for Steam Controller, △ for PlayStation Controllers)pressed 0/1
- ControlButtonGrid (supports various sizes)
width- configured width of button gridheight- configured height of button grid0:1- button x=0,y=1 pressed 0/1
- ControlButtonPair
l- Left button pressed 0/1r- Right button pressed 0/1
- ControlButton
- noting - Button pressed 0/1
- ControlStick
x- -1.0 to 1.0 valuey- -1.0 to 1.0 valueclick- Stick clicked 0/1
- ControlTouch (supports multiple fingers)
click- Touch clicked 0/10:touch- finger #0 touching 0/10:x- -1.0 to 1.0 value for finger #00:y- -1.0 to 1.0 value for finger #0
- ControlMotion (subject to change in future versions)
accelerometer:x- AccelerometerXaccelerometer:y- AccelerometerYaccelerometer:z- AccelerometerZangularVelocity:x- AngularVelocityXangularVelocity:y- AngularVelocityYangularVelocity:z- AngularVelocityZorientation:w- OrientationWorientation:x- OrientationXorientation:y- OrientationYorientation:z- OrientationZ
max(params float[])- Return maximum numbermin(params float[])- Return minimum numbertobool(object)- Convert almost anything to a bool, null implies false, needed in some cases because all variables are numbers by defaultmath.function()- any function from .net's math library
{
"input": "math.abs(stick_left:x) > 0.1"
}(this is needed because all controller state variables are numbers)
{
"input": "not tobool(trigges:l:stage2)"
}{
"input": "not (trigges:l:stage2 > 0)"
}{
"input": "math.max(triggers:l:analog, triggers:r:analog)"
}{
"inputX": "(((quad_right:e * 15) + (quad_right:w * -15)) / max(1,quad_right:n + quad_right:e + quad_right:s + quad_right:w)) + (touch_right:0:touch * 100) + (touch_right:0:x * 55) + (max(quad_right:n, quad_right:e, quad_right:s, quad_right:w) * touch_right:0:touch * -25)",
"inputY": "(((quad_right:s * 15) + (quad_right:n * -15)) / max(1,quad_right:n + quad_right:e + quad_right:s + quad_right:w)) + (touch_right:0:touch * -80) + (touch_right:0:y * 55) + (max(quad_right:n, quad_right:e, quad_right:s, quad_right:w) * touch_right:0:touch * 25)",
}