summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/stopwatch/src/main.rs16
-rw-r--r--futures/src/keyboard.rs4
2 files changed, 17 insertions, 3 deletions
diff --git a/examples/stopwatch/src/main.rs b/examples/stopwatch/src/main.rs
index 842ba3d4..0b0f0607 100644
--- a/examples/stopwatch/src/main.rs
+++ b/examples/stopwatch/src/main.rs
@@ -1,5 +1,6 @@
use iced::alignment;
use iced::executor;
+use iced::keyboard;
use iced::theme::{self, Theme};
use iced::time;
use iced::widget::{button, column, container, row, text};
@@ -77,12 +78,25 @@ impl Application for Stopwatch {
}
fn subscription(&self) -> Subscription<Message> {
- match self.state {
+ let tick = match self.state {
State::Idle => Subscription::none(),
State::Ticking { .. } => {
time::every(Duration::from_millis(10)).map(Message::Tick)
}
+ };
+
+ fn handle_hotkey(
+ key_code: keyboard::KeyCode,
+ _modifiers: keyboard::Modifiers,
+ ) -> Option<Message> {
+ match key_code {
+ keyboard::KeyCode::Space => Some(Message::Toggle),
+ keyboard::KeyCode::R => Some(Message::Reset),
+ _ => None,
+ }
}
+
+ Subscription::batch(vec![tick, keyboard::on_key_press(handle_hotkey)])
}
fn view(&self) -> Element<Message> {
diff --git a/futures/src/keyboard.rs b/futures/src/keyboard.rs
index 1ddca0bb..af68e1f2 100644
--- a/futures/src/keyboard.rs
+++ b/futures/src/keyboard.rs
@@ -44,9 +44,9 @@ where
Message: MaybeSend + 'static,
{
#[derive(Hash)]
- struct OnKeyPress;
+ struct OnKeyRelease;
- subscription::filter_map((OnKeyPress, f), move |event, status| {
+ subscription::filter_map((OnKeyRelease, f), move |event, status| {
match (event, status) {
(
core::Event::Keyboard(Event::KeyReleased {