Merge branch 'master' of github.com:jackhumbert/qmk_firmware
This commit is contained in:
		
						commit
						6725262516
					
				
					 10 changed files with 367 additions and 3 deletions
				
			
		
							
								
								
									
										3
									
								
								keyboards/tada68/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								keyboards/tada68/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| ifndef MAKEFILE_INCLUDED | ||||
| 	include ../../Makefile | ||||
| endif | ||||
							
								
								
									
										97
									
								
								keyboards/tada68/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								keyboards/tada68/config.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,97 @@ | |||
| /*
 | ||||
| Copyright 2012 Jun Wako <wakojun@gmail.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/>.
 | ||||
| */ | ||||
| 
 | ||||
| #ifndef CONFIG_H | ||||
| #define CONFIG_H | ||||
| 
 | ||||
| #include "config_common.h" | ||||
| 
 | ||||
| /* USB Device descriptor parameter */ | ||||
| #define VENDOR_ID       0xFEED | ||||
| #define PRODUCT_ID      0x6060 | ||||
| #define DEVICE_VER      0x0003 | ||||
| #define MANUFACTURER    TADA | ||||
| #define PRODUCT         TADA68 | ||||
| #define DESCRIPTION     QMK keyboard firmware for TADA68 with WS2812 support | ||||
| 
 | ||||
| /* key matrix size */ | ||||
| #define MATRIX_ROWS 5 | ||||
| #define MATRIX_COLS 15 | ||||
| 
 | ||||
| // ROWS: Top to bottom, COLS: Left to right
 | ||||
| 
 | ||||
| #define MATRIX_ROW_PINS {D0,D1,F6,F7,D5} | ||||
| #define MATRIX_COL_PINS {F0,F1,E6,C7,C6,B7,D4,B1,B0,B5,B4,D7,D6,B3,F4} | ||||
| #define UNUSED_PINS | ||||
| 
 | ||||
| #define BACKLIGHT_PIN B6 | ||||
| 
 | ||||
| /* COL2ROW or ROW2COL */ | ||||
| #define DIODE_DIRECTION COL2ROW | ||||
| 
 | ||||
| /* define if matrix has ghost */ | ||||
| //#define MATRIX_HAS_GHOST
 | ||||
| 
 | ||||
| /* Set 0 if debouncing isn't needed */ | ||||
| #define DEBOUNCING_DELAY 5 | ||||
| 
 | ||||
| /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||||
| #define LOCKING_SUPPORT_ENABLE | ||||
| /* Locking resynchronize hack */ | ||||
| #define LOCKING_RESYNC_ENABLE | ||||
| 
 | ||||
| /* key combination for command */ | ||||
| #define IS_COMMAND() ( \ | ||||
|     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ | ||||
| ) | ||||
| 
 | ||||
| /* Backlight configuration
 | ||||
|  */ | ||||
| #define BACKLIGHT_LEVELS 4 | ||||
| 
 | ||||
| /* Underlight configuration
 | ||||
|  */ | ||||
| 
 | ||||
| /*#define RGB_DI_PIN E2
 | ||||
| #define RGBLIGHT_TIMER | ||||
| #define RGBLED_NUM 2     // Number of LEDs
 | ||||
| #define RGBLIGHT_HUE_STEP 10 | ||||
| #define RGBLIGHT_SAT_STEP 17 | ||||
| #define RGBLIGHT_VAL_STEP 17*/ | ||||
| //Disabled while I figure out a suitable pin for RGB support.
 | ||||
| //I've tried F5, D2, D3, and E2 but it's possible the end of my
 | ||||
| //strand is bad. New LEDs on order.
 | ||||
| 
 | ||||
| /*
 | ||||
|  * Feature disable options | ||||
|  *  These options are also useful to firmware size reduction. | ||||
|  */ | ||||
| 
 | ||||
| /* disable debug print */ | ||||
| //#define NO_DEBUG
 | ||||
| 
 | ||||
| /* disable print */ | ||||
| //#define NO_PRINT
 | ||||
| 
 | ||||
| /* disable action features */ | ||||
| //#define NO_ACTION_LAYER
 | ||||
| //#define NO_ACTION_TAPPING
 | ||||
| //#define NO_ACTION_ONESHOT
 | ||||
| //#define NO_ACTION_MACRO
 | ||||
| //#define NO_ACTION_FUNCTION
 | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										21
									
								
								keyboards/tada68/keymaps/default/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								keyboards/tada68/keymaps/default/Makefile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| # Build Options
 | ||||
| #   change to "no" to disable the options, or define them in the Makefile in 
 | ||||
| #   the appropriate keymap folder that will get included automatically
 | ||||
| #
 | ||||
| BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000) | ||||
| MOUSEKEY_ENABLE = yes       # Mouse keys(+4700) | ||||
| EXTRAKEY_ENABLE = yes       # Audio control and System control(+450) | ||||
| CONSOLE_ENABLE = no         # Console for debug(+400) | ||||
| COMMAND_ENABLE = yes        # Commands for debug and configuration | ||||
| NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||||
| BACKLIGHT_ENABLE = yes       # Enable keyboard backlight functionality | ||||
| MIDI_ENABLE = no            # MIDI controls | ||||
| AUDIO_ENABLE = no           # Audio output on port C6 | ||||
| UNICODE_ENABLE = no         # Unicode | ||||
| BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | ||||
| RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time. | ||||
| SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend | ||||
| 
 | ||||
| ifndef QUANTUM_DIR | ||||
| 	include ../../../../Makefile | ||||
| endif | ||||
							
								
								
									
										98
									
								
								keyboards/tada68/keymaps/default/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								keyboards/tada68/keymaps/default/keymap.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,98 @@ | |||
| #include "tada68.h" | ||||
| 
 | ||||
| 
 | ||||
| // Used for SHIFT_ESC
 | ||||
| #define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) | ||||
| 
 | ||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 | ||||
| // The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | ||||
| // Layer names don't all need to be of the same length, obviously, and you can also skip them
 | ||||
| // entirely and just use numbers.
 | ||||
| #define _BL 0 | ||||
| #define _FL 1 | ||||
| 
 | ||||
| #define _______ KC_TRNS | ||||
| 
 | ||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||
|   /* Keymap _BL: (Base Layer) Default Layer
 | ||||
|    * ,----------------------------------------------------------------. | ||||
|    * |Esc | 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |~ ` | | ||||
|    * |----------------------------------------------------------------| | ||||
|    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  |Del | | ||||
|    * |----------------------------------------------------------------| | ||||
|    * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |PgUp| | ||||
|    * |----------------------------------------------------------------| | ||||
|    * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up|PgDn| | ||||
|    * |----------------------------------------------------------------| | ||||
|    * |Ctrl|Win |Alt |        Space          |Alt| FN|Ctrl|Lef|Dow|Rig | | ||||
|    * `----------------------------------------------------------------' | ||||
|    */ | ||||
| [_BL] = KEYMAP_ANSI( | ||||
|   KC_ESC,    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_GRV, \ | ||||
|   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_DEL, \ | ||||
|   KC_CAPS, KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,         KC_ENT,KC_PGUP,  \ | ||||
|   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_PGDN, \ | ||||
|   KC_LCTL, KC_LGUI,KC_LALT,                KC_SPC,                        KC_RALT,MO(_FL),KC_RCTRL, KC_LEFT,KC_DOWN,KC_RGHT), | ||||
| 
 | ||||
|   /* Keymap _FL: Function Layer
 | ||||
|    * ,----------------------------------------------------------------. | ||||
|    * |   |   |   |   |   |   |   |   |   |   |   |   |   |  RESET|    | | ||||
|    * |----------------------------------------------------------------| | ||||
|    * |     |   |   |   |   |   |   |   |   |   |   |BL-|BL+|BL   |    | | ||||
|    * |----------------------------------------------------------------| | ||||
|    * |      |   |   |   |   |   |   |       |   |   |   |        |    | | ||||
|    * |----------------------------------------------------------------| | ||||
|    * |        | F1|F2 | F3|F4 | F5| F6| F7| F8|   |   |      |   |    | | ||||
|    * |----------------------------------------------------------------| | ||||
|    * |    |    |    |                       |   |   |    |   |   |    | | ||||
|    * `----------------------------------------------------------------' | ||||
|    */ | ||||
| [_FL] = KEYMAP_ANSI( | ||||
|   #ifdef RGBLIGHT_ENABLE | ||||
|   _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET,_______,  \ | ||||
|   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,_______, \ | ||||
|   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,_______, \ | ||||
|   _______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______,_______,_______, \ | ||||
|   _______,_______,_______,                 _______,               _______,_______,_______,_______,_______, _______), | ||||
|   #else | ||||
|   _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET,_______,  \ | ||||
|   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG,_______, \ | ||||
|   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,_______, \ | ||||
|   _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ | ||||
|   _______,_______,_______,                 _______,               _______,_______,_______,_______,_______, _______), | ||||
|   #endif | ||||
| }; | ||||
| 
 | ||||
