From b3c546ae4e04a722353d9e92bed371309547c561 Mon Sep 17 00:00:00 2001
From: Stephen D <webmaster@scd31.com>
Date: Tue, 6 Feb 2024 18:19:34 -0400
Subject: [PATCH] fix keyboard bug

---
 src/keyboard.rs | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/keyboard.rs b/src/keyboard.rs
index 7a0ae4e..e787964 100644
--- a/src/keyboard.rs
+++ b/src/keyboard.rs
@@ -5,6 +5,7 @@ use embedded_hal::{
     digital::v2::{InputPin, OutputPin},
 };
 use rp2040_hal::Timer;
+use rtt_target::rprintln;
 
 pub struct Keyboard<
     // col
@@ -60,7 +61,8 @@ impl<
         let mut out = 0;
 
         for x in 0..6 {
-            self.write_cols(1 << x);
+            // +2 gets us to QF (col 6)
+            self.write_cols(1 << (x + 2));
 
             self.timer.delay_ms(1);
 
@@ -75,16 +77,17 @@ impl<
         out
     }
 
-    fn write_cols(&mut self, val: u8) {
-        for i in 0..8 {
+    // 1s in val are low
+    // 0s are high
+    // indexes from furthest pin (QH on second shift register)
+    fn write_cols(&mut self, val: u16) {
+        for i in 0..16 {
             self.col_ser
-                .set_state(((val & (1 << i)) > 0).into())
+                .set_state(((val & (1 << i)) == 0).into())
                 .unwrap();
-            self.timer.delay_ms(1);
+
             self.col_clk.set_low().unwrap();
-            self.timer.delay_ms(1);
             self.col_clk.set_high().unwrap();
-            self.timer.delay_ms(1);
         }
 
         self.col_rclk.set_low().unwrap();
-- 
GitLab