gotta map keycodes to strings since single chars dont cover stuff like arrows nicely

master
bel 2023-03-22 19:00:22 -06:00
parent cc7329f6e4
commit 1b687c445a
2 changed files with 52 additions and 10 deletions

Binary file not shown.

View File

@ -11,7 +11,7 @@ pub fn main() -> iced::Result {
struct Main {
ntfy: String,
configuring: Option<&char>,
configuring: Option<Message>,
inputs: Inputs,
}
@ -83,26 +83,68 @@ impl Application for Main {
}
fn update(&mut self, msg: Message) -> Command<Message> {
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<Message> {
return subscription::events_with(|event, _| match event {
iced::Event::Keyboard(x) => Some(Message::EventOccurred(event)),
iced::Event::Keyboard(_) => Some(Message::EventOccurred(event)),
_ => None,
});
}