rustzx_core/zx/joy/
sinclair.rs

1use crate::zx::keys::ZXKey;
2
3#[cfg_attr(feature = "strum", derive(strum::EnumIter))]
4#[derive(Debug, Clone, Copy)]
5pub enum SinclairKey {
6    Left,
7    Right,
8    Up,
9    Down,
10    Fire,
11}
12
13#[cfg_attr(feature = "strum", derive(strum::EnumIter))]
14#[derive(Debug, Clone, Copy)]
15pub enum SinclairJoyNum {
16    Fist,
17    Second,
18}
19
20pub(crate) fn sinclair_event_to_zx_key(key: SinclairKey, num: SinclairJoyNum) -> ZXKey {
21    match (num, key) {
22        (SinclairJoyNum::Fist, SinclairKey::Left) => ZXKey::N6,
23        (SinclairJoyNum::Fist, SinclairKey::Right) => ZXKey::N7,
24        (SinclairJoyNum::Fist, SinclairKey::Up) => ZXKey::N9,
25        (SinclairJoyNum::Fist, SinclairKey::Down) => ZXKey::N8,
26        (SinclairJoyNum::Fist, SinclairKey::Fire) => ZXKey::N0,
27        (SinclairJoyNum::Second, SinclairKey::Left) => ZXKey::N1,
28        (SinclairJoyNum::Second, SinclairKey::Right) => ZXKey::N2,
29        (SinclairJoyNum::Second, SinclairKey::Up) => ZXKey::N4,
30        (SinclairJoyNum::Second, SinclairKey::Down) => ZXKey::N2,
31        (SinclairJoyNum::Second, SinclairKey::Fire) => ZXKey::N5,
32    }
33}