From 68a496e9201e11099975fc604c73b7dc574d3526 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Thu, 23 Mar 2023 17:28:11 -0600 Subject: [PATCH] keypressed stashed --- src/gui.rs | 48 +++++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/src/gui.rs b/src/gui.rs index a90d108..640ecd5 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -31,7 +31,7 @@ struct Main { ntfy: String, configuring: Option, inputs: Inputs, - // TODO keys down + keys_down: Vec, flags: Flags, } @@ -101,6 +101,7 @@ impl Application for Main { r: iced::keyboard::KeyCode::E, }, flags: flags, + keys_down: vec![], }, Command::none()) } @@ -144,23 +145,8 @@ impl Application for Main { modifiers: _, .. }) => { - let nope = String::from(""); - let s = match key_code { - _ if key_code == self.inputs.stick.up => &self.flags.cfg.up, - _ if key_code == self.inputs.stick.down => &self.flags.cfg.down, - _ if key_code == self.inputs.stick.left => &self.flags.cfg.left, - _ if key_code == self.inputs.stick.right => &self.flags.cfg.right, - _ if key_code == self.inputs.a => &self.flags.cfg.a, - _ if key_code == self.inputs.b => &self.flags.cfg.b, - _ if key_code == self.inputs.x => &self.flags.cfg.x, - _ if key_code == self.inputs.y => &self.flags.cfg.y, - _ if key_code == self.inputs.l => &self.flags.cfg.l, - _ if key_code == self.inputs.r => &self.flags.cfg.r, - _ => &nope, - }; - if s.len() > 0 { - self.flags.output_stream.put(s.chars().collect()); - } + self.keys_down.push(key_code); + self.keys_down.dedup(); }, _ => {}, } @@ -170,7 +156,31 @@ impl Application for Main { self.ntfy = format!("push a key to bind to {:?}", msg.clone()); }, } - // TODO self.flags.output_stream.put(s.chars().collect()); for all keys down + let mut s = vec![]; + for key_code in self.keys_down.iter() { + let nope = String::from(""); + let s2 = match key_code { + _ if key_code == &self.inputs.stick.up => &self.flags.cfg.up, + _ if key_code == &self.inputs.stick.down => &self.flags.cfg.down, + _ if key_code == &self.inputs.stick.left => &self.flags.cfg.left, + _ if key_code == &self.inputs.stick.right => &self.flags.cfg.right, + _ if key_code == &self.inputs.a => &self.flags.cfg.a, + _ if key_code == &self.inputs.b => &self.flags.cfg.b, + _ if key_code == &self.inputs.x => &self.flags.cfg.x, + _ if key_code == &self.inputs.y => &self.flags.cfg.y, + _ if key_code == &self.inputs.l => &self.flags.cfg.l, + _ if key_code == &self.inputs.r => &self.flags.cfg.r, + _ => &nope, + }; + if s2.len() > 0 { + for c in s2.chars() { + s.push(c); + } + } + } + if s.len() > 0 { + self.flags.output_stream.put(s); + } return Command::none(); }