aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras/display/menu_keys.py
diff options
context:
space:
mode:
authorRufo Sanchez <rufo@rufosanchez.com>2021-09-12 16:59:15 -0500
committerKevinOConnor <kevin@koconnor.net>2021-10-11 11:29:53 -0400
commitb336a21fe7361c4a0ff177a99e046472dfe0e96b (patch)
tree0c1162065a02830f107f23b8d1800ae3714e7f9f /klippy/extras/display/menu_keys.py
parent5f184e3f98bbc59ca2d24729339535e208e7dc3a (diff)
downloadkutter-b336a21fe7361c4a0ff177a99e046472dfe0e96b.tar.gz
kutter-b336a21fe7361c4a0ff177a99e046472dfe0e96b.tar.xz
kutter-b336a21fe7361c4a0ff177a99e046472dfe0e96b.zip
button: Support half-stepping encoders
Adds support for half-stepping encoders (encoders that only emit two steps per detent, instead of four). Incorporates the feedback from @susisstrolch's PR: https://github.com/KevinOConnor/klipper/pull/4202 , which was itself built upon a previous PR from @nickbrennan01: https://github.com/KevinOConnor/klipper/pull/730 Uses the table from the Rotary Arduino library linked in buttons.py: https://github.com/brianlow/Rotary/blob/6b784cca67c5f1ce5e11d757a540fc4c0311efca/Rotary.cpp#L21-L40 Signed-off-by: Rufo Sanchez <rufo@rufosanchez.com>
Diffstat (limited to 'klippy/extras/display/menu_keys.py')
-rw-r--r--klippy/extras/display/menu_keys.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/klippy/extras/display/menu_keys.py b/klippy/extras/display/menu_keys.py
index 29e58fe3..91a96e19 100644
--- a/klippy/extras/display/menu_keys.py
+++ b/klippy/extras/display/menu_keys.py
@@ -17,6 +17,8 @@ class MenuKeys:
buttons = self.printer.load_object(config, "buttons")
# Register rotary encoder
encoder_pins = config.get('encoder_pins', None)
+ encoder_steps_per_detent = config.getchoice('encoder_steps_per_detent',
+ {2: 2, 4: 4}, 4)
if encoder_pins is not None:
try:
pin1, pin2 = encoder_pins.split(',')
@@ -24,7 +26,8 @@ class MenuKeys:
raise config.error("Unable to parse encoder_pins")
buttons.register_rotary_encoder(pin1.strip(), pin2.strip(),
self.encoder_cw_callback,
- self.encoder_ccw_callback)
+ self.encoder_ccw_callback,
+ encoder_steps_per_detent)
self.encoder_fast_rate = config.getfloat('encoder_fast_rate',
.030, above=0.)
self.last_encoder_cw_eventtime = 0