diff --git a/src/backend/kms/mod.rs b/src/backend/kms/mod.rs index 279cacb7..7073b88b 100644 --- a/src/backend/kms/mod.rs +++ b/src/backend/kms/mod.rs @@ -165,7 +165,7 @@ fn init_libinput( state.backend.kms().input_devices.remove(device.name()); } - state.process_input_event(event, true); + state.process_input_event(event); for output in state.common.shell.read().unwrap().outputs() { state.backend.kms().schedule_render(output); diff --git a/src/backend/winit.rs b/src/backend/winit.rs index 97f6d833..1bf3f527 100644 --- a/src/backend/winit.rs +++ b/src/backend/winit.rs @@ -320,7 +320,7 @@ impl State { render_ping.ping(); } WinitEvent::Redraw => render_ping.ping(), - WinitEvent::Input(event) => self.process_input_event(event, false), + WinitEvent::Input(event) => self.process_input_event(event), WinitEvent::CloseRequested => { self.common.should_stop = true; } diff --git a/src/backend/x11.rs b/src/backend/x11.rs index 50d0e03c..75096edd 100644 --- a/src/backend/x11.rs +++ b/src/backend/x11.rs @@ -515,7 +515,7 @@ impl State { _ => {} }; - self.process_input_event(event, false); + self.process_input_event(event); // TODO actually figure out the output for output in self.common.shell.read().unwrap().outputs() { self.backend.x11().schedule_render(output); diff --git a/src/input/mod.rs b/src/input/mod.rs index 7d509ba0..3bcb3036 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -159,11 +159,8 @@ impl ModifiersShortcutQueue { } impl State { - pub fn process_input_event( - &mut self, - event: InputEvent, - needs_key_repetition: bool, - ) where + pub fn process_input_event(&mut self, event: InputEvent) + where ::Device: 'static, { use smithay::backend::input::Event; @@ -226,13 +223,7 @@ impl State { time, |data, modifiers, handle| { Self::filter_keyboard_input( - data, - &event, - &seat, - modifiers, - handle, - serial, - needs_key_repetition, + data, &event, &seat, modifiers, handle, serial, ) }, ) @@ -1439,7 +1430,6 @@ impl State { modifiers: &ModifiersState, handle: KeysymHandle<'_>, serial: Serial, - needs_key_repetition: bool, ) -> FilterResult> { let mut shell = self.common.shell.write().unwrap(); @@ -1567,36 +1557,31 @@ impl State { } } } else { - let token = if needs_key_repetition { - let seat_clone = seat.clone(); - let action_clone = action.clone(); - let key_pattern_clone = key_pattern.clone(); - let start = Instant::now(); - let time = event.time_msec(); - self.common - .event_loop_handle - .insert_source( - Timer::from_duration(Duration::from_millis(200)), - move |current, _, state| { - let duration = current.duration_since(start).as_millis(); - state.handle_action( - action_clone.clone(), - &seat_clone, - serial, - time.overflowing_add(duration as u32).0, - key_pattern_clone.clone(), - None, - true, - ); - calloop::timer::TimeoutAction::ToDuration( - Duration::from_millis(25), - ) - }, - ) - .ok() - } else { - None - }; + let seat_clone = seat.clone(); + let action_clone = action.clone(); + let key_pattern_clone = key_pattern.clone(); + let start = Instant::now(); + let time = event.time_msec(); + let token = self + .common + .event_loop_handle + .insert_source( + Timer::from_duration(Duration::from_millis(200)), + move |current, _, state| { + let duration = current.duration_since(start).as_millis(); + state.handle_action( + action_clone.clone(), + &seat_clone, + serial, + time.overflowing_add(duration as u32).0, + key_pattern_clone.clone(), + None, + true, + ); + calloop::timer::TimeoutAction::ToDuration(Duration::from_millis(25)) + }, + ) + .ok(); seat.supressed_keys().add(&handle, token); }