mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 13:22:31 +01:00 
			
		
		
		
	Add Model-B keyboard (#24681)
* Add Model-B keyboard * PR changes for Model-B * Update to OLED on Model-B * added license to pass lint check * update virtual eeprom for Model-B * eeconfig_read_kb() update on Model-B * cleanup changes for Model B * implementing Model B suggestions
This commit is contained in:
		
							parent
							
								
									163b894b97
								
							
						
					
					
						commit
						5650894c20
					
				
							
								
								
									
										32
									
								
								keyboards/trojan_pinata/model_b/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								keyboards/trojan_pinata/model_b/readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | |||||||
|  | # Model-B | ||||||
|  | 
 | ||||||
|  | A 75% keyboard based on the RP2040. | ||||||
|  | 
 | ||||||
|  | * Keyboard Maintainer: [Brian Hill](https://github.com/TrojanPinata) | ||||||
|  | * Hardware Supported: [GitHub](https://github.com/TrojanPinata/Model-B) | ||||||
|  | 
 | ||||||
|  | ## Revisions | ||||||
|  | 
 | ||||||
|  | At the current moment there is only one variant of the Model-B, the rev-0 (aka the prototype board). Any others are clones and may not have the exact firmware requirements. | ||||||
|  | 
 | ||||||
|  | ## Building and Flashing | ||||||
|  | 
 | ||||||
|  | Make example for this keyboard (after setting up your build environment): | ||||||
|  | 
 | ||||||
|  |     make trojan_pinata/model-b/rev0:default | ||||||
|  |      | ||||||
|  | Flashing example for this keyboard: | ||||||
|  | 
 | ||||||
|  |     make trojan_pinata/model-b/rev0:default:flash | ||||||
|  | 
 | ||||||
|  | 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). | ||||||
|  | 
 | ||||||
|  | ## Bootloader | ||||||
|  | 
 | ||||||
|  | Enter the bootloader in 3 ways: | ||||||
|  | 
 | ||||||
|  | * **Bootmagic reset**: Hold down the top left key and plug in the keyboard. This will also clear the emulated EEPROM, so it is a good first step if the keyboard is misbehaving. | ||||||
|  | * **Physical reset button**: Hold down the `BOOTSEL` button on the Pi Pico, then either plug the board in or press the `RESET` button. | ||||||
|  | * **Keycode in layout**: Press the key mapped to `QK_BOOT`. In the pre-supplied keymaps it is on the second layer, replacing the Esc key. | ||||||
|  | 
 | ||||||
|  | After entering the bootloader through one of the three methods above, the keyboard will appear as a USB mass storage device named `RPI-RP2`. If the CLI is unable to find this device, the compiled `.uf2` file can be manually copied to it. The keyboard will reboot on completion with the new firmware loaded. | ||||||
							
								
								
									
										14
									
								
								keyboards/trojan_pinata/model_b/rev0/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								keyboards/trojan_pinata/model_b/rev0/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | // Copyright 2022 Stefan Kerkmann
 | ||||||
|  | // SPDX-License-Identifier: GPL-2.0-or-later
 | ||||||
|  | 
 | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET | ||||||
|  | #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U | ||||||
|  | 
 | ||||||
|  | // settings for the oled keyboard demo with Adafruit 0.91" OLED display on the Stemma QT port
 | ||||||
|  | #define I2C_DRIVER I2CD0 | ||||||
|  | #define I2C1_SDA_PIN GP0 | ||||||
|  | #define I2C1_SCL_PIN GP1 | ||||||
|  | 
 | ||||||
|  | #define OLED_TIMEOUT 3000000 // 5 minutes before oled turns off
 | ||||||
							
								
								
									
										122
									
								
								keyboards/trojan_pinata/model_b/rev0/keyboard.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								keyboards/trojan_pinata/model_b/rev0/keyboard.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,122 @@ | |||||||
|  | { | ||||||
|  |     "manufacturer": "Trojan_Pinata", | ||||||
|  |     "keyboard_name": "Model-B", | ||||||
|  |     "maintainer": "Trojan_Pinata", | ||||||
|  |     "bootloader": "rp2040", | ||||||
|  |     "diode_direction": "COL2ROW", | ||||||
|  |     "encoder": { | ||||||
|  |         "rotary": [ | ||||||
|  |             {"pin_a": "GP27", "pin_b": "GP26"} | ||||||
|  |         ] | ||||||
|  |     }, | ||||||
|  |     "features": { | ||||||
|  |         "bootmagic": true, | ||||||
|  |         "command": false, | ||||||
|  |         "console": false, | ||||||
|  |         "extrakey": true, | ||||||
|  |         "mousekey": true, | ||||||
|  |         "nkro": true, | ||||||
|  |         "oled": true, | ||||||
|  |         "encoder": true | ||||||
|  |     }, | ||||||
|  |     "matrix_pins": { | ||||||
|  |         "cols": ["GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21", "GP22"], | ||||||
|  |         "rows": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7"] | ||||||
|  |     }, | ||||||
|  |     "processor": "RP2040", | ||||||
|  |     "url": "https://github.com/TrojanPinata/Model-B", | ||||||
|  |     "usb": { | ||||||
|  |         "device_version": "1.0.0", | ||||||
|  |         "pid": "0xA500", | ||||||
|  |         "vid": "0xE739" | ||||||
|  |     }, | ||||||
|  |     "layouts": { | ||||||
|  |         "LAYOUT": { | ||||||
|  |             "layout": [ | ||||||
|  |                 {"matrix": [0, 0], "x": 0, "y": 0}, | ||||||
|  |                 {"matrix": [0, 2], "x": 1.25, "y": 0}, | ||||||
|  |                 {"matrix": [0, 3], "x": 2.25, "y": 0}, | ||||||
|  |                 {"matrix": [0, 4], "x": 3.25, "y": 0}, | ||||||
|  |                 {"matrix": [0, 5], "x": 4.25, "y": 0}, | ||||||
|  |                 {"matrix": [0, 6], "x": 5.5, "y": 0}, | ||||||
|  |                 {"matrix": [0, 7], "x": 6.5, "y": 0}, | ||||||
|  |                 {"matrix": [0, 8], "x": 7.5, "y": 0}, | ||||||
|  |                 {"matrix": [0, 9], "x": 8.5, "y": 0}, | ||||||
|  |                 {"matrix": [0, 10], "x": 9.75, "y": 0}, | ||||||
|  |                 {"matrix": [0, 11], "x": 10.75, "y": 0}, | ||||||
|  |                 {"matrix": [0, 12], "x": 11.75, "y": 0}, | ||||||
|  |                 {"matrix": [0, 13], "x": 12.75, "y": 0}, | ||||||
|  |                 {"matrix": [0, 14], "x": 15.75, "y": 0}, | ||||||
|  |                 {"matrix": [1, 0], "x": 0, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 1], "x": 1, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 2], "x": 2, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 3], "x": 3, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 4], "x": 4, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 5], "x": 5, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 6], "x": 6, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 7], "x": 7, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 8], "x": 8, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 9], "x": 9, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 10], "x": 10, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 11], "x": 11, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 12], "x": 12, "y": 1.5}, | ||||||
|  |                 {"matrix": [1, 13], "x": 13, "y": 1.5, "w": 2}, | ||||||
|  |                 {"matrix": [1, 14], "x": 15.25, "y": 1.5}, | ||||||
|  |                 {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.5}, | ||||||
|  |                 {"matrix": [2, 1], "x": 1.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 2], "x": 2.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 3], "x": 3.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 4], "x": 4.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 5], "x": 5.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 6], "x": 6.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 7], "x": 7.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 8], "x": 8.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 9], "x": 9.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 10], "x": 10.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 11], "x": 11.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 12], "x": 12.5, "y": 2.5}, | ||||||
|  |                 {"matrix": [2, 13], "x": 13.5, "y": 2.5, "w": 1.5}, | ||||||
|  |                 {"matrix": [2, 14], "x": 15.25, "y": 2.5}, | ||||||
|  |                 {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75}, | ||||||
|  |                 {"matrix": [3, 1], "x": 1.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 2], "x": 2.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 3], "x": 3.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 4], "x": 4.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 5], "x": 5.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 6], "x": 6.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 7], "x": 7.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 8], "x": 8.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 9], "x": 9.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 10], "x": 10.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 11], "x": 11.75, "y": 3.5}, | ||||||
|  |                 {"matrix": [3, 12], "x": 14, "y": 0}, | ||||||
|  |                 {"matrix": [3, 13], "x": 12.75, "y": 3.5, "w": 2.25}, | ||||||
|  |                 {"matrix": [3, 14], "x": 16.25, "y": 1.5}, | ||||||
|  |                 {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 2.25}, | ||||||
|  |                 {"matrix": [4, 1], "x": 2.25, "y": 4.5}, | ||||||
|  |                 {"matrix": [4, 2], "x": 3.25, "y": 4.5}, | ||||||
|  |                 {"matrix": [4, 3], "x": 4.25, "y": 4.5}, | ||||||
|  |                 {"matrix": [4, 4], "x": 5.25, "y": 4.5}, | ||||||
|  |                 {"matrix": [4, 5], "x": 6.25, "y": 4.5}, | ||||||
|  |                 {"matrix": [4, 6], "x": 7.25, "y": 4.5}, | ||||||
|  |                 {"matrix": [4, 7], "x": 8.25, "y": 4.5}, | ||||||
|  |                 {"matrix": [4, 8], "x": 9.25, "y": 4.5}, | ||||||
|  |                 {"matrix": [4, 9], "x": 10.25, "y": 4.5}, | ||||||
|  |                 {"matrix": [4, 10], "x": 11.25, "y": 4.5}, | ||||||
|  |                 {"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.75}, | ||||||
|  |                 {"matrix": [4, 13], "x": 14.3, "y": 4.6}, | ||||||
|  |                 {"matrix": [4, 14], "x": 16.25, "y": 2.5}, | ||||||
|  |                 {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25}, | ||||||
|  |                 {"matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25}, | ||||||
|  |                 {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25}, | ||||||
|  |                 {"matrix": [5, 6], "x": 3.75, "y": 5.5, "w": 6.25}, | ||||||
|  |                 {"matrix": [5, 9], "x": 10, "y": 5.5}, | ||||||
|  |                 {"matrix": [5, 10], "x": 11, "y": 5.5}, | ||||||
|  |                 {"matrix": [5, 11], "x": 12, "y": 5.5}, | ||||||
|  |                 {"matrix": [5, 12], "x": 13.3, "y": 5.6}, | ||||||
|  |                 {"matrix": [5, 13], "x": 14.3, "y": 5.6}, | ||||||
|  |                 {"matrix": [5, 14], "x": 15.3, "y": 5.6} | ||||||
|  |             ] | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,47 @@ | |||||||
|  | /* Copyright 2024 Brian H (@Trojan_Pinata)
 | ||||||
|  |  * | ||||||
|  |  * This program is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 2 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include QMK_KEYBOARD_H | ||||||
|  | 
 | ||||||
|  | // keymaps
 | ||||||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  |     [0] = LAYOUT( | ||||||
|  |         KC_ESC,           KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MUTE, | ||||||
|  | 
 | ||||||
|  |         KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_DEL, | ||||||
|  |         KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_INS, | ||||||
|  |         KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, QK_KB,   KC_ENT,  KC_HOME, | ||||||
|  |         KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH,          KC_RSFT, KC_UP,   KC_END, | ||||||
|  |         KC_LCTL, KC_LWIN, KC_LALT,                            KC_SPC,                    KC_RALT, MO(1),   KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT | ||||||
|  |     ), | ||||||
|  |     [1] = LAYOUT( | ||||||
|  |         QK_BOOT,          KC_F13,   KC_F14, KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_F21,  KC_F22,  KC_F23,  KC_F24,  KC_MUTE, | ||||||
|  | 
 | ||||||
|  |         EE_CLR,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, | ||||||
|  |         DB_TOGG, _______, _______, KC_MYCM, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, | ||||||
|  |         _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, | ||||||
|  |         _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______,          _______, _______, KC_MNXT, | ||||||
|  |         _______, _______, _______,                            _______,                   _______, _______, _______, KC_EXEC, _______, _______ | ||||||
|  |     ) | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // encoder handling
 | ||||||
|  | #if defined(ENCODER_MAP_ENABLE) | ||||||
|  | const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { | ||||||
|  |     [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, | ||||||
|  |     [1] = { ENCODER_CCW_CW(_______, _______) }, | ||||||
|  | }; | ||||||
|  | #endif | ||||||
							
								
								
									
										24
									
								
								keyboards/trojan_pinata/model_b/rev0/mcuconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								keyboards/trojan_pinata/model_b/rev0/mcuconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | /* Copyright 2020 QMK
 | ||||||
|  |  * | ||||||
|  |  * This program is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 2 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  |  */ | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include_next <mcuconf.h> | ||||||
|  | 
 | ||||||
|  | #undef RP_I2C_USE_I2C0 | ||||||
|  | #define RP_I2C_USE_I2C0 TRUE | ||||||
|  | 
 | ||||||
|  | #undef RP_I2C_USE_I2C1 | ||||||
|  | #define RP_I2C_USE_I2C1 TRUE | ||||||
							
								
								
									
										397
									
								
								keyboards/trojan_pinata/model_b/rev0/rev0.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										397
									
								
								keyboards/trojan_pinata/model_b/rev0/rev0.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,397 @@ | |||||||
|  | /* Copyright 2024 Brian H (@Trojan_Pinata)
 | ||||||
|  |  * | ||||||
|  |  * This program is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 2 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include "rev0.h" | ||||||
|  | 
 | ||||||
|  | // NUM_MODES stays last to indicate the number of different screens possible
 | ||||||
|  | enum oled_modes { | ||||||
|  |     MTNS, INFO, LOGO, MEW, CEL, RAY, NUM_MODES | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // define the key that switches the display
 | ||||||
|  | enum keeb_codes { | ||||||
|  |     OLED_MOD = QK_KB, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // virtual eeprom for storing last layer
 | ||||||
|  | typedef union { | ||||||
|  |     uint32_t raw; | ||||||
|  |     struct { | ||||||
|  |         uint8_t display_mode_saved : 3; | ||||||
|  |     }; | ||||||
|  | } keyboard_config_t; | ||||||
|  | keyboard_config_t keyboard_config; | ||||||
|  | 
 | ||||||
|  | void keyboard_pre_init_kb(void) { | ||||||
|  |     keyboard_config.raw = eeconfig_read_kb(); | ||||||
|  |     keyboard_pre_init_user(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void eeconfig_init_kb(void) { | ||||||
|  |     keyboard_config.raw = 0; | ||||||
|  |     keyboard_config.display_mode_saved = INFO; | ||||||
|  |     eeconfig_update_kb(keyboard_config.raw); | ||||||
|  |     eeconfig_init_user(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // oled stuff below
 | ||||||
|  | #ifdef OLED_ENABLE | ||||||
|  | 
 | ||||||
|  | // hold only let me just drop all of my embedded images rq
 | ||||||
|  | static const char PROGMEM bootscreen[] = { | ||||||
|  |     // 'modelb-oled', 128x32px
 | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, | ||||||
|  |     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, | ||||||
|  |     0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, | ||||||
|  |     0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x7f, 0xfe, | ||||||
|  |     0xf0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xf0, 0xfe, 0x3f, 0x07, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, | ||||||
|  |     0xf0, 0xfc, 0xfe, 0x3f, 0x0f, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x1f, | ||||||
|  |     0x3f, 0xfe, 0xfc, 0xf0, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, | ||||||
|  |     0x0f, 0x1f, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, | ||||||
|  |     0xc1, 0xc1, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe1, | ||||||
|  |     0xe1, 0xe1, 0xe3, 0xff, 0xff, 0xbf, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x03, | ||||||
|  |     0x1f, 0x7f, 0xfc, 0xf0, 0xfe, 0x7f, 0x0f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, | ||||||
|  |     0x07, 0x1f, 0x3f, 0x7e, 0xf8, 0xf0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, 0x7c, | ||||||
|  |     0x7f, 0x3f, 0x1f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, | ||||||
|  |     0xf8, 0x7c, 0x3f, 0x1f, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, | ||||||
|  |     0xc1, 0xc1, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, | ||||||
|  |     0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc1, | ||||||
|  |     0xc1, 0xc1, 0xc1, 0xe1, 0xff, 0xff, 0x7f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, | ||||||
|  |     0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, | ||||||
|  |     0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static const char PROGMEM mnts_l0[] = { | ||||||
|  |     // 'base', 128x32px
 | ||||||
|  |     0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0xa0, 0xb0, 0xf0, 0xd0, 0xd0, 0xf8, 0xfc, 0xdc, 0xfe, | ||||||
|  |     0xff, 0xff, 0xff, 0xdf, 0xde, 0xde, 0x9c, 0xfc, 0xfc, 0xf8, 0xf8, 0xf0, 0xf0, 0x90, 0xa0, 0x40, | ||||||
|  |     0x40, 0x40, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, | ||||||
|  |     0x40, 0x40, 0x20, 0x20, 0x20, 0x90, 0xd0, 0xd0, 0xc8, 0xe8, 0xec, 0xe4, 0xfc, 0xfa, 0xfa, 0xfa, | ||||||
|  |     0xf4, 0xe4, 0xe4, 0xc8, 0xc8, 0xd8, 0x90, 0x90, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x80, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x00, 0x40, 0x60, | ||||||
|  |     0x30, 0x10, 0xf8, 0x0c, 0x06, 0x02, 0x00, 0x10, 0x08, 0x18, 0x3f, 0xe8, 0x08, 0x24, 0x3c, 0x0c, | ||||||
|  |     0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x04, 0xfe, 0x00, 0x00, | ||||||
|  |     0xb9, 0x3d, 0x3d, 0x7c, 0x3e, 0x3f, 0x3f, 0x1d, 0x0d, 0x0f, 0x0b, 0x1f, 0x1f, 0x1f, 0x1f, 0x0b, | ||||||
|  |     0x0f, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x05, 0x07, 0x0f, 0x0b, 0x0b, 0x13, 0x13, 0x37, 0x7f, 0xf7, | ||||||
|  |     0xf7, 0xf8, 0xf0, 0xf8, 0xf8, 0xf1, 0xe1, 0xf3, 0x12, 0xd2, 0xd1, 0xd1, 0x11, 0x00, 0xc0, 0xc0, | ||||||
|  |     0xe0, 0xf0, 0x78, 0x78, 0xf9, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0x1f, | ||||||
|  |     0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x0f, 0x1f, 0x1e, 0x1e, 0x1f, 0x1c, 0x39, 0x39, 0x3a, 0x3c, | ||||||
|  |     0x79, 0x79, 0xf2, 0xe2, 0xe4, 0xe5, 0x85, 0x49, 0x48, 0x08, 0xd0, 0xd0, 0x90, 0x20, 0x20, 0x40, | ||||||
|  |     0x40, 0x40, 0xc1, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, | ||||||
|  |     0x0b, 0x0f, 0x0f, 0x1f, 0x2f, 0x7c, 0x7c, 0xf8, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x0f, 0x0f, 0x0f, | ||||||
|  |     0x07, 0x03, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1f, 0x1f, 0x3f, 0x7e, 0x7f, 0xff, 0x78, 0xf8, 0xe0, | ||||||
|  |     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x0f, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x07, 0x03, 0x00, 0x03, 0x03, 0x03, 0x03, 0x06, | ||||||
|  |     0x0e, 0x0e, 0x0c, 0x0c, 0x00, 0x03, 0x47, 0x46, 0xc6, 0x8c, 0x8c, 0x0c, 0x18, 0x30, 0x63, 0x4c, | ||||||
|  |     0x50, 0xcc, 0x83, 0x00, 0x00, 0x12, 0x1f, 0x10, 0x00, 0x10, 0x00, 0x0e, 0x15, 0x13, 0x0e, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x60, 0x61, 0x61, 0x60, 0x60, 0x60, 0x60, 0x60, | ||||||
|  |     0x70, 0x70, 0x30, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x07, 0x0f, 0x1f, | ||||||
|  |     0x1f, 0x1f, 0x1e, 0x1e, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x10, 0x30, 0x30, | ||||||
|  |     0x30, 0x30, 0x38, 0x38, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0x60, | ||||||
|  |     0x60, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0x80, 0x80, 0x40, 0x60, | ||||||
|  |     0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x60, 0x20, 0x20, 0x60, 0x20, 0x60, 0x60, 0x60, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x01, 0x01, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x08, 0x08, 0x10, 0x30, 0x20, 0x20, 0x60 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static const char PROGMEM mnts_l1[] = { | ||||||
|  |     // 'alt', 128x32px
 | ||||||
|  |     0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0xa0, 0xb0, 0xf0, 0xd0, 0xd0, 0xf8, 0xfc, 0xdc, 0xfe, | ||||||
|  |     0xff, 0xff, 0xff, 0xdf, 0xde, 0xde, 0x9c, 0xfc, 0xfc, 0xf8, 0xf8, 0xf0, 0xf0, 0x90, 0xa0, 0x40, | ||||||
|  |     0x40, 0x40, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, | ||||||
|  |     0x40, 0x40, 0x20, 0x20, 0x20, 0x90, 0xd0, 0xd0, 0xc8, 0xe8, 0xec, 0xe4, 0xfc, 0xfa, 0xfa, 0xfa, | ||||||
|  |     0xf4, 0xe4, 0xe4, 0xc8, 0xc8, 0xd8, 0x90, 0x90, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x80, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x00, 0x40, 0x60, | ||||||
|  |     0x30, 0x10, 0xf8, 0x0c, 0x06, 0x02, 0x00, 0x10, 0x08, 0x18, 0x3f, 0xe8, 0x08, 0x24, 0x3c, 0x0c, | ||||||
|  |     0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x04, 0x82, 0x42, 0x22, 0x1c, 0x00, | ||||||
|  |     0xb9, 0x3d, 0x3d, 0x7c, 0x3e, 0x3f, 0x3f, 0x1d, 0x0d, 0x0f, 0x0b, 0x1f, 0x1f, 0x1f, 0x1f, 0x0b, | ||||||
|  |     0x0f, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0x05, 0x07, 0x0f, 0x0b, 0x0b, 0x13, 0x13, 0x37, 0x7f, 0xf7, | ||||||
|  |     0xf7, 0xf8, 0xf0, 0xf8, 0xf8, 0xf1, 0xe1, 0xf3, 0x12, 0xd2, 0xd1, 0xd1, 0x11, 0x00, 0xc0, 0xc0, | ||||||
|  |     0xe0, 0xf0, 0x78, 0x78, 0xf9, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0x1f, | ||||||
|  |     0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x0f, 0x1f, 0x1e, 0x1e, 0x1f, 0x1c, 0x39, 0x39, 0x3a, 0x3c, | ||||||
|  |     0x79, 0x79, 0xf2, 0xe2, 0xe4, 0xe5, 0x85, 0x49, 0x48, 0x08, 0xd0, 0xd0, 0x90, 0x20, 0x20, 0x40, | ||||||
|  |     0x40, 0x40, 0xc1, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x00, | ||||||
|  |     0x0b, 0x0f, 0x0f, 0x1f, 0x2f, 0x7c, 0x7c, 0xf8, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x0f, 0x0f, 0x0f, | ||||||
|  |     0x07, 0x03, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1f, 0x1f, 0x3f, 0x7e, 0x7f, 0xff, 0x78, 0xf8, 0xe0, | ||||||
|  |     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x0f, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x07, 0x03, 0x00, 0x03, 0x03, 0x03, 0x03, 0x06, | ||||||
|  |     0x0e, 0x0e, 0x0c, 0x0c, 0x00, 0x03, 0x47, 0x46, 0xc6, 0x8c, 0x8c, 0x0c, 0x18, 0x30, 0x63, 0x4c, | ||||||
|  |     0x50, 0xcc, 0x83, 0x00, 0x00, 0x12, 0x1f, 0x10, 0x00, 0x10, 0x00, 0x0e, 0x15, 0x13, 0x0e, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x60, 0x61, 0x61, 0x60, 0x60, 0x60, 0x60, 0x60, | ||||||
|  |     0x70, 0x70, 0x30, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x07, 0x0f, 0x1f, | ||||||
|  |     0x1f, 0x1f, 0x1e, 0x1e, 0x1e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x10, 0x30, 0x30, | ||||||
|  |     0x30, 0x30, 0x38, 0x38, 0x7c, 0x3c, 0x3c, 0x3c, 0x7c, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0x60, | ||||||
|  |     0x60, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf0, 0xe0, 0x80, 0x80, 0x40, 0x60, | ||||||
|  |     0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x60, 0x20, 0x20, 0x60, 0x20, 0x60, 0x60, 0x60, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x01, 0x01, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x08, 0x08, 0x10, 0x30, 0x20, 0x20, 0x60 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static const char PROGMEM mew_disp[] = { | ||||||
|  |     // 'mewl2', 128x32px
 | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, | ||||||
|  |     0x60, 0x50, 0x10, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x08, | ||||||
|  |     0x04, 0xc4, 0xf2, 0xfa, 0x7e, 0x3e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0xa0, 0x20, 0x00, 0x10, | ||||||
|  |     0x10, 0x10, 0x10, 0x0c, 0x02, 0x22, 0x42, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xf2, 0xf2, 0xc2, 0x01, 0x00, 0xc0, 0xa0, 0xe0, 0x28, | ||||||
|  |     0x50, 0x00, 0x00, 0x00, 0x01, 0x1a, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x70, 0xe0, | ||||||
|  |     0xff, 0xff, 0xc7, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf8, 0x78, 0x78, 0x3c, 0x3c, 0x1c, 0x1c, 0x3c, 0x38, | ||||||
|  |     0x78, 0xf0, 0xe0, 0xc0, 0x00, 0x01, 0x06, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x41, 0xc0, 0x80, | ||||||
|  |     0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x61, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x8c, 0xd9, 0x7b, 0x53, 0x10, | ||||||
|  |     0x08, 0x18, 0x38, 0x3c, 0x36, 0x2f, 0x6b, 0x75, 0x92, 0xee, 0x18, 0xe4, 0xfc, 0x78, 0x00, 0xc1, | ||||||
|  |     0xb7, 0xcf, 0xf3, 0xfc, 0xfd, 0xef, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xfe, 0xf9, | ||||||
|  |     0xf0, 0xf9, 0xff, 0x7f, 0x1f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x90, | ||||||
|  |     0x08, 0x09, 0x9f, 0xff, 0xff, 0xf8, 0x00, 0x38, 0xc6, 0x81, 0x8e, 0x70, 0x50, 0x50, 0x53, 0xe2, | ||||||
|  |     0x83, 0x01, 0x62, 0xab, 0xa8, 0xa8, 0x50, 0x54, 0x50, 0x89, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0e, 0x0d, 0x0c, 0x04, 0x06, 0x1e, 0x6e, | ||||||
|  |     0x80, 0x00, 0x00, 0x38, 0x08, 0x84, 0xc4, 0xfe, 0x07, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0x3e, 0x7f, | ||||||
|  |     0x7f, 0x3f, 0x0f, 0x01, 0x83, 0x7c, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, | ||||||
|  |     0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xc8, 0x84, 0x86, 0xcf, | ||||||
|  |     0xb7, 0x81, 0x80, 0x41, 0x43, 0x8c, 0x92, 0xe1, 0x61, 0x53, 0x2e, 0x11, 0x11, 0x19, 0x2c, 0xd0, | ||||||
|  |     0x20, 0x41, 0x40, 0x40, 0x24, 0x30, 0x20, 0x20, 0xf0, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static const char PROGMEM cel_disp[] = { | ||||||
|  |     // 'celebi1', 128x32px
 | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, | ||||||
|  |     0x20, 0xc0, 0xe0, 0xe0, 0xf0, 0xdc, 0xee, 0xf0, 0xbe, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0xc0, 0x81, 0x80, 0x80, 0xc0, | ||||||
|  |     0xc0, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x80, 0xc0, 0xc0, 0xc0, | ||||||
|  |     0x60, 0xb0, 0xcc, 0xf0, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xc0, 0xf8, 0xfc, 0xfc, 0xfb, | ||||||
|  |     0xf4, 0xff, 0xff, 0x7f, 0x1f, 0xcf, 0x67, 0xe3, 0xc7, 0x0f, 0x9f, 0xff, 0x3e, 0xc0, 0xf0, 0x78, | ||||||
|  |     0x90, 0xe0, 0xf2, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x3f, | ||||||
|  |     0x3f, 0x3b, 0x3e, 0x79, 0xfe, 0xfe, 0xff, 0xfe, 0x7c, 0xfc, 0xf8, 0xd8, 0xf0, 0xf0, 0xb0, 0xa0, | ||||||
|  |     0xa0, 0xa0, 0xe0, 0xe0, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x0e, 0x31, 0x40, 0xf0, 0xf8, 0xfc, 0xfe, 0xf0, 0xff, 0xf0, 0xff, 0x7f, 0x3f, 0xbf, 0x9f, | ||||||
|  |     0x9f, 0x1f, 0x3f, 0xfe, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x87, 0x8f, 0x9f, | ||||||
|  |     0x9f, 0x9f, 0xc7, 0xcc, 0xd8, 0xd8, 0x98, 0x3c, 0xfc, 0xf7, 0xfb, 0x1c, 0x1d, 0x1e, 0x1e, 0x1f, | ||||||
|  |     0x0f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x87, 0xcf, 0x6d, 0xf8, 0x72, 0xf4, | ||||||
|  |     0xf4, 0x90, 0x20, 0x20, 0xa7, 0x6f, 0x6f, 0x6b, 0x0b, 0x06, 0x06, 0x05, 0x05, 0x01, 0x01, 0x01, | ||||||
|  |     0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, | ||||||
|  |     0xc0, 0xc0, 0xc0, 0xc0, 0x83, 0x8f, 0x9f, 0x3f, 0x7f, 0x5f, 0xff, 0x71, 0xe0, 0xe1, 0x60, 0x62, | ||||||
|  |     0x27, 0x30, 0x18, 0x9f, 0xcf, 0xc3, 0xc0, 0xc0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, | ||||||
|  |     0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x40, 0xe0, 0xe0, 0xc8, 0x9c, 0xf8, 0x60, 0x28, 0x3c, 0x7e, 0x7e, 0xfe, 0xff, 0xfc, 0xe1, | ||||||
|  |     0x07, 0x1f, 0x3f, 0x3e, 0x7d, 0x7b, 0x73, 0x72, 0xe2, 0xe0, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, | ||||||
|  |     0x01, 0x01, 0xc1, 0xc1, 0x03, 0x03, 0x03, 0x23, 0x01, 0x0d, 0x06, 0x07, 0x37, 0x33, 0x01, 0x01, | ||||||
|  |     0x07, 0x0e, 0x3c, 0x39, 0x79, 0x71, 0x71, 0x60, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | static const char PROGMEM rayq_disp[] = { | ||||||
|  |     // 'rayquaza1', 128x32px
 | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, | ||||||
|  |     0x10, 0x20, 0x20, 0x40, 0x40, 0x40, 0x70, 0x70, 0x71, 0x50, 0x60, 0x60, 0x60, 0x40, 0x80, 0x80, | ||||||
|  |     0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0x80, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x80, | ||||||
|  |     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0xc0, | ||||||
|  |     0xe0, 0x60, 0x70, 0x70, 0x7b, 0x7b, 0xfb, 0xfb, 0xf8, 0xb0, 0xb0, 0xd0, 0x60, 0x30, 0x10, 0x08, | ||||||
|  |     0x0c, 0x84, 0x86, 0x83, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x30, 0x1c, 0x02, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf0, 0x11, 0x12, 0x10, 0x10, 0x0e, 0x0e, 0x0c, 0x0c, 0x07, | ||||||
|  |     0x07, 0x0f, 0x0f, 0x03, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9f, 0xf3, 0x3e, 0xe7, 0xfc, 0x7f, 0x3f, 0x0f, | ||||||
|  |     0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3c, 0x2e, 0x57, 0x17, 0x1b, 0x1d, 0x36, | ||||||
|  |     0x36, 0x3d, 0x31, 0x31, 0x39, 0x3d, 0x3d, 0x1d, 0x1f, 0x1f, 0xcf, 0x3f, 0x07, 0x00, 0x00, 0x81, | ||||||
|  |     0x83, 0x83, 0x83, 0x03, 0x07, 0x07, 0x07, 0x0f, 0x0e, 0x1e, 0x1c, 0x3c, 0x78, 0xf8, 0xf0, 0xe0, | ||||||
|  |     0x00, 0x40, 0xc0, 0x00, 0x60, 0x38, 0x38, 0x20, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfe, 0xff, 0x7f, 0xfe, 0xec, 0xf8, 0x7c, 0x3c, | ||||||
|  |     0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcf, 0x80, 0x07, 0x01, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x08, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc1, | ||||||
|  |     0x07, 0x0f, 0x9f, 0xbe, 0x78, 0xf0, 0xc0, 0x00, 0x80, 0x00, 0x80, 0x30, 0x30, 0x30, 0x11, 0x19, | ||||||
|  |     0x18, 0x02, 0x07, 0x1f, 0x1f, 0x3c, 0x73, 0xcf, 0x0f, 0x0f, 0x0f, 0x17, 0x2f, 0x56, 0x20, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1d, 0x3b, 0xff, 0xff, 0xfc, 0xf8, 0xf0, | ||||||
|  |     0x60, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x68, 0x78, 0x10, 0x00, 0x18, 0x90, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x7f, 0xff, 0xfc, 0xf8, 0xe0, 0x80, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, | ||||||
|  |     0xf0, 0xf0, 0xf0, 0xf1, 0xe1, 0x41, 0x04, 0x1e, 0xcf, 0xc7, 0x44, 0x63, 0x59, 0x6d, 0x0a, 0x03, | ||||||
|  |     0x03, 0x0c, 0x0e, 0x05, 0x03, 0x02, 0x02, 0x1b, 0xec, 0x67, 0x5b, 0x1c, 0x8c, 0xcc, 0xdc, 0x30, | ||||||
|  |     0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xc0, 0x3f, 0xfc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // invert display based on layer
 | ||||||
|  | static void inv_display(void) { | ||||||
|  |     switch (get_highest_layer(layer_state)) { | ||||||
|  |         case 1: | ||||||
|  |             oled_invert(true); | ||||||
|  |             break; | ||||||
|  |         default: | ||||||
|  |             oled_invert(false); | ||||||
|  |             break; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // MTNS
 | ||||||
|  | static void mountains(void) { | ||||||
|  |     switch (get_highest_layer(layer_state)) { | ||||||
|  |         case 0: | ||||||
|  |             oled_write_raw_P(mnts_l0, sizeof(mnts_l0)); | ||||||
|  |             break; | ||||||
|  |         case 1: | ||||||
|  |             oled_write_raw_P(mnts_l1, sizeof(mnts_l1)); | ||||||
|  |             break; | ||||||
|  |         default: | ||||||
|  |             oled_write_raw_P(mnts_l0, sizeof(mnts_l0)); | ||||||
|  |             break; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // INFO
 | ||||||
|  | static void info(void) { | ||||||
|  |     // get layer the board is on
 | ||||||
|  |     oled_write_P(PSTR("LAYER "), false); | ||||||
|  |     oled_write_P(PSTR(" "), true); | ||||||
|  |     oled_write_char(get_highest_layer(layer_state) + 0x30, true); | ||||||
|  |     oled_write_P(PSTR(" "), true); | ||||||
|  | 
 | ||||||
|  |     // here we do a bit of trickery
 | ||||||
|  |     oled_write_P(PSTR(" ENC "), false); | ||||||
|  |     oled_write_P(PSTR(" VOL "), true); | ||||||
|  | 
 | ||||||
|  |     // lock key statuses
 | ||||||
|  |     led_t led_state = host_keyboard_led_state(); | ||||||
|  |     oled_set_cursor(9, 1); | ||||||
|  |     oled_write_P(PSTR(" CAP "), led_state.caps_lock); | ||||||
|  |     oled_set_cursor(14, 1); | ||||||
|  |     oled_write_P(PSTR(" SCR "), led_state.scroll_lock); | ||||||
|  | 
 | ||||||
|  |     // write model B here in invert text
 | ||||||
|  |     oled_set_cursor(0, 3); | ||||||
|  |     oled_write_P(PSTR(" MODEL-B "), true); | ||||||
|  | 
 | ||||||
|  |     // mod masks - if you don't know what these do, don't worry about them
 | ||||||
|  |     uint8_t mod_state = get_mods(); | ||||||
|  |     oled_advance_char(); | ||||||
|  |     oled_advance_char(); | ||||||
|  |     oled_write_P(PSTR("S"), mod_state & MOD_MASK_SHIFT); | ||||||
|  |     oled_advance_char(); | ||||||
|  |     oled_write_P(PSTR("C"), mod_state & MOD_MASK_CTRL); | ||||||
|  |     oled_advance_char(); | ||||||
|  |     oled_write_P(PSTR("A"), mod_state & MOD_MASK_ALT); | ||||||
|  |     oled_advance_char(); | ||||||
|  |     oled_write_P(PSTR("G"), mod_state & MOD_MASK_GUI); | ||||||
|  |     oled_advance_char(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // display logo - used on boot and exception state
 | ||||||
|  | static void logo(void) { | ||||||
|  |     oled_write_raw_P(bootscreen, sizeof(bootscreen)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // run this whenever the oled needs to update
 | ||||||
|  | bool oled_task_kb(void) { | ||||||
|  |     if (!oled_task_user()) { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     switch (keyboard_config.display_mode_saved) { | ||||||
|  |         case MTNS: | ||||||
|  |             mountains(); | ||||||
|  |             break; | ||||||
|  |         case INFO: | ||||||
|  |             info(); | ||||||
|  |             break; | ||||||
|  |         case LOGO: | ||||||
|  |             oled_write_raw_P(bootscreen, sizeof(bootscreen));   // write image to screen
 | ||||||
|  |             inv_display();                                      // invert image if necessary - remove if layer differs
 | ||||||
|  |             break; | ||||||
|  |         case MEW: | ||||||
|  |             oled_write_raw_P(mew_disp, sizeof(mew_disp)); | ||||||
|  |             inv_display(); | ||||||
|  |             break; | ||||||
|  |         case CEL: | ||||||
|  |             oled_write_raw_P(cel_disp, sizeof(cel_disp)); | ||||||
|  |             inv_display(); | ||||||
|  |             break; | ||||||
|  |         case RAY: | ||||||
|  |             oled_write_raw_P(rayq_disp, sizeof(rayq_disp)); | ||||||
|  |             inv_display(); | ||||||
|  |             break; | ||||||
|  |         default: | ||||||
|  |             logo(); | ||||||
|  |     } | ||||||
|  |     return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // render this on boot/reset
 | ||||||
|  | void oled_render_boot(bool bootloader) { | ||||||
|  |     oled_clear(); | ||||||
|  |     logo(); | ||||||
|  |     oled_render_dirty(true); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // change depending on if OLED_MOD is pressed
 | ||||||
|  | bool process_record_kb(uint16_t keycode, keyrecord_t *record) { | ||||||
|  |     if (!process_record_user(keycode, record)) { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |     if (keycode == OLED_MOD && record->event.pressed) { | ||||||
|  |         oled_clear(); | ||||||
|  |         keyboard_config.display_mode_saved++; | ||||||
|  |         if (keyboard_config.display_mode_saved == NUM_MODES) { | ||||||
|  |             keyboard_config.display_mode_saved = 0; | ||||||
|  |         } | ||||||
|  |         eeconfig_update_kb(keyboard_config.raw); | ||||||
|  |     } | ||||||
|  |     return true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										21
									
								
								keyboards/trojan_pinata/model_b/rev0/rev0.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								keyboards/trojan_pinata/model_b/rev0/rev0.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | /* Copyright 2024 Brian H (@Trojan_Pinata)
 | ||||||
|  |  * | ||||||
|  |  * This program is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 2 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include "quantum.h" | ||||||
|  | 
 | ||||||
|  | void oled_render_boot(bool bootloader); | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Brian Hill
						Brian Hill