MCPcopy Create free account
hub / github.com/RetiredWizard/PyDOS / BBQ10Keyboard

Class BBQ10Keyboard

cpython/kbdFeatherWing/lib/bbq10keyboard.py:168–294  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

166
167
168class BBQ10Keyboard:
169 def __init__(self, i2c, BBQI2CDevice=None):
170 self._i2cdelay = 0.01
171
172 if not BBQI2CDevice:
173 self._i2c = I2CDevice(i2c, _ADDRESS_KBD)
174 else:
175 self._i2c = BBQI2CDevice
176
177 self._buffer = bytearray(2)
178 self.reset()
179
180 def reset(self):
181 with self._i2c as i2c:
182 self._buffer[0] = _REG_RST
183 time.sleep(self._i2cdelay)
184 i2c.write(self._buffer, end=1)
185
186 # need to wait!
187 time.sleep(0.05)
188
189 @property
190 def version(self):
191 ver = self._read_register(_REG_VER)
192 return (ver >> 4, ver & 0x0F)
193
194 @property
195 def status(self):
196 return self._read_register(_REG_KEY)
197
198 @property
199 def key_count(self):
200 return self.status & KEY_COUNT_MASK
201
202 @property
203 def key(self):
204 if self.key_count == 0:
205 return None
206
207 with self._i2c as i2c:
208 self._buffer[0] = _REG_FIF
209 time.sleep(self._i2cdelay)
210 i2c.write(self._buffer, end=1)
211 time.sleep(self._i2cdelay)
212 i2c.readinto(self._buffer, end=2)
213
214 return (int(self._buffer[0]), chr(self._buffer[1]))
215
216 @property
217 def keys(self):
218 keys = []
219
220 for _ in range(self.key_count):
221 keys.append(self.key)
222
223 return keys
224
225 @property

Callers 3

__init__Method · 0.90
factory_test.pyFile · 0.90
__init__Method · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected