From b66b4399ad2e178c3ba36c6fc5a6e65fd5aa4b17 Mon Sep 17 00:00:00 2001 From: Kirill Chibisov Date: Sat, 16 Sep 2023 12:37:23 +0400 Subject: Add keyboard.repeat-rate and keyboard.repeat-delay Add option to let the users configure the keyboard repeat delay and rate. Also change the default values to mimic the Xorg, which is also the values used by default by the majority of the compositors. Fixes: #7 --- src/config.rs | 10 ++++++++++ src/niri.rs | 7 ++++++- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/config.rs b/src/config.rs index a5030ea4..354a1c6f 100644 --- a/src/config.rs +++ b/src/config.rs @@ -30,6 +30,12 @@ pub struct Input { pub struct Keyboard { #[knuffel(child, default)] pub xkb: Xkb, + // The default value represents the one used by Xorg. + #[knuffel(child, unwrap(argument), default = 660)] + pub repeat_delay: u16, + // The default value represents the one used by Xorg. + #[knuffel(child, unwrap(argument), default = 25)] + pub repeat_rate: u8, } #[derive(knuffel::Decode, Debug, Default, PartialEq, Eq)] @@ -244,6 +250,8 @@ mod tests { r#" input { keyboard { + repeat-delay 660 + repeat-rate 25 xkb { layout "us,ru" options "grp:win_space_toggle" @@ -277,6 +285,8 @@ mod tests { options: Some("grp:win_space_toggle".to_owned()), ..Default::default() }, + repeat_delay: 660, + repeat_rate: 25, }, touchpad: Touchpad { tap: true, diff --git a/src/niri.rs b/src/niri.rs index 6d497176..6bad55fc 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -228,7 +228,12 @@ impl Niri { variant: &config_.input.keyboard.xkb.variant, options: config_.input.keyboard.xkb.options.clone(), }; - seat.add_keyboard(xkb, 400, 30).unwrap(); + seat.add_keyboard( + xkb, + config_.input.keyboard.repeat_delay as i32, + config_.input.keyboard.repeat_rate as i32, + ) + .unwrap(); seat.add_pointer(); let socket_source = ListeningSocketSource::new_auto().unwrap(); -- cgit