From 10f8c74ad95206315525e23dbcaf717db3748706 Mon Sep 17 00:00:00 2001 From: tonasz <27835465+Tonasz@users.noreply.github.com> Date: Sat, 15 Jan 2022 01:07:33 +0100 Subject: [PATCH] Allow declaring encoders without a button --- kmk/modules/encoder.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/kmk/modules/encoder.py b/kmk/modules/encoder.py index 0de1cf4..2266fd4 100644 --- a/kmk/modules/encoder.py +++ b/kmk/modules/encoder.py @@ -15,7 +15,7 @@ class Encoder: def __init__(self, pin_a, pin_b, pin_button=None, is_inverted=False): self.pin_a = EncoderPin(pin_a) self.pin_b = EncoderPin(pin_b) - self.pin_button = EncoderPin(pin_button, button_type=True) + self.pin_button = EncoderPin(pin_button, button_type=True) if pin_button is not None else None self.is_inverted = is_inverted self._state = (self.pin_a.get_value(), self.pin_b.get_value()) @@ -80,11 +80,12 @@ class Encoder: self._timestamp = new_timestamp # Button events - new_button_state = self.pin_button.get_value() - if new_button_state != self._button_state: - self._button_state = new_button_state - if self.on_button_do is not None: - self.on_button_do(self.get_state()) + if self.pin_button: + new_button_state = self.pin_button.get_value() + if new_button_state != self._button_state: + self._button_state = new_button_state + if self.on_button_do is not None: + self.on_button_do(self.get_state()) # returnd knob velocity as milliseconds between position changes (detents) # for backwards compatibility