maple: add maple_bus_ft6

This commit is contained in:
Zack Buhman 2024-05-19 15:04:59 -05:00
parent d2ee2c9fe5
commit dd55208f39
4 changed files with 94 additions and 1 deletions

76
maple/maple_bus_ft6.hpp Normal file
View File

@ -0,0 +1,76 @@
namespace ft6 {
namespace data_transfer {
namespace modifier_key {
constexpr uint32_t s2() { return 0b1 << 7; }
constexpr uint32_t s2(uint32_t reg) { return (reg >> 7) & 0b1; }
constexpr uint32_t right_alt() { return 0b1 << 6; }
constexpr uint32_t right_alt(uint32_t reg) { return (reg >> 6) & 0b1; }
constexpr uint32_t right_shift() { return 0b1 << 5; }
constexpr uint32_t right_shift(uint32_t reg) { return (reg >> 5) & 0b1; }
constexpr uint32_t right_control() { return 0b1 << 4; }
constexpr uint32_t right_control(uint32_t reg) { return (reg >> 4) & 0b1; }
constexpr uint32_t left_gui() { return 0b1 << 3; }
constexpr uint32_t left_gui(uint32_t reg) { return (reg >> 3) & 0b1; }
constexpr uint32_t left_alt() { return 0b1 << 2; }
constexpr uint32_t left_alt(uint32_t reg) { return (reg >> 2) & 0b1; }
constexpr uint32_t left_shift() { return 0b1 << 1; }
constexpr uint32_t left_shift(uint32_t reg) { return (reg >> 1) & 0b1; }
constexpr uint32_t left_control() { return 0b1 << 0; }
constexpr uint32_t left_control(uint32_t reg) { return (reg >> 0) & 0b1; }
}
namespace led_state {
constexpr uint32_t shift() { return 0b1 << 7; }
constexpr uint32_t shift(uint32_t reg) { return (reg >> 7) & 0b1; }
constexpr uint32_t power() { return 0b1 << 6; }
constexpr uint32_t power(uint32_t reg) { return (reg >> 6) & 0b1; }
constexpr uint32_t kana() { return 0b1 << 5; }
constexpr uint32_t kana(uint32_t reg) { return (reg >> 5) & 0b1; }
constexpr uint32_t reserved0() { return 0b1 << 4; }
constexpr uint32_t reserved0(uint32_t reg) { return (reg >> 4) & 0b1; }
constexpr uint32_t reserved1() { return 0b1 << 3; }
constexpr uint32_t reserved1(uint32_t reg) { return (reg >> 3) & 0b1; }
constexpr uint32_t scroll_lock() { return 0b1 << 2; }
constexpr uint32_t scroll_lock(uint32_t reg) { return (reg >> 2) & 0b1; }
constexpr uint32_t caps_lock() { return 0b1 << 1; }
constexpr uint32_t caps_lock(uint32_t reg) { return (reg >> 1) & 0b1; }
constexpr uint32_t num_lock() { return 0b1 << 0; }
constexpr uint32_t num_lock(uint32_t reg) { return (reg >> 0) & 0b1; }
}
struct data_format {
uint8_t modifier_key;
uint8_t led_state;
uint8_t scan_code_array[6];
};
static_assert((sizeof (struct data_format)) == 8);
}
namespace set_condition {
struct data_format {
uint8_t led_setting;
uint8_t w1_reserved;
uint8_t w2_reserved;
uint8_t w3_reserved;
};
static_assert((sizeof (struct data_format)) == 4);
}
}

View File

@ -109,8 +109,10 @@ def render_format(format):
yield f"uint8_t {field_name};"
elif len(subfields) == 2:
yield f"uint16_t {field_name};"
elif len(subfields) == 6:
yield f"uint8_t {field_name}[6];"
else:
assert False, len(subfields)
assert False, (len(subfields), field_name)
yield "};"
assert format.size % 4 == 0, format.size

15
regs/maple_bus_ft6.csv Normal file
View File

@ -0,0 +1,15 @@
"data_transfer",7,6,5,4,3,2,1,0
"modifier_key","S2","Right_Alt","Right_Shift","Right_Control","Left_GUI","Left_Alt","Left_Shift","Left_Control"
"led_state","Shift","Power","Kana","reserved0","reserved1","Scroll_Lock","Caps_Lock","Num_Lock"
"scan_code_array",,,,,,,,
"scan_code_array",,,,,,,,
"scan_code_array",,,,,,,,
"scan_code_array",,,,,,,,
"scan_code_array",,,,,,,,
"scan_code_array",,,,,,,,
,,,,,,,,
"set_condition",7,6,5,4,3,2,1,0
"led_setting",,,,,,,,
"w1_reserved",,,,,,,,
"w2_reserved",,,,,,,,
"w3_reserved",,,,,,,,
1 data_transfer 7 6 5 4 3 2 1 0
2 modifier_key S2 Right_Alt Right_Shift Right_Control Left_GUI Left_Alt Left_Shift Left_Control
3 led_state Shift Power Kana reserved0 reserved1 Scroll_Lock Caps_Lock Num_Lock
4 scan_code_array
5 scan_code_array
6 scan_code_array
7 scan_code_array
8 scan_code_array
9 scan_code_array
10
11 set_condition 7 6 5 4 3 2 1 0
12 led_setting
13 w1_reserved
14 w2_reserved
15 w3_reserved

Binary file not shown.