[Keyboard] Add KMAC PAD (#13104)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com>
This commit is contained in:
		
							parent
							
								
									f9d88da86f
								
							
						
					
					
						commit
						a9c6adb083
					
				
					 9 changed files with 603 additions and 0 deletions
				
			
		
							
								
								
									
										143
									
								
								keyboards/kmac_pad/keymaps/default/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								keyboards/kmac_pad/keymaps/default/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,143 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2021 talsu <talsu84@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/>.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
enum kmac_pad_keycodes {
 | 
			
		||||
    MD_BOOT = SAFE_RANGE,
 | 
			
		||||
    MCR1,
 | 
			
		||||
    MCR2,
 | 
			
		||||
    MCR3,
 | 
			
		||||
    MCR4,
 | 
			
		||||
    MCR5,
 | 
			
		||||
    MCR6,
 | 
			
		||||
    MCR7,
 | 
			
		||||
    MCR8,
 | 
			
		||||
    MCR9,
 | 
			
		||||
    MCR10,
 | 
			
		||||
    MCR11,
 | 
			
		||||
    MCR12
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    [0] = LAYOUT( /* Base */
 | 
			
		||||
                               TG(1),
 | 
			
		||||
    KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
 | 
			
		||||
    KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
 | 
			
		||||
    KC_P4,   KC_P5,   KC_P6,
 | 
			
		||||
    KC_P1,   KC_P2,   KC_P3,   KC_PENT,
 | 
			
		||||
    KC_P0,            KC_PDOT          ),
 | 
			
		||||
    [1] = LAYOUT( /* FN  */
 | 
			
		||||
                               KC_TRNS,
 | 
			
		||||
    MCR1,    MCR2,    MCR3,    KC_TRNS,
 | 
			
		||||
    MCR4,    MCR5,    MCR6,    KC_TRNS,
 | 
			
		||||
    MCR7,    MCR8,    MCR9,
 | 
			
		||||
    MCR10,   MCR11,   MCR12,   KC_TRNS,
 | 
			
		||||
    KC_TRNS,          MD_BOOT          )
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
        case MD_BOOT:
 | 
			
		||||
        {
 | 
			
		||||
            static uint32_t key_timer;
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                key_timer = timer_read32();
 | 
			
		||||
            } else {
 | 
			
		||||
                if (timer_elapsed32(key_timer) >= 2000) {
 | 
			
		||||
                    reset_keyboard();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        case MCR1:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 1");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR2:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 2");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR3:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 3");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR4:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 4");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR5:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 5");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR6:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 6");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR7:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 7");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR8:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 8");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR9:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 9");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR10:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 10");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR11:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 12");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        case MCR12:
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                SEND_STRING("Macro 12");
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        default:
 | 
			
		||||
            return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool led_update_user(led_t led_state) {
 | 
			
		||||
    writePin(B1, led_state.num_lock);
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
			
		||||
    writePin(B3, !IS_LAYER_ON_STATE(state, 0));
 | 
			
		||||
    return state;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										61
									
								
								keyboards/kmac_pad/keymaps/default/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								keyboards/kmac_pad/keymaps/default/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,61 @@
 | 
			
		|||
# The default keymap for KMAC PAD
 | 
			
		||||
 | 
			
		||||
This is the default keymap. It implements the same features as the official default KMAC PAD firmware.
 | 
			
		||||
 | 
			
		||||
## Layers
 | 
			
		||||
 | 
			
		||||
The keymap has two layers. Press the 'FN' key to toggle the Default layer and Function layer.
 | 
			
		||||
 | 
			
		||||
### Layer 1: Default Layer
 | 
			
		||||
 | 
			
		||||
                ,---.
 | 
			
		||||
                |TG1|
 | 
			
		||||
                `---'
 | 
			
		||||
    ,---------------.
 | 
			
		||||
    |NUM| / | * | - |
 | 
			
		||||
    |---------------|
 | 
			
		||||
    | 7 | 8 | 9 |   |
 | 
			
		||||
    |-----------| + |
 | 
			
		||||
    | 4 | 5 | 6 |   |
 | 
			
		||||
    |---------------|
 | 
			
		||||
    | 1 | 2 | 3 |   |
 | 
			
		||||
    |-----------|Ent|
 | 
			
		||||
    |   0   | . |   |
 | 
			
		||||
    '---------------'
 | 
			
		||||
 | 
			
		||||
### Layer 2: Function Layer
 | 
			
		||||
 | 
			
		||||
                ,---.
 | 
			
		||||
                |TG1|
 | 
			
		||||
                `---'
 | 
			
		||||
    ,---------------.
 | 
			
		||||
    |M1 |M2 |M3 |   |
 | 
			
		||||
    |---------------|
 | 
			
		||||
    |M4 |M5 |M6 |   |
 | 
			
		||||
    |-----------|   |
 | 
			
		||||
    |M7 |M8 |M9 |   |
 | 
			
		||||
    |---------------|
 | 
			
		||||
    |M10|M11|M12|   |
 | 
			
		||||
    |-----------|   |
 | 
			
		||||
    |       |   |   |
 | 
			
		||||
    '---------------'
 | 
			
		||||
 | 
			
		||||
## Macros
 | 
			
		||||
 | 
			
		||||
The default macro is typed with meaningless strings that exist as samples.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| Macro | Action                                 |
 | 
			
		||||
|:-----:| -------------------------------------- |
 | 
			
		||||
| 1     | Types `Macro 1`                        |
 | 
			
		||||
| 2     | Types `Macro 2`                        |
 | 
			
		||||
| 3     | Types `Macro 3`                        |
 | 
			
		||||
| 4     | Types `Macro 4`                        |
 | 
			
		||||
| 5     | Types `Macro 5`                        |
 | 
			
		||||
| 6     | Types `Macro 6`                        |
 | 
			
		||||
| 7     | Types `Macro 7`                        |
 | 
			
		||||
| 8     | Types `Macro 8`                        |
 | 
			
		||||
| 9     | Types `Macro 9`                        |
 | 
			
		||||
| 10    | Types `Macro 10`                       |
 | 
			
		||||
| 11    | Types `Macro 11`                       |
 | 
			
		||||
| 12    | Types `Macro 12`                       |
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue