-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathRingedEncoderElement.py
More file actions
30 lines (26 loc) · 1.04 KB
/
RingedEncoderElement.py
File metadata and controls
30 lines (26 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from _APC.RingedEncoderElement import RingedEncoderElement
from _Framework.EncoderElement import TouchEncoderElementBase
from APCMessenger import APCMessenger
class RingedEncoderElement(RingedEncoderElement, TouchEncoderElementBase, APCMessenger):
""" Modified to provide pseudo-relative encoder behaviour """
def __init__(self, *a, **k):
self._prev_value = -1
super(RingedEncoderElement, self).__init__(*a, **k)
def is_pressed(self):
""" We're only pretending to be a touch encoder to keep Push happy"""
return False
def _update_ring_mode(self):
""" Don't update if being used as pseudo-relative """
if self.normalized_value_listener_count():
return
else:
super(RingedEncoderElement, self)._update_ring_mode()
def normalize_value(self, value):
""" This is not actually a relative value, but we'll fake it """
delta = 0
if value == 127 or value > self._prev_value:
delta = 0.01
elif value == 0 or value < self._prev_value:
delta = -0.01
self._prev_value = value
return delta