274 lines
7.7 KiB
Rust

//! Project: CMtec CMDR joystick 24
//! Date: 2023-08-01
//! Author: Christoffer Martinsson
//! Email: cm@cmtec.se
//! License: Please refer to LICENSE in root directory
use crate::NUMBER_OF_BUTTONS;
#[allow(dead_code)]
#[derive(Debug, PartialEq, PartialOrd, Copy, Clone)]
pub enum ElrsButton {
CH1 = 0,
CH2 = 1,
CH3 = 2,
CH4 = 3,
CH5 = 4, // AUX1/ARM
CH6 = 5,
CH7 = 6,
CH8 = 7,
CH9 = 8,
CH10 = 9,
CH11 = 10,
CH12 = 11,
CH5ON = 12,
CH6ON = 13,
CH7ON = 14,
CH8ON = 15,
CH9ON = 16,
CH10ON = 17,
CH11ON = 18,
CH12ON = 19,
CH5OFF = 20,
CH6OFF = 21,
CH7OFF = 22,
CH8OFF = 23,
CH9OFF = 24,
CH10OFF = 25,
CH11OFF = 26,
CH12OFF = 27,
CH1P = 28,
CH2P = 29,
CH3P = 30,
CH4P = 31,
CH1M = 32,
CH2M = 33,
CH3M = 34,
CH4M = 35,
CH12Z = 36,
CH34Z = 37,
NoEventIndicated = 38,
}
#[allow(dead_code)]
#[derive(Debug, PartialEq, PartialOrd, Copy, Clone)]
pub enum HidButton {
B1 = 0,
B2 = 1,
B3 = 2,
B4 = 3,
B5 = 4,
B6 = 5,
B7 = 6,
B8 = 7,
B9 = 8,
B10 = 9,
B11 = 10,
B12 = 11,
B13 = 12,
B14 = 13,
B15 = 14,
B16 = 15,
B17 = 16,
B18 = 17,
B19 = 18,
B20 = 19,
B21 = 20,
FnL = 21,
FnR = 22,
ModeL = 23,
ModeR = 24,
H1U = 25,
H1R = 26,
H1D = 27,
H1L = 28,
H1B = 29,
H2U = 30,
H2R = 31,
H2D = 32,
H2L = 33,
H2B = 34,
H3U = 35,
H3R = 36,
H3D = 37,
H3L = 38,
H3B = 39,
H4U = 40,
H4R = 41,
H4D = 42,
H4L = 43,
H4B = 44,
NoEventIndicated = 45,
}
#[warn(dead_code)]
// Button index map:
// --------------------------------------------------------------
// | 0 | 1 | | 2 | | 3 | 4 |
// ---------------------------------------------------------------
// | | 5 | 6 | 7 | | 12 | 11 | 10 | |
// | |
// | | 8 | | 13 | |
// | | 9 | | 14 | |
// | X1/Y1 X2/Y2 |
// | | 16 | | 21 | |
// | | 17 | 15 | 18 | | 22 | 20 | 23 | |
// | | 19 | | 24 | |
// ---------------------------------------------------------------
//
/// Button map to HID key (four function layers)
/// Please make sure to set FnL, FnR, ModeL and ModeR at the same position for all layers
/// alt. only set these at function layer 0 and set NoEventIndicated in layer 1-3.
/// Hat button 1-4 = HID B21-B24.
pub const HID_MAP: [[HidButton; NUMBER_OF_BUTTONS]; 4] = [
[
// Function layer 0
// HID Key // Button Index
// -----------------------------------------
HidButton::FnL, // 0
HidButton::B1, // 1
HidButton::B21, // 2
HidButton::FnR, // 3
HidButton::B6, // 4
HidButton::B2, // 5
HidButton::B3, // 6
HidButton::ModeL, // 7
HidButton::B4, // 8
HidButton::B5, // 9
HidButton::B7, // 10
HidButton::B8, // 11
HidButton::ModeR, // 12
HidButton::B9, // 13
HidButton::B10, // 14
HidButton::H1B, // 15 button 22
HidButton::H1U, // 16
HidButton::H1R, // 17
HidButton::H1D, // 18
HidButton::H1L, // 19
HidButton::H2B, // 20 button 23
HidButton::H2U, // 21
HidButton::H2R, // 22
HidButton::H2D, // 23
HidButton::H2L, // 24
],
[
// Function layer 1 (left Fn button pressed)
// HID Key // Button Index
// -----------------------------------------
HidButton::FnL, // 0
HidButton::B11, // 1
HidButton::B21, // 2
HidButton::FnR, // 3
HidButton::B6, // 4
HidButton::B12, // 5
HidButton::B13, // 6
HidButton::ModeL, // 7
HidButton::B14, // 8
HidButton::B15, // 9
HidButton::B7, // 10
HidButton::B8, // 11
HidButton::ModeR, // 12
HidButton::B9, // 13
HidButton::B10, // 14
HidButton::H3B, // 15 button 24
HidButton::H3U, // 16
HidButton::H3R, // 17
HidButton::H3D, // 18
HidButton::H3L, // 19
HidButton::H2B, // 20 button 23
HidButton::H2U, // 21
HidButton::H2R, // 22
HidButton::H2D, // 23
HidButton::H2L, // 24
],
[
// Function layer 2 (right Fn button pressed)
// HID Key // Button Index
// -----------------------------------------
HidButton::FnL, // 0
HidButton::B1, // 1
HidButton::B21, // 2
HidButton::FnR, // 3
HidButton::B16, // 4
HidButton::B2, // 5
HidButton::B3, // 6
HidButton::ModeL, // 7
HidButton::B4, // 8
HidButton::B5, // 9
HidButton::B17, // 10
HidButton::B18, // 11
HidButton::ModeR, // 12
HidButton::B19, // 13
HidButton::B20, // 14
HidButton::H1B, // 15 button 22
HidButton::H1U, // 16
HidButton::H1R, // 17
HidButton::H1D, // 18
HidButton::H1L, // 19
HidButton::H4B, // 20 button 25
HidButton::H4U, // 21
HidButton::H4R, // 22
HidButton::H4D, // 23
HidButton::H4L, // 24
],
[
// Function layer 3 (left + right Fn button pressed)
// HID Key // Button Index
// -----------------------------------------
HidButton::FnL, // 0
HidButton::B11, // 1
HidButton::B21, // 2
HidButton::FnR, // 3
HidButton::B16, // 4
HidButton::B12, // 5
HidButton::B13, // 6
HidButton::ModeL, // 7
HidButton::B14, // 8
HidButton::B15, // 9
HidButton::B17, // 10
HidButton::B18, // 11
HidButton::ModeR, // 12
HidButton::B19, // 13
HidButton::B20, // 14
HidButton::H3B, // 15 button 24
HidButton::H3U, // 16
HidButton::H3R, // 17
HidButton::H3D, // 18
HidButton::H3L, // 19
HidButton::H4B, // 20 button 25
HidButton::H4U, // 21
HidButton::H4R, // 22
HidButton::H4D, // 23
HidButton::H4L, // 24
],
];
pub const ELRS_MAP: [ElrsButton; NUMBER_OF_BUTTONS] = [
// Function layer 0
// HID Key // Button Index
// -----------------------------------------
ElrsButton::CH7OFF, // 0
ElrsButton::CH7ON, // 1
ElrsButton::NoEventIndicated, // 2
ElrsButton::CH8OFF, // 3
ElrsButton::CH8ON, // 4
ElrsButton::CH9ON, // 5
ElrsButton::CH9OFF, // 6
ElrsButton::CH5, // 7
ElrsButton::CH10ON, // 8
ElrsButton::CH10OFF, // 9
ElrsButton::CH11ON, // 10
ElrsButton::CH11OFF, // 11
ElrsButton::CH6, // 12
ElrsButton::CH12ON, // 13
ElrsButton::CH12OFF, // 14
ElrsButton::CH12Z, // 15
ElrsButton::CH2P, // 16
ElrsButton::CH1P, // 17
ElrsButton::CH2M, // 18
ElrsButton::CH1M, // 19
ElrsButton::CH34Z, // 20
ElrsButton::CH4P, // 21
ElrsButton::CH3P, // 22
ElrsButton::CH4M, // 23
ElrsButton::CH3M, // 24
];