 4c6ce12d2a
			
		
	
	
		4c6ce12d2a
		
			
		
	
	
	
	
		
			
			* Fixed Left Shift tapdance in general and for gaming mode. (#12) * update ISO readme * left shift fixed in general, including for gaming mode * fixed toggle menu rendering on ISO layouts * updated readme's and cosmetics * update readme's * update readme's again * readme cosmetics * consolidate readme's * more readme cosmetics * clarification for bootloader mode on ISO * Autocorrect added with 400 word English dictionary (#13) * autocorrect added with 400 word dictionary * update readme's for autocorrect * Add FN-B as shortcut to bootloader * Update .gitignore Co-authored-by: Joel Challis <git@zvecr.com> * RGB changes to system numlock and ISO extended alphas - hide system numlock off indicator (primarily for Mac users) by moving it to numpad and FN layers instead - give users with extended alpha ISO languages a config option to add RGB highlights for extras alphas on capslock * readme updates * Fixed [FN]B and [FN]N shortcuts not working on numpad layer Co-authored-by: Joel Challis <git@zvecr.com>
		
			
				
	
	
		
			101 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| // Copyright 2022 Google LLC
 | |
| // SPDX-License-Identifier: Apache-2.0
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "gourdo1.h"
 | |
| 
 | |
| static bool process_capsnum(uint16_t keycode, keyrecord_t * record) {
 | |
|     static bool toggled = false;
 | |
|     static bool tapped = false;
 | |
|     static uint16_t tap_timer = 0;
 | |
| 
 | |
|     if (keycode == CAPSNUM) {
 | |
|         if (user_config.double_tap_shift_for_capslock) {
 | |
|             // Act as TT(_NUMPADMOUSE)
 | |
|             if (record -> event.pressed) { // CAPSNUM key was pressed
 | |
|                 // Check whether the key was recently tapped
 | |
|                 if (tapped && !timer_expired(record -> event.time, tap_timer)) {
 | |
|                     // This is a double tap (or possibly a triple tap or more)
 | |
|                     // Toggle the layer on.
 | |
|                     toggled = true;
 | |
|                 } else if (toggled) {
 | |
|                     // Otherwise if currently toggled, turn it off
 | |
|                     toggled = false;
 | |
|                     tapped = false;
 | |
|                     layer_off(_NUMPADMOUSE);
 | |
|                 }
 | |
|                 // Set that the first tap occurred in a potential double tap
 | |
|                 tapped = true;
 | |
|                 tap_timer = record -> event.time + TAPPING_TERM;
 | |
|                 layer_on(_NUMPADMOUSE);
 | |
|             } else if (!toggled) {
 | |
|                 // If not currently toggled, turn off on key release
 | |
|                 layer_off(_NUMPADMOUSE);
 | |
|                 return false;
 | |
|             }
 | |
|         } else { // When double_tap_shift_for_capslock == false
 | |
|             // Act as KC_CAPS
 | |
|             if (record -> event.pressed) {
 | |
|                 register_code(KC_CAPS);
 | |
|             } else {
 | |
|                 unregister_code(KC_CAPS);
 | |
|             }
 | |
|         }
 | |
|         return false;
 | |
|     } else {
 | |
|         // On an event with any other key, reset the double tap state
 | |
|         tapped = false;
 | |
|     }
 | |
|     return true;
 | |
| }
 | |
| 
 | |
| static bool process_esc_to_base(uint16_t keycode, keyrecord_t * record) {
 | |
|     static bool tapped = false;
 | |
|     static uint16_t tap_timer = 0;
 | |
| 
 | |
|     if (keycode == KC_ESC) {
 | |
|         if (user_config.esc_double_tap_to_baselyr) {
 | |
|             if (record -> event.pressed) {
 | |
|                 if (tapped && !timer_expired(record -> event.time, tap_timer)) {
 | |
|                     // The key was double tapped.
 | |
|                     layer_clear();
 | |
|                 }
 | |
|                 tapped = true;
 | |
|                 tap_timer = record -> event.time + TAPPING_TERM;
 | |
|             }
 | |
|         }
 | |
|     } else {
 | |
|         // On an event with any other key, reset the double tap state.
 | |
|         tapped = false;
 | |
|     }
 | |
|     return true;
 | |
| }
 | |
| 
 | |
| static bool process_lsft_for_caps(uint16_t keycode, keyrecord_t * record) {
 | |
|     static bool tapped = false;
 | |
|     static uint16_t tap_timer = 0;
 | |
| 
 | |
|     if (keycode == KC_LSFT) {
 | |
|         if (user_config.double_tap_shift_for_capslock) {
 | |
|           if (!keymap_config.no_gui) {
 | |
|             if (record->event.pressed) {
 | |
|                 if (tapped && !timer_expired(record->event.time, tap_timer)) {
 | |
|                   // The key was double tapped.
 | |
|                   //clear_mods();  // If needed, clear the mods.
 | |
|                   // Do something interesting...
 | |
|                   register_code(KC_CAPS);
 | |
|                 }
 | |
|                 tapped = true;
 | |
|                 tap_timer = record->event.time + TAPPING_TERM;
 | |
|             } else {
 | |
|                 unregister_code(KC_CAPS);
 | |
|             }
 | |
|           }
 | |
|         }
 | |
|     } else {
 | |
|             // On an event with any other key, reset the double tap state.
 | |
|             tapped = false;
 | |
|     }
 | |
|     return true;
 | |
| }
 |