summaryrefslogtreecommitdiff
path: root/firmware/rust/src/layout.rs
diff options
context:
space:
mode:
authorMarc Poulhiès <dkm@kataplop.net>2022-07-22 21:01:16 +0200
committerMarc Poulhiès <dkm@kataplop.net>2022-07-22 21:06:23 +0200
commitea57bd91c369560a1bc9bb8443acbecf717a3c0f (patch)
treed2e3cdc922badeb9d48e3b5767f8f2c697ac0073 /firmware/rust/src/layout.rs
parent4d702b9b02f0c503547cecc1c6ea075cb2a2e596 (diff)
rust: extract layout in separate module
First step towards reusing for pouetpouet-r2: split!
Diffstat (limited to 'firmware/rust/src/layout.rs')
-rw-r--r--firmware/rust/src/layout.rs79
1 files changed, 79 insertions, 0 deletions
diff --git a/firmware/rust/src/layout.rs b/firmware/rust/src/layout.rs
new file mode 100644
index 0000000..fa1fa25
--- /dev/null
+++ b/firmware/rust/src/layout.rs
@@ -0,0 +1,79 @@
+use keyberon::action::{k, l, m, Action::*, HoldTapConfig};
+use keyberon::key_code::KeyCode::*;
+
+type Action = keyberon::action::Action<CustomActions>;
+
+#[derive(Debug, Clone, Copy, Eq, PartialEq)]
+pub enum CustomActions {
+ LightUp,
+ LightDown,
+
+ ModeCycle,
+ ColorCycle,
+ FreqUp,
+ FreqDown,
+}
+
+pub static LU : CustomActions = CustomActions::LightUp;
+pub static LD : CustomActions = CustomActions::LightDown;
+pub static MC : CustomActions = CustomActions::ModeCycle;
+pub static CC : CustomActions = CustomActions::ColorCycle;
+pub static FU : CustomActions = CustomActions::FreqUp;
+pub static FD : CustomActions = CustomActions::FreqDown;
+
+#[cfg(not(feature = "testmode"))]
+#[rustfmt::skip]
+
+const D_ALT: Action = HoldTap {
+ timeout: 200,
+ tap_hold_interval: 0,
+ config: HoldTapConfig::Default,
+ hold: &k(LAlt),
+ tap: &k(D),
+};
+
+const K_ALT: Action = HoldTap {
+ timeout: 1000,
+ tap_hold_interval: 0,
+ config: HoldTapConfig::Default,
+ hold: &k(RAlt),
+ tap: &k(K),
+};
+
+const F_L1: Action = HoldTap {
+ timeout: 200,
+ tap_hold_interval: 0,
+ config: HoldTapConfig::Default,
+ hold: &l(1),
+ tap: &k(F),
+};
+
+pub static LAYERS: keyberon::layout::Layers<12, 5, 2, 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(CC)} {Action::Custom(FU)} {Action::Custom(FD)} t t Left Down Right t t PgUp ]
+ [{Action::Custom(LU)} t {Action::Custom(LD)} {Action::Custom(MC)} 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],
+ }
+};
+