274 lines
7.7 KiB
Rust
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
|
|
];
|