mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	Rule to enable Modifiers with Auto-Shift (#2542)
* Re-enable modifiers with auto-shift * Auto-shift modifiers rule * missed a line * Documentation * fixing whitespace
This commit is contained in:
		
							parent
							
								
									bb5c98699f
								
							
						
					
					
						commit
						00b4dce605
					
				| @ -132,6 +132,9 @@ endif | |||||||
| ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes) | ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes) | ||||||
|     OPT_DEFS += -DAUTO_SHIFT_ENABLE |     OPT_DEFS += -DAUTO_SHIFT_ENABLE | ||||||
|     SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c |     SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c | ||||||
|  |     ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes) | ||||||
|  |         OPT_DEFS += -DAUTO_SHIFT_MODIFIERS | ||||||
|  |     endif | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) | ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) | ||||||
|  | |||||||
| @ -28,10 +28,7 @@ Yes, unfortunately. | |||||||
|    characters, you could press and hold the 'a' key for a second or two. This no |    characters, you could press and hold the 'a' key for a second or two. This no | ||||||
|    longer works with Auto Shift because it is timing your depressed time instead |    longer works with Auto Shift because it is timing your depressed time instead | ||||||
|    of emitting a depressed key state to your operating system. |    of emitting a depressed key state to your operating system. | ||||||
| 2. Auto Shift is disabled for any key press that is accompanied by one or more | 2. You will have characters that are shifted when you did not intend on shifting, and | ||||||
|    modifiers. Thus, Ctrl+A that you hold for a really long time is not the same |  | ||||||
|    as Ctrl+Shift+A. |  | ||||||
| 3. You will have characters that are shifted when you did not intend on shifting, and |  | ||||||
|    other characters you wanted shifted, but were not. This simply comes down to |    other characters you wanted shifted, but were not. This simply comes down to | ||||||
|    practice. As we get in a hurry, we think we have hit the key long enough |    practice. As we get in a hurry, we think we have hit the key long enough | ||||||
|    for a shifted version, but we did not. On the other hand, we may think we are |    for a shifted version, but we did not. On the other hand, we may think we are | ||||||
| @ -48,6 +45,18 @@ If no `rules.mk` exists, you can create one. | |||||||
| 
 | 
 | ||||||
| Then compile and install your new firmware with Auto Key enabled! That's it! | Then compile and install your new firmware with Auto Key enabled! That's it! | ||||||
| 
 | 
 | ||||||
|  | ## Modifiers | ||||||
|  | 
 | ||||||
|  | By default, Auto Shift is disabled for any key press that is accompanied by one or more | ||||||
|  | modifiers. Thus, Ctrl+A that you hold for a really long time is not the same | ||||||
|  | as Ctrl+Shift+A. | ||||||
|  | 
 | ||||||
|  | You can re-enable Auto Shift for modifiers by adding another rule to your `rules.mk` | ||||||
|  | 
 | ||||||
|  |     AUTO_SHIFT_MODIFIERS = yes | ||||||
|  | 
 | ||||||
|  | In which case, Ctrl+A held past the `AUTO_SHIFT_TIMEOUT` will be sent as Ctrl+Shift+A | ||||||
|  | 
 | ||||||
| ## Configuring Auto Shift | ## Configuring Auto Shift | ||||||
| 
 | 
 | ||||||
| If desired, there is some configuration that can be done to change the | If desired, there is some configuration that can be done to change the | ||||||
|  | |||||||
| @ -92,7 +92,9 @@ bool autoshift_state(void) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { | bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { | ||||||
|  | #ifndef AUTO_SHIFT_MODIFIERS | ||||||
|   static uint8_t any_mod_pressed; |   static uint8_t any_mod_pressed; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|   if (record->event.pressed) { |   if (record->event.pressed) { | ||||||
|     switch (keycode) { |     switch (keycode) { | ||||||
| @ -175,6 +177,7 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { | |||||||
|         autoshift_flush(); |         autoshift_flush(); | ||||||
|         if (!autoshift_enabled) return true; |         if (!autoshift_enabled) return true; | ||||||
| 
 | 
 | ||||||
|  | #ifndef AUTO_SHIFT_MODIFIERS | ||||||
|         any_mod_pressed = get_mods() & ( |         any_mod_pressed = get_mods() & ( | ||||||
|           MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)| |           MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)| | ||||||
|           MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)| |           MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)| | ||||||
| @ -185,6 +188,7 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) { | |||||||
|         if (any_mod_pressed) { |         if (any_mod_pressed) { | ||||||
|           return true; |           return true; | ||||||
|         } |         } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|         autoshift_on(keycode); |         autoshift_on(keycode); | ||||||
|         return false; |         return false; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jason Stillwell
						Jason Stillwell