forked from mfulz_github/qmk_firmware
		
	Add xd002 support (#8598)
* Add xd002 support * tidy some whitespace * align filename * Update keyboards/xd002/info.json Co-authored-by: Erovia <Erovia@users.noreply.github.com> Co-authored-by: Erovia <Erovia@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									750c7c2bdb
								
							
						
					
					
						commit
						f7324ec684
					
				
							
								
								
									
										60
									
								
								keyboards/xd002/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								keyboards/xd002/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | |||||||
|  | /* Copyright 2020 zvecr<git@zvecr.com>
 | ||||||
|  |  * | ||||||
|  |  * 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 "config_common.h" | ||||||
|  | 
 | ||||||
|  | /* USB Device descriptor parameter */ | ||||||
|  | #define VENDOR_ID  0x7844 // "XD"
 | ||||||
|  | #define PRODUCT_ID 0x0202 | ||||||
|  | #define DEVICE_VER 0x0001 | ||||||
|  | #define MANUFACTURER XIUDI | ||||||
|  | #define PRODUCT XD002 | ||||||
|  | 
 | ||||||
|  | /* matrix size */ | ||||||
|  | #define MATRIX_ROWS 1 | ||||||
|  | #define MATRIX_COLS 2 | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  |  * Keyboard Matrix Assignments | ||||||
|  |  * | ||||||
|  |  * On this board we have direct connection: no diodes. | ||||||
|  |  */ | ||||||
|  | #define DIRECT_PINS {{ B0, B1 }} | ||||||
|  | 
 | ||||||
|  | /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | ||||||
|  | #define DEBOUNCE 5 | ||||||
|  | 
 | ||||||
|  | #define RGBLED_NUM 2 | ||||||
|  | #define RGB_DI_PIN B2 | ||||||
|  | 
 | ||||||
|  | // Save as much space as we can...
 | ||||||
|  | #define LAYER_STATE_8BIT | ||||||
|  | #define NO_ACTION_LAYER | ||||||
|  | #define NO_ACTION_TAPPING | ||||||
|  | #define NO_ACTION_ONESHOT | ||||||
|  | #define NO_RESET | ||||||
|  | 
 | ||||||
|  | // usbconfig.h overrides
 | ||||||
|  | #define USB_CFG_IOPORTNAME B | ||||||
|  | #define USB_CFG_DMINUS_BIT 3 | ||||||
|  | #define USB_CFG_DPLUS_BIT 4 | ||||||
|  | #define USB_COUNT_SOF 0 | ||||||
|  | #define USB_INTR_CFG PCMSK | ||||||
|  | #define USB_INTR_CFG_SET (1<<USB_CFG_DPLUS_BIT) | ||||||
|  | #define USB_INTR_ENABLE_BIT PCIE | ||||||
|  | #define USB_INTR_PENDING_BIT PCIF | ||||||
|  | #define USB_INTR_VECTOR SIG_PIN_CHANGE | ||||||
							
								
								
									
										16
									
								
								keyboards/xd002/info.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								keyboards/xd002/info.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | |||||||
|  | { | ||||||
|  |   "keyboard_name": "xd002", | ||||||
|  |   "url": "https://kprepublic.com/products/xd002-xiudi-2-custom-mechanical-keyboard-2-keys-underglow-and-switch-rgb-pcb-programmed-hot-swappable-macro-key-aluminum-case", | ||||||
|  |   "maintainer": "zvecr", | ||||||
|  |   "width": 2, | ||||||
|  |   "height": 1, | ||||||
|  |   "layouts": { | ||||||
|  |     "LAYOUT": { | ||||||
|  |       "key_count": 2, | ||||||
|  |       "layout": [ | ||||||
|  |         {"x":0, "y":0}, | ||||||
|  |         {"x":1, "y":0} | ||||||
|  |       ] | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										7
									
								
								keyboards/xd002/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								keyboards/xd002/keymaps/default/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | #include QMK_KEYBOARD_H | ||||||
|  | 
 | ||||||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  |   [0] = LAYOUT( | ||||||
|  |     KC_A,  KC_B | ||||||
|  |   ) | ||||||
|  | }; | ||||||
							
								
								
									
										46
									
								
								keyboards/xd002/keymaps/rgb/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								keyboards/xd002/keymaps/rgb/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | |||||||
|  | #include QMK_KEYBOARD_H | ||||||
|  | 
 | ||||||
|  | // Defines the keycodes used by our macros in process_record_user
 | ||||||
|  | enum custom_keycodes { | ||||||
|  |   QMKURL = SAFE_RANGE, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  |   [0] = LAYOUT( | ||||||
|  |     RGB_HUI,  QMKURL | ||||||
|  |   ) | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||||||
|  |   if (record->event.pressed) { | ||||||
|  |     switch (keycode) { | ||||||
|  |       case QMKURL: | ||||||
|  |         // Using SEND_STRING here adds 400bytes ...
 | ||||||
|  |         // SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
 | ||||||
|  |         tap_code(KC_H); | ||||||
|  |         tap_code(KC_T); | ||||||
|  |         tap_code(KC_T); | ||||||
|  |         tap_code(KC_P); | ||||||
|  |         tap_code(KC_S); | ||||||
|  |         tap_code16(KC_COLON); | ||||||
|  |         tap_code(KC_SLASH); | ||||||
|  |         tap_code(KC_SLASH); | ||||||
|  |         tap_code(KC_Q); | ||||||
|  |         tap_code(KC_M); | ||||||
|  |         tap_code(KC_K); | ||||||
|  |         tap_code(KC_DOT); | ||||||
|  |         tap_code(KC_F); | ||||||
|  |         tap_code(KC_M); | ||||||
|  |         tap_code(KC_SLASH); | ||||||
|  |         tap_code(KC_ENTER); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   return true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void keyboard_post_init_user(void) { | ||||||
|  |   rgblight_enable_noeeprom(); // enables Rgb, without saving settings
 | ||||||
|  |   rgblight_sethsv_noeeprom(180, 255, 255); // sets the color to teal/cyan without saving
 | ||||||
|  |   rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); // sets mode to Fast breathing without saving
 | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								keyboards/xd002/keymaps/rgb/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/xd002/keymaps/rgb/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | RGBLIGHT_ENABLE = yes | ||||||
							
								
								
									
										31
									
								
								keyboards/xd002/keymaps/rgb_lite/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								keyboards/xd002/keymaps/rgb_lite/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | |||||||
|  | #include QMK_KEYBOARD_H | ||||||
|  | #include "rgblite.h" | ||||||
|  | 
 | ||||||
|  | // Defines the keycodes used by our macros in process_record_user
 | ||||||
|  | enum custom_keycodes { | ||||||
|  |   QMKURL = SAFE_RANGE, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  |   [0] = LAYOUT( | ||||||
|  |     RGB_HUI,  QMKURL | ||||||
|  |   ) | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||||||
|  |   if (record->event.pressed) { | ||||||
|  |     switch (keycode) { | ||||||
|  |       case RGB_HUI: | ||||||
|  |         rgblight_increase_hue(); | ||||||
|  |         break; | ||||||
|  |       case QMKURL: | ||||||
|  |         SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   return true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void keyboard_post_init_user(void) { | ||||||
|  |   rgblight_increase_hue(); | ||||||
|  | } | ||||||
							
								
								
									
										26
									
								
								keyboards/xd002/keymaps/rgb_lite/rgblite.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								keyboards/xd002/keymaps/rgb_lite/rgblite.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include "ws2812.h" | ||||||
|  | #include "rgblight_list.h" | ||||||
|  | 
 | ||||||
|  | static inline void rgblight_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { | ||||||
|  |     LED_TYPE leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; | ||||||
|  |     ws2812_setleds(leds, RGBLED_NUM); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static void rgblight_increase_hue(void) { | ||||||
|  |     static uint8_t state = 0; | ||||||
|  | 
 | ||||||
|  |     state = (state + 1) % 3; | ||||||
|  |     switch (state) { | ||||||
|  |         case 1: | ||||||
|  |             rgblight_setrgb_red(); | ||||||
|  |             break; | ||||||
|  |         case 2: | ||||||
|  |             rgblight_setrgb_blue(); | ||||||
|  |             break; | ||||||
|  |         default: | ||||||
|  |             rgblight_setrgb_green(); | ||||||
|  |             break; | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								keyboards/xd002/keymaps/rgb_lite/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/xd002/keymaps/rgb_lite/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | SRC += ws2812.c | ||||||
							
								
								
									
										3
									
								
								keyboards/xd002/keymaps/tap_dance/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								keyboards/xd002/keymaps/tap_dance/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #define TAPPING_TERM 500 | ||||||
							
								
								
									
										19
									
								
								keyboards/xd002/keymaps/tap_dance/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								keyboards/xd002/keymaps/tap_dance/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | #include QMK_KEYBOARD_H | ||||||
|  | 
 | ||||||
|  | enum layers { | ||||||
|  |   _BASE = 0, | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | enum { | ||||||
|  |   TD_BC = 0 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | qk_tap_dance_action_t tap_dance_actions[] = { | ||||||
|  |   [TD_BC]  = ACTION_TAP_DANCE_DOUBLE(KC_B, KC_C) | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  |   [_BASE] = LAYOUT( | ||||||
|  |     KC_A,  TD(TD_BC) | ||||||
|  |   ) | ||||||
|  | }; | ||||||
							
								
								
									
										1
									
								
								keyboards/xd002/keymaps/tap_dance/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/xd002/keymaps/tap_dance/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | TAP_DANCE_ENABLE = yes | ||||||
							
								
								
									
										7
									
								
								keyboards/xd002/keymaps/volume/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								keyboards/xd002/keymaps/volume/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | #include QMK_KEYBOARD_H | ||||||
|  | 
 | ||||||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  |   [0] = LAYOUT( | ||||||
|  |     KC_VOLU, KC_VOLD | ||||||
|  |   ) | ||||||
|  | }; | ||||||
							
								
								
									
										1
									
								
								keyboards/xd002/keymaps/volume/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/xd002/keymaps/volume/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | EXTRAKEY_ENABLE = yes | ||||||
							
								
								
									
										49
									
								
								keyboards/xd002/readme.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								keyboards/xd002/readme.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | |||||||
|  | # xd002 | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | 2% Custom mechanical keyboard. ATtiny85 powered, with 2*WS2812 LEDs, and the micronucleus bootloader. | ||||||
|  | 
 | ||||||
|  | **Note**: Due to limited firmware space, a _**lot**_ of features have to be disabled to get a functioning QMK based keyboard. | ||||||
|  | 
 | ||||||
|  | * Keyboard Maintainer: [zvecr](https://github.com/zvecr) | ||||||
|  | * Hardware Supported: xd002 | ||||||
|  | * Hardware Availability: [kprepublic](https://kprepublic.com/products/xd002-xiudi-2-custom-mechanical-keyboard-2-keys-underglow-and-switch-rgb-pcb-programmed-hot-swappable-macro-key-aluminum-case) | ||||||
|  | 
 | ||||||
|  | Make example for this keyboard (after setting up your build environment): | ||||||
|  | 
 | ||||||
|  |     make xd002:default | ||||||
|  | 
 | ||||||
|  | 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). | ||||||
|  | 
 | ||||||
|  | ## Flashing | ||||||
|  | ### Prerequisites | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | git clone https://github.com/micronucleus/micronucleus.git | ||||||
|  | cd micronucleus/commandline/ | ||||||
|  | sudo make install | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | On Linux, you’ll need proper privileges to access the MCU. You can either use sudo when flashing firmware, or place [these files](https://github.com/micronucleus/micronucleus/blob/master/commandline/49-micronucleus.rules) in /etc/udev/rules.d/. Once added run the following: | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | sudo udevadm control --reload-rules | ||||||
|  | sudo udevadm trigger | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### Instructions | ||||||
|  | 
 | ||||||
|  | **Reset Key**: Hold down key nearest to the USB socket while plugging in the keyboard. | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | make xd002:default:flash | ||||||
|  | 
 | ||||||
|  | # or directly with... | ||||||
|  | micronucleus --run <firmware.hex> | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### Recovery | ||||||
|  | 
 | ||||||
|  | * [Original Firmware](https://github.com/xiudi/Attiny85_vusb_pad_test) | ||||||
|  | * [Bootloader Repair](https://digistump.com/wiki/digispark/tutorials/proisp) | ||||||
							
								
								
									
										34
									
								
								keyboards/xd002/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								keyboards/xd002/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | |||||||
|  | # MCU name
 | ||||||
|  | MCU = attiny85 | ||||||
|  | 
 | ||||||
|  | # Bootloader selection
 | ||||||
|  | BOOTLOADER = micronucleus | ||||||
|  | OPT_DEFS += -DBOOTLOADER_SIZE=1862 | ||||||
|  | PROGRAM_CMD = micronucleus --run $(BUILD_DIR)/$(TARGET).hex | ||||||
|  | 
 | ||||||
|  | # Build Options
 | ||||||
|  | #   change yes to no to disable
 | ||||||
|  | #
 | ||||||
|  | BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration | ||||||
|  | MOUSEKEY_ENABLE = no        # Mouse keys | ||||||
|  | EXTRAKEY_ENABLE = no        # Audio control and System control | ||||||
|  | CONSOLE_ENABLE = no         # Console for debug | ||||||
|  | COMMAND_ENABLE = no         # Commands for debug and configuration | ||||||
|  | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | ||||||
|  | SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend | ||||||
|  | # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | ||||||
|  | NKRO_ENABLE = no            # USB Nkey Rollover | ||||||
|  | BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality on B7 by default | ||||||
|  | RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow | ||||||
|  | MIDI_ENABLE = no            # MIDI support | ||||||
|  | UNICODE_ENABLE = no         # Unicode | ||||||
|  | BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | ||||||
|  | AUDIO_ENABLE = no           # Audio output on port C6 | ||||||
|  | FAUXCLICKY_ENABLE = no      # Use buzzer to emulate clicky switches | ||||||
|  | HD44780_ENABLE = no         # Enable support for HD44780 based LCDs | ||||||
|  | 
 | ||||||
|  | # Save as much space as we can...
 | ||||||
|  | LTO_ENABLE = yes | ||||||
|  | GRAVE_ESC_ENABLE = no | ||||||
|  | MAGIC_ENABLE = no | ||||||
|  | SPACE_CADET_ENABLE = no | ||||||
							
								
								
									
										16
									
								
								keyboards/xd002/xd002.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								keyboards/xd002/xd002.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | |||||||
|  | /* Copyright 2020 zvecr<git@zvecr.com>
 | ||||||
|  |  * | ||||||
|  |  * 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 "xd002.h" | ||||||
							
								
								
									
										33
									
								
								keyboards/xd002/xd002.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								keyboards/xd002/xd002.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | |||||||
|  | /* Copyright 2020 zvecr<git@zvecr.com>
 | ||||||
|  |  * | ||||||
|  |  * 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" | ||||||
|  | 
 | ||||||
|  | /* This a shortcut to help you visually see your layout.
 | ||||||
|  |  * | ||||||
|  |  * The first section contains all of the arguments representing the physical | ||||||
|  |  * layout of the board and position of the keys. | ||||||
|  |  * | ||||||
|  |  * The second converts the arguments into a two-dimensional array which | ||||||
|  |  * represents the switch matrix. | ||||||
|  |  */ | ||||||
|  | #define LAYOUT( \ | ||||||
|  | 	K01, K02 \ | ||||||
|  | ) \ | ||||||
|  | { \ | ||||||
|  |   { K01, K02 }, \ | ||||||
|  | }	 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user