Skip to content

Commit

Permalink
refactor: better names for delay actions, fix on-release
Browse files Browse the repository at this point in the history
  • Loading branch information
jtroo committed Feb 10, 2025
1 parent 4cb60f1 commit dee2680
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 4 deletions.
4 changes: 4 additions & 0 deletions parser/src/cfg/list_actions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ pub const ON_PRESS_FAKEKEY: &str = "on-press-fakekey";
pub const ON_PRESS_FAKEKEY_A: &str = "on↓fakekey";
pub const ON_RELEASE_FAKEKEY: &str = "on-release-fakekey";
pub const ON_RELEASE_FAKEKEY_A: &str = "on↑fakekey";
pub const ON_PRESS_DELAY: &str = "on-press-delay";
pub const ON_RELEASE_DELAY: &str = "on-release-delay";
pub const ON_PRESS_FAKEKEY_DELAY: &str = "on-press-fakekey-delay";
pub const ON_PRESS_FAKEKEY_DELAY_A: &str = "on↓fakekey-delay";
pub const ON_RELEASE_FAKEKEY_DELAY: &str = "on-release-fakekey-delay";
Expand Down Expand Up @@ -174,6 +176,8 @@ pub fn is_list_action(ac: &str) -> bool {
ON_PRESS_FAKEKEY_A,
ON_RELEASE_FAKEKEY,
ON_RELEASE_FAKEKEY_A,
ON_PRESS_DELAY,
ON_RELEASE_DELAY,
ON_PRESS_FAKEKEY_DELAY,
ON_PRESS_FAKEKEY_DELAY_A,
ON_RELEASE_FAKEKEY_DELAY,
Expand Down
6 changes: 4 additions & 2 deletions parser/src/cfg/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1828,8 +1828,10 @@ fn parse_action_list(ac: &[SExpr], s: &ParserState) -> Result<&'static KanataAct
RELEASE_LAYER | RELEASE_LAYER_A => parse_release_layer(&ac[1..], s),
ON_PRESS_FAKEKEY | ON_PRESS_FAKEKEY_A => parse_on_press_fake_key_op(&ac[1..], s),
ON_RELEASE_FAKEKEY | ON_RELEASE_FAKEKEY_A => parse_on_release_fake_key_op(&ac[1..], s),
ON_PRESS_FAKEKEY_DELAY | ON_PRESS_FAKEKEY_DELAY_A => parse_fake_key_delay(&ac[1..], s),
ON_RELEASE_FAKEKEY_DELAY | ON_RELEASE_FAKEKEY_DELAY_A => {
ON_PRESS_DELAY | ON_PRESS_FAKEKEY_DELAY | ON_PRESS_FAKEKEY_DELAY_A => {
parse_fake_key_delay(&ac[1..], s)
}
ON_RELEASE_DELAY | ON_RELEASE_FAKEKEY_DELAY | ON_RELEASE_FAKEKEY_DELAY_A => {
parse_on_release_fake_key_delay(&ac[1..], s)
}
ON_IDLE_FAKEKEY => parse_on_idle_fakekey(&ac[1..], s),
Expand Down
4 changes: 2 additions & 2 deletions src/kanata/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1723,8 +1723,8 @@ impl Kanata {
);
pbtn
}
CustomAction::Delay(delay) => {
log::debug!("on-press: sleeping for {delay} ms");
CustomAction::DelayOnRelease(delay) => {
log::debug!("on-release: sleeping for {delay} ms");
std::thread::sleep(time::Duration::from_millis((*delay).into()));
pbtn
}
Expand Down
42 changes: 42 additions & 0 deletions src/tests/sim_tests/delay_tests.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
use super::*;

#[test]
#[ignore] // timing-based: fails intermittently
fn on_press_delay() {
let start = std::time::Instant::now();
let result = simulate(
"(defsrc) (deflayermap (base) a (on-press-delay 10))",
"d:a t:50 u:a t:50",
);
assert_eq!("", result);
let end = std::time::Instant::now();
let duration = end - start;
assert!(duration > std::time::Duration::from_millis(9));
assert!(duration < std::time::Duration::from_millis(19));
}

#[test]
#[ignore] // timing-based: fails intermittently
fn on_release_delay() {
let start = std::time::Instant::now();
let result = simulate(
"(defsrc) (deflayermap (base) a (on-release-delay 10))",
"d:a t:50 u:a t:50",
);
assert_eq!("", result);
let end = std::time::Instant::now();
let duration = end - start;
assert!(duration > std::time::Duration::from_millis(9));
assert!(duration < std::time::Duration::from_millis(19));
}

#[test]
#[ignore] // timing-based: fails intermittently
fn no_delay() {
let start = std::time::Instant::now();
let result = simulate("(defsrc) (deflayermap (base) a XX)", "d:a t:50 u:a t:50");
assert_eq!("", result);
let end = std::time::Instant::now();
let duration = end - start;
assert!(duration < std::time::Duration::from_millis(10));
}
1 change: 1 addition & 0 deletions src/tests/sim_tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ use rustc_hash::FxHashMap;
mod block_keys_tests;
mod capsword_sim_tests;
mod chord_sim_tests;
mod delay_tests;
mod layer_sim_tests;
mod macro_sim_tests;
mod oneshot_tests;
Expand Down

0 comments on commit dee2680

Please sign in to comment.