| /*enum function_id {
 | ||||
|     //SHIFT_ESC,
 | ||||
| }; | ||||
| 
 | ||||
| const uint16_t PROGMEM fn_actions[] = { | ||||
|   //[0]  = ACTION_FUNCTION(SHIFT_ESC),
 | ||||
| }; | ||||
| 
 | ||||
| void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { | ||||
|   static uint8_t shift_esc_shift_mask; | ||||
|   switch (id) { | ||||
|     case SHIFT_ESC: | ||||
|       shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; | ||||
|       if (record->event.pressed) { | ||||
|         if (shift_esc_shift_mask) { | ||||
|           add_key(KC_GRV); | ||||
|           send_keyboard_report(); | ||||
|         } else { | ||||
|           add_key(KC_ESC); | ||||
|           send_keyboard_report(); | ||||
|         } | ||||
|       } else { | ||||
|         if (shift_esc_shift_mask) { | ||||
|           del_key(KC_GRV); | ||||
|           send_keyboard_report(); | ||||
|         } else { | ||||
|           del_key(KC_ESC); | ||||
|           send_keyboard_report(); | ||||
|         } | ||||
|       } | ||||
|       break; | ||||
|   } | ||||
| }*/ | ||||
							
								
								
									
										1
									
								
								keyboards/tada68/keymaps/default/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								keyboards/tada68/keymaps/default/readme.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| # default TADA68 layout | ||||
							
								
								
									
										4
									
								
								keyboards/tada68/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								keyboards/tada68/readme.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| TADA68 keyboard firmware | ||||
| ====================== | ||||
| 
 | ||||
| TODO: to be updated. | ||||
							
								
								
									
										66
									
								
								keyboards/tada68/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								keyboards/tada68/rules.mk
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,66 @@ | |||
| 
 | ||||
| # MCU name
 | ||||
| #MCU = at90usb1287
 | ||||
| MCU = atmega32u4 | ||||
| 
 | ||||
| # Processor frequency.
 | ||||
| #     This will define a symbol, F_CPU, in all source code files equal to the
 | ||||
| #     processor frequency in Hz. You can then use this symbol in your source code to
 | ||||
| #     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
 | ||||
| #     automatically to create a 32-bit value in your source code.
 | ||||
| #
 | ||||
| #     This will be an integer division of F_USB below, as it is sourced by
 | ||||
| #     F_USB after it has run through any CPU prescalers. Note that this value
 | ||||
| #     does not *change* the processor frequency - it should merely be updated to
 | ||||
| #     reflect the processor speed set externally so that the code can use accurate
 | ||||
| #     software delays.
 | ||||
| F_CPU = 16000000 | ||||
| 
 | ||||
| 
 | ||||
| #
 | ||||
| # LUFA specific
 | ||||
| #
 | ||||
| # Target architecture (see library "Board Types" documentation).
 | ||||
| ARCH = AVR8 | ||||
| 
 | ||||
| # Input clock frequency.
 | ||||
| #     This will define a symbol, F_USB, in all source code files equal to the
 | ||||
| #     input clock frequency (before any prescaling is performed) in Hz. This value may
 | ||||
| #     differ from F_CPU if prescaling is used on the latter, and is required as the
 | ||||
| #     raw input clock is fed directly to the PLL sections of the AVR for high speed
 | ||||
| #     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
 | ||||
| #     at the end, this will be done automatically to create a 32-bit value in your
 | ||||
| #     source code.
 | ||||
| #
 | ||||
| #     If no clock division is performed on the input clock inside the AVR (via the
 | ||||
| #     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
 | ||||
| F_USB = $(F_CPU) | ||||
| 
 | ||||
| # Interrupt driven control endpoint task(+60)
 | ||||
| OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT | ||||
| 
 | ||||
| 
 | ||||
| # Boot Section Size in *bytes*
 | ||||
| #   Teensy halfKay   512
 | ||||
| #   Teensy++ halfKay 1024
 | ||||
| #   Atmel DFU loader 4096
 | ||||
| #   LUFA bootloader  4096
 | ||||
| #   USBaspLoader     2048
 | ||||
| OPT_DEFS += -DBOOTLOADER_SIZE=4096 | ||||
| 
 | ||||
| 
 | ||||
| # Build Options
 | ||||
| #   comment out to disable the options.
 | ||||
| #
 | ||||
| BOOTMAGIC_ENABLE ?= no	# Virtual DIP switch configuration(+1000) | ||||
| MOUSEKEY_ENABLE ?= no	# Mouse keys(+4700) | ||||
| EXTRAKEY_ENABLE ?= yes	# Audio control and System control(+450) | ||||
| CONSOLE_ENABLE ?= yes	# Console for debug(+400) | ||||
| COMMAND_ENABLE ?= yes    # Commands for debug and configuration | ||||
| NKRO_ENABLE ?= yes		# USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||||
| RGBLIGHT_ENABLE ?= no   # Enable keyboard underlight functionality (+4870) | ||||
| BACKLIGHT_ENABLE ?= yes  # Enable keyboard backlight functionality (+1150) | ||||
| MIDI_ENABLE ?= no 		# MIDI controls | ||||
| AUDIO_ENABLE ?= no | ||||
| UNICODE_ENABLE ?= no 		# Unicode | ||||
| BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID | ||||
							
								
								
									
										30
									
								
								keyboards/tada68/tada68.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								keyboards/tada68/tada68.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,30 @@ | |||
