Add support for KMAC
This commit is contained in:
		
							parent
							
								
									00d9416626
								
							
						
					
					
						commit
						1b02b2006e
					
				
					 16 changed files with 1219 additions and 0 deletions
				
			
		
							
								
								
									
										37
									
								
								keyboards/kmac/keymaps/winkeyless/Makefile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								keyboards/kmac/keymaps/winkeyless/Makefile
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
# Copyright 2013 Jun Wako <wakojun@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/>.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# QMK Build Options
 | 
			
		||||
#   change to "no" to disable the options, or define them in the Makefile in 
 | 
			
		||||
#   the appropriate keymap folder that will get included automatically
 | 
			
		||||
#
 | 
			
		||||
BOOTMAGIC_ENABLE = yes      # Virtual DIP switch configuration(+1000)
 | 
			
		||||
MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
 | 
			
		||||
EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
 | 
			
		||||
CONSOLE_ENABLE = yes         # Console for debug(+400)
 | 
			
		||||
COMMAND_ENABLE = yes        # Commands for debug and configuration
 | 
			
		||||
NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 | 
			
		||||
BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
 | 
			
		||||
MIDI_ENABLE = no            # MIDI support (+2400 to 4200, depending on config)
 | 
			
		||||
AUDIO_ENABLE = no           # Audio output on port C6
 | 
			
		||||
UNICODE_ENABLE = no         # Unicode
 | 
			
		||||
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 | 
			
		||||
RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
 | 
			
		||||
SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 | 
			
		||||
 | 
			
		||||
ifndef QUANTUM_DIR
 | 
			
		||||
	include ../../../../Makefile
 | 
			
		||||
endif
 | 
			
		||||
							
								
								
									
										24
									
								
								keyboards/kmac/keymaps/winkeyless/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								keyboards/kmac/keymaps/winkeyless/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
 | 
			
		||||
 *
 | 
			
		||||
 * 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/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef CONFIG_USER_H
 | 
			
		||||
#define CONFIG_USER_H
 | 
			
		||||
 | 
			
		||||
#include "../../config.h"
 | 
			
		||||
 | 
			
		||||
// place overrides here
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										97
									
								
								keyboards/kmac/keymaps/winkeyless/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								keyboards/kmac/keymaps/winkeyless/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,97 @@
 | 
			
		|||
