diff --git a/.github/workflows/lotus.yml b/.github/workflows/lotus.yml index 0764677878..85adbb2707 100644 --- a/.github/workflows/lotus.yml +++ b/.github/workflows/lotus.yml @@ -25,9 +25,8 @@ jobs: - name: Lint Framework Laptop 16 run: | qmk lint -kb framework/ansi -km default - qmk lint -kb framework/ansi -km copilot + qmk lint -kb framework/copilot -km default qmk lint -kb framework/iso -km default - qmk lint -kb framework/iso -km copilot qmk lint -kb framework/jis -km default qmk lint -kb framework/numpad -km default qmk lint -kb framework/macropad -km default @@ -36,14 +35,11 @@ jobs: run: qmk compile -kb framework/ansi -km default - name: Build Framework Laptop 16 ANSI copilot variant - run: qmk compile -kb framework/ansi -km copilot + run: qmk compile -kb framework/copilot -km default - name: Build Framework Laptop 16 ISO variant run: qmk compile -kb framework/iso -km default - - name: Build Framework Laptop 16 ISO variant - run: qmk compile -kb framework/iso -km copilot - - name: Build Framework Laptop 16 JIS variant run: qmk compile -kb framework/jis -km default @@ -62,9 +58,8 @@ jobs: - name: Convert UF2 to bin run: | ./util/uf2conv.py framework_ansi_default.uf2 --convert --output framework_ansi_default.bin - ./util/uf2conv.py framework_ansi_copilot.uf2 --convert --output framework_ansi_copilot.bin + ./util/uf2conv.py framework_copilot_default.uf2 --convert --output framework_copilot_default.bin ./util/uf2conv.py framework_iso_default.uf2 --convert --output framework_iso_default.bin - ./util/uf2conv.py framework_iso_copilot.uf2 --convert --output framework_iso_copilot.bin ./util/uf2conv.py framework_jis_default.uf2 --convert --output framework_jis_default.bin ./util/uf2conv.py framework_numpad_default.uf2 --convert --output framework_numpad_default.bin ./util/uf2conv.py framework_macropad_default.uf2 --convert --output framework_macropad_default.bin diff --git a/keyboards/framework/build_all.sh b/keyboards/framework/build_all.sh index adc5097084..ee4d32866d 100755 --- a/keyboards/framework/build_all.sh +++ b/keyboards/framework/build_all.sh @@ -1,5 +1,6 @@ set -e qmk compile -kb framework/ansi -km default +qmk compile -kb framework/copilot -km default qmk compile -kb framework/iso -km default qmk compile -kb framework/jis -km default qmk compile -kb framework/numpad -km default diff --git a/keyboards/framework/config.h b/keyboards/framework/config.h index 9976419bb5..9f7c9eb541 100644 --- a/keyboards/framework/config.h +++ b/keyboards/framework/config.h @@ -32,7 +32,9 @@ // Enable serial number. Calls into dyn_serial_number_string* functions #define SERIAL_NUMBER -#ifdef KEYBOARD_framework_ansi +#if KEYBOARD_framework_ansi + #define LED_CAPS_LOCK_PIN GP24 +#elif KEYBOARD_framework_copilot #define LED_CAPS_LOCK_PIN GP24 #elif KEYBOARD_framework_iso #define LED_CAPS_LOCK_PIN GP24 diff --git a/keyboards/framework/copilot/config.h b/keyboards/framework/copilot/config.h new file mode 100644 index 0000000000..67fba3acfe --- /dev/null +++ b/keyboards/framework/copilot/config.h @@ -0,0 +1,17 @@ +// Copyright 2022 Framework Computer +// SPDX-License-Identifier: GPL-2.0-or-later + +#define MATRIX_COLS 16 +#define MATRIX_ROWS 8 + +#define DRIVER_COUNT 2 +#define DRIVER_ADDR_1 0b0100000 +#define DRIVER_ADDR_2 0b0100011 +#define DRIVER_1_LED_TOTAL 48 +#define DRIVER_2_LED_TOTAL 49 +#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) +#define ISSI_CONFIGURATION 0x21 // Enable only the first 9 SW and disable software shutdown + +// Limit current to ensure max current draw is just about 500mA +// when white att 100% brightness +#define ISSI_GLOBALCURRENT 104 diff --git a/keyboards/framework/copilot/copilot.c b/keyboards/framework/copilot/copilot.c new file mode 100644 index 0000000000..b4bf40deda --- /dev/null +++ b/keyboards/framework/copilot/copilot.c @@ -0,0 +1,416 @@ +// Copyright 2022 Framework Computer +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +#if defined(RGB_MATRIX_ENABLE) +#define CS19_SW12 0x00 +#define CS20_SW12 0x01 +#define CS21_SW12 0x02 +#define CS22_SW12 0x03 +#define CS23_SW12 0x04 +#define CS24_SW12 0x05 +#define CS25_SW12 0x06 +#define CS26_SW12 0x07 +#define CS27_SW12 0x08 +#define CS28_SW12 0x09 +#define CS29_SW12 0x0A +#define CS30_SW12 0x0B +#define CS31_SW12 0x0C +#define CS32_SW12 0x0D +#define CS33_SW12 0x0E +#define CS34_SW12 0x0F +#define CS35_SW12 0x10 +#define CS36_SW12 0x11 + +#define CS19_SW13 0x12 +#define CS20_SW13 0x13 +#define CS21_SW13 0x14 +#define CS22_SW13 0x15 +#define CS23_SW13 0x16 +#define CS24_SW13 0x17 +#define CS25_SW13 0x18 +#define CS26_SW13 0x19 +#define CS27_SW13 0x1A +#define CS28_SW13 0x1B +#define CS29_SW13 0x1C +#define CS30_SW13 0x1D +#define CS31_SW13 0x1E +#define CS32_SW13 0x1F +#define CS33_SW13 0x20 +#define CS34_SW13 0x21 +#define CS35_SW13 0x22 +#define CS36_SW13 0x23 + +#define CS19_SW14 0x24 +#define CS20_SW14 0x25 +#define CS21_SW14 0x26 +#define CS22_SW14 0x27 +#define CS23_SW14 0x28 +#define CS24_SW14 0x29 +#define CS25_SW14 0x2A +#define CS26_SW14 0x2B +#define CS27_SW14 0x2C +#define CS28_SW14 0x2D +#define CS29_SW14 0x2E +#define CS30_SW14 0x2F +#define CS31_SW14 0x30 +#define CS32_SW14 0x31 +#define CS33_SW14 0x32 +#define CS34_SW14 0x33 +#define CS35_SW14 0x34 +#define CS36_SW14 0x35 + +#define CS19_SW15 0x36 +#define CS20_SW15 0x37 +#define CS21_SW15 0x38 +#define CS22_SW15 0x39 +#define CS23_SW15 0x3A +#define CS24_SW15 0x3B +#define CS25_SW15 0x3C +#define CS26_SW15 0x3D +#define CS27_SW15 0x3E +#define CS28_SW15 0x3F +#define CS29_SW15 0x40 +#define CS30_SW15 0x41 +#define CS31_SW15 0x42 +#define CS32_SW15 0x43 +#define CS33_SW15 0x44 +#define CS34_SW15 0x45 +#define CS35_SW15 0x46 +#define CS36_SW15 0x47 + +#define CS19_SW16 0x48 +#define CS20_SW16 0x49 +#define CS21_SW16 0x4A +#define CS22_SW16 0x4B +#define CS23_SW16 0x4C +#define CS24_SW16 0x4D +#define CS25_SW16 0x4E +#define CS26_SW16 0x4F +#define CS27_SW16 0x50 +#define CS28_SW16 0x51 +#define CS29_SW16 0x52 +#define CS30_SW16 0x53 +#define CS31_SW16 0x54 +#define CS32_SW16 0x55 +#define CS33_SW16 0x56 +#define CS34_SW16 0x57 +#define CS35_SW16 0x58 +#define CS36_SW16 0x59 + +#define CS19_SW17 0x5A +#define CS20_SW17 0x5B +#define CS21_SW17 0x5C +#define CS22_SW17 0x5D +#define CS23_SW17 0x5E +#define CS24_SW17 0x5F +#define CS25_SW17 0x60 +#define CS26_SW17 0x61 +#define CS27_SW17 0x62 +#define CS28_SW17 0x63 +#define CS29_SW17 0x64 +#define CS30_SW17 0x65 +#define CS31_SW17 0x66 +#define CS32_SW17 0x67 +#define CS33_SW17 0x68 +#define CS34_SW17 0x69 +#define CS35_SW17 0x6A +#define CS36_SW17 0x6B + +#define CS19_SW18 0x6C +#define CS20_SW18 0x6D +#define CS21_SW18 0x6E +#define CS22_SW18 0x6F +#define CS23_SW18 0x70 +#define CS24_SW18 0x71 +#define CS25_SW18 0x72 +#define CS26_SW18 0x73 +#define CS27_SW18 0x74 +#define CS28_SW18 0x75 +#define CS29_SW18 0x76 +#define CS30_SW18 0x77 +#define CS31_SW18 0x78 +#define CS32_SW18 0x79 +#define CS33_SW18 0x7A +#define CS34_SW18 0x7B +#define CS35_SW18 0x7C +#define CS36_SW18 0x7D + +#define CS19_SW19 0x7E +#define CS20_SW19 0x7F +#define CS21_SW19 0x80 +#define CS22_SW19 0x81 +#define CS23_SW19 0x82 +#define CS24_SW19 0x83 +#define CS25_SW19 0x84 +#define CS26_SW19 0x85 +#define CS27_SW19 0x86 +#define CS28_SW19 0x87 +#define CS29_SW19 0x88 +#define CS30_SW19 0x89 +#define CS31_SW19 0x8A +#define CS32_SW19 0x8B +#define CS33_SW19 0x8C +#define CS34_SW19 0x8D +#define CS35_SW19 0x8E +#define CS36_SW19 0x8F + +#define CS19_SW20 0x90 +#define CS20_SW20 0x91 +#define CS21_SW20 0x92 +#define CS22_SW20 0x93 +#define CS23_SW20 0x94 +#define CS24_SW20 0x95 +#define CS25_SW20 0x96 +#define CS26_SW20 0x97 +#define CS27_SW20 0x98 +#define CS28_SW20 0x99 +#define CS29_SW20 0x9A +#define CS30_SW20 0x9B +#define CS31_SW20 0x9C +#define CS32_SW20 0x9D +#define CS33_SW20 0x9E +#define CS34_SW20 0x9F +#define CS35_SW20 0xA0 +#define CS36_SW20 0xA1 + +// TODO: Should have attribute __flash. But won't compile if I add it +const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + // Re-arranged in LED ID order so it matches with the physical location array + {0, CS3_SW6, CS2_SW6, CS1_SW6}, // LED 1 + {0, CS3_SW8, CS2_SW8, CS1_SW8}, // LED 2 + {0, CS3_SW1, CS2_SW1, CS1_SW1}, // LED 3 + {0, CS3_SW2, CS2_SW2, CS1_SW2}, // LED 4 + {0, CS3_SW3, CS2_SW3, CS1_SW3}, // LED 5 + {0, CS3_SW4, CS2_SW4, CS1_SW4}, // LED 6 + {0, CS3_SW9, CS2_SW9, CS1_SW9}, // LED 7 + {0, CS3_SW5, CS2_SW5, CS1_SW5}, // LED 8 + {0, CS3_SW7, CS2_SW7, CS1_SW7}, // LED 9 + + {0, CS6_SW3, CS5_SW3, CS4_SW3}, // LED 10 + {0, CS6_SW7, CS5_SW7, CS4_SW7}, // LED 11 + {0, CS6_SW1, CS5_SW1, CS4_SW1}, // LED 12 + {0, CS6_SW2, CS5_SW2, CS4_SW2}, // LED 13 + {0, CS6_SW4, CS5_SW4, CS4_SW4}, // LED 14 + {0, CS6_SW5, CS5_SW5, CS4_SW5}, // LED 15 + {0, CS6_SW6, CS5_SW6, CS4_SW6}, // LED 16 + {0, CS6_SW8, CS5_SW8, CS4_SW8}, // LED 17 + {0, CS6_SW9, CS5_SW9, CS4_SW9}, // LED 18 + + {0, CS9_SW1, CS8_SW1, CS7_SW1}, // LED 19 + {0, CS9_SW2, CS8_SW2, CS7_SW2}, // LED 20 + {0, CS9_SW3, CS8_SW3, CS7_SW3}, // LED 21 + {0, CS9_SW4, CS8_SW4, CS7_SW4}, // LED 22 + {0, CS9_SW5, CS8_SW5, CS7_SW5}, // LED 23 + {0, CS9_SW6, CS8_SW6, CS7_SW6}, // LED 24 + {0, CS9_SW7, CS8_SW7, CS7_SW7}, // LED 25 + {0, CS9_SW8, CS8_SW8, CS7_SW8}, // LED 26 + {0, CS9_SW9, CS8_SW9, CS7_SW9}, // LED 27 + + {0, CS12_SW1, CS11_SW1, CS10_SW1}, // LED 28 + {0, CS12_SW2, CS11_SW2, CS10_SW2}, // LED 29 + {0, CS12_SW3, CS11_SW3, CS10_SW3}, // LED 30 + {0, CS12_SW4, CS11_SW4, CS10_SW4}, // LED 31 + {0, CS12_SW5, CS11_SW5, CS10_SW5}, // LED 32 + {0, CS12_SW6, CS11_SW6, CS10_SW6}, // LED 33 + {0, CS12_SW7, CS11_SW7, CS10_SW7}, // LED 34 + {0, CS12_SW8, CS11_SW8, CS10_SW8}, // LED 35 + {0, CS12_SW9, CS11_SW9, CS10_SW9}, // LED 36 + + {0, CS15_SW2, CS14_SW2, CS13_SW2}, // LED 37 + {0, CS15_SW3, CS14_SW3, CS13_SW3}, // LED 38 + {0, CS15_SW6, CS14_SW6, CS13_SW6}, // LED 39 + {0, CS15_SW7, CS14_SW7, CS13_SW7}, // LED 40 + {0, CS15_SW9, CS14_SW9, CS13_SW9}, // LED 41 + {0, CS15_SW1, CS14_SW1, CS13_SW1}, // LED 42 + {0, CS15_SW4, CS14_SW4, CS13_SW4}, // LED 43 + {0, CS15_SW5, CS14_SW5, CS13_SW5}, // LED 44 + {0, CS15_SW8, CS14_SW8, CS13_SW8}, // LED 45 + + {0, CS18_SW1, CS17_SW1, CS16_SW1}, // LED 46 + {0, CS18_SW2, CS17_SW2, CS16_SW2}, // LED 47 + {0, CS18_SW3, CS17_SW3, CS16_SW3}, // LED 48 + + {1, CS21_SW12, CS20_SW12, CS19_SW12}, // LED 49 + {1, CS21_SW13, CS20_SW13, CS19_SW13}, // LED 50 + {1, CS21_SW14, CS20_SW14, CS19_SW14}, // LED 51 + {1, CS21_SW15, CS20_SW15, CS19_SW15}, // LED 52 + {1, CS21_SW16, CS20_SW16, CS19_SW16}, // LED 53 + {1, CS21_SW17, CS20_SW17, CS19_SW17}, // LED 54 + {1, CS21_SW18, CS20_SW18, CS19_SW18}, // LED 55 + {1, CS21_SW19, CS20_SW19, CS19_SW19}, // LED 56 + {1, CS21_SW20, CS20_SW20, CS19_SW20}, // LED 57 + + {1, CS24_SW12, CS23_SW12, CS22_SW12}, // LED 58 + {1, CS24_SW13, CS23_SW13, CS22_SW13}, // LED 59 + {1, CS24_SW14, CS23_SW14, CS22_SW14}, // LED 60 + {1, CS24_SW15, CS23_SW15, CS22_SW15}, // LED 61 + {1, CS24_SW16, CS23_SW16, CS22_SW16}, // LED 62 + {1, CS24_SW17, CS23_SW17, CS22_SW17}, // LED 63 + {1, CS24_SW18, CS23_SW18, CS22_SW18}, // LED 64 + {1, CS24_SW19, CS23_SW19, CS22_SW19}, // LED 65 + {1, CS24_SW20, CS23_SW20, CS22_SW20}, // LED 66 + + {1, CS27_SW12, CS26_SW12, CS25_SW12}, // LED 67 + {1, CS27_SW13, CS26_SW13, CS25_SW13}, // LED 68 + {1, CS27_SW15, CS26_SW15, CS25_SW15}, // LED 69 + {1, CS27_SW16, CS26_SW16, CS25_SW16}, // LED 70 + {1, CS27_SW17, CS26_SW17, CS25_SW17}, // LED 71 + {1, CS27_SW18, CS26_SW18, CS25_SW18}, // LED 72 + {1, CS27_SW19, CS26_SW19, CS25_SW19}, // LED 73 + {1, CS27_SW20, CS26_SW20, CS25_SW20}, // LED 74 + {1, CS27_SW14, CS26_SW14, CS25_SW14}, // LED 75 + + {1, CS30_SW12, CS29_SW12, CS28_SW12}, // LED 76 + {1, CS30_SW13, CS29_SW13, CS28_SW13}, // LED 77 + {1, CS30_SW14, CS29_SW14, CS28_SW14}, // LED 78 + {1, CS30_SW15, CS29_SW15, CS28_SW15}, // LED 79 + {1, CS30_SW16, CS29_SW16, CS28_SW16}, // LED 80 + {1, CS30_SW17, CS29_SW17, CS28_SW17}, // LED 81 + {1, CS30_SW18, CS29_SW18, CS28_SW18}, // LED 82 + {1, CS30_SW19, CS29_SW19, CS28_SW19}, // LED 83 + {1, CS30_SW20, CS29_SW20, CS28_SW20}, // LED 84 + + {1, CS33_SW12, CS32_SW12, CS31_SW12}, // LED 85 + {1, CS33_SW13, CS32_SW13, CS31_SW13}, // LED 86 + {1, CS33_SW14, CS32_SW14, CS31_SW14}, // LED 87 + {1, CS33_SW15, CS32_SW15, CS31_SW15}, // LED 88 + {1, CS33_SW16, CS32_SW16, CS31_SW16}, // LED 89 + {1, CS33_SW17, CS32_SW17, CS31_SW17}, // LED 90 + {1, CS33_SW18, CS32_SW18, CS31_SW18}, // LED 91 + {1, CS33_SW19, CS32_SW19, CS31_SW19}, // LED 92 + {1, CS33_SW20, CS32_SW20, CS31_SW20}, // LED 93 + + {1, CS36_SW12, CS35_SW12, CS34_SW12}, // LED 94 + {1, CS36_SW13, CS35_SW13, CS34_SW13}, // LED 95 + {1, CS36_SW14, CS35_SW14, CS34_SW14}, // LED 96 + {1, CS36_SW15, CS35_SW15, CS34_SW15}, // LED 97 +}; + +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 31, 73, 5, 84, NO_LED, 29, 33, 77, 75, 92, 78, NO_LED, 88, 79, 52, NO_LED, }, + {NO_LED, NO_LED, NO_LED, 47, 94, 27, 35, 76, 90, 32, NO_LED, NO_LED, 34, 81, 56, 67, }, + {NO_LED, NO_LED, 93, NO_LED, 2, 19, 39, 40, 55, NO_LED, 26, NO_LED, NO_LED, 63, NO_LED, 91, }, + {NO_LED, 46, 1, NO_LED, 20, 21, 7, 8, 59, NO_LED, 24, 74, NO_LED, 70, NO_LED, NO_LED, }, + {NO_LED, NO_LED, 16, NO_LED, 44, 41, 9, 14, 68, NO_LED, 22, NO_LED, NO_LED, 61, 62, NO_LED, }, + {NO_LED, NO_LED, 15, NO_LED, 12, 13, 11, 10, 69, NO_LED, 17, NO_LED, NO_LED, 60, 65, NO_LED, }, + {NO_LED, NO_LED, NO_LED, NO_LED, 18, 3, 4, 6, 66, NO_LED, 58, 89, NO_LED, 57, 54, NO_LED, }, + {NO_LED, NO_LED, 36, NO_LED, NO_LED, 25, 43, 49, 51, NO_LED, 50, NO_LED, NO_LED, 48, 37, NO_LED, }, +}, { + // LED Index to Physical Position + { 11, 23 }, // LED 1 + { 0, 23 }, // LED 2 + { 57, 22 }, // LED 3 + { 41, 22 }, // LED 4 + { 73, 22 }, // LED 5 + { 25, 22 }, // LED 6 + { 121, 22 }, // LED 7 + { 89, 22 }, // LED 8 + { 105, 22 }, // LED 9 + { 82, 10 }, // LED 10 + { 114, 10 }, // LED 11 + { 66, 10 }, // LED 12 + { 50, 10 }, // LED 13 + { 34, 10 }, // LED 14 + { 98, 10 }, // LED 15 + { 18, 10 }, // LED 16 + { 2, 10 }, // LED 17 + { 130, 10 }, // LED 18 + { 56, 0 }, // LED 19 + { 40, 0 }, // LED 20 + { 72, 0 }, // LED 21 + { 24, 0 }, // LED 22 + { 88, 0 }, // LED 23 + { 10, 0 }, // LED 24 + { 104, 0 }, // LED 25 + { 0, 0 }, // LED 26 + { 120, 0 }, // LED 27 + { 38, 47 }, // LED 28 + { 22, 47 }, // LED 29 + { 54, 47 }, // LED 30 + { 5, 48 }, // LED 31 + { 70, 47 }, // LED 32 + { 1, 48 }, // LED 33 + { 86, 47 }, // LED 34 + { 0, 60 }, // LED 35 + { 102, 47 }, // LED 36 + { 30, 34 }, // LED 37 + { 62, 34 }, // LED 38 + { 7, 35 }, // LED 39 + { 94, 34 }, // LED 40 + { 110, 34 }, // LED 41 + { 46, 34 }, // LED 42 + { 13, 36 }, // LED 43 + { 78, 34 }, // LED 44 + { 1, 36 }, // LED 45 + { 8, 60 }, // LED 46 + { 38, 59 }, // LED 47 + { 54, 59 }, // LED 48 + { 174, 34 }, // LED 49 + { 126, 34 }, // LED 50 + { 142, 34 }, // LED 51 + { 158, 34 }, // LED 52 + { 190, 34 }, // LED 53 + { 205, 34 }, // LED 54 + { 202, 22 }, // LED 55 + { 219, 22 }, // LED 56 + { 223, 36 }, // LED 57 + { 185, 22 }, // LED 58 + { 137, 22 }, // LED 59 + { 153, 22 }, // LED 60 + { 169, 22 }, // LED 61 + { 162, 10 }, // LED 62 + { 194, 10 }, // LED 63 + { 178, 10 }, // LED 64 + { 209, 11 }, // LED 65 + { 222, 11 }, // LED 66 + { 181, 0 }, // LED 67 + { 136, 0 }, // LED 68 + { 168, 0 }, // LED 69 + { 146, 10 }, // LED 70 + { 199, 0 }, // LED 71 + { 186, 0 }, // LED 72 + { 213, 0 }, // LED 73 + { 224, 0 }, // LED 74 + { 152, 0 }, // LED 75 + { 166, 47 }, // LED 76 + { 118, 47 }, // LED 77 + { 134, 47 }, // LED 78 + { 150, 47 }, // LED 79 + { 182, 47 }, // LED 80 + { 197, 48 }, // LED 81 + { 202, 58 }, // LED 82 + { 203, 48 }, // LED 83 + { 217, 48 }, // LED 84 + { 150, 59 }, // LED 85 + { 108, 60 }, // LED 86 + { 121, 60 }, // LED 87 + { 134, 60 }, // LED 88 + { 166, 59 }, // LED 89 + { 183, 64 }, // LED 90 + { 202, 62 }, // LED 91 + { 220, 64 }, // LED 92 + { 222, 48 }, // LED 93 + { 22, 59 }, // LED 94 + { 70, 60 }, // LED 95 + { 83, 60 }, // LED 96 + { 95, 60 }, // LED 97 +}, { + // LED Index to Flag + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4 +} }; +#endif diff --git a/keyboards/framework/copilot/copilot.h b/keyboards/framework/copilot/copilot.h new file mode 100644 index 0000000000..07da67929e --- /dev/null +++ b/keyboards/framework/copilot/copilot.h @@ -0,0 +1,22 @@ +// Copyright 2022 Framework Computer +// SPDX-License-Identifier: GPL-2.0-or-later + +// The layouts are all mostly the same, except for the extra keys that the different layouts have +#define LAYOUT( \ + K110, K112, K113, K114, K115, K116, K117, K118, K119, K120, K121, K122, K123, K76, \ + K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, K11, K12, K13, K15, \ + K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K40, K41, K43, \ + K44, K46, K47, K48, K49, K50, K51, K52, K53, K54, K55, K57, \ + K58, K59, K127, K60, K61, K62, K64, K79, K83, K84, K89 \ +) \ +{ \ + { K48, K76, K17, K62, KC_NO, K47, K49, K52, K54, K57, K53, KC_NO, K64, K55, K41, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, K60, K61, K46, K50, K51, K84, K44, KC_NO, KC_NO, K58, K83, K43, K119 }, \ + { KC_NO, KC_NO, K59, KC_NO, K19, K113, K35, K36, K29, KC_NO, K118, KC_NO, KC_NO, K12, KC_NO, K89 }, \ + { KC_NO, K127, K16, KC_NO, K115, K112, K21, K22, K25, KC_NO, K117, K120, KC_NO, K123, KC_NO, KC_NO }, \ + { KC_NO, KC_NO, K1, KC_NO, K30, K32, K6, K7, K121, KC_NO, K116, KC_NO, KC_NO, K11, K13, KC_NO }, \ + { KC_NO, KC_NO, K2, KC_NO, K4, K3, K5, K8, K10, KC_NO, K9, KC_NO, KC_NO, K26, K15, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, K114, K18, K20, K23, K122, KC_NO, K24, K79, KC_NO, K27, K28, KC_NO }, \ + { KC_NO, KC_NO, K31, KC_NO, KC_NO, K110, K34, K37, K39, KC_NO, K38, KC_NO, KC_NO, K40, K33, KC_NO } \ +} diff --git a/keyboards/framework/copilot/info.json b/keyboards/framework/copilot/info.json new file mode 100644 index 0000000000..d41ab7c659 --- /dev/null +++ b/keyboards/framework/copilot/info.json @@ -0,0 +1,114 @@ +{ + "keyboard_name": "Laptop 16 Keyboard Module - ANSI Copilot", + "manufacturer": "Framework", + "maintainer": "JohnAZoidberg", + "bootloader": "rp2040", + "features": { + "bootmagic": false, + "mousekey": false, + "extrakey": true, + "console": true, + "command": false, + "nkro": true, + "audio": false + }, + "debounce": 5, + "processor": "RP2040", + "url": "https://fr.mw/FRAKDKEN", + "usb": { + "device_version": "0.3.1", + "pid": "0x0030", + "vid": "0x32AC", + "force_nkro": false + }, + "backlight": { + "pin": "GP25" + }, + "layout_aliases": { + "LAYOUT_default": "LAYOUT" + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Esc", "x": 0, "y": 0, "w": 1.25, "h": 0.5 }, + { "label": "F1", "x": 1.5, "y": 0, "h": 0.5 }, + { "label": "F2", "x": 2.75, "y": 0, "h": 0.5 }, + { "label": "F3", "x": 4, "y": 0, "h": 0.5 }, + { "label": "F4", "x": 5.25, "y": 0, "h": 0.5 }, + { "label": "F5", "x": 6.5, "y": 0, "h": 0.5 }, + { "label": "F6", "x": 7.75, "y": 0, "h": 0.5 }, + { "label": "F7", "x": 9, "y": 0, "h": 0.5 }, + { "label": "F8", "x": 10.25, "y": 0, "h": 0.5 }, + { "label": "F9", "x": 11.5, "y": 0, "h": 0.5 }, + { "label": "F10", "x": 12.75, "y": 0, "h": 0.5 }, + { "label": "F11", "x": 14, "y": 0, "h": 0.5 }, + { "label": "F12", "x": 15.25, "y": 0, "h": 0.5 }, + { "label": "Delete", "x": 16.5, "y": 0, "w": 1.75, "h": 0.5 }, + { "label": "~", "x": 0, "y": 0.75 }, + { "label": "!", "x": 1.25, "y": 0.75 }, + { "label": "@", "x": 2.5, "y": 0.75 }, + { "label": "#", "x": 3.75, "y": 0.75 }, + { "label": "$", "x": 5, "y": 0.75 }, + { "label": "%", "x": 6.25, "y": 0.75 }, + { "label": "^", "x": 7.5, "y": 0.75 }, + { "label": "&", "x": 8.75, "y": 0.75 }, + { "label": "*", "x": 10, "y": 0.75 }, + { "label": "(", "x": 11.25, "y": 0.75 }, + { "label": ")", "x": 12.5, "y": 0.75 }, + { "label": "_", "x": 13.75, "y": 0.75 }, + { "label": "+", "x": 15, "y": 0.75 }, + { "label": "Backspace", "x": 16.25, "y": 0.75, "w": 2 }, + { "label": "Tab", "x": 0, "y": 2, "w": 1.5 }, + { "label": "Q", "x": 1.75, "y": 2 }, + { "label": "W", "x": 3, "y": 2 }, + { "label": "E", "x": 4.25, "y": 2 }, + { "label": "R", "x": 5.5, "y": 2 }, + { "label": "T", "x": 6.75, "y": 2 }, + { "label": "Y", "x": 8, "y": 2 }, + { "label": "U", "x": 9.25, "y": 2 }, + { "label": "I", "x": 10.5, "y": 2 }, + { "label": "O", "x": 11.75, "y": 2 }, + { "label": "P", "x": 13, "y": 2 }, + { "label": "{", "x": 14.25, "y": 2 }, + { "label": "}", "x": 15.5, "y": 2 }, + { "label": "|", "x": 16.75, "y": 2, "w": 1.5 }, + { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "label": "A", "x": 2, "y": 3.25 }, + { "label": "S", "x": 3.25, "y": 3.25 }, + { "label": "D", "x": 4.5, "y": 3.25 }, + { "label": "F", "x": 5.75, "y": 3.25 }, + { "label": "G", "x": 7, "y": 3.25 }, + { "label": "H", "x": 8.25, "y": 3.25 }, + { "label": "J", "x": 9.5, "y": 3.25 }, + { "label": "K", "x": 10.75, "y": 3.25 }, + { "label": "L", "x": 12, "y": 3.25 }, + { "label": ":", "x": 13.25, "y": 3.25 }, + { "label": "\"", "x": 14.5, "y": 3.25 }, + { "label": "Enter", "x": 15.75, "y": 3.25, "w": 2.5 }, + { "label": "Shift", "x": 0, "y": 4.5, "w": 2.5 }, + { "label": "Z", "x": 2.75, "y": 4.5 }, + { "label": "X", "x": 4, "y": 4.5 }, + { "label": "C", "x": 5.25, "y": 4.5 }, + { "label": "V", "x": 6.5, "y": 4.5 }, + { "label": "B", "x": 7.75, "y": 4.5 }, + { "label": "N", "x": 9, "y": 4.5 }, + { "label": "M", "x": 10.25, "y": 4.5 }, + { "label": "<", "x": 11.5, "y": 4.5 }, + { "label": ">", "x": 12.75, "y": 4.5 }, + { "label": "?", "x": 14, "y": 4.5 }, + { "label": "Shift", "x": 15.25, "y": 4.5, "w": 3 }, + { "label": "Ctrl", "x": 0, "y": 5.75, "w": 1.25 }, + { "label": "Fn", "x": 1.5, "y": 5.75 }, + { "label": "Win", "x": 2.75, "y": 5.75 }, + { "label": "Alt", "x": 4, "y": 5.75 }, + { "x": 5.25, "y": 5.75, "w": 6 }, + { "label": "Alt", "x": 11.5, "y": 5.75 }, + { "label": "Ctrl", "x": 12.75, "y": 5.75 }, + { "label": "←", "x": 14, "y": 5.75, "w": 1.25 }, + { "label": "↑", "x": 15.5, "y": 5.75, "w": 1.25, "h": 0.5 }, + { "label": "→", "x": 17, "y": 5.75, "w": 1.25 }, + { "label": "↓", "x": 15.5, "y": 6.25, "w": 1.25, "h": 0.5 } + ] + } + } +} diff --git a/keyboards/framework/ansi/keymaps/copilot/keymap.c b/keyboards/framework/copilot/keymaps/default/keymap.c similarity index 100% rename from keyboards/framework/ansi/keymaps/copilot/keymap.c rename to keyboards/framework/copilot/keymaps/default/keymap.c diff --git a/keyboards/framework/copilot/rules.mk b/keyboards/framework/copilot/rules.mk new file mode 100644 index 0000000000..68d6023391 --- /dev/null +++ b/keyboards/framework/copilot/rules.mk @@ -0,0 +1,4 @@ +# Debugging (enabled in info.json) +#CONSOLE_ENABLE = yes +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = IS31FL3743A diff --git a/keyboards/framework/framework.h b/keyboards/framework/framework.h index 7412da6a6b..c2717a5ee8 100644 --- a/keyboards/framework/framework.h +++ b/keyboards/framework/framework.h @@ -5,8 +5,10 @@ #include "quantum.h" -#ifdef KEYBOARD_framework_ansi +#if KEYBOARD_framework_ansi #include "ansi.h" +#elif KEYBOARD_framework_copilot + #include "copilot.h" #elif KEYBOARD_framework_iso #include "iso.h" #elif KEYBOARD_framework_jis