| #include "tada68.h" | ||||
| #include "led.h" | ||||
| 
 | ||||
| void matrix_init_kb(void) { | ||||
| 	// put your keyboard start-up code here
 | ||||
| 	// runs once when the firmware starts up
 | ||||
| 	matrix_init_user(); | ||||
| 	led_init_ports(); | ||||
| }; | ||||
| 
 | ||||
| void matrix_scan_kb(void) { | ||||
| 	// put your looping keyboard code here
 | ||||
| 	// runs every cycle (a lot)
 | ||||
| 	matrix_scan_user(); | ||||
| }; | ||||
| 
 | ||||
| void led_init_ports(void) { | ||||
|     // * Set our LED pins as output
 | ||||
|     DDRB |= (1<<2); | ||||
| } | ||||
| 
 | ||||
| void led_set_kb(uint8_t usb_led) { | ||||
| 	if (usb_led & (1<<USB_LED_CAPS_LOCK)) { | ||||
|         // Turn capslock on
 | ||||
|         PORTB &= ~(1<<2); | ||||
|     } else { | ||||
|         // Turn capslock off
 | ||||
|         PORTB |= (1<<2); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										43
									
								
								keyboards/tada68/tada68.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								keyboards/tada68/tada68.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | |||
| #ifndef TADA68_H | ||||
| #define TADA68_H | ||||
| 
 | ||||
| #include "quantum.h" | ||||
| 
 | ||||
| // readability
 | ||||
| #define XXX KC_NO | ||||
| 
 | ||||
| /* TADA68 ANSI layout
 | ||||
|    * ,----------------------------------------------------------------. | ||||
|    * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d    | 0e | | ||||
|    * |----------------------------------------------------------------| | ||||
|    * | 10  | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c|  1d | 1e | | ||||
|    * |----------------------------------------------------------------| | ||||
|    * | 20    | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d    | 2e | | ||||
|    * |----------------------------------------------------------------| | ||||
|    * | 30     | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b|    3c| 3d| 3e | | ||||
|    * |----------------------------------------------------------------| | ||||
|    * | 40 | 41 | 42 |        45             | 49| 4a|  4b| 4c| 4d| 4e | | ||||
|    * `----------------------------------------------------------------' | ||||
|  */ | ||||
| // The first section contains all of the arguments
 | ||||
| // The second converts the arguments into a two-dimensional array
 | ||||
| 
 | ||||
| #define KEYMAP_ANSI( \ | ||||
|     k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \ | ||||
| 	k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \ | ||||
| 	k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b,      k2d, k2e, \ | ||||
| 	k30,      k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \ | ||||
| 	k40, k41, k42,           k45,                k49, k4a, k4b, k4c, k4d, k4e  \ | ||||
| ) \ | ||||
| { \ | ||||
| 	{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e}, \ | ||||
| 	{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e}, \ | ||||
| 	{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, k2e}, \ | ||||
| 	{k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e}, \ | ||||
| 	{k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e}  \ | ||||
| } | ||||
| 
 | ||||
| void matrix_init_user(void); | ||||
| void matrix_scan_user(void); | ||||
| 
 | ||||
| #endif | ||||
|  | @ -155,9 +155,10 @@ void process_action(keyrecord_t *record, action_t action) | |||
|                                                                 action.key.mods<<4; | ||||
|                 if (event.pressed) { | ||||
|                     if (mods) { | ||||
|                         if (IS_MOD(action.key.code)) { | ||||
|                         if (IS_MOD(action.key.code) || action.key.code == KC_NO) { | ||||
|                             // e.g. LSFT(KC_LGUI): we don't want the LSFT to be weak as it would make it useless.
 | ||||
|                             // this also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT)
 | ||||
|                             // This also makes LSFT(KC_LGUI) behave exactly the same as LGUI(KC_LSFT).
 | ||||
|                             // Same applies for some keys like KC_MEH which are declared as MEH(KC_NO).
 | ||||
|                             add_mods(mods); | ||||
|                         } else { | ||||
|                             add_weak_mods(mods); | ||||
|  | @ -168,7 +169,7 @@ void process_action(keyrecord_t *record, action_t action) | |||
|                 } else { | ||||
|                     unregister_code(action.key.code); | ||||
|                     if (mods) { | ||||
|                         if (IS_MOD(action.key.code)) { | ||||
|                         if (IS_MOD(action.key.code) || action.key.code == KC_NO) { | ||||
|                             del_mods(mods); | ||||
|                         } else { | ||||
|                             del_weak_mods(mods); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Erez Zukerman
						Erez Zukerman