diff --git a/keyboards/framework/ansi/ansi.c b/keyboards/framework/ansi/ansi.c deleted file mode 100644 index fd3a30209385..000000000000 --- a/keyboards/framework/ansi/ansi.c +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright 2022 Framework Computer -// SPDX-License-Identifier: GPL-2.0-or-later - -#include QMK_KEYBOARD_H - -// clang-format off -// 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, CS3_SW1, CS2_SW1, CS1_SW1}, // LED 49 - {1, CS3_SW2, CS2_SW2, CS1_SW2}, // LED 50 - {1, CS3_SW3, CS2_SW3, CS1_SW3}, // LED 51 - {1, CS3_SW4, CS2_SW4, CS1_SW4}, // LED 52 - {1, CS3_SW5, CS2_SW5, CS1_SW5}, // LED 53 - {1, CS3_SW6, CS2_SW6, CS1_SW6}, // LED 54 - {1, CS3_SW7, CS2_SW7, CS1_SW7}, // LED 55 - {1, CS3_SW8, CS2_SW8, CS1_SW8}, // LED 56 - {1, CS3_SW9, CS2_SW9, CS1_SW9}, // LED 57 - - {1, CS6_SW1, CS5_SW1, CS4_SW1}, // LED 58 - {1, CS6_SW2, CS5_SW2, CS4_SW2}, // LED 59 - {1, CS6_SW3, CS5_SW3, CS4_SW3}, // LED 60 - {1, CS6_SW4, CS5_SW4, CS4_SW4}, // LED 61 - {1, CS6_SW5, CS5_SW5, CS4_SW5}, // LED 62 - {1, CS6_SW6, CS5_SW6, CS4_SW6}, // LED 63 - {1, CS6_SW7, CS5_SW7, CS4_SW7}, // LED 64 - {1, CS6_SW8, CS5_SW8, CS4_SW8}, // LED 65 - {1, CS6_SW9, CS5_SW9, CS4_SW9}, // LED 66 - - {1, CS9_SW1, CS8_SW1, CS7_SW1}, // LED 67 - {1, CS9_SW2, CS8_SW2, CS7_SW2}, // LED 68 - {1, CS9_SW4, CS8_SW4, CS7_SW4}, // LED 69 - {1, CS9_SW5, CS8_SW5, CS7_SW5}, // LED 70 - {1, CS9_SW6, CS8_SW6, CS7_SW6}, // LED 71 - {1, CS9_SW7, CS8_SW7, CS7_SW7}, // LED 72 - {1, CS9_SW8, CS8_SW8, CS7_SW8}, // LED 73 - {1, CS9_SW9, CS8_SW9, CS7_SW9}, // LED 74 - {1, CS9_SW3, CS8_SW3, CS7_SW3}, // LED 75 - - {1, CS12_SW1, CS11_SW1, CS10_SW1}, // LED 76 - {1, CS12_SW2, CS11_SW2, CS10_SW2}, // LED 77 - {1, CS12_SW3, CS11_SW3, CS10_SW3}, // LED 78 - {1, CS12_SW4, CS11_SW4, CS10_SW4}, // LED 79 - {1, CS12_SW5, CS11_SW5, CS10_SW5}, // LED 80 - {1, CS12_SW6, CS11_SW6, CS10_SW6}, // LED 81 - {1, CS12_SW7, CS11_SW7, CS10_SW7}, // LED 82 - {1, CS12_SW8, CS11_SW8, CS10_SW8}, // LED 83 - {1, CS12_SW9, CS11_SW9, CS10_SW9}, // LED 84 - - {1, CS15_SW1, CS14_SW1, CS13_SW1}, // LED 85 - {1, CS15_SW2, CS14_SW2, CS13_SW2}, // LED 86 - {1, CS15_SW3, CS14_SW3, CS13_SW3}, // LED 87 - {1, CS15_SW4, CS14_SW4, CS13_SW4}, // LED 88 - {1, CS15_SW5, CS14_SW5, CS13_SW5}, // LED 89 - {1, CS15_SW6, CS14_SW6, CS13_SW6}, // LED 90 - {1, CS15_SW7, CS14_SW7, CS13_SW7}, // LED 91 - {1, CS15_SW8, CS14_SW8, CS13_SW8}, // LED 92 - {1, CS15_SW9, CS14_SW9, CS13_SW9}, // LED 93 - - {1, CS18_SW1, CS17_SW1, CS16_SW1}, // LED 94 - {1, CS18_SW2, CS17_SW2, CS16_SW2}, // LED 95 - {1, CS18_SW3, CS17_SW3, CS16_SW3}, // LED 96 - {1, CS18_SW4, CS17_SW4, CS16_SW4}, // 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 -} }; -// clang-format on diff --git a/keyboards/framework/ansi/info.json b/keyboards/framework/ansi/info.json deleted file mode 100644 index 337373f8805e..000000000000 --- a/keyboards/framework/ansi/info.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "keyboard_name": "Laptop 16 Keyboard Module - ANSI", - "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://frame.work/de/en/products/laptop16-diy-amd-7040", - "usb": { - "device_version": "0.2.9", - "pid": "0x0012", - "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/dyn_serial.c b/keyboards/framework/dyn_serial.c deleted file mode 100644 index 922be8c21fb8..000000000000 --- a/keyboards/framework/dyn_serial.c +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2022 Framework Computer -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "quantum.h" -#include "dyn_serial.h" -#include "usb_descriptor.h" -#include "usb_descriptor_common.h" - -// Prefix string literal with L for descriptors -#ifdef SERIAL_NUMBER -// clang-format off -USB_Descriptor_String_t PROGMEM SerialNumberString = { - .Header = { - .Size = sizeof(FALLBACK_SERIAL_NUMBER), - .Type = DTYPE_String - }, - .UnicodeString = FALLBACK_SERIAL_NUMBER -}; -// clang-format on - -char ascii_serialnum[SERIALNUM_LEN + 1]; - -struct __attribute__((__packed__)) serialnum_raw { - uint8_t sn_rev; - uint8_t serialnum[SERIALNUM_LEN]; - uint8_t crc32[4]; -}; - -uint32_t crc32b(uint8_t *message, size_t msg_len) { - uint8_t byte; - uint32_t crc; - uint32_t mask; - - crc = 0xFFFFFFFF; - for (size_t i = 0; i < msg_len; i++) { - byte = message[i]; - crc = crc ^ byte; - for (int j = 0; j < 8; j++) { - mask = -(crc & 1); - crc = (crc >> 1) ^ (0xEDB88320 & mask); - } - } - return ~crc; -} - -void *dyn_serial_number_string(void) { - // Read ASCII serial number from memory-mapped flash - void *serialnum_ptr = (void *)(FLASH_OFFSET + LAST_4K_BLOCK); - struct serialnum_raw *serialnum_raw = serialnum_ptr; - - // Only rev 1 supported - if (serialnum_raw->sn_rev != 1) { - return &SerialNumberString; - } - - uint32_t crc32 = crc32b(serialnum_ptr, SERIALNUM_LEN + 1); - // Make sure it's little-endian - uint32_t crc32_read = (serialnum_raw->crc32[3] << 24) + (serialnum_raw->crc32[2] << 16) + (serialnum_raw->crc32[1] << 8) + serialnum_raw->crc32[0]; - - // CRC invalid, fall back to defult serial number - if (crc32_read != crc32) { - return &SerialNumberString; - } - - // Convert to UCS-2, which is equivalent to UTF-16, if the input is ASCII - memcpy(ascii_serialnum, serialnum_raw->serialnum, SERIALNUM_LEN); - for (int i = 0; i < SERIALNUM_LEN; i++) { - if (ascii_serialnum[i] > 128) { - dprintf("Serial number character %d is not valid ASCII.", ascii_serialnum[i]); - SerialNumberString.Header.Size = i * 2; - break; - } - SerialNumberString.UnicodeString[i] = ascii_serialnum[i]; - } - - return &SerialNumberString; -} -uint16_t dyn_serial_number_string_len(void) { - return pgm_read_byte(&SerialNumberString.Header.Size); -} -#endif diff --git a/keyboards/framework/framework.c b/keyboards/framework/framework.c deleted file mode 100644 index e940ebd074c5..000000000000 --- a/keyboards/framework/framework.c +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2022-2023 Framework Computer -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "quantum.h" -#include "framework.h" -#include "os_detection.h" - -void keyboard_post_init_kb(void) { - keyboard_post_init_user(); - - // Enable debug output - debug_enable = true; - debug_matrix = true; - debug_keyboard = true; -} - -/** - * Hook into early keyboard initialization - */ -void keyboard_pre_init_kb(void) { - keyboard_pre_init_user(); - - // Mark boot as done. - // Before this, when holding down both alt keys QSPI_SS is pulled low to put - // the RP2040 in bootloader mode during reset. - setPinOutput(BOOT_DONE_GPIO); - writePinLow(BOOT_DONE_GPIO); - - // TODO: Do we ever need to disable it to save power? - setPinOutput(MUX_ENABLE_GPIO); - writePinHigh(MUX_ENABLE_GPIO); - - setPinOutput(IS31FL3743A_ENABLE_GPIO); -#if defined(RGB_MATRIX_ENABLE) - writePinHigh(IS31FL3743A_ENABLE_GPIO); -#else - writePinLow(IS31FL3743A_ENABLE_GPIO); -#endif - setPinInput(SLEEP_GPIO); -} - -/** - * Called by QMK when the keyboard suspends - */ -void suspend_power_down_kb(void) { - suspend_power_down_user(); - -#ifdef RGB_MATRIX_ENABLE - writePinLow(IS31FL3743A_ENABLE_GPIO); -#endif -} - -/** - * Called by QMK when the keyboard wakes up from suspend - */ -void suspend_wakeup_init_kb(void) { - suspend_wakeup_init_user(); - -#ifdef RGB_MATRIX_ENABLE -# ifndef NO_SUSPEND_POWER_DOWN - writePinHigh(IS31FL3743A_ENABLE_GPIO); -# endif -#endif -} - -// If in BIOS mode, no matter what the keys have been remapped to, -// always send them as the F keys -bool bios_mode = false; -bool handle_bios_hotkeys(uint16_t keycode, keyrecord_t *record) { - // Not in bios mode, no special handling, handle as normal - if (!bios_mode) return true; - - if (record->event.key.col == 5 && record->event.key.row == 2) { - if (record->event.pressed) { - register_code(KC_F2); - } else { - unregister_code(KC_F2); - } - return false; - } - - if (record->event.key.col == 8 && record->event.key.row == 4) { - if (record->event.pressed) { - register_code(KC_F10); - } else { - unregister_code(KC_F10); - } - return false; - } - - if (record->event.key.col == 13 && record->event.key.row == 3) { - if (record->event.pressed) { - register_code(KC_F12); - } else { - unregister_code(KC_F12); - } - return false; - } - - return true; -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - process_record_user(keycode, record); - - if (!handle_bios_hotkeys(keycode, record)) { - return false; - } - -#ifdef RGB_MATRIX_ENABLE - uint8_t h; - uint8_t s; - uint8_t v; - uint8_t new_v; -#endif - - switch (keycode) { - // Implement step brightness for RGB backlight -#ifdef RGB_MATRIX_ENABLE - case BL_STEP: - if (record->event.pressed) { - h = rgb_matrix_get_hue(); - s = rgb_matrix_get_sat(); - v = rgb_matrix_get_val(); - switch (v) { - default: // Default when user set to a different level - case 0: - new_v = 85; - break; - case 85: - new_v = 170; - break; - case 170: - new_v = 255; - break; - case 255: - new_v = 0; - break; - } - rgb_matrix_sethsv(h, s, new_v); - } - return true; -#endif - default: - return true; // Process all other keycodes normally - } -} - -#ifdef BIOS_HOTKEY_DEBUG -// Ignore capslock updates in order to manually control it -bool led_update_kb(led_t led_state) { - return false; -} -#endif diff --git a/keyboards/framework/framework.h b/keyboards/framework/framework.h deleted file mode 100644 index 622b49508ce6..000000000000 --- a/keyboards/framework/framework.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2022-2023 Framework Computer -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include "quantum.h" - -#ifdef KEYBOARD_framework_ansi - #include "ansi.h" -#elif KEYBOARD_framework_iso - #include "iso.h" -#elif KEYBOARD_framework_jis - #include "jis.h" -#elif KEYBOARD_framework_numpad -# include "numpad.h" -#endif - -enum framework_keycodes { - // Function lock - FN_LOCK = SAFE_RANGE, -}; - -extern bool bios_mode; - -// Uncomment this to show hotkey mode with capslock LED and backlight -// hotkey mode on: capslock ON, RGB red -// hotkey mode off: capslock OFF, RGB white -//#define BIOS_HOTKEY_DEBUG -void set_bios_mode(bool val); - -#define SLEEP_GPIO GP0 -#define MUX_ENABLE_GPIO GP4 -#define BOOT_DONE_GPIO GP5 -// Pin SDB to enable the RGB controller -#ifdef PICO_FL16 -// 22 only on RPi Pico because it doesn't have GP29 -#define IS31FL3743A_ENABLE_GPIO GP22 -#else -#define IS31FL3743A_ENABLE_GPIO GP29 -#endif diff --git a/keyboards/framework/iso/info.json b/keyboards/framework/iso/info.json deleted file mode 100644 index b1e4e4706e4a..000000000000 --- a/keyboards/framework/iso/info.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "keyboard_name": "Laptop 16 Keyboard Module - ISO", - "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://frame.work/de/en/products/laptop16-diy-amd-7040", - "usb": { - "device_version": "0.2.9", - "pid": "0x0018", - "vid": "0x32AC", - "force_nkro": true - }, - "backlight": { - "pin": "GP25" - }, - "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": "Enter", "x": 17, "y": 2, "w": 1.25, "h": 2.25 }, - { "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": "~", "x": 15.75, "y": 3.25 }, - { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, - { "label": "|", "x": 1.5, "y": 4.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/jis/info.json b/keyboards/framework/jis/info.json deleted file mode 100644 index a878e04b344d..000000000000 --- a/keyboards/framework/jis/info.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "keyboard_name": "Laptop 16 Keyboard Module - JIS", - "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://frame.work/de/en/products/laptop16-diy-amd-7040", - "usb": { - "device_version": "0.2.9", - "pid": "0x0019", - "vid": "0x32AC", - "force_nkro": true - }, - "backlight": { - "pin": "GP25" - }, - "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 }, - { "x": 16.25, "y": 0.75, "w": 0.5 }, - { "label": "Backsp", "x": 17, "y": 0.75, "w": 1.25 }, - { "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": "Enter", "x": 17, "y": 2, "w": 1.25, "h": 2.25 }, - { "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": "~", "x": 15.75, "y": 3.25 }, - { "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 }, - { "x": 15.25, "y": 4.5 }, - { "label": "Shift", "x": 16.5, "y": 4.5, "w": 1.75 }, - { "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": 0.5 }, - { "x": 6, "y": 5.75, "w": 3.75 }, - { "x": 10, "y": 5.75, "w": 0.5 }, - { "x": 10.75, "y": 5.75, "w": 0.5 }, - { "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/laptop16/ansi/info.json b/keyboards/framework/laptop16/ansi/info.json index fff52ffc07d7..337373f8805e 100644 --- a/keyboards/framework/laptop16/ansi/info.json +++ b/keyboards/framework/laptop16/ansi/info.json @@ -12,109 +12,102 @@ "nkro": true, "audio": false }, + "debounce": 5, "processor": "RP2040", "url": "https://frame.work/de/en/products/laptop16-diy-amd-7040", "usb": { - "device_version": "0.2.2", + "device_version": "0.2.9", "pid": "0x0012", "vid": "0x32AC", - "force_nkro": true + "force_nkro": false }, "backlight": { "pin": "GP25" }, - "indicators": { - "caps_lock": "GP24" - }, "layout_aliases": { "LAYOUT_default": "LAYOUT" }, "layouts": { "LAYOUT": { "layout": [ - { "matrix": [7, 5], "label": "Esc", "x": 0, "y": 0, "w": 1.25, "h": 0.5 }, - { "matrix": [3, 5], "label": "F1", "x": 1.5, "y": 0, "h": 0.5 }, - { "matrix": [2, 5], "label": "F2", "x": 2.75, "y": 0, "h": 0.5 }, - { "matrix": [6, 4], "label": "F3", "x": 4, "y": 0, "h": 0.5 }, - { "matrix": [3, 4], "label": "F4", "x": 5.25, "y": 0, "h": 0.5 }, - { "matrix": [4, 10], "label": "F5", "x": 6.5, "y": 0, "h": 0.5 }, - { "matrix": [3, 10], "label": "F6", "x": 7.75, "y": 0, "h": 0.5 }, - { "matrix": [2, 10], "label": "F7", "x": 9, "y": 0, "h": 0.5 }, - { "matrix": [1, 15], "label": "F8", "x": 10.25, "y": 0, "h": 0.5 }, - { "matrix": [3, 11], "label": "F9", "x": 11.5, "y": 0, "h": 0.5 }, - { "matrix": [4, 8], "label": "F10", "x": 12.75, "y": 0, "h": 0.5 }, - { "matrix": [6, 8], "label": "F11", "x": 14, "y": 0, "h": 0.5 }, - { "matrix": [3, 13], "label": "F12", "x": 15.25, "y": 0, "h": 0.5 }, - { "matrix": [0, 1], "label": "Delete", "x": 16.5, "y": 0, "w": 1.75, "h": 0.5 }, - - { "matrix": [4, 2], "label": "~", "x": 0, "y": 0.75 }, - { "matrix": [5, 2], "label": "!", "x": 1.25, "y": 0.75 }, - { "matrix": [5, 5], "label": "@", "x": 2.5, "y": 0.75 }, - { "matrix": [5, 4], "label": "#", "x": 3.75, "y": 0.75 }, - { "matrix": [5, 6], "label": "$", "x": 5, "y": 0.75 }, - { "matrix": [4, 6], "label": "%", "x": 6.25, "y": 0.75 }, - { "matrix": [4, 7], "label": "^", "x": 7.5, "y": 0.75 }, - { "matrix": [5, 7], "label": "&", "x": 8.75, "y": 0.75 }, - { "matrix": [5, 10], "label": "*", "x": 10, "y": 0.75 }, - { "matrix": [5, 8], "label": "(", "x": 11.25, "y": 0.75 }, - { "matrix": [4, 13], "label": ")", "x": 12.5, "y": 0.75 }, - { "matrix": [2, 13], "label": "_", "x": 13.75, "y": 0.75 }, - { "matrix": [4, 14], "label": "+", "x": 15, "y": 0.75 }, - { "matrix": [5, 14], "label": "Backspace", "x": 16.25, "y": 0.75, "w": 2 }, - - { "matrix": [3, 2], "label": "Tab", "x": 0, "y": 2, "w": 1.5 }, - { "matrix": [0, 2], "label": "Q", "x": 1.75, "y": 2 }, - { "matrix": [6, 5], "label": "W", "x": 3, "y": 2 }, - { "matrix": [2, 4], "label": "E", "x": 4.25, "y": 2 }, - { "matrix": [6, 6], "label": "R", "x": 5.5, "y": 2 }, - { "matrix": [3, 6], "label": "T", "x": 6.75, "y": 2 }, - { "matrix": [3, 7], "label": "Y", "x": 8, "y": 2 }, - { "matrix": [6, 7], "label": "U", "x": 9.25, "y": 2 }, - { "matrix": [6, 10], "label": "I", "x": 10.5, "y": 2 }, - { "matrix": [3, 8], "label": "O", "x": 11.75, "y": 2 }, - { "matrix": [5, 13], "label": "P", "x": 13, "y": 2 }, - { "matrix": [6, 13], "label": "{", "x": 14.25, "y": 2 }, - { "matrix": [6, 14], "label": "}", "x": 15.5, "y": 2 }, - { "matrix": [2, 8], "label": "|", "x": 16.75, "y": 2, "w": 1.5 }, - - { "matrix": [4, 4], "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, - { "matrix": [7, 2], "label": "A", "x": 2, "y": 3.25 }, - { "matrix": [4, 5], "label": "S", "x": 3.25, "y": 3.25 }, - { "matrix": [7, 14], "label": "D", "x": 4.5, "y": 3.25 }, - { "matrix": [7, 6], "label": "F", "x": 5.75, "y": 3.25 }, - { "matrix": [2, 6], "label": "G", "x": 7, "y": 3.25 }, - { "matrix": [2, 7], "label": "H", "x": 8.25, "y": 3.25 }, - { "matrix": [7, 7], "label": "J", "x": 9.5, "y": 3.25 }, - { "matrix": [7, 10], "label": "K", "x": 10.75, "y": 3.25 }, - { "matrix": [7, 8], "label": "L", "x": 12, "y": 3.25 }, - { "matrix": [7, 13], "label": ":", "x": 13.25, "y": 3.25 }, - { "matrix": [0, 14], "label": "\"", "x": 14.5, "y": 3.25 }, - { "matrix": [1, 14], "label": "Enter", "x": 15.75, "y": 3.25, "w": 2.5 }, - - { "matrix": [1, 9], "label": "Shift", "x": 0, "y": 4.5, "w": 2.5 }, - { "matrix": [1, 5], "label": "Z", "x": 2.75, "y": 4.5 }, - { "matrix": [0, 5], "label": "X", "x": 4, "y": 4.5 }, - { "matrix": [0, 0], "label": "C", "x": 5.25, "y": 4.5 }, - { "matrix": [0, 6], "label": "V", "x": 6.5, "y": 4.5 }, - { "matrix": [1, 6], "label": "B", "x": 7.75, "y": 4.5 }, - { "matrix": [1, 7], "label": "N", "x": 9, "y": 4.5 }, - { "matrix": [0, 7], "label": "M", "x": 10.25, "y": 4.5 }, - { "matrix": [0, 10], "label": "<", "x": 11.5, "y": 4.5 }, - { "matrix": [0, 8], "label": ">", "x": 12.75, "y": 4.5 }, - { "matrix": [0, 13], "label": "?", "x": 14, "y": 4.5 }, - { "matrix": [0, 9], "label": "Shift", "x": 15.25, "y": 4.5, "w": 3 }, - - { "matrix": [1, 12], "label": "Ctrl", "x": 0, "y": 5.75, "w": 1.25 }, - { "matrix": [2, 2], "label": "Fn", "x": 1.5, "y": 5.75 }, - { "matrix": [3, 1], "label": "Win", "x": 2.75, "y": 5.75 }, - { "matrix": [1, 3], "label": "Alt", "x": 4, "y": 5.75 }, - { "matrix": [1, 4], "label": "Space", "x": 5.25, "y": 5.75, "w": 6 }, - { "matrix": [0, 3], "label": "Alt", "x": 11.5, "y": 5.75 }, - { "matrix": [0, 12], "label": "Ctrl", "x": 12.75, "y": 5.75 }, - { "matrix": [6, 11], "label": "←", "x": 14, "y": 5.75, "w": 1.25 }, - { "matrix": [1, 13], "label": "↑", "x": 15.5, "y": 5.75, "w": 1.25, "h": 0.5 }, - { "matrix": [1, 8], "label": "→", "x": 17, "y": 5.75, "w": 1.25 }, - { "matrix": [2, 15], "label": "↓", "x": 15.5, "y": 6.25, "w": 1.25, "h": 0.5 } + { "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/laptop16/framework.c b/keyboards/framework/laptop16/framework.c index 416bac7f7c91..e940ebd074c5 100644 --- a/keyboards/framework/laptop16/framework.c +++ b/keyboards/framework/laptop16/framework.c @@ -3,6 +3,7 @@ #include "quantum.h" #include "framework.h" +#include "os_detection.h" void keyboard_post_init_kb(void) { keyboard_post_init_user(); @@ -29,9 +30,11 @@ void keyboard_pre_init_kb(void) { setPinOutput(MUX_ENABLE_GPIO); writePinHigh(MUX_ENABLE_GPIO); -#ifdef RGB_MATRIX_ENABLE setPinOutput(IS31FL3743A_ENABLE_GPIO); +#if defined(RGB_MATRIX_ENABLE) writePinHigh(IS31FL3743A_ENABLE_GPIO); +#else + writePinLow(IS31FL3743A_ENABLE_GPIO); #endif setPinInput(SLEEP_GPIO); } @@ -54,8 +57,9 @@ void suspend_wakeup_init_kb(void) { suspend_wakeup_init_user(); #ifdef RGB_MATRIX_ENABLE - setPinOutput(IS31FL3743A_ENABLE_GPIO); +# ifndef NO_SUSPEND_POWER_DOWN writePinHigh(IS31FL3743A_ENABLE_GPIO); +# endif #endif } @@ -141,3 +145,10 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return true; // Process all other keycodes normally } } + +#ifdef BIOS_HOTKEY_DEBUG +// Ignore capslock updates in order to manually control it +bool led_update_kb(led_t led_state) { + return false; +} +#endif diff --git a/keyboards/framework/laptop16/framework.h b/keyboards/framework/laptop16/framework.h index 5ba4d4c5469a..622b49508ce6 100644 --- a/keyboards/framework/laptop16/framework.h +++ b/keyboards/framework/laptop16/framework.h @@ -5,24 +5,36 @@ #include "quantum.h" -#if KEYBOARD_framework_numpad +#ifdef KEYBOARD_framework_ansi + #include "ansi.h" +#elif KEYBOARD_framework_iso + #include "iso.h" +#elif KEYBOARD_framework_jis + #include "jis.h" +#elif KEYBOARD_framework_numpad # include "numpad.h" #endif enum framework_keycodes { // Function lock - FN_LOCK = QK_KB, + FN_LOCK = SAFE_RANGE, }; extern bool bios_mode; +// Uncomment this to show hotkey mode with capslock LED and backlight +// hotkey mode on: capslock ON, RGB red +// hotkey mode off: capslock OFF, RGB white +//#define BIOS_HOTKEY_DEBUG +void set_bios_mode(bool val); + #define SLEEP_GPIO GP0 #define MUX_ENABLE_GPIO GP4 #define BOOT_DONE_GPIO GP5 // Pin SDB to enable the RGB controller #ifdef PICO_FL16 // 22 only on RPi Pico because it doesn't have GP29 -# define IS31FL3743A_ENABLE_GPIO GP22 +#define IS31FL3743A_ENABLE_GPIO GP22 #else -# define IS31FL3743A_ENABLE_GPIO GP29 +#define IS31FL3743A_ENABLE_GPIO GP29 #endif diff --git a/keyboards/framework/laptop16/iso/info.json b/keyboards/framework/laptop16/iso/info.json index 110efcd2b43d..b1e4e4706e4a 100644 --- a/keyboards/framework/laptop16/iso/info.json +++ b/keyboards/framework/laptop16/iso/info.json @@ -12,10 +12,11 @@ "nkro": true, "audio": false }, + "debounce": 5, "processor": "RP2040", "url": "https://frame.work/de/en/products/laptop16-diy-amd-7040", "usb": { - "device_version": "0.2.2", + "device_version": "0.2.9", "pid": "0x0018", "vid": "0x32AC", "force_nkro": true @@ -23,96 +24,88 @@ "backlight": { "pin": "GP25" }, - "indicators": { - "caps_lock": "GP24" - }, "layouts": { "LAYOUT": { "layout": [ - { "matrix": [7, 5], "label": "Esc", "x": 0, "y": 0, "w": 1.25, "h": 0.5 }, - { "matrix": [3, 5], "label": "F1", "x": 1.5, "y": 0, "h": 0.5 }, - { "matrix": [2, 5], "label": "F2", "x": 2.75, "y": 0, "h": 0.5 }, - { "matrix": [6, 4], "label": "F3", "x": 4, "y": 0, "h": 0.5 }, - { "matrix": [3, 4], "label": "F4", "x": 5.25, "y": 0, "h": 0.5 }, - { "matrix": [4, 10], "label": "F5", "x": 6.5, "y": 0, "h": 0.5 }, - { "matrix": [3, 10], "label": "F6", "x": 7.75, "y": 0, "h": 0.5 }, - { "matrix": [2, 10], "label": "F7", "x": 9, "y": 0, "h": 0.5 }, - { "matrix": [1, 15], "label": "F8", "x": 10.25, "y": 0, "h": 0.5 }, - { "matrix": [3, 11], "label": "F9", "x": 11.5, "y": 0, "h": 0.5 }, - { "matrix": [4, 8], "label": "F10", "x": 12.75, "y": 0, "h": 0.5 }, - { "matrix": [6, 8], "label": "F11", "x": 14, "y": 0, "h": 0.5 }, - { "matrix": [3, 13], "label": "F12", "x": 15.25, "y": 0, "h": 0.5 }, - { "matrix": [0, 1], "label": "Delete", "x": 16.5, "y": 0, "w": 1.75, "h": 0.5 }, - - { "matrix": [4, 2], "label": "~", "x": 0, "y": 0.75 }, - { "matrix": [5, 2], "label": "!", "x": 1.25, "y": 0.75 }, - { "matrix": [5, 5], "label": "\"", "x": 2.5, "y": 0.75 }, - { "matrix": [5, 4], "label": "", "x": 3.75, "y": 0.75 }, - { "matrix": [5, 6], "label": "$", "x": 5, "y": 0.75 }, - { "matrix": [4, 6], "label": "%", "x": 6.25, "y": 0.75 }, - { "matrix": [4, 7], "label": "^", "x": 7.5, "y": 0.75 }, - { "matrix": [5, 7], "label": "&", "x": 8.75, "y": 0.75 }, - { "matrix": [5, 10], "label": "*", "x": 10, "y": 0.75 }, - { "matrix": [5, 8], "label": "(", "x": 11.25, "y": 0.75 }, - { "matrix": [4, 13], "label": ")", "x": 12.5, "y": 0.75 }, - { "matrix": [2, 13], "label": "_", "x": 13.75, "y": 0.75 }, - { "matrix": [4, 14], "label": "+", "x": 15, "y": 0.75 }, - { "matrix": [5, 14], "label": "Backspace", "x": 16.25, "y": 0.75, "w": 2 }, - - { "matrix": [3, 2], "label": "Tab", "x": 0, "y": 2, "w": 1.5 }, - { "matrix": [0, 2], "label": "Q", "x": 1.75, "y": 2 }, - { "matrix": [6, 5], "label": "W", "x": 3, "y": 2 }, - { "matrix": [2, 4], "label": "E", "x": 4.25, "y": 2 }, - { "matrix": [6, 6], "label": "R", "x": 5.5, "y": 2 }, - { "matrix": [3, 6], "label": "T", "x": 6.75, "y": 2 }, - { "matrix": [3, 7], "label": "Y", "x": 8, "y": 2 }, - { "matrix": [6, 7], "label": "U", "x": 9.25, "y": 2 }, - { "matrix": [6, 10], "label": "I", "x": 10.5, "y": 2 }, - { "matrix": [3, 8], "label": "O", "x": 11.75, "y": 2 }, - { "matrix": [5, 13], "label": "P", "x": 13, "y": 2 }, - { "matrix": [6, 13], "label": "{", "x": 14.25, "y": 2 }, - { "matrix": [6, 14], "label": "}", "x": 15.5, "y": 2 }, - - { "matrix": [4, 4], "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, - { "matrix": [7, 2], "label": "A", "x": 2, "y": 3.25 }, - { "matrix": [4, 5], "label": "S", "x": 3.25, "y": 3.25 }, - { "matrix": [7, 14], "label": "D", "x": 4.5, "y": 3.25 }, - { "matrix": [7, 6], "label": "F", "x": 5.75, "y": 3.25 }, - { "matrix": [2, 6], "label": "G", "x": 7, "y": 3.25 }, - { "matrix": [2, 7], "label": "H", "x": 8.25, "y": 3.25 }, - { "matrix": [7, 7], "label": "J", "x": 9.5, "y": 3.25 }, - { "matrix": [7, 10], "label": "K", "x": 10.75, "y": 3.25 }, - { "matrix": [7, 8], "label": "L", "x": 12, "y": 3.25 }, - { "matrix": [7, 13], "label": ":", "x": 13.25, "y": 3.25 }, - { "matrix": [0, 14], "label": "@", "x": 14.5, "y": 3.25 }, - { "matrix": [2, 8], "label": "~", "x": 15.75, "y": 3.25 }, - { "matrix": [1, 14], "label": "Enter", "x": 17, "y": 2, "w": 1.25, "h": 2.25 }, - - { "matrix": [1, 9], "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, - { "matrix": [5, 11], "label": "|", "x": 1.5, "y": 4.5 }, - { "matrix": [1, 5], "label": "Z", "x": 2.75, "y": 4.5 }, - { "matrix": [0, 5], "label": "X", "x": 4, "y": 4.5 }, - { "matrix": [0, 0], "label": "C", "x": 5.25, "y": 4.5 }, - { "matrix": [0, 6], "label": "V", "x": 6.5, "y": 4.5 }, - { "matrix": [1, 6], "label": "B", "x": 7.75, "y": 4.5 }, - { "matrix": [1, 7], "label": "N", "x": 9, "y": 4.5 }, - { "matrix": [0, 7], "label": "M", "x": 10.25, "y": 4.5 }, - { "matrix": [0, 10], "label": "<", "x": 11.5, "y": 4.5 }, - { "matrix": [0, 8], "label": ">", "x": 12.75, "y": 4.5 }, - { "matrix": [0, 13], "label": "?", "x": 14, "y": 4.5 }, - { "matrix": [0, 9], "label": "Shift", "x": 15.25, "y": 4.5, "w": 3 }, - - { "matrix": [1, 12], "label": "Ctrl", "x": 0, "y": 5.75, "w": 1.25 }, - { "matrix": [2, 2], "label": "Fn", "x": 1.5, "y": 5.75 }, - { "matrix": [3, 1], "label": "Win", "x": 2.75, "y": 5.75 }, - { "matrix": [1, 3], "label": "Alt", "x": 4, "y": 5.75 }, - { "matrix": [1, 4], "label": "Space", "x": 5.25, "y": 5.75, "w": 6 }, - { "matrix": [0, 3], "label": "Alt", "x": 11.5, "y": 5.75 }, - { "matrix": [0, 12], "label": "Ctrl", "x": 12.75, "y": 5.75 }, - { "matrix": [6, 11], "label": "←", "x": 14, "y": 5.75, "w": 1.25 }, - { "matrix": [1, 13], "label": "↑", "x": 15.5, "y": 5.75, "w": 1.25, "h": 0.5 }, - { "matrix": [1, 8], "label": "→", "x": 17, "y": 5.75, "w": 1.25 }, - { "matrix": [2, 15], "label": "↓", "x": 15.5, "y": 6.25, "w": 1.25, "h": 0.5 } + { "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": "Enter", "x": 17, "y": 2, "w": 1.25, "h": 2.25 }, + { "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": "~", "x": 15.75, "y": 3.25 }, + { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 }, + { "label": "|", "x": 1.5, "y": 4.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/laptop16/jis/info.json b/keyboards/framework/laptop16/jis/info.json index b295a4155aab..a878e04b344d 100644 --- a/keyboards/framework/laptop16/jis/info.json +++ b/keyboards/framework/laptop16/jis/info.json @@ -12,10 +12,11 @@ "nkro": true, "audio": false }, + "debounce": 5, "processor": "RP2040", "url": "https://frame.work/de/en/products/laptop16-diy-amd-7040", "usb": { - "device_version": "0.2.2", + "device_version": "0.2.9", "pid": "0x0019", "vid": "0x32AC", "force_nkro": true @@ -23,100 +24,92 @@ "backlight": { "pin": "GP25" }, - "indicators": { - "caps_lock": "GP24" - }, "layouts": { "LAYOUT": { "layout": [ - { "matrix": [7, 5], "label": "Esc", "x": 0, "y": 0, "w": 1.25, "h": 0.5 }, - { "matrix": [3, 5], "label": "F1", "x": 1.5, "y": 0, "h": 0.5 }, - { "matrix": [2, 5], "label": "F2", "x": 2.75, "y": 0, "h": 0.5 }, - { "matrix": [6, 4], "label": "F3", "x": 4, "y": 0, "h": 0.5 }, - { "matrix": [3, 4], "label": "F4", "x": 5.25, "y": 0, "h": 0.5 }, - { "matrix": [4, 10], "label": "F5", "x": 6.5, "y": 0, "h": 0.5 }, - { "matrix": [3, 10], "label": "F6", "x": 7.75, "y": 0, "h": 0.5 }, - { "matrix": [2, 10], "label": "F7", "x": 9, "y": 0, "h": 0.5 }, - { "matrix": [1, 15], "label": "F8", "x": 10.25, "y": 0, "h": 0.5 }, - { "matrix": [3, 11], "label": "F9", "x": 11.5, "y": 0, "h": 0.5 }, - { "matrix": [4, 8], "label": "F10", "x": 12.75, "y": 0, "h": 0.5 }, - { "matrix": [6, 8], "label": "F11", "x": 14, "y": 0, "h": 0.5 }, - { "matrix": [3, 13], "label": "F12", "x": 15.25, "y": 0, "h": 0.5 }, - { "matrix": [0, 1], "label": "Delete", "x": 16.5, "y": 0, "w": 1.75, "h": 0.5 }, - - { "matrix": [4, 2], "label": "~", "x": 0, "y": 0.75 }, - { "matrix": [5, 2], "label": "!", "x": 1.25, "y": 0.75 }, - { "matrix": [5, 5], "label": "\"", "x": 2.5, "y": 0.75 }, - { "matrix": [5, 4], "label": "", "x": 3.75, "y": 0.75 }, - { "matrix": [5, 6], "label": "$", "x": 5, "y": 0.75 }, - { "matrix": [4, 6], "label": "%", "x": 6.25, "y": 0.75 }, - { "matrix": [4, 7], "label": "^", "x": 7.5, "y": 0.75 }, - { "matrix": [5, 7], "label": "&", "x": 8.75, "y": 0.75 }, - { "matrix": [5, 10], "label": "*", "x": 10, "y": 0.75 }, - { "matrix": [5, 8], "label": "(", "x": 11.25, "y": 0.75 }, - { "matrix": [4, 13], "label": ")", "x": 12.5, "y": 0.75 }, - { "matrix": [2, 13], "label": "_", "x": 13.75, "y": 0.75 }, - { "matrix": [4, 14], "label": "+", "x": 15, "y": 0.75 }, - { "matrix": [0, 15], "x": 16.25, "y": 0.75, "w": 0.5 }, - { "matrix": [5, 14], "label": "Backsp", "x": 17, "y": 0.75, "w": 1.25 }, - - { "matrix": [3, 2], "label": "Tab", "x": 0, "y": 2, "w": 1.5 }, - { "matrix": [0, 2], "label": "Q", "x": 1.75, "y": 2 }, - { "matrix": [6, 5], "label": "W", "x": 3, "y": 2 }, - { "matrix": [2, 4], "label": "E", "x": 4.25, "y": 2 }, - { "matrix": [6, 6], "label": "R", "x": 5.5, "y": 2 }, - { "matrix": [3, 6], "label": "T", "x": 6.75, "y": 2 }, - { "matrix": [3, 7], "label": "Y", "x": 8, "y": 2 }, - { "matrix": [6, 7], "label": "U", "x": 9.25, "y": 2 }, - { "matrix": [6, 10], "label": "I", "x": 10.5, "y": 2 }, - { "matrix": [3, 8], "label": "O", "x": 11.75, "y": 2 }, - { "matrix": [5, 13], "label": "P", "x": 13, "y": 2 }, - { "matrix": [6, 13], "label": "{", "x": 14.25, "y": 2 }, - { "matrix": [6, 14], "label": "}", "x": 15.5, "y": 2 }, - - { "matrix": [4, 4], "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, - { "matrix": [7, 2], "label": "A", "x": 2, "y": 3.25 }, - { "matrix": [4, 5], "label": "S", "x": 3.25, "y": 3.25 }, - { "matrix": [7, 14], "label": "D", "x": 4.5, "y": 3.25 }, - { "matrix": [7, 6], "label": "F", "x": 5.75, "y": 3.25 }, - { "matrix": [2, 6], "label": "G", "x": 7, "y": 3.25 }, - { "matrix": [2, 7], "label": "H", "x": 8.25, "y": 3.25 }, - { "matrix": [7, 7], "label": "J", "x": 9.5, "y": 3.25 }, - { "matrix": [7, 10], "label": "K", "x": 10.75, "y": 3.25 }, - { "matrix": [7, 8], "label": "L", "x": 12, "y": 3.25 }, - { "matrix": [7, 13], "label": ":", "x": 13.25, "y": 3.25 }, - { "matrix": [0, 14], "label": "@", "x": 14.5, "y": 3.25 }, - { "matrix": [2, 8], "label": "~", "x": 15.75, "y": 3.25 }, - { "matrix": [1, 14], "label": "Enter", "x": 17, "y": 2, "w": 1.25, "h": 2.25 }, - - { "matrix": [1, 9], "label": "Shift", "x": 0, "y": 4.5, "w": 2.5 }, - { "matrix": [1, 5], "label": "Z", "x": 2.75, "y": 4.5 }, - { "matrix": [0, 5], "label": "X", "x": 4, "y": 4.5 }, - { "matrix": [0, 0], "label": "C", "x": 5.25, "y": 4.5 }, - { "matrix": [0, 6], "label": "V", "x": 6.5, "y": 4.5 }, - { "matrix": [1, 6], "label": "B", "x": 7.75, "y": 4.5 }, - { "matrix": [1, 7], "label": "N", "x": 9, "y": 4.5 }, - { "matrix": [0, 7], "label": "M", "x": 10.25, "y": 4.5 }, - { "matrix": [0, 10], "label": "<", "x": 11.5, "y": 4.5 }, - { "matrix": [0, 8], "label": ">", "x": 12.75, "y": 4.5 }, - { "matrix": [0, 13], "label": "?", "x": 14, "y": 4.5 }, - { "matrix": [4, 11], "x": 15.25, "y": 4.5 }, - { "matrix": [0, 9], "label": "Shift", "x": 16.5, "y": 4.5, "w": 1.75 }, - - { "matrix": [1, 12], "label": "Ctrl", "x": 0, "y": 5.75, "w": 1.25 }, - { "matrix": [2, 2], "label": "Fn", "x": 1.5, "y": 5.75 }, - { "matrix": [3, 1], "label": "Win", "x": 2.75, "y": 5.75 }, - { "matrix": [1, 3], "label": "Alt", "x": 4, "y": 5.75 }, - { "matrix": [6, 2], "x": 5.25, "y": 5.75, "w": 0.5 }, - { "matrix": [1, 4], "x": 6, "y": 5.75, "w": 3.75 }, - { "matrix": [1, 11], "x": 10, "y": 5.75, "w": 0.5 }, - { "matrix": [0, 11], "x": 10.75, "y": 5.75, "w": 0.5 }, - { "matrix": [0, 3], "label": "Alt", "x": 11.5, "y": 5.75 }, - { "matrix": [0, 12], "label": "Ctrl", "x": 12.75, "y": 5.75 }, - { "matrix": [6, 11], "label": "←", "x": 14, "y": 5.75, "w": 1.25 }, - { "matrix": [1, 13], "label": "↑", "x": 15.5, "y": 5.75, "w": 1.25, "h": 0.5 }, - { "matrix": [1, 8], "label": "→", "x": 17, "y": 5.75, "w": 1.25 }, - { "matrix": [2, 15], "label": "↓", "x": 15.5, "y": 6.25, "w": 1.25, "h": 0.5 } + { "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 }, + { "x": 16.25, "y": 0.75, "w": 0.5 }, + { "label": "Backsp", "x": 17, "y": 0.75, "w": 1.25 }, + { "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": "Enter", "x": 17, "y": 2, "w": 1.25, "h": 2.25 }, + { "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": "~", "x": 15.75, "y": 3.25 }, + { "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 }, + { "x": 15.25, "y": 4.5 }, + { "label": "Shift", "x": 16.5, "y": 4.5, "w": 1.75 }, + { "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": 0.5 }, + { "x": 6, "y": 5.75, "w": 3.75 }, + { "x": 10, "y": 5.75, "w": 0.5 }, + { "x": 10.75, "y": 5.75, "w": 0.5 }, + { "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/laptop16/macropad/info.json b/keyboards/framework/laptop16/macropad/info.json index 61ef86449c12..35bc8597bdc3 100644 --- a/keyboards/framework/laptop16/macropad/info.json +++ b/keyboards/framework/laptop16/macropad/info.json @@ -12,13 +12,14 @@ "nkro": true, "audio": false }, + "debounce": 5, "processor": "RP2040", "url": "https://frame.work/de/en/products/laptop16-diy-amd-7040", "usb": { - "device_version": "0.2.2", + "device_version": "0.2.9", "pid": "0x0013", "vid": "0x32AC", - "force_nkro": true + "force_nkro": false }, "backlight": { "pin": "GP25" diff --git a/keyboards/framework/laptop16/numpad/info.json b/keyboards/framework/laptop16/numpad/info.json index ee3b71c58b42..ff73b007fcdb 100644 --- a/keyboards/framework/laptop16/numpad/info.json +++ b/keyboards/framework/laptop16/numpad/info.json @@ -12,10 +12,11 @@ "nkro": true, "audio": false }, + "debounce": 5, "processor": "RP2040", "url": "https://frame.work/de/en/products/laptop16-diy-amd-7040", "usb": { - "device_version": "0.2.2", + "device_version": "0.2.9", "pid": "0x0014", "vid": "0x32AC", "force_nkro": true @@ -26,32 +27,27 @@ "layouts": { "LAYOUT": { "layout": [ - { "matrix": [ 2, 1], "label": "ESC", "x": 0, "y": 0, "h": 0.75 }, - { "matrix": [ 2, 2], "label": "+ -", "x": 1.25, "y": 0, "h": 0.75 }, - { "matrix": [ 3, 4], "label": "=", "x": 2.5, "y": 0, "h": 0.75 }, - { "matrix": [ 2, 4], "label": "<--", "x": 3.75, "y": 0, "h": 0.75 }, - - { "matrix": [ 0, 0], "label": "Num Lock", "x": 0, "y": 1, "h": 1.25 }, - { "matrix": [ 0, 4], "label": "-", "x": 1.25, "y": 1, "h": 1.25 }, - { "matrix": [ 1, 1], "label": "*", "x": 2.5, "y": 1, "h": 1.25 }, - { "matrix": [ 1, 6], "label": "-", "x": 3.75, "y": 1, "h": 1.25 }, - - { "matrix": [ 0, 1], "label": "7", "x": 0, "y": 2.5, "h": 1.25 }, - { "matrix": [ 0, 5], "label": "8", "x": 1.25, "y": 2.5, "h": 1.25 }, - { "matrix": [ 1, 2], "label": "9", "x": 2.5, "y": 2.5, "h": 1.25 }, - - { "matrix": [ 0, 2], "label": "4", "x": 0, "y": 4, "h": 1.25 }, - { "matrix": [ 0, 6], "label": "5", "x": 1.25, "y": 4, "h": 1.25 }, - { "matrix": [ 1, 3], "label": "6", "x": 2.5, "y": 4, "h": 1.25 }, - { "matrix": [ 1, 7], "label": "+", "x": 3.75, "y": 2.5, "h": 2.75 }, - - { "matrix": [ 0, 3], "label": "1", "x": 0, "y": 5.5, "h": 1.25 }, - { "matrix": [ 0, 7], "label": "2", "x": 1.25, "y": 5.5, "h": 1.25 }, - { "matrix": [ 1, 4], "label": "3", "x": 2.5, "y": 5.5, "h": 1.25 }, - - { "matrix": [ 1, 0], "label": "0", "x": 0, "y": 7, "w": 2.25, "h": 1.25 }, - { "matrix": [ 2, 7], "label": ".", "x": 2.5, "y": 7, "h": 1.25 } - { "matrix": [ 1, 5], "label": "Enter", "x": 3.75, "y": 5.5, "h": 2.75 }, + { "label": "ESC", "x": 0, "y": 0, "h": 0.75 }, + { "label": "+ -", "x": 1.25, "y": 0, "h": 0.75 }, + { "label": "=", "x": 2.5, "y": 0, "h": 0.75 }, + { "label": "<--", "x": 3.75, "y": 0, "h": 0.75 }, + { "label": "Num Lock", "x": 0, "y": 1, "h": 1.25 }, + { "label": "-", "x": 1.25, "y": 1, "h": 1.25 }, + { "label": "*", "x": 2.5, "y": 1, "h": 1.25 }, + { "label": "-", "x": 3.75, "y": 1, "h": 1.25 }, + { "label": "7", "x": 0, "y": 2.5, "h": 1.25 }, + { "label": "8", "x": 1.25, "y": 2.5, "h": 1.25 }, + { "label": "9", "x": 2.5, "y": 2.5, "h": 1.25 }, + { "label": "+", "x": 3.75, "y": 2.5, "h": 2.75 }, + { "label": "4", "x": 0, "y": 4, "h": 1.25 }, + { "label": "5", "x": 1.25, "y": 4, "h": 1.25 }, + { "label": "6", "x": 2.5, "y": 4, "h": 1.25 }, + { "label": "1", "x": 0, "y": 5.5, "h": 1.25 }, + { "label": "2", "x": 1.25, "y": 5.5, "h": 1.25 }, + { "label": "3", "x": 2.5, "y": 5.5, "h": 1.25 }, + { "label": "Enter", "x": 3.75, "y": 5.5, "h": 2.75 }, + { "label": "0", "x": 0, "y": 7, "w": 2.25, "h": 1.25 }, + { "label": ".", "x": 2.5, "y": 7, "h": 1.25 } ] } } diff --git a/keyboards/framework/macropad/info.json b/keyboards/framework/macropad/info.json deleted file mode 100644 index 35bc8597bdc3..000000000000 --- a/keyboards/framework/macropad/info.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "keyboard_name": "Laptop 16 RGB Macropad", - "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://frame.work/de/en/products/laptop16-diy-amd-7040", - "usb": { - "device_version": "0.2.9", - "pid": "0x0013", - "vid": "0x32AC", - "force_nkro": false - }, - "backlight": { - "pin": "GP25" - }, - "layouts": { - "LAYOUT": { - "layout": [ - { "matrix": [ 2, 1], "x": 0, "y": 0, "h": 0.75 }, - { "matrix": [ 2, 2], "x": 1.25, "y": 0, "h": 0.75 }, - { "matrix": [ 3, 4], "x": 2.5, "y": 0, "h": 0.75 }, - { "matrix": [ 2, 4], "x": 3.75, "y": 0, "h": 0.75 }, - - { "matrix": [ 0, 0], "x": 0, "y": 1, "h": 1.25 }, - { "matrix": [ 0, 4], "x": 1.25, "y": 1, "h": 1.25 }, - { "matrix": [ 1, 1], "x": 2.5, "y": 1, "h": 1.25 }, - { "matrix": [ 1, 6], "x": 3.75, "y": 1, "h": 1.25 }, - - { "matrix": [ 0, 1], "x": 0, "y": 2.5, "h": 1.25 }, - { "matrix": [ 0, 5], "x": 1.25, "y": 2.5, "h": 1.25 }, - { "matrix": [ 1, 2], "x": 2.5, "y": 2.5, "h": 1.25 }, - { "matrix": [ 2, 5], "x": 3.75, "y": 2.5, "h": 1.25 }, - - { "matrix": [ 0, 2], "x": 0, "y": 4, "h": 1.25 }, - { "matrix": [ 0, 6], "x": 1.25, "y": 4, "h": 1.25 }, - { "matrix": [ 1, 3], "x": 2.5, "y": 4, "h": 1.25 }, - { "matrix": [ 1, 7], "x": 3.75, "y": 4, "h": 1.25 }, - - { "matrix": [ 0, 3], "x": 0, "y": 5.5, "h": 1.25 }, - { "matrix": [ 0, 7], "x": 1.25, "y": 5.5, "h": 1.25 }, - { "matrix": [ 1, 4], "x": 2.5, "y": 5.5, "h": 1.25 }, - { "matrix": [ 2, 6], "x": 3.75, "y": 5.5, "h": 1.25 }, - - { "matrix": [ 1, 0], "x": 0, "y": 7, "w": 2.25, "h": 1.25 }, - { "matrix": [ 2, 7], "x": 1.25, "y": 7, "h": 1.25 }, - { "matrix": [ 1, 5], "x": 2.5, "y": 7, "h": 1.25 }, - { "matrix": [ 2, 0], "x": 3.75, "y": 7, "h": 1.25 } - ] - } - } -} diff --git a/keyboards/framework/numpad/info.json b/keyboards/framework/numpad/info.json deleted file mode 100644 index ff73b007fcdb..000000000000 --- a/keyboards/framework/numpad/info.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "keyboard_name": "Laptop 16 Numpad Module", - "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://frame.work/de/en/products/laptop16-diy-amd-7040", - "usb": { - "device_version": "0.2.9", - "pid": "0x0014", - "vid": "0x32AC", - "force_nkro": true - }, - "backlight": { - "pin": "GP25" - }, - "layouts": { - "LAYOUT": { - "layout": [ - { "label": "ESC", "x": 0, "y": 0, "h": 0.75 }, - { "label": "+ -", "x": 1.25, "y": 0, "h": 0.75 }, - { "label": "=", "x": 2.5, "y": 0, "h": 0.75 }, - { "label": "<--", "x": 3.75, "y": 0, "h": 0.75 }, - { "label": "Num Lock", "x": 0, "y": 1, "h": 1.25 }, - { "label": "-", "x": 1.25, "y": 1, "h": 1.25 }, - { "label": "*", "x": 2.5, "y": 1, "h": 1.25 }, - { "label": "-", "x": 3.75, "y": 1, "h": 1.25 }, - { "label": "7", "x": 0, "y": 2.5, "h": 1.25 }, - { "label": "8", "x": 1.25, "y": 2.5, "h": 1.25 }, - { "label": "9", "x": 2.5, "y": 2.5, "h": 1.25 }, - { "label": "+", "x": 3.75, "y": 2.5, "h": 2.75 }, - { "label": "4", "x": 0, "y": 4, "h": 1.25 }, - { "label": "5", "x": 1.25, "y": 4, "h": 1.25 }, - { "label": "6", "x": 2.5, "y": 4, "h": 1.25 }, - { "label": "1", "x": 0, "y": 5.5, "h": 1.25 }, - { "label": "2", "x": 1.25, "y": 5.5, "h": 1.25 }, - { "label": "3", "x": 2.5, "y": 5.5, "h": 1.25 }, - { "label": "Enter", "x": 3.75, "y": 5.5, "h": 2.75 }, - { "label": "0", "x": 0, "y": 7, "w": 2.25, "h": 1.25 }, - { "label": ".", "x": 2.5, "y": 7, "h": 1.25 } - ] - } - } -}