diff options
author | BuildTools <unconfigured@null.spigotmc.org> | 2015-12-09 00:56:57 +0300 |
---|---|---|
committer | BuildTools <unconfigured@null.spigotmc.org> | 2015-12-09 00:56:57 +0300 |
commit | cfc44afa07eccc52d769ec2d51ff10dbed8211c7 (patch) | |
tree | 9b28d428ca2502425449f9534e0bc2859a77c657 | |
parent | d2afb558c478d1f4d7ba6176dd1d997419037a5f (diff) |
added callback mode for pad touch events
m--------- | local | 8 | ||||
-rw-r--r-- | scripts/sc-callbacks.py | 11 | ||||
-rw-r--r-- | src/events.py | 18 |
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: |