rustzx_core/zx/joy/
sinclair.rs1use 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}