Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ynsta/steamcontroller.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStany MARCEL <stanypub@gmail.com>2015-11-03 04:43:25 +0300
committerStany MARCEL <stanypub@gmail.com>2015-11-03 04:43:25 +0300
commitfc3769fc543a8502dd3f12391a1dd9dac24c4304 (patch)
treec0c4cc446a766b9368b3210c32c6f684fe376e23 /scripts
parent37a388a36361aeb46f0f324531acc85ffe361f69 (diff)
Initialize the work on haptic feedback config
Signed-off-by: Stany MARCEL <stanypub@gmail.com>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/sc-dump.py2
-rwxr-xr-xscripts/sc-xbox.py36
2 files changed, 21 insertions, 17 deletions
diff --git a/scripts/sc-dump.py b/scripts/sc-dump.py
index 331a674..10ae162 100755
--- a/scripts/sc-dump.py
+++ b/scripts/sc-dump.py
@@ -27,7 +27,7 @@
import sys
from steamcontroller import SteamController
-def dump(sci):
+def dump(sc, sci):
print(sci)
def _main():
diff --git a/scripts/sc-xbox.py b/scripts/sc-xbox.py
index 182baca..2872eb3 100755
--- a/scripts/sc-xbox.py
+++ b/scripts/sc-xbox.py
@@ -45,7 +45,7 @@ button_map = {
SCButtons.Back : Keys.BTN_SELECT,
SCButtons.Start : Keys.BTN_START,
SCButtons.Steam : Keys.BTN_MODE,
- SCButtons.LPad : Keys.BTN_THUMBL,
+ SCButtons.LPad : Keys.BTN_THUMBL,
SCButtons.RPad : Keys.BTN_THUMBR,
SCButtons.LGrip : Keys.BTN_A,
SCButtons.RGrip : Keys.BTN_B,
@@ -60,7 +60,7 @@ def lpad_func(x, btn, threshold, evstick, evtouch, clicked, invert):
events = []
if btn & SCButtons.LPadTouch != SCButtons.LPadTouch:
- events.append((evstick, x if not invert else -x))
+ events.append((evstick, x if not invert else -x, False))
if (clicked and (btn & (SCButtons.LPad | SCButtons.LPadTouch)) == (SCButtons.LPad | SCButtons.LPadTouch) or
not clicked and (btn & SCButtons.LPadTouch == SCButtons.LPadTouch)):
@@ -75,28 +75,28 @@ def lpad_func(x, btn, threshold, evstick, evtouch, clicked, invert):
x = -32767
else:
x = 0
- events.append((evtouch, x if not invert else -x))
+ events.append((evtouch, x if not invert else -x, x != 0))
elif ((clicked and rmv & SCButtons.LPad == SCButtons.LPad) or
(not clicked and rmv & SCButtons.LPadTouch == SCButtons.LPadTouch)):
- events.append((evtouch, 0))
+ events.append((evtouch, 0, False))
return events
axis_map = {
- 'ltrig' : lambda x, btn: [(Axes.ABS_Z, int(-32767 + ((x*2.0*32767.0)/255.)))],
- 'rtrig' : lambda x, btn: [(Axes.ABS_RZ, int(-32767 + ((x*2.0*32767.0)/255.)))],
- 'lpad_x' : lambda x, btn: lpad_func(x, btn, 15000, Axes.ABS_X, Axes.ABS_HAT0X, True, False),
- 'lpad_y' : lambda x, btn: lpad_func(x, btn, 15000, Axes.ABS_Y, Axes.ABS_HAT0Y, True, True),
- 'rpad_x' : lambda x, btn: [(Axes.ABS_RX, x)],
- 'rpad_y' : lambda x, btn: [(Axes.ABS_RY, -x)],
+ 'ltrig' : lambda x, btn: [(Axes.ABS_Z, int(-32767 + ((x*2.0*32767.0)/255.)), False)],
+ 'rtrig' : lambda x, btn: [(Axes.ABS_RZ, int(-32767 + ((x*2.0*32767.0)/255.)), False)],
+ 'lpad_x' : lambda x, btn: lpad_func(x, btn, 15000, Axes.ABS_X, Axes.ABS_HAT0X, False, False),
+ 'lpad_y' : lambda x, btn: lpad_func(x, btn, 15000, Axes.ABS_Y, Axes.ABS_HAT0Y, False, True),
+ 'rpad_x' : lambda x, btn: [(Axes.ABS_RX, x, False)],
+ 'rpad_y' : lambda x, btn: [(Axes.ABS_RY, -x, False)],
}
prev_key_events = set()
prev_abs_events = set()
-def scInput2Uinput(sci, xb):
+def scInput2Uinput(sc, sci, xb):
global prev_buttons
global prev_key_events
@@ -121,9 +121,11 @@ def scInput2Uinput(sci, xb):
key_events.append((ev, 0))
for name, func in axis_map.items():
- for ev, val in func(sci._asdict()[name], sci.buttons):
+ for ev, val, feedback in func(sci._asdict()[name], sci.buttons):
if ev != None:
- abs_events.append((ev, val))
+ abs_events.append((ev, val, name if feedback else None))
+
+
new = False
for ev in key_events:
@@ -133,8 +135,8 @@ def scInput2Uinput(sci, xb):
for ev in abs_events:
if ev not in prev_abs_events:
- xb.axisEvent(*ev)
-
+ xb.axisEvent(*ev[:2])
+ sc.addFeedback(ev[2])
new = True
if new:
xb.synEvent()
@@ -171,6 +173,8 @@ if __name__ == '__main__':
elif 'restart' == args.command:
daemon.restart()
elif 'debug' == args.command:
- daemon.run()
+ xb = steamcontroller.uinput.Xbox360()
+ sc = SteamController(callback=scInput2Uinput, callback_args=[xb, ])
+ sc.run()
_main()