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)
 | 
			
		||||
    OPT_DEFS += -DAUTO_SHIFT_ENABLE
 | 
			
		||||
    SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
 | 
			
		||||
    ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
 | 
			
		||||
        OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
 | 
			
		||||
    endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
   longer works with Auto Shift because it is timing your depressed time instead
 | 
			
		||||
   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
 | 
			
		||||
   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
 | 
			
		||||
2. 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
 | 
			
		||||
   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
 | 
			
		||||
@ -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!
 | 
			
		||||
 | 
			
		||||
## 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
 | 
			
		||||
 | 
			
		||||
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) {
 | 
			
		||||
#ifndef AUTO_SHIFT_MODIFIERS
 | 
			
		||||
  static uint8_t any_mod_pressed;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if (record->event.pressed) {
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
@ -175,6 +177,7 @@ bool process_auto_shift(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
        autoshift_flush();
 | 
			
		||||
        if (!autoshift_enabled) return true;
 | 
			
		||||
 | 
			
		||||
#ifndef AUTO_SHIFT_MODIFIERS
 | 
			
		||||
        any_mod_pressed = get_mods() & (
 | 
			
		||||
          MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)|
 | 
			
		||||
          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) {
 | 
			
		||||
          return true;
 | 
			
		||||
        }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        autoshift_on(keycode);
 | 
			
		||||
        return false;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user