24
24
__version__ = "0.0.0+auto.0"
25
25
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_CursorControl.git"
26
26
27
-
28
27
# PyBadge
29
28
PYBADGE_BUTTON_LEFT = const (7 )
30
29
PYBADGE_BUTTON_UP = const (6 )
@@ -41,18 +40,23 @@ class CursorManager:
41
40
"""Simple interaction user interface interaction for Adafruit_CursorControl.
42
41
43
42
:param Cursor cursor: The cursor object we are using.
43
+ :param ShiftRegisterKeys shift_register_keys: Optional initialized ShiftRegisterKeys object
44
+ to use instead of having CursorManager initialize and control it.
44
45
"""
45
46
46
47
# pylint: disable=too-many-instance-attributes
47
48
48
- def __init__ (self , cursor : Cursor ) -> None :
49
+ def __init__ (
50
+ self , cursor : Cursor , shift_register_keys : ShiftRegisterKeys = None
51
+ ) -> None :
49
52
self ._cursor = cursor
50
53
self ._is_clicked = False
51
54
self ._is_alt_clicked = False
52
55
self ._is_select_clicked = False
53
56
self ._is_start_clicked = False
54
57
self ._pad_states = 0
55
58
self ._event = Event ()
59
+ self ._pad = shift_register_keys
56
60
self ._init_hardware ()
57
61
58
62
def __enter__ (self ) -> "CursorManager" :
@@ -112,13 +116,14 @@ def _init_hardware(self) -> None:
112
116
raise AttributeError (
113
117
"Board must have a D-Pad or Joystick for use with CursorManager!"
114
118
)
115
- self ._pad = ShiftRegisterKeys (
116
- clock = board .BUTTON_CLOCK ,
117
- data = board .BUTTON_OUT ,
118
- latch = board .BUTTON_LATCH ,
119
- key_count = 8 ,
120
- value_when_pressed = True ,
121
- )
119
+ if self ._pad is None :
120
+ self ._pad = ShiftRegisterKeys (
121
+ clock = board .BUTTON_CLOCK ,
122
+ data = board .BUTTON_OUT ,
123
+ latch = board .BUTTON_LATCH ,
124
+ key_count = 8 ,
125
+ value_when_pressed = True ,
126
+ )
122
127
123
128
@property
124
129
def is_clicked (self ) -> bool :
0 commit comments