├── kb16 ├── rev1 │ ├── keymaps │ │ ├── default │ │ │ ├── rules.mk │ │ │ └── keymap.c │ │ ├── via │ │ │ ├── rules.mk │ │ │ └── keymap.c │ │ └── bongocat │ │ │ ├── rules.mk │ │ │ ├── config.h │ │ │ └── keymap.c │ ├── rules.mk │ ├── readme.md │ ├── info.json │ ├── rev1.c │ ├── rev1.h │ └── config.h ├── rev2 │ ├── keymaps │ │ └── vial │ │ │ ├── config.h │ │ │ ├── rules.mk │ │ │ ├── vial.json │ │ │ └── keymap.c │ ├── halconf.h │ ├── mcuconf.h │ ├── readme.md │ ├── info.json │ ├── rev2.c │ ├── rules.mk │ ├── rev2.h │ └── config.h ├── lib │ ├── logo.h │ ├── layer_status │ │ ├── layer_status.h │ │ └── layer_status.c │ ├── util.h │ ├── logo.c │ └── glcdfont.c ├── readme.md ├── kb16.h └── kb16.c ├── layer.jpg ├── doio_kb16_rev2_vial.bin ├── asset ├── oled_frame │ ├── Sprite-0001.bmp │ ├── Sprite-0002.bmp │ ├── Sprite-0003.bmp │ ├── Sprite-0004.bmp │ ├── Sprite-0005.bmp │ ├── Sprite-0006.bmp │ ├── Sprite-0007.bmp │ ├── Sprite-0008.bmp │ ├── Sprite-0009.bmp │ ├── Sprite-0010.bmp │ ├── Sprite-0011.bmp │ ├── Sprite-0012.bmp │ ├── Sprite-0013.bmp │ └── doio_kb16_oled.aseprite └── README.md └── README.md /kb16/rev1/keymaps/default/rules.mk: -------------------------------------------------------------------------------- 1 | # Encoder enabled 2 | ENCODER_MAP_ENABLE = yes 3 | -------------------------------------------------------------------------------- /layer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/layer.jpg -------------------------------------------------------------------------------- /kb16/rev1/keymaps/via/rules.mk: -------------------------------------------------------------------------------- 1 | VIA_ENABLE = yes 2 | 3 | # Encoder enabled 4 | ENCODER_MAP_ENABLE = yes 5 | -------------------------------------------------------------------------------- /doio_kb16_rev2_vial.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/doio_kb16_rev2_vial.bin -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0001.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0001.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0002.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0002.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0003.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0003.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0004.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0004.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0005.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0005.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0006.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0006.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0007.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0007.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0008.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0008.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0009.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0009.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0010.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0010.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0011.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0011.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0012.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0012.bmp -------------------------------------------------------------------------------- /asset/oled_frame/Sprite-0013.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/Sprite-0013.bmp -------------------------------------------------------------------------------- /asset/oled_frame/doio_kb16_oled.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thompson-vii/kb16_rev2_vial_fw/HEAD/asset/oled_frame/doio_kb16_oled.aseprite -------------------------------------------------------------------------------- /kb16/rev1/keymaps/bongocat/rules.mk: -------------------------------------------------------------------------------- 1 | SRC += ./lib/bongocat/bongocat.c 2 | 3 | # Build Options 4 | # change yes to no to disable 5 | # 6 | MOUSEKEY_ENABLE = no # Mouse keys 7 | 8 | VIA_ENABLE = yes 9 | 10 | # Additional thing to reduce compiled size 11 | GRAVE_ESC_ENABLE = no 12 | 13 | # OLED enabled 14 | WPM_ENABLE = yes 15 | 16 | # Encoder enabled 17 | ENCODER_MAP_ENABLE = yes 18 | -------------------------------------------------------------------------------- /kb16/rev2/keymaps/vial/config.h: -------------------------------------------------------------------------------- 1 | #define VIAL_KEYBOARD_UID {0xB1, 0x6B, 0x3A, 0xE3, 0x28, 0x64, 0xC1, 0x05} 2 | 3 | #define VIAL_UNLOCK_COMBO_ROWS {0, 0} 4 | #define VIAL_UNLOCK_COMBO_COLS {0, 3} 5 | 6 | #define STM32_ONBOARD_EEPROM_SIZE 4098 7 | #define DYNAMIC_KEYMAP_LAYER_COUNT 12 8 | 9 | #define COMBO_MUST_PRESS_IN_ORDER 10 | #define VIAL_COMBO_ENTRIES 12 11 | /*#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 1280 */ 12 | -------------------------------------------------------------------------------- /asset/README.md: -------------------------------------------------------------------------------- 1 | Contains the graphical asset for the oled screen. It's 128x32 SSD1306. 2 | 3 | I authored the bmp with aseprite. 4 | 5 | https://javl.github.io/image2cpp/ is used to convert the bmp to raw bytes. 6 | 7 | Be sure to select Arduino code for the code output format and vertical 1 bit per pixel for the draw mode. 8 | 9 | layer graphics goes into lib/layer_status/layer_status.c 10 | 11 | Boot logo goes into lib/logo.c -------------------------------------------------------------------------------- /kb16/rev2/keymaps/vial/rules.mk: -------------------------------------------------------------------------------- 1 | VIA_ENABLE = yes 2 | VIAL_ENABLE = yes 3 | LTO_ENABLE = yes 4 | 5 | # Encoder enabled 6 | ENCODER_ENABLE = yes 7 | ENCODER_MAP_ENABLE = yes 8 | 9 | COMMAND_ENABLE = yes 10 | DYNAMIC_MACRO_ENABLE = yes 11 | MOUSEKEY_ENABLE = yes 12 | COMBO_ENABLE = yes 13 | SEND_STRING_ENABLE = yes 14 | TAP_DANCE_ENABLE = yes 15 | 16 | QMK_SETTINGS = yes 17 | 18 | # eeprom setting 19 | 20 | EEPROM_DRIVER = vendor 21 | 22 | -------------------------------------------------------------------------------- /kb16/rev2/keymaps/vial/vial.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "KB16-01", 3 | "vendorId": "0xD010", 4 | "productId": "0x1601", 5 | "lighting": "none", 6 | "matrix": { 7 | "rows": 4, 8 | "cols": 5 9 | }, 10 | "layouts": { 11 | "keymap": [ 12 | ["0,0","0,1","0,2","0,3",{"x":0.25},"0,0\n\n\n\n\n\n\n\n\ne","0,1\n\n\n\n\n\n\n\n\ne",{"x":0.25},"1,0\n\n\n\n\n\n\n\n\ne","1,1\n\n\n\n\n\n\n\n\ne"], 13 | ["1,0","1,1","1,2","1,3",{"x":0.75},"0,4",{"x":1.25},"1,4"], 14 | ["2,0","2,1","2,2","2,3"], 15 | [{"y":-0.75,"x":4.5},"2,0\n\n\n\n\n\n\n\n\ne",{"w":1.75,"h":1.75},"2,4","2,1\n\n\n\n\n\n\n\n\ne"], 16 | [{"y":-0.25},"3,0","3,1","3,2","3,3"] 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /kb16/lib/logo.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | void render_logo(void); 19 | -------------------------------------------------------------------------------- /kb16/lib/layer_status/layer_status.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | void render_layer_status(void); 19 | -------------------------------------------------------------------------------- /kb16/readme.md: -------------------------------------------------------------------------------- 1 | # KB16-01 2 | 3 | #### This keyboard have 2 revision, so before you need to write your own firmware code. Please read it carefully, or you could accident bricked your keeb after that. 4 | 5 | - **Revision 1**: Using ATMEGA32U4. 6 | 7 | When you try to go bootloader mode, QMK Toolbox will showing this message `Atmel DFU device connected (libusb0): Atmel Corp. ATmega32U4 (03EB:2FF4:0000)`. So please compile Revision 1 and flash after that. 8 | 9 | Oh, and one more thing. As for the Bongo Cat on OLED screen, due to small flash size that ATMEGA32U4 support. It need to be disable Mouse key support. 10 | 11 | - **Revision 2**: Using APM32F103CBT6 (clone STM32F103CBT6). 12 | 13 | When you try to go bootloader mode, QMK Toolbox will showing this message `STM32Duino device connected: LeafLabs Maple 003 (1EAF:0003:0201)`. So please compile Revision 2 and flash after that. 14 | -------------------------------------------------------------------------------- /kb16/kb16.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "quantum.h" 21 | 22 | #if defined(KEYBOARD_doio_kb16_rev1) 23 | #include "rev1.h" 24 | #elif defined(KEYBOARD_doio_kb16_rev2) 25 | #include "rev2.h" 26 | #endif -------------------------------------------------------------------------------- /kb16/rev2/halconf.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | /* 19 | * This file was auto-generated by: 20 | * `qmk chibios-confmigrate -i keyboards/doio/kb16/rev2/halconf.h -r platforms/chibios/common/configs/halconf.h` 21 | */ 22 | 23 | #pragma once 24 | 25 | #define HAL_USE_I2C TRUE 26 | 27 | #include_next 28 | -------------------------------------------------------------------------------- /kb16/rev1/rules.mk: -------------------------------------------------------------------------------- 1 | SRC += ./lib/layer_status/layer_status.c 2 | SRC += ./lib/logo.c 3 | 4 | # MCU name 5 | MCU = atmega32u4 6 | 7 | # Bootloader selection 8 | BOOTLOADER = atmel-dfu 9 | 10 | # Build Options 11 | # change yes to no to disable 12 | # 13 | BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite 14 | MOUSEKEY_ENABLE = yes # Mouse keys 15 | EXTRAKEY_ENABLE = yes # Audio control and System control 16 | CONSOLE_ENABLE = no # Console for debug 17 | COMMAND_ENABLE = no # Commands for debug and configuration 18 | NKRO_ENABLE = yes # Enable N-Key Rollover 19 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality 20 | RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow 21 | AUDIO_ENABLE = no # Audio output 22 | 23 | # Additional thing to reduce compiled size 24 | LTO_ENABLE = yes 25 | SPACE_CADET_ENABLE = no 26 | 27 | # OLED enabled 28 | OLED_ENABLE = yes 29 | OLED_DRIVER = SSD1306 30 | 31 | # RGB Matrix enabled 32 | RGB_MATRIX_ENABLE = yes 33 | RGB_MATRIX_DRIVER = WS2812 34 | 35 | # Encoder enabled 36 | ENCODER_ENABLE = yes 37 | -------------------------------------------------------------------------------- /kb16/rev2/mcuconf.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | /* 19 | * This file was auto-generated by: 20 | * `qmk chibios-confmigrate -i keyboards/doio/kb16/rev2/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` 21 | */ 22 | 23 | #pragma once 24 | 25 | #include_next 26 | 27 | #undef STM32_I2C_USE_I2C2 28 | #define STM32_I2C_USE_I2C2 TRUE 29 | -------------------------------------------------------------------------------- /kb16/rev1/readme.md: -------------------------------------------------------------------------------- 1 | # KB16-01 (Revision 1) 2 | 3 | ![KB16-01](https://i.imgur.com/lpq47ELh.png) 4 | 5 | A macropad that have 16-key keyboard made by DOIO, which controlled by an Atmega32u4 chipset. The keyboard features per-key RGB, 3 encoder and an OLED screen for displaying useful information. 6 | 7 | * Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll) 8 | * Hardware Supported: Atmega32u4 9 | 10 | Make example for this keyboard (after setting up your build environment): 11 | 12 | make doio/kb16/rev1:default 13 | 14 | Flashing example for this keyboard: 15 | 16 | make doio/kb16/rev1:default:flash 17 | 18 | See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). 19 | 20 | ## Bootloader 21 | 22 | Enter the bootloader in 3 ways: 23 | 24 | * **Bootmagic reset**: Hold down the key at (0,0) in the matrix (1! key) and plug in the keyboard 25 | * **Physical reset button**: Briefly press the button on the back of the PCB 26 | * **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available 27 | -------------------------------------------------------------------------------- /kb16/rev2/readme.md: -------------------------------------------------------------------------------- 1 | # KB16-01 (Revision 2) 2 | 3 | ![KB16-01](https://i.imgur.com/lpq47ELh.png) 4 | 5 | A macropad that have 16-key keyboard made by DOIO, which controlled by an APM32F103CBT6 chipset. The keyboard features per-key RGB, 3 encoder and an OLED screen for displaying useful information. 6 | 7 | * Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll) 8 | * Hardware Supported: APM32F103CBT6 9 | 10 | Make example for this keyboard (after setting up your build environment): 11 | 12 | make doio/kb16/rev2:default 13 | 14 | Flashing example for this keyboard: 15 | 16 | make doio/kb16/rev2:default:flash 17 | 18 | See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). 19 | 20 | ## Bootloader 21 | 22 | Enter the bootloader in 3 ways: 23 | 24 | * **Bootmagic reset**: Hold down the key at (0,0) in the matrix (1! key) and plug in the keyboard 25 | * **Physical reset button**: Briefly press the button on the back of the PCB 26 | * **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available 27 | -------------------------------------------------------------------------------- /kb16/rev1/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "keyboard_name": "KB16-01", 3 | "manufacturer": "DOIO", 4 | "url": "", 5 | "maintainer": "HorrorTroll", 6 | "usb": { 7 | "vid": "0xD010", 8 | "pid": "0x1601", 9 | "device_version": "0.0.1" 10 | }, 11 | "layouts": { 12 | "LAYOUT": { 13 | "layout": [ 14 | {"label":"1!", "x":0, "y":0}, 15 | {"label":"2@", "x":1, "y":0}, 16 | {"label":"3#", "x":2, "y":0}, 17 | {"label":"4$", "x":3, "y":0}, 18 | 19 | {"label":"Encoder 1", "x":4.75, "y":0}, 20 | 21 | {"label":"5%", "x":0, "y":1}, 22 | {"label":"6^", "x":1, "y":1}, 23 | {"label":"7&", "x":2, "y":1}, 24 | {"label":"8*", "x":3, "y":1}, 25 | 26 | {"label":"Encoder 2", "x":6, "y":0}, 27 | 28 | {"label":"9(", "x":0, "y":2}, 29 | {"label":"0)", "x":1, "y":2}, 30 | {"label":"\u2191", "x":2, "y":2}, 31 | {"label":"Enter", "x":3, "y":2}, 32 | 33 | {"label":"Encoder 3", "x":5.375, "y":2.5}, 34 | 35 | {"label":"Fn", "x":0, "y":3}, 36 | {"label":"\u2190", "x":1, "y":3}, 37 | {"label":"\u2193", "x":2, "y":3}, 38 | {"label":"\u2192", "x":3, "y":3} 39 | ] 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /kb16/rev2/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "keyboard_name": "KB16-01", 3 | "manufacturer": "DOIO", 4 | "url": "", 5 | "maintainer": "HorrorTroll", 6 | "usb": { 7 | "vid": "0xD010", 8 | "pid": "0x1601", 9 | "device_version": "0.0.1" 10 | }, 11 | "layouts": { 12 | "LAYOUT": { 13 | "layout": [ 14 | {"label":"1!", "x":0, "y":0}, 15 | {"label":"2@", "x":1, "y":0}, 16 | {"label":"3#", "x":2, "y":0}, 17 | {"label":"4$", "x":3, "y":0}, 18 | 19 | {"label":"Encoder 1", "x":4.75, "y":0}, 20 | 21 | {"label":"5%", "x":0, "y":1}, 22 | {"label":"6^", "x":1, "y":1}, 23 | {"label":"7&", "x":2, "y":1}, 24 | {"label":"8*", "x":3, "y":1}, 25 | 26 | {"label":"Encoder 2", "x":6, "y":0}, 27 | 28 | {"label":"9(", "x":0, "y":2}, 29 | {"label":"0)", "x":1, "y":2}, 30 | {"label":"\u2191", "x":2, "y":2}, 31 | {"label":"Enter", "x":3, "y":2}, 32 | 33 | {"label":"Encoder 3", "x":5.375, "y":2.5}, 34 | 35 | {"label":"Fn", "x":0, "y":3}, 36 | {"label":"\u2190", "x":1, "y":3}, 37 | {"label":"\u2193", "x":2, "y":3}, 38 | {"label":"\u2192", "x":3, "y":3} 39 | ] 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /kb16/rev1/rev1.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #include "rev1.h" 19 | 20 | #ifdef RGB_MATRIX_ENABLE 21 | led_config_t g_led_config = { { 22 | { 0, 1, 2, 3, NO_LED }, 23 | { 4, 5, 6, 7, NO_LED }, 24 | { 8, 9, 10, 11, NO_LED }, 25 | { 12, 13, 14, 15, NO_LED } 26 | }, { 27 | {0 , 0}, {75 , 0}, {149, 0}, {224, 0}, 28 | {0 , 21}, {75 , 21}, {149, 21}, {224, 21}, 29 | {0 , 43}, {75 , 43}, {149, 43}, {224, 43}, 30 | {0 , 64}, {75 , 64}, {149, 64}, {224, 64}, 31 | }, { 32 | 1, 1, 1, 1, 33 | 1, 4, 4, 1, 34 | 1, 4, 4, 1, 35 | 1, 1, 1, 1, 36 | } }; 37 | #endif 38 | -------------------------------------------------------------------------------- /kb16/rev2/rev2.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #include "rev2.h" 19 | 20 | #ifdef RGB_MATRIX_ENABLE 21 | led_config_t g_led_config = { { 22 | { 0, 1, 2, 3, NO_LED }, 23 | { 4, 5, 6, 7, NO_LED }, 24 | { 8, 9, 10, 11, NO_LED }, 25 | { 12, 13, 14, 15, NO_LED } 26 | }, { 27 | {0 , 0}, {75 , 0}, {149, 0}, {224, 0}, 28 | {0 , 21}, {75 , 21}, {149, 21}, {224, 21}, 29 | {0 , 43}, {75 , 43}, {149, 43}, {224, 43}, 30 | {0 , 64}, {75 , 64}, {149, 64}, {224, 64}, 31 | }, { 32 | 1, 1, 1, 1, 33 | 1, 4, 4, 1, 34 | 1, 4, 4, 1, 35 | 1, 1, 1, 1, 36 | } }; 37 | #endif 38 | -------------------------------------------------------------------------------- /kb16/rev2/rules.mk: -------------------------------------------------------------------------------- 1 | SRC += ./lib/layer_status/layer_status.c 2 | SRC += ./lib/logo.c 3 | 4 | # MCU name 5 | MCU = STM32F103 6 | 7 | # Bootloader selection 8 | # Cannot use `BOOTLOADER = stm32duino` due to the need to override 9 | # `MCU_LDSCRIPT`, therefore all parameters need to be specified here manually. 10 | OPT_DEFS += -DBOOTLOADER_STM32DUINO 11 | MCU_LDSCRIPT = STM32F103xB_stm32duino_bootloader 12 | BOARD = STM32_F103_STM32DUINO 13 | BOOTLOADER_TYPE = stm32duino 14 | DFU_ARGS = -d 1EAF:0003 -a 2 -R 15 | DFU_SUFFIX_ARGS = -v 1EAF -p 0003 16 | 17 | # Build Options 18 | # change yes to no to disable 19 | # 20 | BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite 21 | MOUSEKEY_ENABLE = yes # Mouse keys 22 | EXTRAKEY_ENABLE = yes # Audio control and System control 23 | CONSOLE_ENABLE = no # Console for debug 24 | COMMAND_ENABLE = no # Commands for debug and configuration 25 | NKRO_ENABLE = yes # Enable N-Key Rollover 26 | BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality 27 | RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow 28 | AUDIO_ENABLE = no # Audio output 29 | USE_VIA = yes 30 | 31 | # OLED enabled 32 | OLED_ENABLE = yes 33 | OLED_DRIVER = SSD1306 34 | 35 | # RGB Matrix enabled 36 | RGB_MATRIX_ENABLE = yes 37 | RGB_MATRIX_DRIVER = WS2812 38 | 39 | # Encoder enabled 40 | ENCODER_ENABLE = yes 41 | 42 | # Wear-levelling driver 43 | EEPROM_DRIVER = wear_leveling 44 | WEAR_LEVELING_DRIVER = embedded_flash 45 | -------------------------------------------------------------------------------- /kb16/kb16.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #include "kb16.h" 19 | 20 | // OLED animation 21 | #include "./lib/logo.h" 22 | 23 | #ifdef OLED_ENABLE 24 | uint16_t startup_timer; 25 | 26 | oled_rotation_t oled_init_kb(oled_rotation_t rotation) { 27 | startup_timer = timer_read(); 28 | 29 | return rotation; 30 | } 31 | 32 | bool oled_task_kb(void) { 33 | static bool finished_logo = false; 34 | 35 | if ((timer_elapsed(startup_timer) < 5000) && !finished_logo) { 36 | render_logo(); 37 | } else { 38 | finished_logo = true; 39 | 40 | if (!oled_task_user()) { 41 | return false; 42 | } 43 | } 44 | 45 | return true; 46 | } 47 | #endif 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![](./layer.jpg) 2 | 3 | # kb16_rev2_vial_fw 4 | compiled firmware for doio's kb16 rev2 5 | 6 | Not compatible with via. Must use vial. 7 | 8 | *Not compatible with rev1* 9 | 10 | *Not compatible with wireless version.* 11 | 12 | 13 | 14 | Use qmk toolbox, hold top left key while plugging it in. 15 | Pick the bin file and click on flash. After flashing reconnect the usb cable. 16 | If everything goes well, you should see RGB pattern. 17 | 18 | compiled with following flag, layer count increased to 12. Added custom graphics so oled can display up to 12 layers. 19 | ``` 20 | VIA_ENABLE = yes 21 | VIAL_ENABLE = yes 22 | LTO_ENABLE = yes 23 | 24 | # Encoder enabled 25 | ENCODER_ENABLE = yes 26 | ENCODER_MAP_ENABLE = yes 27 | 28 | COMMAND_ENABLE = yes 29 | DYNAMIC_MACRO_ENABLE = yes 30 | MOUSEKEY_ENABLE = yes 31 | COMBO_ENABLE = yes 32 | SEND_STRING_ENABLE = yes 33 | TAP_DANCE_ENABLE = yes 34 | 35 | EEPROM_DRIVER = vendor 36 | ``` 37 | 38 | keymap config.h 39 | 40 | ``` 41 | #define STM32_ONBOARD_EEPROM_SIZE 4098 42 | #define DYNAMIC_KEYMAP_LAYER_COUNT 12 43 | ``` 44 | 45 | Advantage over stock firmware. 46 | - Embeded layout so no need for sideloading json 47 | - Native encoder layout 48 | - Vial specific feature like macro delay 49 | - RGB 50 | - the knob now correctly emits 20 pulse per revolution, matching the dedent. 51 | 52 | using code from this pr https://github.com/qmk/qmk_firmware/pull/18699 53 | 54 | Credit: 55 | - HorrorTroll: QMK port 56 | - PHSC138: Pin schematic 57 | - Kolloom: Vial port, graphics, layout 58 | -------------------------------------------------------------------------------- /kb16/rev1/rev1.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "quantum.h" 21 | 22 | #define XXX KC_NO 23 | 24 | /* ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 25 | * │00 │01 │02 │03 │ │04 │ │14 │ 26 | * ├───┼───┼───┼───┤ └───┘ └───┘ 27 | * │10 │11 │12 │13 │ 28 | * ├───┼───┼───┼───┤ 29 | * │20 │21 │22 │23 │ ┌───┐ 30 | * ├───┼───┼───┼───┤ │24 │ 31 | * │30 │31 │32 │33 │ └───┘ 32 | * └───┴───┴───┴───┘ 33 | */ 34 | 35 | #define LAYOUT( \ 36 | K00, K01, K02, K03, K04, \ 37 | K10, K11, K12, K13, K14, \ 38 | K20, K21, K22, K23, K24, \ 39 | K30, K31, K32, K33 \ 40 | ) { \ 41 | { K00, K01, K02, K03, K04 }, \ 42 | { K10, K11, K12, K13, K14 }, \ 43 | { K20, K21, K22, K23, K24 }, \ 44 | { K30, K31, K32, K33, XXX } \ 45 | } 46 | 47 | -------------------------------------------------------------------------------- /kb16/rev2/rev2.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "quantum.h" 21 | 22 | #define XXX KC_NO 23 | 24 | /* ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 25 | * │00 │01 │02 │03 │ │04 │ │14 │ 26 | * ├───┼───┼───┼───┤ └───┘ └───┘ 27 | * │10 │11 │12 │13 │ 28 | * ├───┼───┼───┼───┤ 29 | * │20 │21 │22 │23 │ ┌───┐ 30 | * ├───┼───┼───┼───┤ │24 │ 31 | * │30 │31 │32 │33 │ └───┘ 32 | * └───┴───┴───┴───┘ 33 | */ 34 | 35 | #define LAYOUT( \ 36 | K00, K01, K02, K03, K04, \ 37 | K10, K11, K12, K13, K14, \ 38 | K20, K21, K22, K23, K24, \ 39 | K30, K31, K32, K33 \ 40 | ) { \ 41 | { K00, K01, K02, K03, K04 }, \ 42 | { K10, K11, K12, K13, K14 }, \ 43 | { K20, K21, K22, K23, K24 }, \ 44 | { K30, K31, K32, K33, XXX } \ 45 | } 46 | 47 | -------------------------------------------------------------------------------- /kb16/lib/util.h: -------------------------------------------------------------------------------- 1 | /* This program is free software: you can redistribute it and/or modify 2 | * it under the terms of the GNU General Public License as published by 3 | * the Free Software Foundation, either version 2 of the License, or 4 | * (at your option) any later version. 5 | * 6 | * This program is distributed in the hope that it will be useful, 7 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 8 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 9 | * GNU General Public License for more details. 10 | * 11 | * You should have received a copy of the GNU General Public License 12 | * along with this program. If not, see . 13 | */ 14 | 15 | // These functions were added to `quantum/util.h` in late 2022, 16 | // have not been ported to Vial yet 17 | 18 | #if !defined(IS_ARRAY) 19 | /** 20 | * @brief Returns true if the value is an array, false if it's a pointer. 21 | * 22 | * This macro is ill-formed for scalars, which is OK for its intended use in 23 | * ARRAY_SIZE. 24 | */ 25 | # define IS_ARRAY(value) (!__builtin_types_compatible_p(typeof((value)), typeof(&(value)[0]))) 26 | #endif 27 | 28 | #if !defined(ARRAY_SIZE) 29 | /** 30 | * @brief Computes the number of elements of the given array at compile time. 31 | * 32 | * This Macro can only be used for statically allocated arrays that have not 33 | * been decayed into a pointer. This is detected at compile time, though the 34 | * error message for scalar values is poor. 35 | */ 36 | # define ARRAY_SIZE(array) (__builtin_choose_expr(IS_ARRAY((array)), sizeof((array)) / sizeof((array)[0]), (void)0)) 37 | #endif 38 | 39 | #define WRITE_RAW(x) oled_write_raw_P(x, ARRAY_SIZE(x)) -------------------------------------------------------------------------------- /kb16/rev1/keymaps/bongocat/config.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 HorrorTroll 2 | * 3 | * This program is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * This program is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with this program. If not, see . 15 | */ 16 | 17 | #pragma once 18 | 19 | /* Additional thing to reduce compiled size */ 20 | #define NO_ACTION_ONESHOT 21 | #define LAYER_STATE_8BIT 22 | 23 | #ifdef RGB_MATRIX_ENABLE 24 | /* RGB Matrix config */ 25 | #undef RGB_MATRIX_KEYPRESSES 26 | 27 | /* RGB Matrix effect */ 28 | #undef ENABLE_RGB_MATRIX_ALPHAS_MODS 29 | #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN 30 | #undef ENABLE_RGB_MATRIX_BREATHING 31 | #undef ENABLE_RGB_MATRIX_BAND_SAT 32 | #undef ENABLE_RGB_MATRIX_BAND_VAL 33 | #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT 34 | #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL 35 | #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN 36 | #undef ENABLE_RGB_MATRIX_DUAL_BEACON 37 | #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS 38 | #undef ENABLE_RGB_MATRIX_RAINDROPS 39 | #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS 40 | #undef ENABLE_RGB_MATRIX_HUE_PENDULUM 41 | #undef ENABLE_RGB_MATRIX_HUE_WAVE 42 | #undef ENABLE_RGB_MATRIX_PIXEL_RAIN 43 | #undef ENABLE_RGB_MATRIX_PIXEL_FLOW 44 | #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL 45 | #endif 46 | -------------------------------------------------------------------------------- /kb16/rev1/config.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "config_common.h" 21 | 22 | /* key matrix size */ 23 | #define MATRIX_ROWS 4 24 | #define MATRIX_COLS 5 25 | 26 | /* key matrix pins */ 27 | #define MATRIX_ROW_PINS { D5, D4, D3, D2 } 28 | #define MATRIX_COL_PINS { F5, F4, F1, F0, B7 } 29 | 30 | #define BOOTMAGIC_LITE_ROW 0 31 | #define BOOTMAGIC_LITE_COLUMN 0 32 | 33 | /* COL2ROW or ROW2COL */ 34 | #define DIODE_DIRECTION COL2ROW 35 | 36 | /* Set 0 if debouncing isn't needed */ 37 | #define DEBOUNCE 5 38 | 39 | /* Forcing to use NKRO instead 6KRO */ 40 | #define FORCE_NKRO 41 | 42 | /* Use the custom font */ 43 | #define OLED_FONT_H "./lib/glcdfont.c" 44 | 45 | /* Encoder pins */ 46 | #define ENCODERS_PAD_A { F7, C7, D7 } 47 | #define ENCODERS_PAD_B { E6, C6, D6 } 48 | 49 | #ifdef RGB_MATRIX_ENABLE 50 | /* RGB Matrix config */ 51 | #define RGB_DI_PIN F6 52 | #define DRIVER_LED_TOTAL 16 53 | #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 54 | #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS 55 | #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_UP_DOWN 56 | #define RGB_MATRIX_KEYPRESSES 57 | 58 | /* RGB Matrix effect */ 59 | #define ENABLE_RGB_MATRIX_ALPHAS_MODS 60 | #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN 61 | #define ENABLE_RGB_MATRIX_BREATHING 62 | #define ENABLE_RGB_MATRIX_BAND_SAT 63 | #define ENABLE_RGB_MATRIX_BAND_VAL 64 | #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT 65 | #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL 66 | #define ENABLE_RGB_MATRIX_CYCLE_ALL 67 | #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN 68 | #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN 69 | #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL 70 | #define ENABLE_RGB_MATRIX_DUAL_BEACON 71 | #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS 72 | #define ENABLE_RGB_MATRIX_RAINDROPS 73 | #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS 74 | #define ENABLE_RGB_MATRIX_HUE_BREATHING 75 | #define ENABLE_RGB_MATRIX_HUE_PENDULUM 76 | #define ENABLE_RGB_MATRIX_HUE_WAVE 77 | #define ENABLE_RGB_MATRIX_PIXEL_RAIN 78 | #define ENABLE_RGB_MATRIX_PIXEL_FLOW 79 | #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL 80 | 81 | #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE 82 | #define ENABLE_RGB_MATRIX_SOLID_REACTIVE 83 | #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE 84 | #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS 85 | #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS 86 | #define ENABLE_RGB_MATRIX_MULTISPLASH 87 | #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH 88 | #endif 89 | -------------------------------------------------------------------------------- /kb16/rev2/config.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "config_common.h" 21 | 22 | /* key matrix size */ 23 | #define MATRIX_ROWS 4 24 | #define MATRIX_COLS 5 25 | 26 | /* key matrix pins */ 27 | #define MATRIX_ROW_PINS { B3, B4, B9, B8 } 28 | #define MATRIX_COL_PINS { B14, B13, B12, B0, A7 } 29 | 30 | #define BOOTMAGIC_LITE_ROW 0 31 | #define BOOTMAGIC_LITE_COLUMN 0 32 | 33 | /* COL2ROW or ROW2COL */ 34 | #define DIODE_DIRECTION COL2ROW 35 | 36 | /* Set 0 if debouncing isn't needed */ 37 | #define DEBOUNCE 5 38 | 39 | /* Forcing to use NKRO instead 6KRO */ 40 | #define FORCE_NKRO 41 | 42 | #ifdef OLED_ENABLE 43 | /* Mapping I2C2 for OLED */ 44 | #define I2C1_SCL_PIN B10 45 | #define I2C1_SDA_PIN B11 46 | #define I2C_DRIVER I2CD2 47 | 48 | /* Use the custom font */ 49 | #define OLED_FONT_H "./lib/glcdfont.c" 50 | #endif 51 | 52 | /* Encoder pins */ 53 | #define ENCODERS_PAD_A { B5, A1, A3 } 54 | #define ENCODERS_PAD_B { B6, A2, A4 } 55 | 56 | #ifdef RGB_MATRIX_ENABLE 57 | /* RGB Matrix config */ 58 | #define RGB_DI_PIN A10 59 | #define DRIVER_LED_TOTAL 16 60 | #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 61 | #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS 62 | #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_UP_DOWN 63 | #define RGB_MATRIX_KEYPRESSES 64 | 65 | /* RGB Matrix effect */ 66 | #define ENABLE_RGB_MATRIX_ALPHAS_MODS 67 | #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN 68 | #define ENABLE_RGB_MATRIX_BREATHING 69 | #define ENABLE_RGB_MATRIX_BAND_SAT 70 | #define ENABLE_RGB_MATRIX_BAND_VAL 71 | #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT 72 | #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL 73 | #define ENABLE_RGB_MATRIX_CYCLE_ALL 74 | #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN 75 | #define ENABLE_RGB_MATRIX_CYCLE_OUT_IN 76 | #define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL 77 | #define ENABLE_RGB_MATRIX_DUAL_BEACON 78 | #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS 79 | #define ENABLE_RGB_MATRIX_RAINDROPS 80 | #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS 81 | #define ENABLE_RGB_MATRIX_HUE_BREATHING 82 | #define ENABLE_RGB_MATRIX_HUE_PENDULUM 83 | #define ENABLE_RGB_MATRIX_HUE_WAVE 84 | #define ENABLE_RGB_MATRIX_PIXEL_RAIN 85 | #define ENABLE_RGB_MATRIX_PIXEL_FLOW 86 | #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL 87 | 88 | #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE 89 | #define ENABLE_RGB_MATRIX_SOLID_REACTIVE 90 | #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE 91 | #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS 92 | #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS 93 | #define ENABLE_RGB_MATRIX_MULTISPLASH 94 | #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH 95 | #endif 96 | -------------------------------------------------------------------------------- /kb16/lib/logo.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #include "quantum.h" 19 | #include "./util.h" 20 | 21 | #define ANIM_SIZE 512 // number of bytes in array, minimize for adequate firmware size, max is 1024 22 | 23 | void render_logo(void) { 24 | static const char PROGMEM doio[][ANIM_SIZE] = { 25 | { 26 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x02, 0x04, 0x04, 0x08, 27 | 0x10, 0x20, 0xe0, 0x50, 0x28, 0x14, 0x0a, 0x05, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 28 | 0x80, 0x80, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x30, 0xc0, 29 | 0x80, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x81, 0x81, 0x01, 0x02, 0x02, 0x05, 0x04, 0x18, 0x10, 30 | 0x21, 0x56, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0xf8, 0xf0, 0xe0, 0xf0, 31 | 0xf8, 0xf8, 0x70, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 32 | 0xf8, 0xf0, 0xe0, 0xf0, 0xf8, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0xe0, 0xf8, 0x38, 0x00, 0x00, 0x70, 33 | 0xf8, 0xf8, 0xf0, 0xe0, 0xf0, 0xf8, 0xf8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 34 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xc4, 0x34, 0xde, 35 | 0x3a, 0x07, 0x00, 0x02, 0x02, 0x04, 0x04, 0x06, 0x01, 0x00, 0xc0, 0x30, 0x0e, 0x01, 0x01, 0x81, 36 | 0x80, 0x80, 0x80, 0x00, 0x0f, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 37 | 0x00, 0x81, 0x42, 0x22, 0x24, 0x24, 0x44, 0x84, 0x18, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 38 | 0x02, 0x05, 0x2d, 0xda, 0x24, 0x44, 0x84, 0x04, 0x04, 0x04, 0x00, 0x00, 0x01, 0x03, 0x07, 0x03, 39 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x04, 0x06, 0x0f, 0x08, 0x00, 0x00, 0x0f, 0x0f, 40 | 0x0f, 0x80, 0x81, 0x00, 0x0f, 0x80, 0x80, 0x8f, 0x0f, 0x8f, 0x83, 0x8f, 0x0e, 0x00, 0x00, 0x00, 41 | 0x00, 0x01, 0x03, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 42 | 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x84, 0x64, 0x1e, 0x03, 0x00, 0xfc, 0x03, 43 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x10, 0x0c, 0xff, 0x00, 0xe0, 0x1e, 0x01, 0xc1, 0xf0, 44 | 0xf8, 0xf8, 0xc8, 0xc1, 0x02, 0x00, 0x00, 0x03, 0x04, 0x18, 0x20, 0x40, 0x30, 0x08, 0x07, 0x00, 45 | 0x00, 0x01, 0xf8, 0xfc, 0xfe, 0xf4, 0xe0, 0x00, 0x01, 0x46, 0x38, 0x01, 0x02, 0x04, 0xfc, 0x00, 46 | 0x00, 0xc0, 0x23, 0x24, 0x18, 0x08, 0x00, 0x01, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 47 | 0x00, 0xef, 0x45, 0xe2, 0x00, 0xef, 0x22, 0xef, 0x00, 0xeb, 0xad, 0x4d, 0x00, 0xef, 0xa9, 0x49, 48 | 0x00, 0xe8, 0x2f, 0xe8, 0x00, 0xe8, 0xaa, 0x4f, 0x00, 0x2f, 0xea, 0x2f, 0x00, 0xe0, 0xa0, 0x40, 49 | 0x00, 0xe0, 0x20, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 50 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 51 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x40, 0xbc, 0x03, 0x00, 0x01, 0x00, 0x00, 0x08, 0x11, 52 | 0x01, 0x09, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x40, 53 | 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x01, 0x04, 0x88, 0x42, 0x24, 0x18, 0x87, 0x20, 54 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 55 | 0x00, 0x3d, 0x08, 0x35, 0x00, 0x3d, 0x25, 0x3d, 0x00, 0x3d, 0x20, 0x01, 0x3c, 0x21, 0x00, 0x3d, 56 | 0x24, 0x3d, 0x01, 0x3d, 0x24, 0x3d, 0x00, 0x3d, 0x04, 0x3c, 0x09, 0x38, 0x00, 0x01, 0x00, 0x01, 57 | 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 58 | } 59 | }; 60 | 61 | WRITE_RAW(doio[0]); 62 | } 63 | -------------------------------------------------------------------------------- /kb16/rev1/keymaps/via/keymap.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #include QMK_KEYBOARD_H 19 | 20 | // OLED animation 21 | #include "lib/layer_status/layer_status.h" 22 | 23 | // Each layer gets a name for readability, which is then used in the keymap matrix below. 24 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. 25 | // Layer names don't all need to be of the same length, obviously, and you can also skip them 26 | // entirely and just use numbers. 27 | 28 | enum layer_names { 29 | _BASE, 30 | _FN, 31 | _FN1, 32 | _FN2 33 | }; 34 | 35 | // enum layer_keycodes { }; 36 | 37 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 38 | 39 | /* 40 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 41 | │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│ 42 | ├───┼───┼───┼───┤ └───┘ └───┘ 43 | │ 5 │ 6 │ 7 │ 8 │ 44 | ├───┼───┼───┼───┤ 45 | │ 9 │ 0 │ ↑ │Ent│ ┌───┐ 46 | ├───┼───┼───┼───┤ │Mut│ 47 | │Fn2│ ← │ ↓ │ → │ └───┘ 48 | └───┴───┴───┴───┘ 49 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 50 | │ ! │ @ │ # │ $ │ │ │ │ │ 51 | ├───┼───┼───┼───┤ └───┘ └───┘ 52 | │ % │ ^ │ & │ * │ 53 | ├───┼───┼───┼───┤ 54 | │ ( │ ) │ │ │ ┌───┐ 55 | ├───┼───┼───┼───┤ │ │ 56 | │ │ │ │ │ └───┘ 57 | └───┴───┴───┴───┘ 58 | */ 59 | /* Row: 0 1 2 3 4 */ 60 | [_BASE] = LAYOUT( 61 | KC_1, KC_2, KC_3, KC_4, KC_MPLY, 62 | KC_5, KC_6, KC_7, KC_8, TO(_FN), 63 | KC_9, KC_0, KC_UP, KC_ENT, KC_MUTE, 64 | MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT 65 | ), 66 | 67 | /* 68 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 69 | │ │ │ │ │ │ │ │ │ 70 | ├───┼───┼───┼───┤ └───┘ └───┘ 71 | │ │ │ │ │ 72 | ├───┼───┼───┼───┤ 73 | │ │ │ │ │ ┌───┐ 74 | ├───┼───┼───┼───┤ │ │ 75 | │ │ │ │ │ └───┘ 76 | └───┴───┴───┴───┘ 77 | */ 78 | /* Row: 0 1 2 3 4 */ 79 | [_FN] = LAYOUT( 80 | _______, _______, _______, _______, _______, 81 | _______, _______, _______, _______, TO(_FN1), 82 | _______, _______, _______, _______, _______, 83 | _______, _______, _______, _______ 84 | ), 85 | 86 | /* 87 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 88 | │ │ │ │ │ │ │ │ │ 89 | ├───┼───┼───┼───┤ └───┘ └───┘ 90 | │ │ │ │ │ 91 | ├───┼───┼───┼───┤ 92 | │ │ │ │ │ ┌───┐ 93 | ├───┼───┼───┼───┤ │ │ 94 | │ │ │ │ │ └───┘ 95 | └───┴───┴───┴───┘ 96 | */ 97 | /* Row: 0 1 2 3 4 */ 98 | [_FN1] = LAYOUT( 99 | _______, _______, _______, _______, _______, 100 | _______, _______, _______, _______, TO(_FN2), 101 | _______, _______, _______, _______, _______, 102 | _______, _______, _______, _______ 103 | ), 104 | 105 | /* 106 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 107 | │Spi│Spd│ │ │ │ │ │TO0│ 108 | ├───┼───┼───┼───┤ └───┘ └───┘ 109 | │Sai│Sad│ │ │ 110 | ├───┼───┼───┼───┤ 111 | │Tog│Mod│Hui│ │ ┌───┐ 112 | ├───┼───┼───┼───┤ │ │ 113 | │ │Vai│Hud│Vad│ └───┘ 114 | └───┴───┴───┴───┘ 115 | */ 116 | /* Row: 0 1 2 3 4 */ 117 | [_FN2] = LAYOUT( 118 | RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, 119 | RGB_SAI, RGB_SAD, _______, _______, TO(_BASE), 120 | RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, 121 | _______, RGB_VAI, RGB_HUD, RGB_VAD 122 | ), 123 | }; 124 | 125 | #ifdef OLED_ENABLE 126 | bool oled_task_user(void) { 127 | render_layer_status(); 128 | 129 | return true; 130 | } 131 | #endif 132 | 133 | #ifdef ENCODER_MAP_ENABLE 134 | const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { 135 | [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, 136 | [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 137 | [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 138 | [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 139 | }; 140 | #endif 141 | -------------------------------------------------------------------------------- /kb16/rev2/keymaps/vial/keymap.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #include QMK_KEYBOARD_H 19 | 20 | // OLED animation 21 | #include "lib/layer_status/layer_status.h" 22 | 23 | // Each layer gets a name for readability, which is then used in the keymap matrix below. 24 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. 25 | // Layer names don't all need to be of the same length, obviously, and you can also skip them 26 | // entirely and just use numbers. 27 | 28 | enum layer_names { 29 | _BASE, 30 | _FN, 31 | _FN1, 32 | _FN2 33 | }; 34 | 35 | // enum layer_keycodes { }; 36 | 37 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 38 | 39 | /* 40 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 41 | │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│ 42 | ├───┼───┼───┼───┤ └───┘ └───┘ 43 | │ 5 │ 6 │ 7 │ 8 │ 44 | ├───┼───┼───┼───┤ 45 | │ 9 │ 0 │ ↑ │Ent│ ┌───┐ 46 | ├───┼───┼───┼───┤ │Mut│ 47 | │Fn2│ ← │ ↓ │ → │ └───┘ 48 | └───┴───┴───┴───┘ 49 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 50 | │ ! │ @ │ # │ $ │ │ │ │ │ 51 | ├───┼───┼───┼───┤ └───┘ └───┘ 52 | │ % │ ^ │ & │ * │ 53 | ├───┼───┼───┼───┤ 54 | │ ( │ ) │ │ │ ┌───┐ 55 | ├───┼───┼───┼───┤ │ │ 56 | │ │ │ │ │ └───┘ 57 | └───┴───┴───┴───┘ 58 | */ 59 | /* Row: 0 1 2 3 4 */ 60 | [_BASE] = LAYOUT( 61 | KC_1, KC_2, KC_3, KC_4, KC_MPLY, 62 | KC_5, KC_6, KC_7, KC_8, TO(_FN), 63 | KC_9, KC_0, KC_UP, KC_ENT, KC_MUTE, 64 | MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT 65 | ), 66 | 67 | /* 68 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 69 | │ │ │ │ │ │ │ │ │ 70 | ├───┼───┼───┼───┤ └───┘ └───┘ 71 | │ │ │ │ │ 72 | ├───┼───┼───┼───┤ 73 | │ │ │ │ │ ┌───┐ 74 | ├───┼───┼───┼───┤ │ │ 75 | │ │ │ │ │ └───┘ 76 | └───┴───┴───┴───┘ 77 | */ 78 | /* Row: 0 1 2 3 4 */ 79 | [_FN] = LAYOUT( 80 | _______, _______, _______, _______, _______, 81 | _______, _______, _______, _______, TO(_FN1), 82 | _______, _______, _______, _______, _______, 83 | _______, _______, _______, _______ 84 | ), 85 | 86 | /* 87 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 88 | │ │ │ │ │ │ │ │ │ 89 | ├───┼───┼───┼───┤ └───┘ └───┘ 90 | │ │ │ │ │ 91 | ├───┼───┼───┼───┤ 92 | │ │ │ │ │ ┌───┐ 93 | ├───┼───┼───┼───┤ │ │ 94 | │ │ │ │ │ └───┘ 95 | └───┴───┴───┴───┘ 96 | */ 97 | /* Row: 0 1 2 3 4 */ 98 | [_FN1] = LAYOUT( 99 | _______, _______, _______, _______, _______, 100 | _______, _______, _______, _______, TO(_FN2), 101 | _______, _______, _______, _______, _______, 102 | _______, _______, _______, _______ 103 | ), 104 | 105 | /* 106 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 107 | │Spi│Spd│ │ │ │ │ │TO0│ 108 | ├───┼───┼───┼───┤ └───┘ └───┘ 109 | │Sai│Sad│ │ │ 110 | ├───┼───┼───┼───┤ 111 | │Tog│Mod│Hui│ │ ┌───┐ 112 | ├───┼───┼───┼───┤ │ │ 113 | │ │Vai│Hud│Vad│ └───┘ 114 | └───┴───┴───┴───┘ 115 | */ 116 | /* Row: 0 1 2 3 4 */ 117 | [_FN2] = LAYOUT( 118 | RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, 119 | RGB_SAI, RGB_SAD, _______, _______, TO(_BASE), 120 | RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, 121 | _______, RGB_VAI, RGB_HUD, RGB_VAD 122 | ), 123 | }; 124 | 125 | #ifdef OLED_ENABLE 126 | bool oled_task_user(void) { 127 | render_layer_status(); 128 | 129 | return true; 130 | } 131 | #endif 132 | 133 | #ifdef ENCODER_MAP_ENABLE 134 | const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { 135 | [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, 136 | [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 137 | [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 138 | [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 139 | }; 140 | #endif 141 | -------------------------------------------------------------------------------- /kb16/rev1/keymaps/default/keymap.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | #include QMK_KEYBOARD_H 19 | 20 | // OLED animation 21 | #include "./lib/layer_status/layer_status.h" 22 | 23 | // Each layer gets a name for readability, which is then used in the keymap matrix below. 24 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. 25 | // Layer names don't all need to be of the same length, obviously, and you can also skip them 26 | // entirely and just use numbers. 27 | 28 | enum layer_names { 29 | _BASE, 30 | _FN, 31 | _FN1, 32 | _FN2 33 | }; 34 | 35 | // enum layer_keycodes { }; 36 | 37 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 38 | 39 | /* 40 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 41 | │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│ 42 | ├───┼───┼───┼───┤ └───┘ └───┘ 43 | │ 5 │ 6 │ 7 │ 8 │ 44 | ├───┼───┼───┼───┤ 45 | │ 9 │ 0 │ ↑ │Ent│ ┌───┐ 46 | ├───┼───┼───┼───┤ │Mut│ 47 | │Fn2│ ← │ ↓ │ → │ └───┘ 48 | └───┴───┴───┴───┘ 49 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 50 | │ ! │ @ │ # │ $ │ │ │ │ │ 51 | ├───┼───┼───┼───┤ └───┘ └───┘ 52 | │ % │ ^ │ & │ * │ 53 | ├───┼───┼───┼───┤ 54 | │ ( │ ) │ │ │ ┌───┐ 55 | ├───┼───┼───┼───┤ │ │ 56 | │ │ │ │ │ └───┘ 57 | └───┴───┴───┴───┘ 58 | */ 59 | /* Row: 0 1 2 3 4 */ 60 | [_BASE] = LAYOUT( 61 | KC_1, KC_2, KC_3, KC_4, KC_MPLY, 62 | KC_5, KC_6, KC_7, KC_8, TO(_FN), 63 | KC_9, KC_0, KC_UP, KC_ENT, KC_MUTE, 64 | MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT 65 | ), 66 | 67 | /* 68 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 69 | │ │ │ │ │ │ │ │ │ 70 | ├───┼───┼───┼───┤ └───┘ └───┘ 71 | │ │ │ │ │ 72 | ├───┼───┼───┼───┤ 73 | │ │ │ │ │ ┌───┐ 74 | ├───┼───┼───┼───┤ │ │ 75 | │ │ │ │ │ └───┘ 76 | └───┴───┴───┴───┘ 77 | */ 78 | /* Row: 0 1 2 3 4 */ 79 | [_FN] = LAYOUT( 80 | _______, _______, _______, _______, _______, 81 | _______, _______, _______, _______, TO(_FN1), 82 | _______, _______, _______, _______, _______, 83 | _______, _______, _______, _______ 84 | ), 85 | 86 | /* 87 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 88 | │ │ │ │ │ │ │ │ │ 89 | ├───┼───┼───┼───┤ └───┘ └───┘ 90 | │ │ │ │ │ 91 | ├───┼───┼───┼───┤ 92 | │ │ │ │ │ ┌───┐ 93 | ├───┼───┼───┼───┤ │ │ 94 | │ │ │ │ │ └───┘ 95 | └───┴───┴───┴───┘ 96 | */ 97 | /* Row: 0 1 2 3 4 */ 98 | [_FN1] = LAYOUT( 99 | _______, _______, _______, _______, _______, 100 | _______, _______, _______, _______, TO(_FN2), 101 | _______, _______, _______, _______, _______, 102 | _______, _______, _______, _______ 103 | ), 104 | 105 | /* 106 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 107 | │Spi│Spd│ │ │ │ │ │TO0│ 108 | ├───┼───┼───┼───┤ └───┘ └───┘ 109 | │Sai│Sad│ │ │ 110 | ├───┼───┼───┼───┤ 111 | │Tog│Mod│Hui│ │ ┌───┐ 112 | ├───┼───┼───┼───┤ │ │ 113 | │ │Vai│Hud│Vad│ └───┘ 114 | └───┴───┴───┴───┘ 115 | */ 116 | /* Row: 0 1 2 3 4 */ 117 | [_FN2] = LAYOUT( 118 | RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, 119 | RGB_SAI, RGB_SAD, _______, _______, TO(_BASE), 120 | RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, 121 | _______, RGB_VAI, RGB_HUD, RGB_VAD 122 | ), 123 | }; 124 | 125 | #ifdef OLED_ENABLE 126 | bool oled_task_user(void) { 127 | render_layer_status(); 128 | 129 | return true; 130 | } 131 | #endif 132 | 133 | #ifdef ENCODER_MAP_ENABLE 134 | const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { 135 | [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, 136 | [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 137 | [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 138 | [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 139 | }; 140 | #endif 141 | -------------------------------------------------------------------------------- /kb16/rev1/keymaps/bongocat/keymap.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 HorrorTroll 2 | * 3 | * This program is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * This program is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with this program. If not, see . 15 | */ 16 | 17 | #include QMK_KEYBOARD_H 18 | 19 | // OLED animation 20 | #include "./lib/bongocat/bongocat.h" 21 | 22 | // Each layer gets a name for readability, which is then used in the keymap matrix below. 23 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. 24 | // Layer names don't all need to be of the same length, obviously, and you can also skip them 25 | // entirely and just use numbers. 26 | 27 | enum layer_names { 28 | _BASE, 29 | _FN, 30 | _FN1, 31 | _FN2 32 | }; 33 | 34 | // enum layer_keycodes { }; 35 | 36 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 37 | 38 | /* 39 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 40 | │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│ 41 | ├───┼───┼───┼───┤ └───┘ └───┘ 42 | │ 5 │ 6 │ 7 │ 8 │ 43 | ├───┼───┼───┼───┤ 44 | │ 9 │ 0 │ ↑ │Ent│ ┌───┐ 45 | ├───┼───┼───┼───┤ │Mut│ 46 | │Fn2│ ← │ ↓ │ → │ └───┘ 47 | └───┴───┴───┴───┘ 48 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 49 | │ ! │ @ │ # │ $ │ │ │ │ │ 50 | ├───┼───┼───┼───┤ └───┘ └───┘ 51 | │ % │ ^ │ & │ * │ 52 | ├───┼───┼───┼───┤ 53 | │ ( │ ) │ │ │ ┌───┐ 54 | ├───┼───┼───┼───┤ │ │ 55 | │ │ │ │ │ └───┘ 56 | └───┴───┴───┴───┘ 57 | */ 58 | /* Row: 0 1 2 3 4 */ 59 | [_BASE] = LAYOUT( 60 | KC_1, KC_2, KC_3, KC_4, KC_MPLY, 61 | KC_5, KC_6, KC_7, KC_8, TO(_FN), 62 | KC_9, KC_0, KC_UP, KC_ENT, KC_MUTE, 63 | MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT 64 | ), 65 | 66 | /* 67 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 68 | │ │ │ │ │ │ │ │ │ 69 | ├───┼───┼───┼───┤ └───┘ └───┘ 70 | │ │ │ │ │ 71 | ├───┼───┼───┼───┤ 72 | │ │ │ │ │ ┌───┐ 73 | ├───┼───┼───┼───┤ │ │ 74 | │ │ │ │ │ └───┘ 75 | └───┴───┴───┴───┘ 76 | */ 77 | /* Row: 0 1 2 3 4 */ 78 | [_FN] = LAYOUT( 79 | _______, _______, _______, _______, _______, 80 | _______, _______, _______, _______, TO(_FN1), 81 | _______, _______, _______, _______, _______, 82 | _______, _______, _______, _______ 83 | ), 84 | 85 | /* 86 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 87 | │ │ │ │ │ │ │ │ │ 88 | ├───┼───┼───┼───┤ └───┘ └───┘ 89 | │ │ │ │ │ 90 | ├───┼───┼───┼───┤ 91 | │ │ │ │ │ ┌───┐ 92 | ├───┼───┼───┼───┤ │ │ 93 | │ │ │ │ │ └───┘ 94 | └───┴───┴───┴───┘ 95 | */ 96 | /* Row: 0 1 2 3 4 */ 97 | [_FN1] = LAYOUT( 98 | _______, _______, _______, _______, _______, 99 | _______, _______, _______, _______, TO(_FN2), 100 | _______, _______, _______, _______, _______, 101 | _______, _______, _______, _______ 102 | ), 103 | 104 | /* 105 | ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 106 | │Spi│Spd│ │ │ │ │ │TO0│ 107 | ├───┼───┼───┼───┤ └───┘ └───┘ 108 | │Sai│Sad│ │ │ 109 | ├───┼───┼───┼───┤ 110 | │Tog│Mod│Hui│ │ ┌───┐ 111 | ├───┼───┼───┼───┤ │ │ 112 | │ │Vai│Hud│Vad│ └───┘ 113 | └───┴───┴───┴───┘ 114 | */ 115 | /* Row: 0 1 2 3 4 */ 116 | [_FN2] = LAYOUT( 117 | RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, 118 | RGB_SAI, RGB_SAD, _______, _______, TO(_BASE), 119 | RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, 120 | _______, RGB_VAI, RGB_HUD, RGB_VAD 121 | ), 122 | }; 123 | 124 | #ifdef OLED_ENABLE 125 | bool oled_task_user(void) { 126 | led_t led_usb_state = host_keyboard_led_state(); 127 | 128 | render_bongocat(); 129 | oled_set_cursor(14, 0); // sets cursor to (column, row) using charactar spacing (4 rows on 128x32 screen, anything more will overflow back to the top) 130 | oled_write_P(PSTR("WPM:"), false); 131 | oled_write(get_u8_str(get_current_wpm(), '0'), false); // writes wpm on top right corner of string 132 | oled_set_cursor(17, 2); 133 | oled_write_P(led_usb_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false); 134 | oled_set_cursor(17, 3); 135 | oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRL") : PSTR(" "), false); 136 | 137 | return true; 138 | } 139 | #endif 140 | 141 | #ifdef ENCODER_MAP_ENABLE 142 | const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { 143 | [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, 144 | [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 145 | [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 146 | [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 147 | }; 148 | #endif 149 | -------------------------------------------------------------------------------- /kb16/lib/glcdfont.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | 18 | // This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. 19 | // See gfxfont.h for newer custom bitmap font info. 20 | 21 | #include "progmem.h" 22 | 23 | // Standard ASCII 5x7 font 24 | const unsigned char font[] PROGMEM = { 25 | 0x07, 0x08, 0x7F, 0x08, 0x07, 0x00, 26 | 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, 27 | 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, 28 | 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, 29 | 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, 30 | 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, 31 | 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 32 | 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, 33 | 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 34 | 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 35 | 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, 36 | 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, 37 | 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, 38 | 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, 39 | 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, 40 | 0x2A, 0x1C, 0x77, 0x1C, 0x2A, 0x00, 41 | 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, 42 | 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, 43 | 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, 44 | 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, 45 | 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 46 | 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, 47 | 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 48 | 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, 49 | 0x08, 0x04, 0x3E, 0x04, 0x08, 0x00, 50 | 0x08, 0x10, 0x3E, 0x10, 0x08, 0x00, 51 | 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, 52 | 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, 53 | 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, 54 | 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, 55 | 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, 56 | 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 57 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 58 | 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 59 | 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 60 | 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 61 | 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, 62 | 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, 63 | 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 64 | 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 65 | 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 66 | 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 67 | 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, 68 | 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 69 | 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, 70 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 71 | 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 72 | 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 73 | 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 74 | 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, 75 | 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, 76 | 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, 77 | 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, 78 | 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 79 | 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, 80 | 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, 81 | 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 82 | 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 83 | 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 84 | 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 85 | 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 86 | 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 87 | 0x41, 0x22, 0x14, 0x08, 0x00, 0x00, 88 | 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, 89 | 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, 90 | 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, 91 | 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, 92 | 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, 93 | 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, 94 | 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, 95 | 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, 96 | 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, 97 | 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 98 | 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, 99 | 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, 100 | 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, 101 | 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, 102 | 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, 103 | 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, 104 | 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, 105 | 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, 106 | 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, 107 | 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, 108 | 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, 109 | 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, 110 | 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, 111 | 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, 112 | 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, 113 | 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 114 | 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 115 | 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 116 | 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, 117 | 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 118 | 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, 119 | 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 120 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 121 | 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, 122 | 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, 123 | 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, 124 | 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, 125 | 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, 126 | 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 127 | 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, 128 | 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00, 129 | 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 130 | 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, 131 | 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, 132 | 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 133 | 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, 134 | 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, 135 | 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, 136 | 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 137 | 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, 138 | 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, 139 | 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, 140 | 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, 141 | 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, 142 | 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, 143 | 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, 144 | 0x3C, 0x40, 0x38, 0x40, 0x3C, 0x00, 145 | 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 146 | 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, 147 | 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 148 | 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 149 | 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 150 | 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 151 | 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, 152 | 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, 153 | 0x10, 0x38, 0x10, 0x10, 0x1C, 0x00, 154 | 0x0C, 0x7A, 0x41, 0x7A, 0x0C, 0x00, 155 | 0x18, 0x2F, 0x41, 0x2F, 0x18, 0x00, 156 | 0x22, 0x72, 0x22, 0x27, 0x22, 0x00, 157 | 0x08, 0x1C, 0x08, 0x08, 0x08, 0x00, 158 | 0x08, 0x08, 0x38, 0x20, 0x28, 0x28, 159 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 160 | 0x00, 0x2A, 0x2A, 0x2A, 0x00, 0x00, 161 | 0x4E, 0x46, 0x4A, 0x50, 0x2F, 0x00, 162 | 0x3E, 0x45, 0x55, 0x51, 0x3E, 0x00, 163 | 0x48, 0x50, 0x7E, 0x50, 0x48, 0x00, 164 | 0x3E, 0x49, 0x71, 0x49, 0x3E, 0x00, 165 | 0x10, 0x22, 0x4F, 0x20, 0x10, 0x00, 166 | 0x0E, 0x06, 0x0A, 0x10, 0x20, 0x00, 167 | 0x20, 0x10, 0x0A, 0x06, 0x0E, 0x00, 168 | 0x08, 0x08, 0x08, 0x1C, 0x08, 0x00, 169 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 170 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 171 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 172 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 173 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 174 | 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, 175 | 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, 176 | 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, 177 | 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, 178 | 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, 179 | 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, 180 | 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, 181 | 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, 182 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 183 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 184 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 185 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 186 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 187 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 188 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 189 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 190 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 191 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 192 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 193 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 194 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 195 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 196 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 197 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 198 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 199 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 200 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 201 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 202 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 203 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 204 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 205 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 206 | 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 207 | 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, 208 | 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, 209 | 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, 210 | 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, 211 | 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, 212 | 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, 213 | 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, 214 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 215 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 216 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 217 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 218 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 219 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 220 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 221 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 222 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 223 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 224 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 225 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 226 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 227 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 228 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 229 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 230 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 231 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 232 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 233 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 234 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 235 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 236 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 237 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 238 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 239 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 240 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 241 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 242 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 243 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 244 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 245 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 246 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 247 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 248 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 249 | }; 250 | -------------------------------------------------------------------------------- /kb16/lib/layer_status/layer_status.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2022 DOIO 2 | * Copyright 2022 HorrorTroll 3 | * Copyright 2022 Kolloom 4 | * 5 | * This program is free software: you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation, either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program. If not, see . 17 | */ 18 | 19 | #include "quantum.h" 20 | #include "../util.h" 21 | 22 | #define ANIM_SIZE 512 // number of bytes in array, minimize for adequate firmware size, max is 1024 23 | 24 | void render_layer_status(void) { 25 | static const char PROGMEM layer_status[][ANIM_SIZE] = { 26 | { 27 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 28 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 29 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 30 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 31 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 32 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 33 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 34 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 35 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 36 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0xff, 0xff, 0x00, 0x00, 37 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 38 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 39 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 40 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 41 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 42 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 43 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 44 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 45 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 46 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 47 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 48 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 49 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 50 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 51 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 52 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 53 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 54 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 55 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 56 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 57 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 58 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 59 | }, { 60 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 61 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 0x08, 0x08, 62 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 63 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 64 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 65 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 66 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 67 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 68 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 69 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 70 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 71 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 72 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 73 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 74 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 75 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 76 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 77 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0x00, 0x00, 78 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 79 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 80 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 81 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 82 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 83 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 84 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 85 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 86 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 87 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 88 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 89 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 90 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 91 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 92 | },{ 93 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 94 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 95 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 96 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 97 | 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 98 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 99 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 100 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 101 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 102 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 103 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 104 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 105 | 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 106 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 107 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 108 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 109 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 110 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 111 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 112 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 113 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 114 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 115 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 116 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 117 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 118 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 119 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 120 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 121 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 122 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 123 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 124 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 125 | },{ 126 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 127 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 128 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 129 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 130 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 131 | 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0xf8, 0x08, 132 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 133 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 134 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 135 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 136 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 137 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 138 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 139 | 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x7f, 0x40, 140 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 141 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 142 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 143 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 144 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 145 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 146 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 147 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 148 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 149 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 150 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 151 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 152 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 153 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 154 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 155 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 156 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 157 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 158 | },{ 159 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 160 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 161 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 162 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 163 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 164 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0xf8, 165 | 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 166 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 167 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 168 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 169 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 170 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 171 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 172 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x7f, 173 | 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 174 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 175 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 176 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 177 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 178 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 179 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 180 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 181 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 182 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 183 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 184 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 185 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 186 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 187 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 188 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 189 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 190 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 191 | },{ 192 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 193 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 194 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 195 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 196 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 197 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 198 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 199 | 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 200 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 201 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 202 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 203 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 204 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 205 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 206 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 207 | 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 208 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 209 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 210 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 211 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 212 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 213 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 214 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 215 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 216 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 217 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 218 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 219 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 220 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 221 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 222 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 223 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 224 | },{ 225 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 226 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 227 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 228 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 229 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 230 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 231 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 232 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 233 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 234 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 235 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 236 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 237 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 238 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 239 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 240 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 241 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 242 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0x00, 0x00, 243 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 244 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 245 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 246 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 247 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 248 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 249 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 250 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 251 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 252 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 253 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 254 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 255 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 256 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 257 | },{ 258 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 259 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 260 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 261 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 262 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 263 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 264 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 265 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 266 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 267 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 268 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 269 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 270 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 271 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 272 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 273 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 274 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 275 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 276 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 277 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 278 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 279 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 280 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 281 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 282 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 283 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 284 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 285 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 286 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 287 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 288 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 289 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 290 | },{ 291 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 292 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 293 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 294 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 295 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 296 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 297 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 298 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 299 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 300 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x8f, 0x8f, 0x8f, 0xff, 0xff, 0x00, 0x00, 301 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 302 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 303 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 304 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 305 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 306 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 307 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 308 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x8f, 0x8f, 0x8f, 0xff, 0xff, 0x00, 0x00, 309 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 310 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 311 | 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 312 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 313 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 314 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 315 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 316 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 317 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 318 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 319 | 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 320 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 321 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 322 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 323 | },{ 324 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 325 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 326 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 327 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 328 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 329 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 330 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 331 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 332 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 333 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x83, 0x83, 0x83, 0xff, 0xff, 0x00, 0x00, 334 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 335 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 336 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 337 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 338 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 339 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 340 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 341 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 342 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 343 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 344 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 345 | 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0x02, 346 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 347 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 348 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 349 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 350 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 351 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 352 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 353 | 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x1f, 0x10, 354 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 355 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 356 | },{ 357 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 358 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 359 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 360 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 361 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 362 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 363 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 364 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 365 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 366 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0xff, 0xff, 0x00, 0x00, 367 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 368 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 369 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 370 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 371 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 372 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 373 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 374 | 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 375 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 376 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 377 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 378 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 379 | 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 380 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 381 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 382 | 0x13, 0x13, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 383 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 384 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 385 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 386 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x1f, 387 | 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 388 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 389 | },{ 390 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 391 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0x08, 0x08, 0x08, 0x08, 392 | 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 393 | 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 394 | 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 395 | 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 396 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0xf8, 0x08, 0x08, 0x08, 397 | 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 398 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 399 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 400 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 401 | 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 402 | 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 403 | 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 404 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 405 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 406 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 407 | 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0x00, 0x00, 408 | 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 409 | 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 410 | 0x00, 0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 411 | 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0x02, 412 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 413 | 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 414 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 415 | 0x13, 0x13, 0x10, 0x10, 0x10, 0x10, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x10, 0x10, 416 | 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 417 | 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 418 | 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 419 | 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x10, 420 | 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 421 | 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 422 | } 423 | 424 | }; 425 | 426 | WRITE_RAW(layer_status[get_highest_layer(layer_state)]); 427 | } 428 | --------------------------------------------------------------------------------