From 8a136f62b4952549e2a02d908149bfc0da9d8f33 Mon Sep 17 00:00:00 2001 From: Marc Poulhiès Date: Fri, 22 Jul 2022 21:01:03 +0200 Subject: rust: Initial hold tap work Currently not working (Tap action is never triggered unless some other keys is tapped simultaneous). --- firmware/rust/src/main.rs | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'firmware') diff --git a/firmware/rust/src/main.rs b/firmware/rust/src/main.rs index 5212ab0..523ece9 100644 --- a/firmware/rust/src/main.rs +++ b/firmware/rust/src/main.rs @@ -5,6 +5,10 @@ use panic_halt as _; use core::convert::Infallible; +use keyberon::action::{k, l, m, Action::*, HoldTapConfig}; +use keyberon::key_code::KeyCode::*; + +type Action = keyberon::action::Action; use keyberon::layout::Layout; use keyberon::matrix::Matrix; @@ -31,7 +35,6 @@ use hal::{ stm32, timers, }; -use keyberon::action::Action; use keyberon::debounce::Debouncer; use keyberon::key_code::KbHidReport; use keyberon::key_code::KeyCode; @@ -81,13 +84,37 @@ 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] + [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] -- cgit v1.2.3