summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorMarc Poulhiès <dkm@kataplop.net>2021-05-19 14:33:56 +0200
committerMarc Poulhiès <dkm@kataplop.net>2021-05-19 14:33:56 +0200
commit29fa9b6732f32342bb8f3e93f4da29a9c519e3f4 (patch)
tree6791d15d73a25c031a2cfda24064d22f70a31069 /firmware
parentd5fbdb49a5b472bb91ce988a9c6c8018dd74cddd (diff)
Use new macro to define layers + cleaning
Use the new layout!() macro for easier and more readable layers definitions. Add a testmode feature, used to have 'a' on all keys, easier to test if all switch are correctly working or not. Also fixed some minor warnings.
Diffstat (limited to 'firmware')
-rw-r--r--firmware/Cargo.toml5
-rw-r--r--firmware/src/main.rs52
2 files changed, 37 insertions, 20 deletions
diff --git a/firmware/Cargo.toml b/firmware/Cargo.toml
index 6530914..b93b6f3 100644
--- a/firmware/Cargo.toml
+++ b/firmware/Cargo.toml
@@ -24,3 +24,8 @@ lto = true
incremental = false
opt-level = "z"
debug = true
+
+[features]
+default = [ ]
+
+testmode = [ ]
diff --git a/firmware/src/main.rs b/firmware/src/main.rs
index 6a59934..2806262 100644
--- a/firmware/src/main.rs
+++ b/firmware/src/main.rs
@@ -29,12 +29,11 @@ use hal::{
stm32, timers,
};
-use keyberon::action::{k, l, m, Action, Action::*};
+use keyberon::action::Action;
use keyberon::debounce::Debouncer;
use keyberon::impl_heterogenous_array;
use keyberon::key_code::KbHidReport;
use keyberon::key_code::KeyCode;
-use keyberon::key_code::KeyCode::*;
use keyberon::layout::Layout;
use keyberon::matrix::{Matrix, PressedKeys};
@@ -114,23 +113,37 @@ pub enum CustomActions {
FreqDown,
}
+#[cfg(not(feature = "testmode"))]
#[rustfmt::skip]
-pub static LAYERS: keyberon::layout::Layers<CustomActions> = &[
- &[
- &[k(Kb1), k(Kb2), k(Kb3), k(Kb4), k(Kb5), k(Grave), k(Kb6), k(Kb7), k(Kb8), k(Kb9), k(Kb0), k(Minus)],
- &[k(Q), k(W), k(E), k(R), k(T), k(Tab), k(Y), k(U), k(I), k(O), k(P), k(LBracket)],
- &[k(A), k(S), k(D), k(F), k(G), k(BSpace), k(H), k(J), k(K), k(L), k(SColon), k(Quote)],
- &[k(Z), k(X), k(C), k(V), k(B), k(Enter), k(N), k(M), k(Comma), k(Dot), k(Slash), k(Bslash) ],
- &[k(LCtrl), l(1), k(LGui), k(LShift), k(LAlt), k(Space), k(RAlt), k(RBracket), k(Equal), k(Delete), k(RShift), k(RCtrl)],
-
- ], &[
- &[k(F1), k(F2), k(F3), k(F4), k(F5), k(F6), k(F7), k(F8), k(F9), k(F10), k(F11), k(F12)],
- &[k(SysReq), k(NumLock), Trans, Trans, Trans, k(Escape), k(Insert), k(PgUp), k(PgDown), k(VolUp), k(VolDown), k(Mute) ],
- &[Trans , Trans , Trans, Trans, Trans, Trans, k(Home), k(Up), k(End), Trans, Trans, Trans ],
- &[k(NonUsBslash), Action::Custom(CustomActions::ColorCycle), Action::Custom(CustomActions::FreqUp), Action::Custom(CustomActions::FreqDown), Trans, Trans, k(Left), k(Down), k(Right), Trans, Trans, k(PgUp) ],
- &[Action::Custom(CustomActions::LightUp), Trans, Action::Custom(CustomActions::LightDown), Action::Custom(CustomActions::ModeCycle), Trans, Trans, Trans, Trans, Trans, Trans, Trans, k(PgDown)],
- ],
-];
+
+pub static LAYERS: keyberon::layout::Layers<CustomActions> = keyberon::layout::layout! {
+ {
+ [Kb1 Kb2 Kb3 Kb4 Kb5 Grave Kb6 Kb7 Kb8 Kb9 Kb0 Minus]
+ [Q W E R T Tab Y U I O P LBracket]
+ [A S D F G BSpace H J K L SColon Quote]
+ [Z X C V B Enter N M Comma Dot Slash Bslash ]
+ [LCtrl (1) LGui LShift LAlt Space RAlt RBracket Equal Delete RShift RCtrl]
+ }
+ {
+ [F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12]
+ [SysReq NumLock t t t Escape Insert PgUp PgDown VolUp VolDown Mute ]
+ [t t t t t t Home Up End t t t ]
+ [NonUsBslash {Action::Custom(CustomActions::ColorCycle)} {Action::Custom(CustomActions::FreqUp)} {Action::Custom(CustomActions::FreqDown)} t t Left Down Right t t PgUp ]
+ [{Action::Custom(CustomActions::LightUp)} t {Action::Custom(CustomActions::LightDown)} {Action::Custom(CustomActions::ModeCycle)} t t t t t t t PgDown]
+ }
+};
+
+#[cfg(feature = "testmode")]
+#[rustfmt::skip]
+pub static LAYERS: keyberon::layout::Layers<CustomActions> = keyberon::layout::layout! {
+ {
+ [A, A, A, A, A, A, A, A, A, A, A, A],
+ [A, A, A, A, A, A, A, A, A, A, A, A],
+ [A, A, A, A, A, A, A, A, A, A, A, A],
+ [A, A, A, A, A, A, A, A, A, A, A, A],
+ [A, A, A, A, A, A, A, A, A, A, A, A],
+ }
+};
pub struct Leds<SPI> {
ws: ws2812::Ws2812<SPI>,
@@ -350,7 +363,6 @@ impl Backlight {
}
BacklightMode::Circling(c, tstep, step, new_index as usize, new_dir)
}
- any => any,
};
leds.ws
@@ -427,7 +439,7 @@ const APP: () = {
// Do a simple smooth blink at start
let mut delay = Delay::new(c.core.SYST, &rcc);
- let mut tmpleds = [colors::GREEN; 10];
+ let tmpleds = [colors::GREEN; 10];
for i in (0..100).chain((0..100).rev()) {
ws.write(brightness(tmpleds.iter().cloned(), i)).unwrap();
delay.delay_ms(5u8);