//! 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 ];