mirror of https://github.com/emilk/egui.git
Browse Source
* Fix key press event * Add example with key presses * Changelog line for key_press fix * PR review improvements * Add PR link in changelog Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>pull/2379/head
JP
2 years ago
committed by
GitHub
6 changed files with 97 additions and 18 deletions
@ -0,0 +1,13 @@ |
|||
[package] |
|||
name = "keyboard_events" |
|||
version = "0.1.0" |
|||
authors = ["Jose Palazon <jose@palako.com>"] |
|||
license = "MIT OR Apache-2.0" |
|||
edition = "2021" |
|||
rust-version = "1.65" |
|||
publish = false |
|||
|
|||
|
|||
[dependencies] |
|||
eframe = { path = "../../crates/eframe" } |
|||
tracing-subscriber = "0.3" |
@ -0,0 +1,3 @@ |
|||
```sh |
|||
cargo run -p hello_world |
|||
``` |
@ -0,0 +1,48 @@ |
|||
#![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())), |
|||
); |
|||
} |
|||
|
|||
#[derive(Default)] |
|||
struct Content { |
|||
text: String, |
|||
} |
|||
|
|||
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. Press A to test."); |
|||
if ui.button("Clear").clicked() { |
|||
self.text.clear(); |
|||
} |
|||
ScrollArea::vertical() |
|||
.auto_shrink([false; 2]) |
|||
.stick_to_bottom(true) |
|||
.show(ui, |ui| { |
|||
ui.label(&self.text); |
|||
}); |
|||
|
|||
if ctx.input().key_pressed(Key::A) { |
|||
self.text.push_str("\nPressed"); |
|||
} |
|||
if ctx.input().key_down(Key::A) { |
|||
self.text.push_str("\nHeld"); |
|||
ui.ctx().request_repaint(); // make sure we note the holding.
|
|||
} |
|||
if ctx.input().key_released(Key::A) { |
|||
self.text.push_str("\nReleased"); |
|||
} |
|||
}); |
|||
} |
|||
} |
Loading…
Reference in new issue