Why am I getting duplicate key events on Windows?
A lot of examples out there in the wild might use the following code for sending key presses:
CrosstermEvent::Key(e) => tx.send(Event::Key(e)),
However, on Windows, when using Crossterm, this will send the same Event::Key(e) twice; one for
when you press the key, i.e. KeyEventKind::Press and one for when you release the key, i.e.
KeyEventKind::Release. On MacOS and Linux only KeyEventKind::Press kinds of key event is
generated.
To make the code work as expected across all platforms, you can do this instead:
CrosstermEvent::Key(key) => {
if key.kind == KeyEventKind::Press {
event_tx.send(Event::Key(key)).unwrap();
}
},