Updated layout

This commit is contained in:
Christoffer Martinsson 2025-03-08 18:09:07 +01:00
parent c3d29e6b49
commit 61bcb0d1f8

View File

@ -22,7 +22,7 @@
// --------------------------------------------------------------- // ---------------------------------------------------------------
// | Fn L| B2 U| B26 U| | B3 | | B28 U| B5 U| B4 L| // | Fn L| B2 U| B26 U| | B3 | | B28 U| B5 U| B4 L|
// --------------------------------------------------------------- // ---------------------------------------------------------------
// | | TH | B6 | B8 | | B13 | B12 | B11 | | // | | B1 | B6 | B8 | | B13 | B12 | B11 | |
// | | // | |
// | | B9 | | B14 | | // | | B9 | | B14 | |
// | | B10 | | B15 | | // | | B10 | | B15 | |
@ -34,7 +34,7 @@
// //
// USB HID joystick map (Fn): // USB HID joystick map (Fn):
// --------------------------------------------------------------- // ---------------------------------------------------------------
// | Fn L| B21 U| B27 U| | B3 | | B28 U| B5 U| B22 L| // | Fn L| B21 U| B27 U| | B3 | | B28 U| B32 U| B22 L|
// --------------------------------------------------------------- // ---------------------------------------------------------------
// | | TH | B7 | B16 | | B17 | B24 | B23 | | // | | TH | B7 | B16 | | B17 | B24 | B23 | |
// | | // | |
@ -310,8 +310,13 @@ fn main() -> ! {
let mut buttons: [Button; NUMBER_OF_BUTTONS + 2] = [Button::default(); NUMBER_OF_BUTTONS + 2]; let mut buttons: [Button; NUMBER_OF_BUTTONS + 2] = [Button::default(); NUMBER_OF_BUTTONS + 2];
let mut gimbal_mode: u8; let mut gimbal_mode: u8;
// Special button functions
// Throttle hold:
pub const TH_BUTTON: u8 = 5;
pub const TH_BUTTON_TRIGGER: u8 = 0;
// Set up usb button layout // Set up usb button layout
buttons[0].usb_button = 0; buttons[0].usb_button = 0; // Fn
buttons[1].usb_button = 2; buttons[1].usb_button = 2;
buttons[1].usb_button_sec_enable = true; buttons[1].usb_button_sec_enable = true;
buttons[1].usb_button_sec = 21; buttons[1].usb_button_sec = 21;
@ -322,7 +327,15 @@ fn main() -> ! {
buttons[3].usb_button_sec = 22; buttons[3].usb_button_sec = 22;
buttons[3].usb_button_sec_trigger_index = 0; buttons[3].usb_button_sec_trigger_index = 0;
buttons[4].usb_button = 5; buttons[4].usb_button = 5;
buttons[5].usb_button = 0; buttons[4].usb_button_sec_enable = true;
buttons[4].usb_button_sec = 32;
buttons[4].usb_button_sec_trigger_index = 0;
buttons[5].usb_button = 1;
buttons[5].usb_button_sec_enable = true;
// Dummy definition to inhibit button press on throttle hold
buttons[5].usb_button_sec = 0;
buttons[5].usb_button_sec_trigger_index = 0;
// Dummy end -----------------------------------------------
buttons[6].usb_button = 6; buttons[6].usb_button = 6;
buttons[6].usb_button_sec_enable = true; buttons[6].usb_button_sec_enable = true;
buttons[6].usb_button_sec = 7; buttons[6].usb_button_sec = 7;
@ -332,10 +345,10 @@ fn main() -> ! {
buttons[7].usb_button_sec = 16; buttons[7].usb_button_sec = 16;
buttons[7].usb_button_sec_trigger_index = 0; buttons[7].usb_button_sec_trigger_index = 0;
buttons[8].usb_button = 9; buttons[8].usb_button = 9;
buttons[8].usb_button_sec_enable = true;
buttons[8].usb_button_sec = 29;
buttons[8].usb_button_sec_trigger_index = 0;
buttons[9].usb_button = 10; buttons[9].usb_button = 10;
buttons[9].usb_button_sec_enable = true;
buttons[9].usb_button_sec = 29;
buttons[9].usb_button_sec_trigger_index = 0;
buttons[10].usb_button = 11; buttons[10].usb_button = 11;
buttons[10].usb_button_sec_enable = true; buttons[10].usb_button_sec_enable = true;
buttons[10].usb_button_sec = 23; buttons[10].usb_button_sec = 23;
@ -349,10 +362,10 @@ fn main() -> ! {
buttons[12].usb_button_sec = 17; buttons[12].usb_button_sec = 17;
buttons[12].usb_button_sec_trigger_index = 0; buttons[12].usb_button_sec_trigger_index = 0;
buttons[13].usb_button = 14; buttons[13].usb_button = 14;
buttons[13].usb_button_sec_enable = true;
buttons[13].usb_button_sec = 31;
buttons[13].usb_button_sec_trigger_index = 0;
buttons[14].usb_button = 15; buttons[14].usb_button = 15;
buttons[14].usb_button_sec_enable = true;
buttons[14].usb_button_sec = 31;
buttons[14].usb_button_sec_trigger_index = 0;
buttons[15].usb_button = 18; buttons[15].usb_button = 18;
buttons[15].usb_button_sec_enable = true; buttons[15].usb_button_sec_enable = true;
buttons[15].usb_button_sec = 20; buttons[15].usb_button_sec = 20;
@ -587,6 +600,12 @@ fn main() -> ! {
} }
// Generate led activity when a button is pressed // Generate led activity when a button is pressed
let mut th_trigger_pressed: bool = false;
for (index, key) in buttons.iter_mut().enumerate() {
if key.pressed && index == TH_BUTTON_TRIGGER.into() {
th_trigger_pressed = true;
}
}
for (index, key) in buttons.iter_mut().enumerate() { for (index, key) in buttons.iter_mut().enumerate() {
if key.pressed != key.previous_pressed { if key.pressed != key.previous_pressed {
key.usb_changed = true; key.usb_changed = true;
@ -596,14 +615,16 @@ fn main() -> ! {
// Set throttle_hold_value // Set throttle_hold_value
if key.pressed != key.previous_pressed if key.pressed != key.previous_pressed
&& key.pressed && key.pressed
&& index == 5 && index == TH_BUTTON.into()
&& th_trigger_pressed
&& unprocessed_value != AXIS_CENTER && unprocessed_value != AXIS_CENTER
{ {
axis[GIMBAL_AXIS_LEFT_Y].hold = axis[GIMBAL_AXIS_LEFT_Y].value; axis[GIMBAL_AXIS_LEFT_Y].hold = axis[GIMBAL_AXIS_LEFT_Y].value;
axis[GIMBAL_AXIS_LEFT_Y].hold_pending = true; axis[GIMBAL_AXIS_LEFT_Y].hold_pending = true;
} else if key.pressed != key.previous_pressed } else if key.pressed != key.previous_pressed
&& key.pressed && key.pressed
&& index == 5 && index == TH_BUTTON.into()
&& th_trigger_pressed
&& unprocessed_value == AXIS_CENTER && unprocessed_value == AXIS_CENTER
{ {
axis[GIMBAL_AXIS_LEFT_Y].hold = AXIS_CENTER; axis[GIMBAL_AXIS_LEFT_Y].hold = AXIS_CENTER;
@ -796,7 +817,12 @@ fn get_joystick_report(
// Sec button mode // Sec button mode
} else if key.pressed && key.usb_button_sec != 0 && key.usb_button_sec_pressed { } else if key.pressed && key.usb_button_sec != 0 && key.usb_button_sec_pressed {
buttons |= 1 << (key.usb_button_sec - 1); buttons |= 1 << (key.usb_button_sec - 1);
} else if key.pressed && key.usb_button != 0 && !key.usb_button_toggle_enable { // Standard mode
} else if key.pressed
&& key.usb_button != 0
&& !key.usb_button_toggle_enable
&& !key.usb_button_sec_pressed
{
buttons |= 1 << (key.usb_button - 1); buttons |= 1 << (key.usb_button - 1);
} }
} }