From ed0d5f871cebcf8a194c29807222c55f4fa6eff6 Mon Sep 17 00:00:00 2001 From: Jose Palazon Date: Tue, 22 Nov 2022 14:48:46 +0000 Subject: [PATCH] Add example with key presses --- examples/keyboard_events/Cargo.toml | 13 +++++++ examples/keyboard_events/README.md | 3 ++ examples/keyboard_events/src/main.rs | 56 ++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 examples/keyboard_events/Cargo.toml create mode 100644 examples/keyboard_events/README.md create mode 100644 examples/keyboard_events/src/main.rs diff --git a/examples/keyboard_events/Cargo.toml b/examples/keyboard_events/Cargo.toml new file mode 100644 index 000000000..f22309427 --- /dev/null +++ b/examples/keyboard_events/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "keyboard_events" +version = "0.1.0" +authors = ["Jose Palazon "] +license = "MIT OR Apache-2.0" +edition = "2021" +rust-version = "1.65" +publish = false + + +[dependencies] +eframe = { path = "../../crates/eframe" } +tracing-subscriber = "0.3" diff --git a/examples/keyboard_events/README.md b/examples/keyboard_events/README.md new file mode 100644 index 000000000..d528b1bc6 --- /dev/null +++ b/examples/keyboard_events/README.md @@ -0,0 +1,3 @@ +```sh +cargo run -p hello_world +``` diff --git a/examples/keyboard_events/src/main.rs b/examples/keyboard_events/src/main.rs new file mode 100644 index 000000000..8c1c42290 --- /dev/null +++ b/examples/keyboard_events/src/main.rs @@ -0,0 +1,56 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release + +use eframe::egui; +use egui::*; +fn main() { + // Log to stdout (if you run with `RUST_LOG=debug`). + tracing_subscriber::fmt::init(); + + let options = eframe::NativeOptions::default(); + eframe::run_native( + "Keyboard events", + options, + Box::new(|_cc| Box::new(Content::default())), + ); +} + +struct Content { + text: String, +} + +impl Default for Content { + fn default() -> Self { + Self { + text: "".to_owned(), + } + } +} + +impl eframe::App for Content { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + egui::CentralPanel::default().show(ctx, |ui| { + ui.heading("Press/Hold/Release example"); + let text_style = TextStyle::Body; + let row_height = ui.text_style_height(&text_style); + ScrollArea::vertical() + .auto_shrink([false; 2]) + .stick_to_bottom(true) + .show_rows(ui, row_height, self.text.len(), |ui, _row_range| { + //for row in row_range { + for line in self.text.lines() { + ui.label(line); + } + }); + + if ctx.input().key_released(Key::A) { + self.text.push_str("\nReleased"); + } + if ctx.input().key_pressed(Key::A) { + self.text.push_str("\npressed"); + } + if ctx.input().key_down(Key::A) { + self.text.push_str("\nheld"); + } + }); + } +}