5
5
6
6
7
7
class Matrix :
8
+ """
9
+ Implement the drive of keyboard matrix and provide an event queue.
10
+ """
11
+
8
12
# ROWS = (P0_05, P0_06, P0_07, P0_08, P1_09, P1_08, P0_12, P0_11)
9
13
# COLS = (P0_19, P0_20, P0_21, P0_22, P0_23, P0_24, P0_25, P0_26)
10
14
ROWS = ()
11
15
COLS = ()
16
+
17
+ # direction of diode
12
18
ROW2COL = False
13
19
14
20
def __init__ (self ):
@@ -42,6 +48,11 @@ def __init__(self):
42
48
self ._debounce_time = 20000000
43
49
44
50
def scan (self ):
51
+ """
52
+ Scan keyboard matrix and save key event into the queue.
53
+
54
+ :return: length of the key event queue.
55
+ """
45
56
t = time .monotonic_ns ()
46
57
47
58
# use local variables to speed up
@@ -83,7 +94,8 @@ def scan(self):
83
94
84
95
return self .length
85
96
86
- def wait (self , timeout = 0 ):
97
+ def wait (self , timeout = 1000 ):
98
+ """Wait for a new key event or timeout"""
87
99
last = self .length
88
100
if timeout :
89
101
end_time = time .monotonic_ns () + timeout * 1000000
@@ -98,13 +110,15 @@ def wait(self, timeout=0):
98
110
return n
99
111
100
112
def put (self , data ):
113
+ """Put a key event into the queue"""
101
114
self .queue [self .head ] = data
102
115
self .head += 1
103
116
if self .head >= self .keys :
104
117
self .head = 0
105
118
self .length += 1
106
119
107
120
def get (self ):
121
+ """Remove and return the first event from the queue."""
108
122
data = self .queue [self .tail ]
109
123
self .tail += 1
110
124
if self .tail >= self .keys :
@@ -113,24 +127,31 @@ def get(self):
113
127
return data
114
128
115
129
def view (self , n ):
130
+ """Return the specified event"""
116
131
return self .queue [(self .tail + n ) % self .keys ]
117
132
118
133
def __getitem__ (self , n ):
134
+ """Return the specified event"""
119
135
return self .queue [(self .tail + n ) % self .keys ]
120
136
121
137
def __len__ (self ):
138
+ """Return the number of events in the queue"""
122
139
return self .length
123
140
124
141
def get_keydown_time (self , key ):
142
+ """Return the key pressed time"""
125
143
return self .t0 [key ]
126
144
127
145
def get_keyup_time (self , key ):
146
+ """Return the key released time"""
128
147
return self .t1 [key ]
129
148
130
149
def time (self ):
150
+ """Return current time"""
131
151
return time .monotonic_ns ()
132
152
133
153
def ms (self , t ):
154
+ """Convert time to milliseconds"""
134
155
return t // 1000000
135
156
136
157
@property
@@ -139,7 +160,9 @@ def debounce_time(self):
139
160
140
161
@debounce_time .setter
141
162
def debounce_time (self , t ):
163
+ """Set debounce time"""
142
164
self ._debounce_time = t * 1000000
143
165
144
166
def suspend (self ):
167
+ """Suspend keyboard"""
145
168
pass
0 commit comments