From 6f9c3a8a44d9d6e7a1b57b04f4d9c7e477244321 Mon Sep 17 00:00:00 2001 From: Simon Rieger Date: Thu, 1 Jun 2023 08:27:54 +0200 Subject: [PATCH] add steam deck configuration files --- dot_config/opensd/config.ini | 11 + dot_config/opensd/profiles/default.profile | 359 +++++++++++++++++ dot_config/opensd/profiles/dualsense.profile | 362 +++++++++++++++++ dot_config/opensd/profiles/dualshock4.profile | 380 ++++++++++++++++++ 4 files changed, 1112 insertions(+) create mode 100644 dot_config/opensd/config.ini create mode 100644 dot_config/opensd/profiles/default.profile create mode 100644 dot_config/opensd/profiles/dualsense.profile create mode 100644 dot_config/opensd/profiles/dualshock4.profile diff --git a/dot_config/opensd/config.ini b/dot_config/opensd/config.ini new file mode 100644 index 0000000..7f462a4 --- /dev/null +++ b/dot_config/opensd/config.ini @@ -0,0 +1,11 @@ +[Daemon] +# The gamepad profile to be loaded on startup +Profile = default.profile + +# Allow client connections from CLI and GUI configuration tools +AllowClients = true +Port = 4040 + + +[Backlight] + diff --git a/dot_config/opensd/profiles/default.profile b/dot_config/opensd/profiles/default.profile new file mode 100644 index 0000000..35ce940 --- /dev/null +++ b/dot_config/opensd/profiles/default.profile @@ -0,0 +1,359 @@ +# OpenSD profile file: default +# +# Please see the online OpenSD users manual at https://open-sd.gitlab.io/opensd-docs +# for detailed explanations of each setting in this file. Or use the offline +# documentation that came with installation, usually in /usr/local/share/opensd. +# An offline manpage is also available by typing: man opensdd +# +# This is file is included with OpenSD and meant as a template. It's recommended +# to make a copy of this file, rather than edit it directly. + + +[Profile] +# Name +# The profile name as it will appear in the GUI and through the CLI query. +# Should be unique for each profile to avoid confusion. +# Value: Any unique name. Should be enclosed in quotes to preserve spaces. +Name = "Default OpenSD Profile" + +# Description +# The profile description as it will appear in the GUI and through the CLI query. +# Value: A brief description. Should be enclosed in quotes "" to preserve spaces. +Description = "A basic configuration that should work for most games and provide a few extras." + + +[Features] +# Force Feedback +# Enable haptic feedback / rumble function. +# Values: true, false +ForceFeedback = true + +# Motion Device +# If this is set to true, an additional input device will be created which +# will report motion control data. Motion axes still need to have thier +# bindings defined. If this is disabled, any "Motion" bindings will be +# ignored. +# Values: true, false +MotionDevice = true + +# Mouse Device +# If this is set to true, an additional input device will be created which +# will be used to send mouse / trackpad events. Mouse events still need to +# have thier bindings defined. If this is disabled, any "Mouse" bindings +# will be ignored. +# Values: true, false +MouseDevice = true + +# Lizard Mode +# The Steam Controller and the Steam Deck both have a kind of fallback BIOS +# mode which emulates some keyboard and mouse events. Valve refers to this +# as 'Lizard Mode'. This mode cannot be redefined. It sends events +# IN ADDITION to the gamepad events created by the OpenSD driver, so it +# should always be disabled. When OpenSD exits, Lizard Mode is re-enabled. +# Values: true, false (recommended: false) +LizardMode = false + +# Stick Filtering +# The thumbsticks on the Steam Deck have a circular range but return square-ish +# data, which makes it feel odd and complicated to apply radial deadzones to. +# Because of this, OpenSD vectorizes the stick position and returns "cleaner", +# round stick ranges, as well as being able to create clean deadzone rescaling. +# If you disable this setting, axis ranges are still internally normalized and +# rescaled to the the uinput device, but no vectorization will be applied and +# any deadzones will be ignored. +# Values: true, false (recommended: true) +StickFiltering = true + +# Trackpad Filtering +# Similar to above, but matches the square shape of the trackpad. Filtering is +# only applied to absolute values. This setting must be enabled to apply +# deadzones to the trackpad absolute axes. Relative values (rel_x and rel_y) +# are unaffected, therefore deadzones do not affect mouse movement with the pads. +# Values: true, false (recommended: true) +TrackpadFiltering = true + + +[DeviceInfo] +# This section allows you to set the name and USB identity of the individual +# input devices created by the gamepad driver. This can be useful to mimic the +# appearance of a specific controller in order to get a very poorly written game +# to recognise and support it. +# +# These are optional and will use defaults if undefined. If the respective +# device is not first enabled in the Feature section, these values will be +# ignored. +# +# Format: +# = +# +# device: Which device to define. Can be: +# vid: Vendor ID. 16-bit hex value starting with "0x" +# pid: Product ID. 16-bit hex value starting with "0x" +# vid: Version. 16-bit hex value starting with "0x" +# name: The name string of the device +# +# Examples: +# Gamepad = 0xDEAD 0xBEEF 0x001 "OpenSD Gamepad Device" +# Motion = 0xDEAD 0xBEEF 0x001 "OpenSD Motion Control Device" +# Mouse = 0xDEAD 0xF00D 0x001 "OpenSD Mouse Device" + + +[Deadzones] +# Axis deadzones +# Values are floating point and represent the percentage of the total range to +# ignore. A value of 0.05 would be a 5% deadzone. Deadzones are capped at +# 90% (0.9). A value of 0 is considered disabled. +# If StickFiltering is disabled, LStick and RStick deadzones will be ignored. +# If TrackpadFiltering is disabled, LPad and RPad deadzones will be ignored. +# Supported inputs: LeftStick, RightStick, LeftPad, RightPad, LeftTrigg, RightTrigg +# Values: 0.000 to 0.900 +LStick = 0.1 +RStick = 0.1 +LPad = 0 +RPad = 0 +LTrigg = 0 +RTrigg = 0 + + +[GamepadAxes] +# Gamepad absolute axes must have a defined range or they will not be created. +# Any 'Gamepad' ABS_ events which are configured in the [Bindings] section must be +# defined here first, or they will be ignored. +ABS_HAT0X = -1 1 +ABS_HAT0Y = -1 1 +ABS_X = -32767 32767 +ABS_Y = -32767 32767 +ABS_RX = -32767 32767 +ABS_RY = -32767 32767 +ABS_Z = 0 32767 +ABS_RZ = 0 32767 + + +[MotionAxes] +# Motion control absolute axes must have a defined range or they will not be created. +# Any 'Motion' ABS_ events which are configured in the [Bindings] section must be +# defined here first, or they will be ignored. +ABS_X = -32767 32767 +ABS_Y = -32767 32767 +ABS_Z = -32767 32767 +ABS_RX = -32767 32767 +ABS_RY = -32767 32767 +ABS_RZ = -32767 32767 + + +[Bindings] +# Gamepad input bindings +# +# This should be a list of all the physical gamepad buttons/sticks/pads/motion +# inputs you want to bind to a virtual input event or command. Anything not +# specified here will be considered 'unbound' and not register any event. +# +# Input: +# Input names reflect the action of the user. Like pressing a button or +# pushing a thumbstick to the left. Button bindings are pretty self-explanatory. +# While axes are broken into directional actions (i.e. LeftStickUp). This way +# you can make an axis send a keypress if you wanted to, and the inverse is +# also possible. +# +# BindType: +# There are two categories of bindings: Event bindings and Command Bindings. +# +# Event Bindings: +# Since OpenSD manages up to 3 separate virtual input devices, you will need +# to specify which device will send a particular event. +# These devices are "Gamepad", "Motion and "Mouse". +# +# Gamepad: This device is for buttons and axes input. This device is always +# enabled. +# +# Motion: This is a separate input device specifically for motion-sensors +# like accelerometers and gyroscopes. This device must be enabled in the +# [Features] section. +# +# Mouse: This is a virtual mouse device which uses relative axes (REL) and +# buttons / keys. This device must be enabled in the [Features] section. +# +# Each binding must be mapped to a Linux input event code. A complete list +# can be found in and the supported codes can be +# found in the OpenSD documentation. +# Most KEY_*, BTN_*, ABS_* and REL_* codes should be usable. +# +# Event type is derived from the code prefix (i.e. KEY_* is a key event, +# ABS_* is an absolute axis event.) +# +# Axis event bindings MUST specify the direction of the axis. This allows +# buttons to send axis events or allows an axis to be inverted at a driver +# level. +# +# Event binding format: +# Input = [ + | - ] +# +# Example: +# DPadUp = Gamepad ABS_HAT0Y - +# +# The above line will bind the up direction on the physical dpad to the negative +# (up/left) direction of an absolute axis on the gamepad device. +# +# There are also some standard meanings for these with regard to device +# types and it is possible to configure this section which can cause very +# strange behaviour. +# +# Please see the documentation for a more detailed explanation about event +# bindings. +# +# Command Bindings: +# The "Command" binding allows you to execute external programs or scripts +# by forking them off as a child process. +# +# Format: +# Input = Command +# +# wait_for_exit: value which specifies if the command should +# complete before the binding can be triggered again. +# +# repeat_delay_ms: The amount of time in milliseconds that must elapse before +# the binding can be triggered again. The timer starts when the binding is +# successfully triggered. +# +# Example: +# QuickAccess = Command true 0 rofi -show run +# +# Profile Bindings: +# This binding type allows you to switch to a different profile using just +# the gamepad input. Profiles are loaded from the user profile directory. +# +# Format: +# Input = Profile +# +# profile_name: Filename of the profile ini you want to load. Path is fixed +# to the user profile directory, so only specify the filename itself. +# +# Example: +# L5 = Profile left_hand_mouse.profile +# +# +# Valid binding types are: Gamepad, Mouse, Motion, Command, Profile +# +# +# Input BindType Mapping +/- +#--------------------------------------------- +# Directional Pad +DpadUp = Gamepad ABS_HAT0Y - +DpadDown = Gamepad ABS_HAT0Y + +DpadLeft = Gamepad ABS_HAT0X - +DpadRight = Gamepad ABS_HAT0X + +# Buttons +A = Gamepad BTN_SOUTH +B = Gamepad BTN_EAST +X = Gamepad BTN_WEST +Y = Gamepad BTN_NORTH +L1 = Gamepad BTN_TL +R1 = Gamepad BTN_TR +L2 = Gamepad BTN_TL2 +R2 = Gamepad BTN_TR2 +L3 = Gamepad BTN_THUMBL +R3 = Gamepad BTN_THUMBR +L4 = None +R4 = None +L5 = None +R5 = None +Menu = Gamepad BTN_START +Options = Gamepad BTN_SELECT +Steam = Gamepad BTN_MODE +QuickAccess = Mouse BTN_RIGHT +# Triggers +LTrigg = Gamepad ABS_Z + +RTrigg = Gamepad ABS_RZ + +# Left Stick +LStickUp = Gamepad ABS_Y - +LStickDown = Gamepad ABS_Y + +LStickLeft = Gamepad ABS_X - +LStickRight = Gamepad ABS_X + +LStickTouch = None +LStickForce = None +# Right Stick +RStickUp = Gamepad ABS_RY - +RStickDown = Gamepad ABS_RY + +RStickLeft = Gamepad ABS_RX - +RStickRight = Gamepad ABS_RX + +RStickTouch = None +RStickForce = None +# Left Trackpad +LPadUp = None +LPadDown = None +LPadLeft = None +LPadRight = None +LPadTouch = None +LPadRelX = None +LPadRelY = None +LPadTouch = None +LPadPress = None +LPadForce = None +LPadPressQuadUp = None +LPadPressQuadDown = None +LPadPressQuadLeft = None +LPadPressQuadRight = None +LPadPressOrthUp = None +LPadPressOrthDown = None +LPadPressOrthLeft = None +LPadPressOrthRight = None +LPadPressGrid2x2_1 = None +LPadPressGrid2x2_2 = None +LPadPressGrid2x2_3 = None +LPadPressGrid2x2_4 = None +LPadPressGrid3x3_1 = None +LPadPressGrid3x3_2 = None +LPadPressGrid3x3_3 = None +LPadPressGrid3x3_4 = None +LPadPressGrid3x3_5 = None +LPadPressGrid3x3_6 = None +LPadPressGrid3x3_7 = None +LPadPressGrid3x3_8 = None +LPadPressGrid3x3_9 = None +# Right Trackpad +RPadUp = None +RPadDown = None +RPadLeft = None +RPadRight = None +RPadTouch = None +RPadRelX = Mouse REL_X +RPadRelY = Mouse REL_Y +RPadTouch = None +RPadPress = Mouse BTN_LEFT +RPadForce = None +RPadPressQuadUp = None +RPadPressQuadDown = None +RPadPressQuadLeft = None +RPadPressQuadRight = None +RPadPressOrthUp = None +RPadPressOrthDown = None +RPadPressOrthLeft = None +RPadPressOrthRight = None +RPadPressGrid2x2_1 = None +RPadPressGrid2x2_2 = None +RPadPressGrid2x2_3 = None +RPadPressGrid2x2_4 = None +RPadPressGrid3x3_1 = None +RPadPressGrid3x3_2 = None +RPadPressGrid3x3_3 = None +RPadPressGrid3x3_4 = None +RPadPressGrid3x3_5 = None +RPadPressGrid3x3_6 = None +RPadPressGrid3x3_7 = None +RPadPressGrid3x3_8 = None +RPadPressGrid3x3_9 = None +# Accelerometers +AccelXPlus = Motion ABS_RX + +AccelXMinus = Motion ABS_RX - +AccelYPlus = Motion ABS_RY + +AccelYMinus = Motion ABS_RY - +AccelZPlus = Motion ABS_RZ + +AccelZMinus = Motion ABS_RZ - +# Gyro / Attitude +RollPlus = Motion ABS_X + +RollMinus = Motion ABS_X - +PitchPlus = Motion ABS_Y + +PitchMinus = Motion ABS_Y - +YawPlus = Motion ABS_Z + +YawMinus = Motion ABS_Z - + diff --git a/dot_config/opensd/profiles/dualsense.profile b/dot_config/opensd/profiles/dualsense.profile new file mode 100644 index 0000000..b622319 --- /dev/null +++ b/dot_config/opensd/profiles/dualsense.profile @@ -0,0 +1,362 @@ +# OpenSD profile file: dualsense +# +# Please see the online OpenSD users manual at https://open-sd.gitlab.io/opensd-docs +# for detailed explanations of each setting in this file. Or use the offline +# documentation that came with installation, usually in /usr/local/share/opensd. +# An offline manpage is also available by typing: man opensdd +# +# This is file is included with OpenSD and meant as a template. It's recommended +# to make a copy of this file, rather than edit it directly. + + +[Profile] +# Name +# The profile name as it will appear in the GUI and through the CLI query. +# Should be unique for each profile to avoid confusion. +# Value: Any unique name. Should be enclosed in quotes to preserve spaces. +Name = "Sony Dualsense compatibility profile" + +# Description +# The profile description as it will appear in the GUI and through the CLI query. +# Value: A brief description. Should be enclosed in quotes "" to preserve spaces. +Description = "This profile mimics the appearance and behaviour of the hid_playstation driver." + + +[Features] +# Force Feedback +# Enable haptic feedback / rumble function. +# Values: true, false +ForceFeedback = true + +# Motion Device +# If this is set to true, an additional input device will be created which +# will report motion control data. Motion axes still need to have thier +# bindings defined. If this is disabled, any "Motion" bindings will be +# ignored. +# Values: true, false +MotionDevice = true + +# Mouse Device +# If this is set to true, an additional input device will be created which +# will be used to send mouse / trackpad events. Mouse events still need to +# have thier bindings defined. If this is disabled, any "Mouse" bindings +# will be ignored. +# Values: true, false +MouseDevice = true + +# Lizard Mode +# The Steam Controller and the Steam Deck both have a kind of fallback BIOS +# mode which emulates some keyboard and mouse events. Valve refers to this +# as 'Lizard Mode'. This mode cannot be redefined. It sends events +# IN ADDITION to the gamepad events created by the OpenSD driver, so it +# should always be disabled. When OpenSD exits, Lizard Mode is re-enabled. +# Values: true, false (recommended: false) +LizardMode = false + +# Stick Filtering +# The thumbsticks on the Steam Deck have a circular range but return square-ish +# data, which makes it feel odd and complicated to apply radial deadzones to. +# Because of this, OpenSD vectorizes the stick position and returns "cleaner", +# round stick ranges, as well as being able to create clean deadzone rescaling. +# If you disable this setting, axis ranges are still internally normalized and +# rescaled to the the uinput device, but no vectorization will be applied and +# any deadzones will be ignored. +# Values: true, false (recommended: true) +StickFiltering = true + +# Trackpad Filtering +# Similar to above, but matches the square shape of the trackpad. Filtering is +# only applied to absolute values. This setting must be enabled to apply +# deadzones to the trackpad absolute axes. Relative values (rel_x and rel_y) +# are unaffected, therefore deadzones do not affect mouse movement with the pads. +# Values: true, false (recommended: true) +TrackpadFiltering = true + + +[DeviceInfo] +# This section allows you to set the name and USB identity of the individual +# input devices created by the gamepad driver. This can be useful to mimic the +# appearance of a specific controller in order to get a very poorly written game +# to recognise and support it. +# +# These are optional and will use defaults if undefined. If the respective +# device is not first enabled in the Feature section, these values will be +# ignored. +# +# Format: +# = +# +# device: Which device to define. Can be: +# vid: Vendor ID. 16-bit hex value starting with "0x" +# pid: Product ID. 16-bit hex value starting with "0x" +# vid: Version. 16-bit hex value starting with "0x" +# name: The name string of the device +# +# Examples: +# Gamepad = 0xDEAD 0xBEEF 0x001 "OpenSD Gamepad Device" +# Motion = 0xDEAD 0xBEEF 0x001 "OpenSD Motion Control Device" +# Mouse = 0xDEAD 0xF00D 0x001 "OpenSD Mouse Device" +Gamepad = 0x054C 0x0CE6 0x8100 "Wireless Controller" +Motion = 0x054C 0x0CE6 0x8100 "Wireless Controller Motion Sensors" +Mouse = 0x054C 0x0CE6 0x8100 "Wireless Controller Touchpad" + + +[Deadzones] +# Axis deadzones +# Values are floating point and represent the percentage of the total range to +# ignore. A value of 0.05 would be a 5% deadzone. Deadzones are capped at +# 90% (0.9). A value of 0 is considered disabled. +# If StickFiltering is disabled, LStick and RStick deadzones will be ignored. +# If TrackpadFiltering is disabled, LPad and RPad deadzones will be ignored. +# Supported inputs: LeftStick, RightStick, LeftPad, RightPad, LeftTrigg, RightTrigg +# Values: 0.000 to 0.900 +LStick = 0 +RStick = 0 +LPad = 0 +RPad = 0 +LTrigg = 0 +RTrigg = 0 + + +[GamepadAxes] +# Gamepad absolute axes must have a defined range or they will not be created. +# Any 'Gamepad' ABS_ events which are configured in the [Bindings] section must be +# defined here first, or they will be ignored. +ABS_HAT0X = -1 1 +ABS_HAT0Y = -1 1 +ABS_X = -255 255 +ABS_Y = -255 255 +ABS_RX = -255 255 +ABS_RY = -255 255 +ABS_Z = 0 255 +ABS_RZ = 0 255 + + +[MotionAxes] +# Motion control absolute axes must have a defined range or they will not be created. +# Any 'Motion' ABS_ events which are configured in the [Bindings] section must be +# defined here first, or they will be ignored. +ABS_X = -32768 32768 16 8192 +ABS_Y = -32768 32768 16 8192 +ABS_Z = -32768 32768 16 8192 +ABS_RX = -2097152 2097152 16 1024 +ABS_RY = -2097152 2097152 16 1024 +ABS_RZ = -2097152 2097152 16 1024 + + +[Bindings] +# Gamepad input bindings +# +# This should be a list of all the physical gamepad buttons/sticks/pads/motion +# inputs you want to bind to a virtual input event or command. Anything not +# specified here will be considered 'unbound' and not register any event. +# +# Input: +# Input names reflect the action of the user. Like pressing a button or +# pushing a thumbstick to the left. Button bindings are pretty self-explanatory. +# While axes are broken into directional actions (i.e. LeftStickUp). This way +# you can make an axis send a keypress if you wanted to, and the inverse is +# also possible. +# +# BindType: +# There are two categories of bindings: Event bindings and Command Bindings. +# +# Event Bindings: +# Since OpenSD manages up to 3 separate virtual input devices, you will need +# to specify which device will send a particular event. +# These devices are "Gamepad", "Motion and "Mouse". +# +# Gamepad: This device is for buttons and axes input. This device is always +# enabled. +# +# Motion: This is a separate input device specifically for motion-sensors +# like accelerometers and gyroscopes. This device must be enabled in the +# [Features] section. +# +# Mouse: This is a virtual mouse device which uses relative axes (REL) and +# buttons / keys. This device must be enabled in the [Features] section. +# +# Each binding must be mapped to a Linux input event code. A complete list +# can be found in and the supported codes can be +# found in the OpenSD documentation. +# Most KEY_*, BTN_*, ABS_* and REL_* codes should be usable. +# +# Event type is derived from the code prefix (i.e. KEY_* is a key event, +# ABS_* is an absolute axis event.) +# +# Axis event bindings MUST specify the direction of the axis. This allows +# buttons to send axis events or allows an axis to be inverted at a driver +# level. +# +# Event binding format: +# Input = [ + | - ] +# +# Example: +# DPadUp = Gamepad ABS_HAT0Y - +# +# The above line will bind the up direction on the physical dpad to the negative +# (up/left) direction of an absolute axis on the gamepad device. +# +# There are also some standard meanings for these with regard to device +# types and it is possible to configure this section which can cause very +# strange behaviour. +# +# Please see the documentation for a more detailed explanation about event +# bindings. +# +# Command Bindings: +# The "Command" binding allows you to execute external programs or scripts +# by forking them off as a child process. +# +# Format: +# Input = Command +# +# wait_for_exit: value which specifies if the command should +# complete before the binding can be triggered again. +# +# repeat_delay_ms: The amount of time in milliseconds that must elapse before +# the binding can be triggered again. The timer starts when the binding is +# successfully triggered. +# +# Example: +# QuickAccess = Command true 0 rofi -show run +# +# Profile Bindings: +# This binding type allows you to switch to a different profile using just +# the gamepad input. Profiles are loaded from the user profile directory. +# +# Format: +# Input = Profile +# +# profile_name: Filename of the profile ini you want to load. Path is fixed +# to the user profile directory, so only specify the filename itself. +# +# Example: +# L5 = Profile left_hand_mouse.profile +# +# +# Valid binding types are: Gamepad, Mouse, Motion, Command, Profile +# +# +# Input BindType Mapping +/- +#--------------------------------------------- +# Directional Pad +DpadUp = Gamepad ABS_HAT0Y - +DpadDown = Gamepad ABS_HAT0Y + +DpadLeft = Gamepad ABS_HAT0X - +DpadRight = Gamepad ABS_HAT0X + +# Buttons +A = Gamepad BTN_SOUTH +B = Gamepad BTN_EAST +X = Gamepad BTN_WEST +Y = Gamepad BTN_NORTH +L1 = Gamepad BTN_TL +R1 = Gamepad BTN_TR +L2 = Gamepad BTN_TL2 +R2 = Gamepad BTN_TR2 +L3 = Gamepad BTN_THUMBL +R3 = Gamepad BTN_THUMBR +L4 = None +R4 = None +L5 = None +R5 = None +Menu = Gamepad BTN_START +Options = Gamepad BTN_SELECT +Steam = Gamepad BTN_MODE +QuickAccess = None +# Triggers +LTrigg = Gamepad ABS_Z + +RTrigg = Gamepad ABS_RZ + +# Left Stick +LStickUp = Gamepad ABS_Y - +LStickDown = Gamepad ABS_Y + +LStickLeft = Gamepad ABS_X - +LStickRight = Gamepad ABS_X + +LStickTouch = None +LStickForce = None +# Right Stick +RStickUp = Gamepad ABS_RY - +RStickDown = Gamepad ABS_RY + +RStickLeft = Gamepad ABS_RX - +RStickRight = Gamepad ABS_RX + +RStickTouch = None +RStickForce = None +# Left Trackpad +LPadUp = None +LPadDown = None +LPadLeft = None +LPadRight = None +LPadTouch = None +LPadRelX = Mouse REL_X +LPadRelY = Mouse REL_Y +LPadTouch = Mouse BTN_TOUCH +LPadPress = Mouse BTN_LEFT +LPadForce = None +LPadPressQuadUp = None +LPadPressQuadDown = None +LPadPressQuadLeft = None +LPadPressQuadRight = None +LPadPressOrthUp = None +LPadPressOrthDown = None +LPadPressOrthLeft = None +LPadPressOrthRight = None +LPadPressGrid2x2_1 = None +LPadPressGrid2x2_2 = None +LPadPressGrid2x2_3 = None +LPadPressGrid2x2_4 = None +LPadPressGrid3x3_1 = None +LPadPressGrid3x3_2 = None +LPadPressGrid3x3_3 = None +LPadPressGrid3x3_4 = None +LPadPressGrid3x3_5 = None +LPadPressGrid3x3_6 = None +LPadPressGrid3x3_7 = None +LPadPressGrid3x3_8 = None +LPadPressGrid3x3_9 = None +# Right Trackpad +RPadUp = None +RPadDown = None +RPadLeft = None +RPadRight = None +RPadTouch = None +RPadRelX = Mouse REL_X +RPadRelY = Mouse REL_Y +RPadTouch = Mouse BTN_TOUCH +RPadPress = Mouse BTN_LEFT +RPadForce = None +RPadPressQuadUp = None +RPadPressQuadDown = None +RPadPressQuadLeft = None +RPadPressQuadRight = None +RPadPressOrthUp = None +RPadPressOrthDown = None +RPadPressOrthLeft = None +RPadPressOrthRight = None +RPadPressGrid2x2_1 = None +RPadPressGrid2x2_2 = None +RPadPressGrid2x2_3 = None +RPadPressGrid2x2_4 = None +RPadPressGrid3x3_1 = None +RPadPressGrid3x3_2 = None +RPadPressGrid3x3_3 = None +RPadPressGrid3x3_4 = None +RPadPressGrid3x3_5 = None +RPadPressGrid3x3_6 = None +RPadPressGrid3x3_7 = None +RPadPressGrid3x3_8 = None +RPadPressGrid3x3_9 = None +# Accelerometers +AccelXPlus = Motion ABS_RX + +AccelXMinus = Motion ABS_RX - +AccelYPlus = Motion ABS_RY + +AccelYMinus = Motion ABS_RY - +AccelZPlus = Motion ABS_RZ + +AccelZMinus = Motion ABS_RZ - +# Gyro / Attitude +RollPlus = Motion ABS_X + +RollMinus = Motion ABS_X - +PitchPlus = Motion ABS_Y + +PitchMinus = Motion ABS_Y - +YawPlus = Motion ABS_Z + +YawMinus = Motion ABS_Z - + diff --git a/dot_config/opensd/profiles/dualshock4.profile b/dot_config/opensd/profiles/dualshock4.profile new file mode 100644 index 0000000..c05d99f --- /dev/null +++ b/dot_config/opensd/profiles/dualshock4.profile @@ -0,0 +1,380 @@ +# OpenSD profile file: dualshock4 +# +# Please see the online OpenSD users manual at https://open-sd.gitlab.io/opensd-docs +# for detailed explanations of each setting in this file. Or use the offline +# documentation that came with installation, usually in /usr/local/share/opensd. +# An offline manpage is also available by typing: man opensdd +# +# This is file is included with OpenSD and meant as a template. It's recommended +# to make a copy of this file, rather than edit it directly. + + +[Profile] +# Name +# The profile name as it will appear in the GUI and through the CLI query. +# Should be unique for each profile to avoid confusion. +# Value: Any unique name. Should be enclosed in quotes to preserve spaces. +Name = "Sony DualShock 4 compatibility profile" + +# Description +# The profile description as it will appear in the GUI and through the CLI query. +# Value: A brief description. Should be enclosed in quotes "" to preserve spaces. +Description = "This profile mimics the appearance and behaviour of the hid_sony driver." + + +[Features] +# Force Feedback +# Enable haptic feedback / rumble function. +# Values: true, false +ForceFeedback = true + +# Motion Device +# If this is set to true, an additional input device will be created which +# will report motion control data. Motion axes still need to have thier +# bindings defined. If this is disabled, any "Motion" bindings will be +# ignored. +# Values: true, false +MotionDevice = true + +# Mouse Device +# If this is set to true, an additional input device will be created which +# will be used to send mouse / trackpad events. Mouse events still need to +# have thier bindings defined. If this is disabled, any "Mouse" bindings +# will be ignored. +# Values: true, false +MouseDevice = true + +# Lizard Mode +# The Steam Controller and the Steam Deck both have a kind of fallback BIOS +# mode which emulates some keyboard and mouse events. Valve refers to this +# as 'Lizard Mode'. This mode cannot be redefined. It sends events +# IN ADDITION to the gamepad events created by the OpenSD driver, so it +# should always be disabled. When OpenSD exits, Lizard Mode is re-enabled. +# Values: true, false (recommended: false) +LizardMode = false + +# Stick Filtering +# The thumbsticks on the Steam Deck have a circular range but return square-ish +# data, which makes it feel odd and complicated to apply radial deadzones to. +# Because of this, OpenSD vectorizes the stick position and returns "cleaner", +# round stick ranges, as well as being able to create clean deadzone rescaling. +# If you disable this setting, axis ranges are still internally normalized and +# rescaled to the the uinput device, but no vectorization will be applied and +# any deadzones will be ignored. +# Values: true, false (recommended: true) +StickFiltering = true + +# Trackpad Filtering +# Similar to above, but matches the square shape of the trackpad. Filtering is +# only applied to absolute values. This setting must be enabled to apply +# deadzones to the trackpad absolute axes. Relative values (rel_x and rel_y) +# are unaffected, therefore deadzones do not affect mouse movement with the pads. +# Values: true, false (recommended: true) +TrackpadFiltering = true + + +[DeviceInfo] +# This section allows you to set the name and USB identity of the individual +# input devices created by the gamepad driver. This can be useful to mimic the +# appearance of a specific controller in order to get a very poorly written game +# to recognise and support it. +# +# These are optional and will use defaults if undefined. If the respective +# device is not first enabled in the Feature section, these values will be +# ignored. +# +# Format: +# = +# +# device: Which device to define. Can be: +# vid: Vendor ID. 16-bit hex value starting with "0x" +# pid: Product ID. 16-bit hex value starting with "0x" +# vid: Version. 16-bit hex value starting with "0x" +# name: The name string of the device +# +# Examples: +# Gamepad = 0xDEAD 0xBEEF 0x001 "OpenSD Gamepad Device" +# Motion = 0xDEAD 0xBEEF 0x001 "OpenSD Motion Control Device" +# Mouse = 0xDEAD 0xF00D 0x001 "OpenSD Mouse Device" +Gamepad = 0x054C 0x05C4 0x8111 "Sony Computer Entertainment Wireless Controller" +Motion = 0x054C 0x05C4 0x8111 "Sony Computer Entertainment Wireless Controller Motion Sensors" +Mouse = 0x054C 0x05C4 0x8111 "Sony Computer Entertainment Wireless Controller Touchpad" + + +[Deadzones] +# Axis deadzones +# Values are floating point and represent the percentage of the total range to +# ignore. A value of 0.05 would be a 5% deadzone. Deadzones are capped at +# 90% (0.9). A value of 0 is considered disabled. +# If StickFiltering is disabled, LStick and RStick deadzones will be ignored. +# If TrackpadFiltering is disabled, LPad and RPad deadzones will be ignored. +# Supported inputs: LeftStick, RightStick, LeftPad, RightPad, LeftTrigg, RightTrigg +# Values: 0.000 to 0.900 +LStick = 0.17 +RStick = 0.17 +LPad = 0 +RPad = 0 +LTrigg = 0.17 +RTrigg = 0.17 + + +[GamepadAxes] +# Gamepad absolute axes must have a defined range or they will not be created. +# Any 'Gamepad' ABS_ events which are configured in the [Bindings] section must be +# defined here first, or they will be ignored. +# +# Format: +# = [fuzz] [res] +# +# axis: Any absolute axis defined in input-event-codes.h (begins with ABS_) +# min: Minimum value of axis (REQUIRED) +# max: Maximum value of axis (REQUIRED) +# fuzz: Fuzziness of axis values (OPTIONAL) (default: 0) +# res: Resolution in units/mm or units/radian (OPTIONAL) (default: 0) +ABS_HAT0X = -1 1 +ABS_HAT0Y = -1 1 +ABS_X = -255 255 +ABS_Y = -255 255 +ABS_RX = -255 255 +ABS_RY = -255 255 +ABS_Z = 0 255 +ABS_RZ = 0 255 + + +[MotionAxes] +# Motion control absolute axes must have a defined range or they will not be created. +# Any 'Motion' ABS_ events which are configured in the [Bindings] section must be +# defined here first, or they will be ignored. +# +# Format: +# = [fuzz] [res] +# +# axis: Any absolute axis defined in input-event-codes.h (begins with ABS_) +# min: Minimum value of axis (REQUIRED) +# max: Maximum value of axis (REQUIRED) +# fuzz: Fuzziness of axis values (OPTIONAL) (default: 0) +# res: Resolution in units/mm or units/radian (OPTIONAL) (default: 0) +ABS_X = -32768 32768 16 8192 +ABS_Y = -32768 32768 16 8192 +ABS_Z = -32768 32768 16 8192 +ABS_RX = -2097152 2097152 16 1024 +ABS_RY = -2097152 2097152 16 1024 +ABS_RZ = -2097152 2097152 16 1024 + + +[Bindings] +# Gamepad input bindings +# +# This should be a list of all the physical gamepad buttons/sticks/pads/motion +# inputs you want to bind to a virtual input event or command. Anything not +# specified here will be considered 'unbound' and not register any event. +# +# Input: +# Input names reflect the action of the user. Like pressing a button or +# pushing a thumbstick to the left. Button bindings are pretty self-explanatory. +# While axes are broken into directional actions (i.e. LeftStickUp). This way +# you can make an axis send a keypress if you wanted to, and the inverse is +# also possible. +# +# BindType: +# There are two categories of bindings: Event bindings and Command Bindings. +# +# Event Bindings: +# Since OpenSD manages up to 3 separate virtual input devices, you will need +# to specify which device will send a particular event. +# These devices are "Gamepad", "Motion and "Mouse". +# +# Gamepad: This device is for buttons and axes input. This device is always +# enabled. +# +# Motion: This is a separate input device specifically for motion-sensors +# like accelerometers and gyroscopes. This device must be enabled in the +# [Features] section. +# +# Mouse: This is a virtual mouse device which uses relative axes (REL) and +# buttons / keys. This device must be enabled in the [Features] section. +# +# Each binding must be mapped to a Linux input event code. A complete list +# can be found in and the supported codes can be +# found in the OpenSD documentation. +# Most KEY_*, BTN_*, ABS_* and REL_* codes should be usable. +# +# Event type is derived from the code prefix (i.e. KEY_* is a key event, +# ABS_* is an absolute axis event.) +# +# Axis event bindings MUST specify the direction of the axis. This allows +# buttons to send axis events or allows an axis to be inverted at a driver +# level. +# +# Event binding format: +# Input = [ + | - ] +# +# Example: +# DPadUp = Gamepad ABS_HAT0Y - +# +# The above line will bind the up direction on the physical dpad to the negative +# (up/left) direction of an absolute axis on the gamepad device. +# +# There are also some standard meanings for these with regard to device +# types and it is possible to configure this section which can cause very +# strange behaviour. +# +# Please see the documentation for a more detailed explanation about event +# bindings. +# +# Command Bindings: +# The "Command" binding allows you to execute external programs or scripts +# by forking them off as a child process. +# +# Format: +# Input = Command +# +# wait_for_exit: value which specifies if the command should +# complete before the binding can be triggered again. +# +# repeat_delay_ms: The amount of time in milliseconds that must elapse before +# the binding can be triggered again. The timer starts when the binding is +# successfully triggered. +# +# Example: +# QuickAccess = Command true 0 rofi -show run +# +# Profile Bindings: +# This binding type allows you to switch to a different profile using just +# the gamepad input. Profiles are loaded from the user profile directory. +# +# Format: +# Input = Profile +# +# profile_name: Filename of the profile ini you want to load. Path is fixed +# to the user profile directory, so only specify the filename itself. +# +# Example: +# L5 = Profile left_hand_mouse.profile +# +# +# Valid binding types are: Gamepad, Mouse, Motion, Command, Profile +# +# +# Input BindType Mapping +/- +#--------------------------------------------- +# Directional Pad +DpadUp = Gamepad ABS_HAT0Y - +DpadDown = Gamepad ABS_HAT0Y + +DpadLeft = Gamepad ABS_HAT0X - +DpadRight = Gamepad ABS_HAT0X + +# Buttons +A = Gamepad BTN_SOUTH +B = Gamepad BTN_EAST +X = Gamepad BTN_WEST +Y = Gamepad BTN_NORTH +L1 = Gamepad BTN_TL +R1 = Gamepad BTN_TR +L2 = Gamepad BTN_TL2 +R2 = Gamepad BTN_TR2 +L3 = Gamepad BTN_THUMBL +R3 = Gamepad BTN_THUMBR +L4 = None +R4 = None +L5 = None +R5 = None +Menu = Gamepad BTN_START +Options = Gamepad BTN_SELECT +Steam = Gamepad BTN_MODE +QuickAccess = None +# Triggers +LTrigg = Gamepad ABS_Z + +RTrigg = Gamepad ABS_RZ + +# Left Stick +LStickUp = Gamepad ABS_Y - +LStickDown = Gamepad ABS_Y + +LStickLeft = Gamepad ABS_X - +LStickRight = Gamepad ABS_X + +LStickTouch = None +LStickForce = None +# Right Stick +RStickUp = Gamepad ABS_RY - +RStickDown = Gamepad ABS_RY + +RStickLeft = Gamepad ABS_RX - +RStickRight = Gamepad ABS_RX + +RStickTouch = None +RStickForce = None +# Left Trackpad +LPadUp = None +LPadDown = None +LPadLeft = None +LPadRight = None +LPadTouch = None +LPadRelX = Mouse REL_X +LPadRelY = Mouse REL_Y +LPadTouch = Mouse BTN_TOUCH +LPadPress = Mouse BTN_LEFT +LPadForce = None +LPadPressQuadUp = None +LPadPressQuadDown = None +LPadPressQuadLeft = None +LPadPressQuadRight = None +LPadPressOrthUp = None +LPadPressOrthDown = None +LPadPressOrthLeft = None +LPadPressOrthRight = None +LPadPressGrid2x2_1 = None +LPadPressGrid2x2_2 = None +LPadPressGrid2x2_3 = None +LPadPressGrid2x2_4 = None +LPadPressGrid3x3_1 = None +LPadPressGrid3x3_2 = None +LPadPressGrid3x3_3 = None +LPadPressGrid3x3_4 = None +LPadPressGrid3x3_5 = None +LPadPressGrid3x3_6 = None +LPadPressGrid3x3_7 = None +LPadPressGrid3x3_8 = None +LPadPressGrid3x3_9 = None +# Right Trackpad +RPadUp = None +RPadDown = None +RPadLeft = None +RPadRight = None +RPadTouch = None +RPadRelX = Mouse REL_X +RPadRelY = Mouse REL_Y +RPadTouch = Mouse BTN_TOUCH +RPadPress = Mouse BTN_LEFT +RPadForce = None +RPadPressQuadUp = None +RPadPressQuadDown = None +RPadPressQuadLeft = None +RPadPressQuadRight = None +RPadPressOrthUp = None +RPadPressOrthDown = None +RPadPressOrthLeft = None +RPadPressOrthRight = None +RPadPressGrid2x2_1 = None +RPadPressGrid2x2_2 = None +RPadPressGrid2x2_3 = None +RPadPressGrid2x2_4 = None +RPadPressGrid3x3_1 = None +RPadPressGrid3x3_2 = None +RPadPressGrid3x3_3 = None +RPadPressGrid3x3_4 = None +RPadPressGrid3x3_5 = None +RPadPressGrid3x3_6 = None +RPadPressGrid3x3_7 = None +RPadPressGrid3x3_8 = None +RPadPressGrid3x3_9 = None +# Accelerometers +AccelXPlus = Motion ABS_RX + +AccelXMinus = Motion ABS_RX - +AccelYPlus = Motion ABS_RY + +AccelYMinus = Motion ABS_RY - +AccelZPlus = Motion ABS_RZ + +AccelZMinus = Motion ABS_RZ - +# Gyro / Attitude +RollPlus = Motion ABS_X + +RollMinus = Motion ABS_X - +PitchPlus = Motion ABS_Y + +PitchMinus = Motion ABS_Y - +YawPlus = Motion ABS_Z + +YawMinus = Motion ABS_Z - +