diff --git a/src/.gui.rs.swp b/src/.gui.rs.swp deleted file mode 100644 index 756ca05..0000000 Binary files a/src/.gui.rs.swp and /dev/null differ diff --git a/src/gui.rs b/src/gui.rs index 3e5fd8c..f17f0eb 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -11,7 +11,7 @@ pub fn main() -> iced::Result { struct Main { ntfy: String, - configuring: Option<&char>, + configuring: Option, inputs: Inputs, } @@ -83,26 +83,68 @@ impl Application for Main { } fn update(&mut self, msg: Message) -> Command { - match msg { + match msg.clone() { Message::EventOccurred(event) if self.configuring.is_some() => { match event { iced::event::Event::Keyboard(keyboard::Event::KeyPressed{ key_code, - modifiers, + modifiers: _, .. }) => { - self.ntfy = format!("would set {:?}", key_code); + let key_char = match key_code { + iced::keyboard::KeyCode::Key1 => '1', + iced::keyboard::KeyCode::Key2 => '2', + iced::keyboard::KeyCode::Key3 => '3', + iced::keyboard::KeyCode::Key4 => '4', + iced::keyboard::KeyCode::Key5 => '5', + iced::keyboard::KeyCode::Key6 => '6', + iced::keyboard::KeyCode::Key7 => '7', + iced::keyboard::KeyCode::Key8 => '8', + iced::keyboard::KeyCode::Key9 => '9', + iced::keyboard::KeyCode::Key0 => '0', + iced::keyboard::KeyCode::A => 'a', + iced::keyboard::KeyCode::B => 'b', + iced::keyboard::KeyCode::C => 'c', + iced::keyboard::KeyCode::D => 'd', + iced::keyboard::KeyCode::E => 'e', + iced::keyboard::KeyCode::F => 'f', + iced::keyboard::KeyCode::G => 'g', + iced::keyboard::KeyCode::H => 'h', + iced::keyboard::KeyCode::I => 'i', + iced::keyboard::KeyCode::J => 'j', + iced::keyboard::KeyCode::K => 'k', + iced::keyboard::KeyCode::L => 'l', + iced::keyboard::KeyCode::M => 'm', + iced::keyboard::KeyCode::N => 'n', + iced::keyboard::KeyCode::O => 'o', + iced::keyboard::KeyCode::P => 'p', + iced::keyboard::KeyCode::Q => 'q', + iced::keyboard::KeyCode::R => 'r', + iced::keyboard::KeyCode::S => 's', + iced::keyboard::KeyCode::T => 't', + iced::keyboard::KeyCode::U => 'u', + iced::keyboard::KeyCode::V => 'v', + iced::keyboard::KeyCode::W => 'w', + iced::keyboard::KeyCode::X => 'x', + iced::keyboard::KeyCode::Y => 'y', + iced::keyboard::KeyCode::Z => 'z', + iced::keyboard::KeyCode::Up => 'a', + _ => '`', + }; + self.ntfy = format!("set {:?}", key_char.clone()); + match self.configuring.as_ref().unwrap() { + Message::Up => { self.inputs.stick.up = key_char }, + _ => {}, + }; self.configuring = None; }, _ => {}, } }, - Message::EventOccurred(event) if ! self.configuring => {}, + Message::EventOccurred(_) => {}, _ => { - self.configuring = Some(match event { - _ => None, - }); - self.ntfy = format!("push a key to bind to {:?}", msg); + self.configuring = Some(msg.clone()); + self.ntfy = format!("push a key to bind to {:?}", msg.clone()); }, } return Command::none(); @@ -110,7 +152,7 @@ impl Application for Main { fn subscription(&self) -> Subscription { return subscription::events_with(|event, _| match event { - iced::Event::Keyboard(x) => Some(Message::EventOccurred(event)), + iced::Event::Keyboard(_) => Some(Message::EventOccurred(event)), _ => None, }); }