LINUX.ORG.RU
ФорумGames

Подскажите как забиндить кнопки в ds4drv.

 


0

1

Хочу забиндить гироскоп на правый (или левый) стик.

Что бы камерой крутить (или рулем в случае с левым стиком).

У ds4drv нет мана, а по пояснениям в дефолтном конфиге ничего не могу понять:

# Many of the settings used here are directly connected to their command line
# counterparts, see "ds4drv --help" for more information about available options.

##
# Global options
##
[ds4drv]
# Run ds4drv in background as a daemon
#daemon = true

# Location of the log file in daemon mode
#daemon-log = ~/.cache/ds4drv.log

# Location of the PID file in daemon mode
#daemon-pid = /tmp/ds4drv.pid

# Enable hidraw mode
#hidraw = true


##
# Controller settings
#
# This is the default profile for each controller.
# Multiple controllers slots are defined by increasing the number.
#
# Controller sections contain:
#  Key: A option, these are the same options that can used on the command line
#       but without the "--" prefix.
#  Value: The option's value, should be "true" if no value is needed.
#
# See "ds4drv --help" for a complete list of available options.
##
[controller:1]
# Enables LED flash on low battery
#battery-flash = true

# Sets LED color
#led = 0000ff

# Enables profile switching
#profile-toggle = PS

# Profiles to cycle through
#profiles = xpad,kbmouse


##
# Profiles
#
# Profiles allows switching controller settings during runtime.
#
# Profile sections always require a name and are then enabled on a controller
# with "profiles = <profile1>[,<profile2>]".
#
# The same settings available for controllers are used here.
##
[profile:xpad]
led = ff0000
# Emulate the same button mapping as wired Xbox 360 controllers
emulate-xpad = true

[profile:kbmouse]
led = 00ff00
# Enable trackpad mouse
trackpad-mouse = true
# Custom button mapping
mapping = keyboard
# Custom action bindings
bindings = exec_stuff


##
# Mappings
#
# Mappings let you map buttons and sticks to mouse, key and joystick events.
#
# Mapping sections always require a name and are then enabled in a profile
# with "mapping = <name>".
#
# Mapping sections contain:
#  Key: A Linux input event, see /usr/include/linux/input-event-codes.h for a complete list
#  Value: Button on the DS4, use --dump-reports to see all the available buttons
##

[mapping:keyboard]
# General button to key mapping
KEY_UP = dpad_up
KEY_LEFT = dpad_left
KEY_DOWN = dpad_down
KEY_RIGHT = dpad_right
KEY_Z = button_cross
KEY_X = button_circle

# Turn analog stick directions into buttons
KEY_W = -left_analog_y
KEY_A = -left_analog_x
KEY_S = +left_analog_y
KEY_D = +left_analog_x

# Map relative mouse movement to a analog stick
REL_X = right_analog_x
REL_Y = right_analog_y

# Map mouse buttons
BTN_LEFT = button_r2
BTN_RIGHT = button_l2

# Emulate mouse wheel on r1 and l1
REL_WHEELUP = button_l1
REL_WHEELDOWN = button_r1

# Mouse settings
#mouse_sensitivity = 0.6
#mouse_deadzone = 5

# Scroll wheel emulation settings (values are in seconds)
#mouse_scroll_repeat_delay = 0.25 # How long to wait before continual scrolling
#mouse_scroll_delay = 0.05 # Lower this to scroll faster; raise to scroll slower


##
# Bindings
#
# Bindings let you bind button combos to special built-in actions.
#
# Binding sections can be defined with a name and are then enabled in a profile
# with "bindings = <name>".
#
# It's also possible to define a global bindings section that is enabled
# on all profiles.
#
# Sections contains:
#  Key: A button combo
#  Value: An action, see next section for valid actions.
#
#
# Valid actions:
#  next-profile                                  Loads the next profile
#  prev-profile                                  Loads the previous profile
#  load-profile <profile>                        Loads the specified profile
#  exec <command> [arg1] [arg2] ...              Executes the command with
#                                                specified arguments
#  exec-background <command> [arg1] [arg2] ...   Same as exec but launches in
#                                                the background
#
#
# Actions will be pre-processed and replace variables with real values.
#
# Valid variables:
#  $profile                The current profile
#  $name                   Pretty name of the current device
#  $device_addr            Bluetooth address of the device
#  $report.<attribute>     Replace <attribute> with a valid attribute,
#                          use --dump-reports to see which are available
##

[bindings]
# Cycle profiles
#PS+Right = next-profile
#PS+Left = prev-profile

# Go directly to specified profile
#PS+Up = load-profile kbmouse
#PS+Down = load-profile default


[bindings:exec_stuff]
# Execute a command in the foreground, blocking until it has finished
PS+Cross = exec echo '$name'

# Execute a command in the background
PS+Triangle = exec-background sh -c 'echo "disconnect $device_addr" | bluetoothctl' 

Посмотрел через --dump-reports обозначения кнопок:

[info][controller 1] Report dump
    left_analog_x: 128
    left_analog_y: 128
    right_analog_x: 128
    right_analog_y: 128
    l2_analog: 0
    r2_analog: 0
    dpad_up: False
    dpad_down: False
    dpad_left: False
    dpad_right: False
    button_cross: False
    button_circle: False
    button_square: False
    button_triangle: False
    button_l1: False
    button_l2: False
    button_l3: False
    button_r1: False
    button_r2: False
    button_r3: False
    button_share: False
    button_options: False
    button_trackpad: False
    button_ps: False
    motion_y: -3
    motion_x: -2
    motion_z: 4
    orientation_roll: -107
    orientation_yaw: 7463
    orientation_pitch: -21
    trackpad_touch0_id: 1
    trackpad_touch0_active: False
    trackpad_touch0_x: 29
    trackpad_touch0_y: 766
    trackpad_touch1_id: 2
    trackpad_touch1_active: False
    trackpad_touch1_x: 1249
    trackpad_touch1_y: 0
    timestamp: 14
    battery: 8
    plug_usb: False
    plug_audio: False
    plug_mic: False

Теперь судя по всему нужно указать профиль

[profile:default]
right_analog_y = orientation_yaw 

И т.д…

Но ds4drv банально выдает ошибку.

ЧЯДНТ?