]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - src/keypad.py
Update raspi_4b.py description
[Adafruit_Blinka-hackapet.git] / src / keypad.py
index b602a68f08e1628e1c688ddd42250993f93ff125..a156d6e5add4fd0b951ca880d5e33b3618811292 100644 (file)
@@ -180,8 +180,11 @@ class _KeysBase:
 
     def _scanning_loop(self):
         while True:
 
     def _scanning_loop(self):
         while True:
+            remaining_delay = self._interval - (time.monotonic() - self._last_scan)
+            if remaining_delay > 0:
+                time.sleep(remaining_delay)
+            self._last_scan = time.monotonic()
             self._scanning_function()
             self._scanning_function()
-            time.sleep(0.001)
 
 
 class Keys(_KeysBase):
 
 
 class Keys(_KeysBase):
@@ -251,10 +254,6 @@ class Keys(_KeysBase):
         return len(self._digitalinouts)
 
     def _keypad_keys_scan(self):
         return len(self._digitalinouts)
 
     def _keypad_keys_scan(self):
-        if time.monotonic() - self._last_scan < self._interval:
-            return
-        self._last_scan = time.monotonic()
-
         for key_number, dio in enumerate(self._digitalinouts):
             self._previously_pressed[key_number] = self._currently_pressed[key_number]
             current = dio.value == self._value_when_pressed
         for key_number, dio in enumerate(self._digitalinouts):
             self._previously_pressed[key_number] = self._currently_pressed[key_number]
             current = dio.value == self._value_when_pressed
@@ -348,10 +347,6 @@ class KeyMatrix(_KeysBase):
         return row * len(self._column_digitalinouts) + column
 
     def _keypad_keymatrix_scan(self):
         return row * len(self._column_digitalinouts) + column
 
     def _keypad_keymatrix_scan(self):
-        if time.monotonic() - self._last_scan < self._interval:
-            return
-        self._last_scan = time.monotonic()
-
         for row, row_dio in enumerate(self._row_digitalinouts):
             row_dio.switch_to_output(
                 value=(not self._columns_to_anodes),
         for row, row_dio in enumerate(self._row_digitalinouts):
             row_dio.switch_to_output(
                 value=(not self._columns_to_anodes),
@@ -467,14 +462,10 @@ class ShiftRegisterKeys(_KeysBase):
 
     @property
     def events(self):
 
     @property
     def events(self):
-        """The `EventQueue` associated with this `Keys` object. (read-only)"""
+        """The ``EventQueue`` associated with this `Keys` object. (read-only)"""
         return self._events
 
     def _keypad_shiftregisterkeys_scan(self):
         return self._events
 
     def _keypad_shiftregisterkeys_scan(self):
-        if time.monotonic() - self._last_scan < self._interval:
-            return
-        self._last_scan = time.monotonic()
-
         self._latch.value = self._value_to_latch
         for key_number in range(self._key_count):
             self._clock.value = False
         self._latch.value = self._value_to_latch
         for key_number in range(self._key_count):
             self._clock.value = False