mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 21:32:31 +01:00 
			
		
		
		
	 ade989962a
			
		
	
	
		ade989962a
		
			
		
	
	
	
	
		
			
			Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Drashna Jaelre <drashna@live.com>
		
			
				
	
	
		
			150 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright 2021 Joshua T.
 | |
|  *
 | |
|  * 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 QMK_KEYBOARD_H
 | |
| #include "process_records.h"
 | |
| 
 | |
| uint8_t mod_state;
 | |
| 
 | |
| 
 | |
| __attribute__ ((weak))
 | |
| bool process_record_user_kb(uint16_t keycode, keyrecord_t *record) {
 | |
|     return true;
 | |
| }
 | |
| 
 | |
| // Runs for each key down or up event.
 | |
| bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | |
|     // Returning true here will cause QMK to continue handling the key normally.
 | |
|     // Returning false indicates that we've handled everything the keycode should do, and QMK
 | |
|     // should not continue handling the keypress.
 | |
|     //
 | |
|     // NOTE: There is also a process_record_kb function that can be defined in the keyboard-
 | |
|     // specific code. This allows the keyboard to have its own process_record function.
 | |
|     // This is supposed to be "higher" than the user function, meaning the kb function
 | |
|     // is shared for all keymaps for the keyboard.
 | |
|     //
 | |
|     // For this reason, I add my own function, called process_record_user_kb, and at the end
 | |
|     // of this function, I defer to that one if it exists.
 | |
|     // return process_record_user(keycode, record);
 | |
| 
 | |
| 
 | |
|     // Custom keycode / function handling, based on the core function
 | |
|     // process_record_quantum
 | |
|     // https://github.com/qmk/qmk_firmware/blob/master/quantum/quantum.c
 | |
| 
 | |
|     if (!(
 | |
| #ifdef USER_CAPS_WORD_ENABLE
 | |
|         process_record_caps_word(keycode, record) &&
 | |
| #endif
 | |
| #ifdef USER_MOUSE_JIGGLE_ENABLE
 | |
|         process_record_mouse_jiggle(keycode, record) &&
 | |
| #endif
 | |
| #ifdef USER_NUM_WORD_ENABLE
 | |
|         process_record_num_word(keycode, record) &&
 | |
| #endif
 | |
| #ifdef USER_SECRETS_ENABLE
 | |
|         process_record_secrets(keycode, record) &&
 | |
| #endif
 | |
| #ifdef USER_SUPER_ALT_TAB_ENABLE
 | |
|         process_record_super_alt_tab(keycode, record) &&
 | |
| #endif
 | |
|         true)) {
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
| 
 | |
|     // Miscellaneous keycode handling
 | |
|     mod_state = get_mods();
 | |
| 
 | |
|     switch(keycode)
 | |
|     {
 | |
|         case QK_MAKE: {
 | |
|             if (record->event.pressed)
 | |
|                 SEND_STRING("qmk compile --keyboard " QMK_KEYBOARD " --keymap " QMK_KEYMAP);
 | |
|             return false;
 | |
|         }
 | |
|         case QK_FLSH: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING("qmk flash --keyboard " QMK_KEYBOARD " --keymap " QMK_KEYMAP);
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
|         case QK_VERS: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
|         case PRG_EQ: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING("==");
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
|         case PRG_NE: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING("!=");
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
|         case PRG_GEQ: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING(">=");
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
|         case PRG_LEQ: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING("<=");
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
|         case PRG_ARR: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING("=>");
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         case PS_ITEM: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING("$_");
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
|         case FS_PIPE: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING("|>");
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
|         case FS_ARR: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING("->");
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
|         case SHEBANG: {
 | |
|             if (record->event.pressed) {
 | |
|                 SEND_STRING("#!");
 | |
|             }
 | |
|             return false;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     return process_record_user_kb(keycode, record);
 | |
| }
 |