/* Copyright 2017 Mathias Andersson <wraul@dbox.se>
 | 
			
		||||
 *
 | 
			
		||||
 * 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 "kmac.h"
 | 
			
		||||
 | 
			
		||||
// Helpful defines
 | 
			
		||||
#define _______ KC_TRNS
 | 
			
		||||
 | 
			
		||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
			
		||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
			
		||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
			
		||||
// entirely and just use numbers.
 | 
			
		||||
#define _BL 0
 | 
			
		||||
#define _FL 1
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
  [_BL] = KEYMAP_WINKEYLESS(
 | 
			
		||||
    KC_ESC,           KC_F1,   KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_F6,  KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,       KC_PSCR, KC_SLCK, KC_BRK,  \
 | 
			
		||||
    KC_GRV,  KC_1,    KC_2,    KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,      KC_INS,  KC_HOME, KC_PGUP, \
 | 
			
		||||
    KC_TAB,  KC_Q,    KC_W,    KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,      KC_DEL,  KC_END,  KC_PGDN, \
 | 
			
		||||
    KC_CAPS, KC_A,    KC_S,    KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,    KC_SCLN, KC_QUOT,          KC_ENT,                                  \
 | 
			
		||||
    KC_LSFT,          KC_Z,    KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,    KC_COMM, KC_DOT,  KC_SLSH,          KC_RSFT,               KC_UP,            \
 | 
			
		||||
    KC_LCTL, KC_LGUI, KC_LALT,                         KC_SPC,                                    KC_RALT, MO(_FL), KC_RCTL,      KC_LEFT, KC_DOWN, KC_RGHT  \
 | 
			
		||||
  ),
 | 
			
		||||
  [_FL] = KEYMAP_WINKEYLESS(
 | 
			
		||||
    BL_STEP,          M(0),    M(1),    M(2),    M(3),    M(4),    M(5),    M(6),    M(7),    M(8),    M(9),    M(10),   M(11),        _______, _______, _______, \
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,      _______, _______, _______, \
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,      _______, _______, _______, \
 | 
			
		||||
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,                                 \
 | 
			
		||||
    _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,               _______,          \
 | 
			
		||||
    _______, _______, _______,                            _______,                                     _______, _______, _______,      _______, _______, _______  \
 | 
			
		||||
  ),
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM fn_actions[] = {
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
 | 
			
		||||
{
 | 
			
		||||
  // MACRODOWN only works in this function
 | 
			
		||||
      switch(id) {
 | 
			
		||||
        case 0:
 | 
			
		||||
          if (record->event.pressed) {
 | 
			
		||||
            SEND_STRING("The");
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
        break;
 | 
			
		||||
        case 1:
 | 
			
		||||
          if (record->event.pressed) {
 | 
			
		||||
            SEND_STRING("Custom");
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
        break;
 | 
			
		||||
        case 2:
 | 
			
		||||
          if (record->event.pressed) {
 | 
			
		||||
            SEND_STRING("Keyboard");
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
        break;
 | 
			
		||||
        case 3:
 | 
			
		||||
          if (record->event.pressed) {
 | 
			
		||||
            return MACRO( D(LCTL), T(C), U(LCTL), T(RGHT), D(LCTL), T(V), U(LCTL), END );
 | 
			
		||||
          }
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
    return MACRO_NONE;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void matrix_init_user(void) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void matrix_scan_user(void) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void led_set_user(uint8_t usb_led) {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										57
									
								
								keyboards/kmac/keymaps/winkeyless/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								keyboards/kmac/keymaps/winkeyless/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
# Keymap for the winkeyless version of KMAC
 | 
			
		||||
 | 
			
		||||
This is the default keymap for the winkeyless version of the PCB. It implements the same features as the official default KMAC firmware.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
See [keymap.c](keymap.c) for details.
 | 
			
		||||
 | 
			
		||||
## Layers
 | 
			
		||||
 | 
			
		||||
The keymap have two layers. To access the functions on the second layer, hold down caps lock and press the corresponding key.
 | 
			
		||||
 | 
			
		||||
### Layer 1: Default Layer
 | 
			
		||||
     ,---.   ,---------------. ,---------------. ,---------------. ,-----------.
 | 
			
		||||
     |Esc|   |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau|
 | 
			
		||||
     `---'   `---------------' `---------------' `---------------' `-----------'
 | 
			
		||||
     ,-----------------------------------------------------------. ,-----------.
 | 
			
		||||
     |~  |  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp | |Ins|Hom|PgU|
 | 
			
		||||
     |-----------------------------------------------------------| |-----------|
 | 
			
		||||
     |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \| |Del|End|PgD|
 | 
			
		||||
     |-----------------------------------------------------------| '-----------'
 | 
			
		||||
     |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  |
 | 
			
		||||
     |-----------------------------------------------------------|     ,---.
 | 
			
		||||
     |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |     |Up |
 | 
			
		||||
     |-----------------------------------------------------------| ,-----------.
 | 
			
		||||
     |Ctl|Gui|Alt|               Space               |Alt|Fn |Ctl| |Lef|Dow|Rig|
 | 
			
		||||
     `-----------------------------------------------------------' `-----------'
 | 
			
		||||
 | 
			
		||||
### Layer 2: Function Layer
 | 
			
		||||
     ,---.   ,---------------. ,---------------. ,---------------. ,-----------.
 | 
			
		||||
     |Led|   |M1 |M2 |M3 |M4 | |M5 |M6 |M7 |M8 | |M9 |M10|M11|M12| |   |   |   |
 | 
			
		||||
     `---'   `---------------' `---------------' `---------------' `-----------'
 | 
			
		||||
     ,-----------------------------------------------------------. ,-----------.
 | 
			
		||||
     |   |   |   |   |   |   |   |   |   |   |   |   |   |       | |   |   |   |
 | 
			
		||||
     |-----------------------------------------------------------| |-----------|
 | 
			
		||||
     |     |   |   |   |   |   |   |   |   |   |   |   |   |     | |   |   |   |
 | 
			
		||||
     |-----------------------------------------------------------| '-----------'
 | 
			
		||||
     |      |   |   |   |   |   |   |   |   |   |   |   |        |
 | 
			
		||||
     |-----------------------------------------------------------|     ,---.
 | 
			
		||||
     |        |   |   |   |   |   |   |   |   |   |   |          |     |   |
 | 
			
		||||
     |-----------------------------------------------------------| ,-----------.
 | 
			
		||||
     |   |   |   |                                   |   |   |   | |   |   |   |
 | 
			
		||||
     `-----------------------------------------------------------' `-----------'
 | 
			
		||||
 | 
			
		||||
## Macros
 | 
			
		||||
 | 
			
		||||
These are mostly useless and serve more like examples I guess.
 | 
			
		||||
 | 
			
		||||
| Macro | Action                                 |
 | 
			
		||||
|:-----:| -------------------------------------- |
 | 
			
		||||
| 1     | Types `The`                            |
 | 
			
		||||
| 2     | Types `Custom`                         |
 | 
			
		||||
| 3     | Types `Keyboard`                       |
 | 
			
		||||
| 4     | Inputs `<Ctrl+c>` `<Right>` `<Ctrl+v>` |
 | 
			
		||||
 | 
			
		||||
## Building
 | 
			
		||||
 | 
			
		||||
To build the firmware with the keymap for the winkeyless version, run `make winkeyless`.
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue