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:
authorBuildTools <unconfigured@null.spigotmc.org>2015-12-09 00:56:57 +0300
committerBuildTools <unconfigured@null.spigotmc.org>2015-12-09 00:56:57 +0300
commitcfc44afa07eccc52d769ec2d51ff10dbed8211c7 (patch)
tree9b28d428ca2502425449f9534e0bc2859a77c657
parentd2afb558c478d1f4d7ba6176dd1d997419037a5f (diff)
added callback mode for pad touch events
m---------local8
-rw-r--r--scripts/sc-callbacks.py11
-rw-r--r--src/events.py18
3 files changed, 25 insertions, 12 deletions
diff --git a/local b/local
-Subproject b9219c1e11de02866e4393065062d2b9f8c360c
+Subproject d2afb558c478d1f4d7ba6176dd1d997419037a5
diff --git a/scripts/sc-callbacks.py b/scripts/sc-callbacks.py
index 4d234e8..7482faa 100644
--- a/scripts/sc-callbacks.py
+++ b/scripts/sc-callbacks.py
@@ -37,8 +37,11 @@ def button_pressed_callback(evm, btn, pressed):
print "pressing the STEAM button terminates the programm"
sys.exit()
-def touchpad_click_callback(evm, pos, pressed):
- print "Tochpad {} was {}".format(pos, 'pressed' if pressed else 'released')
+def touchpad_click_callback(evm, pad, pressed):
+ print "Tochpad {} was {}".format(pad, 'pressed' if pressed else 'released')
+
+def touchpad_touch_callback(evm, pad, x, y):
+ print "Tochpad {} was touched @{},{}".format(pad, x, y)
def evminit():
evm = EventMapper()
@@ -55,8 +58,8 @@ def evminit():
evm.setButtonCallback(SCButtons.RGRIP, button_pressed_callback)
evm.setButtonCallback(SCButtons.START, button_pressed_callback)
evm.setButtonCallback(SCButtons.BACK, button_pressed_callback)
- evm.setPadButtonCallback(Pos.LEFT, touchpad_click_callback)
- evm.setPadButtonCallback(Pos.RIGHT, touchpad_click_callback)
+ evm.setPadButtonCallback(Pos.LEFT, touchpad_touch_callback)
+ evm.setPadButtonCallback(Pos.RIGHT, touchpad_click_callback, clicked=True)
return evm
diff --git a/src/events.py b/src/events.py
index 36f059f..60bad6b 100644
--- a/src/events.py
+++ b/src/events.py
@@ -292,8 +292,15 @@ class EventMapper(object):
haptic = False
if sci.buttons & on_test == on_test:
- dzone = self._pad_dzones[pos]
+ # get callback events
+ callbacks = []
+ for evt in self._pad_evts[pos]:
+ if evt[0] == Modes.CALLBACK:
+ callbacks.append(evt)
+ for callback_evt in callbacks:
+ callback_evt[1](self, pos, xm, ym)
+ dzone = self._pad_dzones[pos]
if len(self._pad_evts[pos]) == 4:
# key or buttons
tmode, tev = self._pad_evts[pos][0]
@@ -489,18 +496,21 @@ class EventMapper(object):
else:
self._btn_map[SCButtons.RPAD] = (None, 0)
- def setPadButtonCallback(self, pos, callback, clicked=True):
+ def setPadButtonCallback(self, pos, callback, clicked=False):
"""
set callback function to be executed when Pad clicked or touched
+ if clicked is False callback will be called with pad, xpos and ypos
+ else with pad and boolean is_pressed
@param Pos pos designate left or right pad
@param callback Callback function
@param bool clicked callback on touch or on click event
"""
if not clicked:
- # FIXME: add touch support
- raise NotImplementedError('Touch callbacks are not supported yet')
+ self._pad_modes[pos] = PadModes.BUTTONTOUCH
+ self._pad_evts[pos].append((Modes.CALLBACK, callback))
else:
+ self._pad_modes[pos] = PadModes.BUTTONCLICK
if pos == Pos.LEFT:
self._btn_map[SCButtons.LPAD] = (Modes.CALLBACK, callback)
else: