diff options
Diffstat (limited to 'keyboards')
-rw-r--r-- | keyboards/hs60/v2/config.h | 89 | ||||
-rw-r--r-- | keyboards/hs60/v2/keymaps/ansi/config.h | 2 | ||||
-rw-r--r-- | keyboards/hs60/v2/keymaps/ansi/keymap.c | 22 | ||||
-rw-r--r-- | keyboards/hs60/v2/keymaps/ansi/readme.md | 6 | ||||
-rw-r--r-- | keyboards/hs60/v2/keymaps/default/keymap.c | 20 | ||||
-rw-r--r-- | keyboards/hs60/v2/keymaps/default/readme.md | 6 | ||||
-rw-r--r-- | keyboards/hs60/v2/keymaps/hhkb/config.h | 13 | ||||
-rw-r--r-- | keyboards/hs60/v2/keymaps/hhkb/keymap.c | 34 | ||||
-rw-r--r-- | keyboards/hs60/v2/keymaps/hhkb/readme.md | 6 | ||||
-rw-r--r-- | keyboards/hs60/v2/mcuconf.h | 2 | ||||
-rw-r--r-- | keyboards/hs60/v2/rules.mk | 18 | ||||
-rw-r--r-- | keyboards/hs60/v2/v2.c | 621 | ||||
-rw-r--r-- | keyboards/hs60/v2/v2.h | 7 | ||||
-rw-r--r-- | keyboards/zeal60/rgb_backlight.c | 285 |
14 files changed, 437 insertions, 694 deletions
diff --git a/keyboards/hs60/v2/config.h b/keyboards/hs60/v2/config.h index 192f7d6f25..bc1681ffd1 100644 --- a/keyboards/hs60/v2/config.h +++ b/keyboards/hs60/v2/config.h @@ -20,9 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x0258 -#define DEVICE_VER 0x0001 +#define VENDOR_ID 0x8968 +#define PRODUCT_ID 0x4853 +#define DEVICE_VER 0x0002 #define MANUFACTURER Yiancar-Designs #define PRODUCT HS60 V2 #define DESCRIPTION GH60 compatible, tool free RGB keyboard @@ -39,7 +39,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define DIODE_DIRECTION COL2ROW /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 0 +#define DEBOUNCING_DELAY 5 /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST @@ -70,48 +70,63 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ //#define FORCE_NKRO -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - /* key combination for magic key command */ #define IS_COMMAND() ( \ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ +/* Backlight options */ -/* disable debug print */ -//#define NO_DEBUG +#define RGB_BACKLIGHT_ENABLED 1 -/* disable print */ -//#define NO_PRINT +#define RGB_BACKLIGHT_HS60 -/* Backlight options */ +// they aren't really used if RGB_BACKLIGHT_HS60 defined +#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0 +#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0 +#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0 +#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0 +#define RGB_BACKLIGHT_USE_ISO_ENTER 0 +#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0 -#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects -#define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended -#define RGB_MATRIX_SKIP_FRAMES 3 +// disable backlight when USB suspended (PC sleep/hibernate/shutdown) +#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0 -#define DRIVER_ADDR_1 0b1010000 -#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons. +// disable backlight after timeout in minutes, 0 = no timeout +#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0 -#define DRIVER_COUNT 2 -#ifdef HS60_ANSI -#define DRIVER_1_LED_TOTAL 61 -#else -#define DRIVER_1_LED_TOTAL 62 -#endif +// the default effect (RGB test) +#define RGB_BACKLIGHT_EFFECT 255 -#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL +#define DRIVER_COUNT 2 +#define DRIVER_LED_TOTAL 64 + +// These define which keys in the matrix are alphas/mods +// Used for backlight effects so colors are different for +// alphas vs. mods +// Each value is for a row, bit 0 is column 0 +// Alpha=0 Mod=1 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0010000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0010000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0010000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011110000000111 + +// TODO: refactor with new user EEPROM code (coming soon) +#define EEPROM_MAGIC 0x451F +#define EEPROM_MAGIC_ADDR 32 +// Bump this every time we change what we store +// This will automatically reset the EEPROM with defaults +// and avoid loading invalid data from the EEPROM +#define EEPROM_VERSION 0x08 +#define EEPROM_VERSION_ADDR 34 + +// Backlight config starts after EEPROM version +#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35 +// Dynamic keymap starts after backlight config (35+31) +#define DYNAMIC_KEYMAP_EEPROM_ADDR 66 +#define DYNAMIC_KEYMAP_LAYER_COUNT 4 +// Dynamic macro starts after dynamic keymaps (66+(4*5*14*2)) = (66+560) +#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 626 +#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 398 +#define DYNAMIC_KEYMAP_MACRO_COUNT 16 diff --git a/keyboards/hs60/v2/keymaps/ansi/config.h b/keyboards/hs60/v2/keymaps/ansi/config.h index f51cc16d85..96adaf5688 100644 --- a/keyboards/hs60/v2/keymaps/ansi/config.h +++ b/keyboards/hs60/v2/keymaps/ansi/config.h @@ -19,3 +19,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* Include overwrites for specific keymap */ #define HS60_ANSI +#undef PRODUCT_ID +#define PRODUCT_ID 0x4854 diff --git a/keyboards/hs60/v2/keymaps/ansi/keymap.c b/keyboards/hs60/v2/keymaps/ansi/keymap.c index 923af9e2ce..ba649470b4 100644 --- a/keyboards/hs60/v2/keymaps/ansi/keymap.c +++ b/keyboards/hs60/v2/keymaps/ansi/keymap.c @@ -26,11 +26,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL), [1] = LAYOUT_60_ansi( /* FN */ - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\ - KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , KC_TRNS,\ - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS,\ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\ + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,\ + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,\ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[2] = LAYOUT_60_ansi( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT_60_ansi( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; void matrix_init_user(void) { diff --git a/keyboards/hs60/v2/keymaps/ansi/readme.md b/keyboards/hs60/v2/keymaps/ansi/readme.md index fa811319d3..650871a5e6 100644 --- a/keyboards/hs60/v2/keymaps/ansi/readme.md +++ b/keyboards/hs60/v2/keymaps/ansi/readme.md @@ -1,6 +1,6 @@ -The default keymap for ANSI HS60 -================================ +The default keymap for ANSI HS60 V2 +=================================== -![Layout image](https://imgur.com/CSyPw0J.png) +![Layout image](https://i.imgur.com/m8t5CfE.png) Default layer is normal ANSI and Fn layer is used for RGB functions, Volume control and arrow cluster
\ No newline at end of file diff --git a/keyboards/hs60/v2/keymaps/default/keymap.c b/keyboards/hs60/v2/keymaps/default/keymap.c index 2a5e823618..c1e575769f 100644 --- a/keyboards/hs60/v2/keymaps/default/keymap.c +++ b/keyboards/hs60/v2/keymaps/default/keymap.c @@ -26,11 +26,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_APP, KC_RCTL), [1] = LAYOUT_60_iso( /* FN */ - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,\ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET , \ - KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_TRNS,\ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[2] = LAYOUT_60_iso( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT_60_iso( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), }; void matrix_init_user(void) { diff --git a/keyboards/hs60/v2/keymaps/default/readme.md b/keyboards/hs60/v2/keymaps/default/readme.md index 9125cb349e..f0b29900e6 100644 --- a/keyboards/hs60/v2/keymaps/default/readme.md +++ b/keyboards/hs60/v2/keymaps/default/readme.md @@ -1,6 +1,6 @@ -The default keymap for ISO HS60 -=============================== +The default keymap for ISO HS60 V2 +================================== -![Layout image](https://imgur.com/HXj4tYL.png) +![Layout image](https://imgur.com/6go4vQV.png) Default layer is normal ISO and Fn layer is used for RGB functions, Volume control and arrow cluster
\ No newline at end of file diff --git a/keyboards/hs60/v2/keymaps/hhkb/config.h b/keyboards/hs60/v2/keymaps/hhkb/config.h index 3db403ecc5..fc1b6d8f47 100644 --- a/keyboards/hs60/v2/keymaps/hhkb/config.h +++ b/keyboards/hs60/v2/keymaps/hhkb/config.h @@ -19,3 +19,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* Include overwrites for specific keymap */ #define HS60_HHKB +#undef PRODUCT_ID +#define PRODUCT_ID 0x4855 + +#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 +#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 +#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 +#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 +#undef RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001 +#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000000111 diff --git a/keyboards/hs60/v2/keymaps/hhkb/keymap.c b/keyboards/hs60/v2/keymaps/hhkb/keymap.c index d52fc4bac9..9641eedb49 100644 --- a/keyboards/hs60/v2/keymaps/hhkb/keymap.c +++ b/keyboards/hs60/v2/keymaps/hhkb/keymap.c @@ -19,18 +19,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_60_hhkb( /* Base */ - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), \ - KC_LCTL, KC_LGUI,KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ), + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSLS,\ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,\ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),\ + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ), [1] = LAYOUT_60_hhkb( /* FN */ - RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,\ - KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_UP, KC_TRNS, KC_DEL, \ - KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) + RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,\ + KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_UP, KC_TRNS, KC_DEL, \ + KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, \ + KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + +[2] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), + +[3] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), }; void matrix_init_user(void) { diff --git a/keyboards/hs60/v2/keymaps/hhkb/readme.md b/keyboards/hs60/v2/keymaps/hhkb/readme.md new file mode 100644 index 0000000000..69b812c607 --- /dev/null +++ b/keyboards/hs60/v2/keymaps/hhkb/readme.md @@ -0,0 +1,6 @@ +The default keymap for HHKB HS60 V2 +=================================== + +![Layout image](https://imgur.com/usbrQWL.png) + +Default layer is normal HHKB with 7U space. Fn layer is used for RGB functions, Volume control and arrow cluster
\ No newline at end of file diff --git a/keyboards/hs60/v2/mcuconf.h b/keyboards/hs60/v2/mcuconf.h index 226da48d59..ce608f904e 100644 --- a/keyboards/hs60/v2/mcuconf.h +++ b/keyboards/hs60/v2/mcuconf.h @@ -139,7 +139,7 @@ #define STM32_GPT_USE_TIM1 FALSE #define STM32_GPT_USE_TIM2 FALSE #define STM32_GPT_USE_TIM3 FALSE -#define STM32_GPT_USE_TIM4 FALSE +#define STM32_GPT_USE_TIM4 TRUE #define STM32_GPT_USE_TIM6 TRUE #define STM32_GPT_USE_TIM7 TRUE #define STM32_GPT_USE_TIM8 TRUE diff --git a/keyboards/hs60/v2/rules.mk b/keyboards/hs60/v2/rules.mk index 51e3cf0a3e..a2850a8305 100644 --- a/keyboards/hs60/v2/rules.mk +++ b/keyboards/hs60/v2/rules.mk @@ -1,4 +1,9 @@ # project specific files +SRC = keyboards/zeal60/zeal60.c \ + keyboards/zeal60/rgb_backlight.c \ + drivers/issi/is31fl3733.c \ + quantum/color.c \ + drivers/arm/i2c_master.c ## chip/board settings # the next two should match the directories in @@ -44,15 +49,18 @@ DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave # Build Options # comment out to disable the options. # -BACKLIGHT_ENABLE = no -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend NKRO_ENABLE = yes # USB Nkey Rollover -AUDIO_ENABLE = no -RGB_MATRIX_ENABLE = IS31FL3733 # Use RGB matrix +AUDIO_ENABLE = no # Audio output on port C6 NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in #SERIAL_LINK_ENABLE = yes + +RAW_ENABLE = yes +DYNAMIC_KEYMAP_ENABLE = yes +CIE1931_CURVE = yes diff --git a/keyboards/hs60/v2/v2.c b/keyboards/hs60/v2/v2.c index 4289c1fed5..2e12538e9b 100644 --- a/keyboards/hs60/v2/v2.c +++ b/keyboards/hs60/v2/v2.c @@ -13,623 +13,6 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "v2.h" - -//#include "is31fl3733.h" - -// Please ignore this is for upcoming features -/*#ifdef RAW_ENABLE - -void raw_hid_receive( uint8_t *data, uint8_t length ) -{ - uint8_t command = data[0]; - switch ( command ) - { - case id_protocol_version: - { - msg_protocol_version *msg = (msg_protocol_version*)&data[1]; - msg->version = PROTOCOL_VERSION; - break; - } -#if USE_KEYMAPS_IN_EEPROM - case id_keymap_keycode_load: - { - msg_keymap_keycode_load *msg = (msg_keymap_keycode_load*)&data[1]; - msg->keycode = keymap_keycode_load( msg->layer, msg->row, msg->column ); - break; - } - case id_keymap_keycode_save: - { - msg_keymap_keycode_save *msg = (msg_keymap_keycode_save*)&data[1]; - keymap_keycode_save( msg->layer, msg->row, msg->column, msg->keycode); - break; - } - case id_keymap_default_save: - { - keymap_default_save(); - break; - } -#endif // USE_KEYMAPS_IN_EEPROM - case id_backlight_config_set_values: - { - msg_backlight_config_set_values *msg = (msg_backlight_config_set_values*)&data[1]; - backlight_config_set_values(msg); - backlight_config_save(); - break; - } - case id_backlight_config_set_alphas_mods: - { - msg_backlight_config_set_alphas_mods *msg = (msg_backlight_config_set_alphas_mods*)&data[1]; - backlight_config_set_alphas_mods( msg->alphas_mods ); - backlight_config_save(); - break; - } - case id_backlight_set_key_color: - { - msg_backlight_set_key_color *msg = (msg_backlight_set_key_color*)&data[1]; - backlight_set_key_color(msg->row, msg->column, msg->hsv); - break; - } - case id_system_get_state: - { - msg_system_state *msg = (msg_system_state*)&data[1]; - msg->value = backlight_get_tick(); - break; - } - default: - { - // Unhandled message. - data[0] = id_unhandled; - break; - } - } - - // Return same buffer with values changed - raw_hid_send( data, length ); - -} - -#endif*/ - -#ifdef HS60_ANSI - -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { -/* Refer to IS31 manual for these locations - * driver - * | R location - * | | G location - * | | | B location - * | | | | */ - {0, B_1, A_1, C_1}, //MX1 - {0, E_1, D_1, F_1}, //MX2 - {0, H_1, G_1, I_1}, //MX3 - {0, K_1, J_1, L_1}, //MX4 - {0, B_2, A_2, C_2}, //MX6 - {0, E_2, D_2, F_2}, //MX7 - {0, H_2, G_2, I_2}, //MX8 - {0, K_2, J_2, L_2}, //MX14 - {0, B_3, A_3, C_3}, //MX11 - {0, E_3, D_3, F_3}, //MX12 - {0, H_3, G_3, I_3}, //MX13 - {0, K_3, J_3, L_3}, //MX19 - {0, B_4, A_4, C_4}, //MX16 - {0, E_4, D_4, F_4}, //MX17 - {0, H_4, G_4, I_4}, //MX18 - {0, K_4, J_4, L_4}, //MX23 - {0, B_5, A_5, C_5}, //MX20 - {0, E_5, D_5, F_5}, //MX21 - {0, H_5, G_5, I_5}, //MX22 - {0, K_5, J_5, L_5}, //MX27 - {0, B_6, A_6, C_6}, //MX24 - {0, E_6, D_6, F_6}, //MX25 - {0, H_6, G_6, I_6}, //MX26 - {0, K_6, J_6, L_6}, //MX31 - {0, B_7, A_7, C_7}, //MX28 - {0, E_7, D_7, F_7}, //MX29 - {0, H_7, G_7, I_7}, //MX30 - {0, K_7, J_7, L_7}, //MX36 - {0, B_8, A_8, C_8}, //MX33 - {0, E_8, D_8, F_8}, //MX34 - {0, H_8, G_8, I_8}, //MX35 - {0, K_8, J_8, L_8}, //MX40 - {0, B_9, A_9, C_9}, //MX37 - {0, E_9, D_9, F_9}, //MX38 - {0, H_9, G_9, I_9}, //MX39 - {0, K_9, J_9, L_9}, //MX44 - {0, B_10, A_10, C_10}, //MX41 - {0, E_10, D_10, F_10}, //MX42 - {0, H_10, G_10, I_10}, //MX43 - {0, K_10, J_10, L_10}, //MX48 - {0, B_11, A_11, C_11}, //MX45 - {0, E_11, D_11, F_11}, //MX46 - {0, H_11, G_11, I_11}, //MX47 - {0, K_11, J_11, L_11}, //MX53 - {0, B_12, A_12, C_12}, //MX50 - {0, E_12, D_12, F_12}, //MX51 - {0, H_12, G_12, I_12}, //MX52 - - {0, B_13, A_13, C_13}, //MX55 - {0, E_13, D_13, F_13}, //MX56 - - {0, K_13, J_13, L_13}, //MX61 - {0, B_14, A_14, C_14}, //MX59 - {0, E_14, D_14, F_14}, //MX57 - {0, H_14, G_14, I_14}, //MX60 - {0, K_14, J_14, L_14}, //MX62 - {0, B_15, A_15, C_15}, //MX5 - {0, E_15, D_15, F_15}, //MX10 - {0, H_15, G_15, I_15}, //MX15 - {0, K_15, J_15, L_15}, //MX32 - - {0, E_16, D_16, F_16}, //MX49 - {0, H_16, G_16, I_16}, //MX54 - {0, K_16, J_16, L_16}, //MX58 -}; - -const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { -// -// MX1, MX6, MX11, MX16, MX20, MX24, MX28, MX33, MX37, MX41, MX45, MX50, MX55, MX59, -// MX2, MX7, MX12, MX17, MX21, MX25, MX29, MX34, MX38, MX42, MX46, MX51, MX56, ---, -// MX3, MX8, MX13, MX18, MX22, MX26, MX30, MX35, MX39, MX43, MX47, MX52, MX57, MX60, -// MX4, ---, MX14, MX19, MX23, MX27, MX31, MX36, MX40, MX44, MX48, MX53, ---, MX61, -// MX5, MX10, MX15, ---, ---, ---, MX32, ---, ---, ---, MX49, MX54, MX58, MX62 -/* {row | col << 4} - * | {x=0..224, y=0..64} - * | | modifier - * | | | */ - {{0|(0<<4)}, { 0, 0}, 1}, //MX1 - {{1|(0<<4)}, { 0, 16}, 1}, //MX2 - {{2|(0<<4)}, { 0, 32}, 1}, //MX3 - {{3|(0<<4)}, { 0, 48}, 1}, //MX4 - {{0|(1<<4)}, { 17, 0}, 0}, //MX6 - {{1|(1<<4)}, { 17, 16}, 0}, //MX7 - {{2|(1<<4)}, { 17, 32}, 0}, //MX8 - {{3|(2<<4)}, { 34, 48}, 0}, //MX14 - {{0|(2<<4)}, { 34, 0}, 0}, //MX11 - {{1|(2<<4)}, { 34, 16}, 0}, //MX12 - {{2|(2<<4)}, { 34, 32}, 0}, //MX13 - {{3|(3<<4)}, { 51, 48}, 0}, //MX19 - {{0|(3<<4)}, { 51, 0}, 0}, //MX16 - {{1|(3<<4)}, { 51, 16}, 0}, //MX17 - {{2|(3<<4)}, { 51, 32}, 0}, //MX18 - {{3|(4<<4)}, { 68, 48}, 0}, //MX23 - {{0|(4<<4)}, { 68, 0}, 0}, //MX20 - {{1|(4<<4)}, { 68, 16}, 0}, //MX21 - {{2|(4<<4)}, { 68, 32}, 0}, //MX22 - {{3|(5<<4)}, { 85, 48}, 0}, //MX27 - {{0|(5<<4)}, { 85, 0}, 0}, //MX24 - {{1|(5<<4)}, { 85, 16}, 0}, //MX25 - {{2|(5<<4)}, { 85, 32}, 0}, //MX26 - {{3|(6<<4)}, {102, 48}, 0}, //MX31 - {{0|(6<<4)}, {102, 0}, 0}, //MX28 - {{1|(6<<4)}, {102, 16}, 0}, //MX29 - {{2|(6<<4)}, {102, 32}, 0}, //MX30 - {{3|(7<<4)}, {119, 48}, 0}, //MX36 - {{0|(7<<4)}, {119, 0}, 0}, //MX33 - {{1|(7<<4)}, {119, 16}, 0}, //MX34 - {{2|(7<<4)}, {119, 32}, 0}, //MX35 - {{3|(8<<4)}, {136, 48}, 0}, //MX40 - {{0|(8<<4)}, {136, 0}, 0}, //MX37 - {{1|(8<<4)}, {136, 16}, 0}, //MX38 - {{2|(8<<4)}, {136, 32}, 0}, //MX39 - {{3|(9<<4)}, {153, 48}, 0}, //MX44 - {{0|(9<<4)}, {153, 0}, 0}, //MX41 - {{1|(9<<4)}, {153, 16}, 0}, //MX42 - {{2|(9<<4)}, {153, 32}, 0}, //MX43 - {{3|(10<<4)}, {170, 48}, 0}, //MX48 - {{0|(10<<4)}, {170, 0}, 0}, //MX45 - {{1|(10<<4)}, {170, 16}, 0}, //MX46 - {{2|(10<<4)}, {170, 32}, 0}, //MX47 - {{3|(11<<4)}, {187, 48}, 0}, //MX53 - {{0|(11<<4)}, {187, 0}, 0}, //MX50 - {{1|(11<<4)}, {187, 16}, 0}, //MX51 - {{2|(11<<4)}, {187, 32}, 0}, //MX52 - - {{0|(12<<4)}, {204, 0}, 0}, //MX55 - {{1|(12<<4)}, {204, 16}, 0}, //MX56 - - {{3|(13<<4)}, {221, 48}, 1}, //MX61 - {{0|(13<<4)}, {221, 0}, 1}, //MX59 - {{2|(12<<4)}, {221, 16}, 0}, //MX57 - {{2|(13<<4)}, {221, 32}, 1}, //MX60 - {{4|(13<<4)}, {221, 64}, 1}, //MX62 - {{4|(0<<4)}, { 0, 64}, 1}, //MX5 - {{4|(1<<4)}, { 17, 64}, 1}, //MX10 - {{4|(2<<4)}, { 34, 64}, 1}, //MX15 - {{4|(5<<4)}, {102, 64}, 0}, //MX32 - - {{4|(10<<4)}, {170, 64}, 1}, //MX49 - {{4|(11<<4)}, {187, 64}, 1}, //MX54 - {{4|(12<<4)}, {204, 64}, 1} //MX58 -}; - -#elif defined(HS60_HHKB) - -const is31_led g_is31_leds[DRIVER_LED_TOTAL] = { -/* Refer to IS31 manual for these locations - * driver - * | R location - * | | G location - * | | | B location - * | | | | */ - {0, B_1, A_1, C_1}, //MX1 - {0, E_1, D_1, F_1}, //MX2 - {0, H_1, G_1, I_1}, //MX3 - {0, K_1, J_1, L_1}, //MX4 - {0, B_2, A_2, C_2}, //MX6 - {0, E_2, D_2, F_2}, //MX7 - {0, H_2, G_2, I_2}, //MX8 - {0, K_2, J_2, L_2}, //MX14 - {0, B_3, A_3, C_3}, //MX11 - {0, E_3, D_3, F_3}, //MX12 - {0, H_3, G_3, I_3}, //MX13 - {0, K_3, J_3, L_3}, //MX19 - {0, B_4, A_4, C_4}, //MX16 - {0, E_4, D_4, F_4}, //MX17 - {0, H_4, G_4, I_4}, //MX18 - {0, K_4, J_4, L_4}, //MX23 - {0, B_5, A_5, C_5}, //MX20 - {0, E_5, D_5, F_5}, //MX21 - {0, H_5, G_5, I_5}, //MX22 - {0, K_5, J_5, L_5}, //MX27 - {0, B_6, A_6, C_6}, //MX24 - {0, E_6, D_6, F_6}, //MX25 - {0, H_6, G_6, I_6}, //MX26 - {0, K_6, J_6, L_6}, //MX31 - {0, B_7, A_7, C_7}, //MX28 - {0, E_7, D_7, F_7}, //MX29 - {0, H_7, G_7, I_7}, //MX30 - {0, K_7, J_7, L_7}, //MX36 - {0, B_8, A_8, C_8}, //MX33 - {0, E_8, D_8, F_8}, //MX34 - {0, H_8, G_8, I_8}, //MX35 - {0, K_8, J_8, L_8}, //MX40 - {0, B_9, A_9, C_9}, //MX37 - {0, E_9, D_9, F_9}, //MX38 - {0, H_9, G_9, I_9}, //MX39 - {0, K_9, J_9, L_9}, //MX44 - {0, B_10, A_10, C_10}, //MX41 - {0, E_10, D_10, F_10}, //MX42 - {0, H_10, G_10, I_10}, //MX43 - {0, K_10, J_10, L_10}, //MX48 - {0, B_11, A_11, C_11}, //MX45 - {0, E_11, D_11, F_11}, //MX46 - {0, H_11, G_11, I_11}, //MX47 - {0, K_11, J_11, L_11}, //MX53 - {0, B_12, A_12, C_12}, //MX50 - {0, E_12, D_12, F_12}, //MX51 - {0, H_12, G_12, I_12}, //MX52 - {0, K_12, J_12, L_12}, //MX64 - {0, B_13, A_13, C_13}, //MX55 - {0, E_13, D_13, F_13}, //MX56 - {0, H_13, G_13, I_13}, //MX63 - {0, K_13, J_13, L_13}, //MX61 - {0, B_14, A_14, C_14}, //MX59 - {0, E_14, D_14, F_14}, //MX57 - {0, H_14, G_14, I_14}, //MX60 - {0, K_14, J_14, L_14}, //MX62 - {0, B_15, A_15, C_15}, //MX5 - {0, E_15, D_15, F_15}, //MX10 - {0, H_15, G_15, I_15}, //MX15 - {0, K_15, J_15, L_15}, //MX32 - - - {0, H_16, G_16, I_16}, //MX54 - {0, K_16, J_16, L_16}, //MX58 -}; - -const rgb_led g_rgb_leds[DRIVER_LED_TOTAL] = { -// -// MX1, MX6, MX11, MX16, MX20, MX24, MX28, MX33, MX37, MX41, MX45, MX50, MX55, MX59, -// MX2, MX7, MX12, MX17, MX21, MX25, MX29, MX34, MX38, MX42, MX46, MX51, MX56, MX64, -// MX3, MX8, MX13, MX18, MX22, MX26, MX30, MX35, MX39, MX43, MX47, MX52, MX57, MX60, -// MX4, ----, MX14, MX19, MX23, MX27, MX31, MX36, MX40, MX44, MX48, MX53, MX63, MX61, -// MX5, MX10, MX15, ----, ----, ----, MX32, ----, ---, ----, ----, MX54, MX58, MX62 -/* {row | col << 4} - * | {x=0..224, y=0..64} - * | | modifier - * | | | */ - {{0|(0<<4)}, { 0, 0}, 1}, //MX1 - {{1|(0<<4)}, { 0, 16}, 1}, //MX2 - {{2|(0<<4)}, { 0, 32}, 1}, //MX3 - {{3|(0<<4)}, { 0, 48}, 1}, //MX4 - {{0|(1<<4)}, { 17, 0}, 0}, //MX6 - {{1|(1<<4)}, { 17, 16}, 0}, //MX7 - {{2|(1<<4)}, { 17, 32}, 0}, //MX8 - {{3|(2<<4)}, { 34, 48}, 0}, //MX14 - {{0|(2<<4)}, { 34, 0}, 0}, //MX11 - {{1|(2<<4)}, { 34, 16}, 0}, //MX12 - {{2|(2<<4)}, { 34, 32}, 0}, //MX13 - {{3|(3<<4)}, { 51, 48}, 0}, //MX19 - {{0|(3<<4)}, { 51, 0}, 0}, //MX16 - {{1|(3<<4)}, { 51, 16}, 0}, //MX17 - {{2|(3<<4)}, { 51, 32}, 0}, //MX18 - {{3|(4<<4)}, { 68, 48}, 0}, //MX23 - {{0|(4<<4)}, { 68, 0}, 0}, //MX20 - {{1|(4<<4)}, { 68, 16}, 0}, //MX21 - {{2|(4<<4)}, { 68, 32}, 0}, //MX22 - {{3|(5<<4)}, { 85, 48}, 0}, //MX27 - {{0|(5<<4)}, { 85, 0}, 0}, //MX24 - {{1|(5<<4)}, { 85, 16}, 0}, //MX25 - {{2|(5<<4)}, { 85, 32}, 0}, //MX26 - {{3|(6<<4)}, {102, 48}, 0}, //MX31 - {{0|(6<<4)}, {102, 0}, 0}, //MX28 - {{1|(6<<4)}, {102, 16}, 0}, //MX29 - {{2|(6<<4)}, {102, 32}, 0}, //MX30 - {{3|(7<<4)}, {119, 48}, 0}, //MX36 - {{0|(7<<4)}, {119, 0}, 0}, //MX33 - {{1|(7<<4)}, {119, 16}, 0}, //MX34 - {{2|(7<<4)}, {119, 32}, 0}, //MX35 - {{3|(8<<4)}, {136, 48}, 0}, //MX40 - {{0|(8<<4)}, {136, 0}, 0}, //MX37 - {{1|(8<<4)}, {136, 16}, 0}, //MX38 - {{2|(8<<4)}, {136, 32}, 0}, //MX39 - {{3|(9<<4)}, {153, 48}, 0}, //MX44 - {{0|(9<<4)}, {153, 0}, 0}, //MX41 - {{1|(9<<4)}, {153, 16}, 0}, //MX42 - {{2|(9<<4)}, {153, 32}, 0}, //MX43 - {{3|(10<<4)}, {170, 48}, 0}, //MX48 - {{0|(10<<4)}, {170, 0}, 0}, //MX45 - {{1|(10<<4)}, {170, 16}, 0}, //MX46 - {{2|(10<<4)}, {170, 32}, 0}, //MX47 - {{3|(11<<4) |