Sfoglia il codice sorgente

Added stanleylai's personal keymap (#420)

* Added WS2812 support for KC60

* Reorganized WS2812 support into its own keymap

* Fixed relative link in README

* Moved WS2812 mention in README to the bottom

* Fixed titling in WS2812 README

* Reverted KC60 Makefile and default keymap back

* Moved RGB specific config.h to ws2812 keymap folder

* Added my personal keymap

* Updated compiled hex

* Reverted KC60 files to 3f6fac47 before pull request #419
Stanley Lai 9 anni fa
parent
commit
c976c03547

+ 2 - 1
keyboard/kc60/Makefile

@@ -27,7 +27,7 @@
 # make flip-ee = Download the eeprom file to the device, using Atmel FLIP
 #                (must have Atmel FLIP installed).
 #
-# make debug = Start either simulavr or avarice as specified for debugging,
+# make debug = Start either simulavr or avarice as specified for debugging, 
 #              with avr-gdb or avr-insight as the front end for debugging.
 #
 # make filename.s = Just compile filename.c into the assembler code only.
@@ -111,3 +111,4 @@ AUDIO_ENABLE ?= no           # Audio output on port C6
 ifndef QUANTUM_DIR
 	include ../../Makefile
 endif
+

+ 1 - 1
keyboard/kc60/config.h

@@ -45,7 +45,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 // Possible pins for columns include: F1  F0  E6  D7  D6  D4  C7  C6  B7  B5  B4  B3  B1  B0
 // Pins for rows include:  D0  D1  F6  F7  D5
-// KC60 Version 2
+// KC60 Version 2 
 #define MATRIX_ROW_PINS { D0, D1, F6, F7, D5 }
 #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
 #define UNUSED_PINS

+ 2 - 2
keyboard/kc60/kc60.c

@@ -62,7 +62,7 @@ void backlight_init_ports()
   DDRB |= (1<<6);
   PORTB &= ~(1<<6);
 
-  // Use full 16-bit resolution.
+  // Use full 16-bit resolution. 
   ICR1 = 0xFFFF;
 
   // I could write a wall of text here to explain... but TL;DW
@@ -99,7 +99,7 @@ void backlight_set(uint8_t level)
     // Set the brightness
     CHANNEL = 0xFFFF;
   }
-  else
+  else        
   {
     // Turn on PWM control of PB6
     TCCR1A |= _BV(COM1B1);

BIN
keyboard/kc60/keymaps/default/compiled.hex


+ 63 - 0
keyboard/kc60/keymaps/stanleylai/Makefile

@@ -0,0 +1,63 @@
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device.
+#                Please customize your programmer settings(PROGRAM_CMD)
+#
+# make teensy = Download the hex file to the device, using teensy_loader_cli.
+#               (must have teensy_loader_cli installed).
+#
+# make dfu = Download the hex file to the device, using dfu-programmer (must
+#            have dfu-programmer installed).
+#
+# make flip = Download the hex file to the device, using Atmel FLIP (must
+#             have Atmel FLIP installed).
+#
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
+#               (must have dfu-programmer installed).
+#
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
+#                (must have Atmel FLIP installed).
+#
+# make debug = Start either simulavr or avarice as specified for debugging,
+#              with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+#                   bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE ?= yes      # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE ?= no        # Mouse keys(+4700)
+EXTRAKEY_ENABLE ?= yes       # Audio control and System control(+450)
+CONSOLE_ENABLE ?= no         # Console for debug(+400)
+COMMAND_ENABLE ?= no         # Commands for debug and configuration
+KEYBOARD_LOCK_ENABLE ?= yes  # Allow locking of keyboard via magic key
+BACKLIGHT_ENABLE ?= yes      # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE ?= yes 			 # Enable WS2812 underglow RGB strip
+MIDI_ENABLE ?= no            # MIDI controls
+UNICODE_ENABLE ?= no         # Unicode
+BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE ?= no           # Audio output on port C6
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE ?= no       # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE ?= yes           # USB Nkey Rollover
+
+ifndef QUANTUM_DIR
+	include ../../Makefile
+endif

+ 26 - 0
keyboard/kc60/keymaps/stanleylai/README.md

@@ -0,0 +1,26 @@
+Stanley Lai's Split Right Shift with Dedicated Arrow Keys
+======================
+
+![Image of KC60 with RGB Underglow](../ws2812/ws2812_example.jpg)
+
+## Quantum MK Firmware
+For the full Quantum feature list, see [the parent README.md](/README.md).
+
+## Keymap Notes
+- Keymap setup with split Right Shift in mind.
+- Right-side modifiers are setup as dedicated arrow keys
+
+### Base Layer Reference
+- Fn Layer indicated on keycap front legends.
+- Tapping Caps Lock key toggles Caps. Holding it down momentarily switches us to the Fn Layer.
+- Holding down "Fn" and "Page Down" momentarily switches us to the RGB Layer. Tapping "Page Down" behaves as expected.
+![Base Layer](base_layer.jpg)
+
+### RGB Layer Reference
+![RGB Layer](rgb_layer.jpg)
+
+## WS2812 Support
+By default, it is now setup for 16 LEDs on the PF5 breakout pin. See [included image](../ws2812/ws2812_wiring.jpg) for wiring reference.
+
+### Build
+To build this keymap, simply run `make KEYMAP=stanleylai`.

BIN
keyboard/kc60/keymaps/stanleylai/base_layer.png


BIN
keyboard/kc60/keymaps/stanleylai/compiled.hex


+ 3 - 0
keyboard/kc60/keymaps/stanleylai/config.h

@@ -0,0 +1,3 @@
+// Use configs from WS2812 enabled Keymap
+
+#include "../ws2812/config.h"

+ 151 - 0
keyboard/kc60/keymaps/stanleylai/keymap.c

@@ -0,0 +1,151 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "kc60.h"
+
+// 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
+#define _RGBL 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// See base_layer.png and rgb_layer.png for layout reference
+
+// Base Default Layer
+// Mac Modifier Layout. Use BootMagic to toggle GUI and ALT positions.
+[_BL] = KEYMAP(
+  F(0),             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_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, \
+  LT(_FL, 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_NO,    KC_ENT,  \
+  KC_LSFT, KC_NO,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,  MO(_FL),  KC_UP,   \
+  KC_LCTL, KC_LALT, KC_LGUI,                KC_SPC,                                 KC_RGUI,KC_LEFT,  KC_DOWN,  KC_RGHT),
+
+// Function layer
+[_FL] = KEYMAP(
+  KC_GRV, 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_DEL, \
+  KC_NO,  KC_MPRV,KC_UP,  KC_MNXT,KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_PSCR,KC_SLCK,  KC_PAUS,  KC_INS, \
+  KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO,  \
+  KC_TRNS,KC_NO,  KC_MUTE,KC_VOLD,KC_VOLU,KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_TRNS,  LT(_RGBL, KC_PGUP),\
+  KC_TRNS,KC_TRNS,KC_TRNS,                KC_MPLY,                                KC_TRNS,KC_HOME,  KC_PGDN,  KC_END),
+
+// RGB Layer
+[_RGBL] = KEYMAP(
+  #ifdef RGBLIGHT_ENABLE
+  RESET,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO, \
+  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO, \
+  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO,  \
+  KC_TRNS,KC_NO,  F(1),   F(2),   F(3),   F(4),   F(5),   F(6),   F(7),   F(8),   BL_STEP,BL_TOGG,  KC_TRNS,  KC_TRNS,\
+  KC_TRNS,KC_TRNS,KC_TRNS,                KC_TRNS,                                KC_TRNS,KC_TRNS,  KC_TRNS,  KC_TRNS),
+  #else
+  RESET,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO, \
+  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO, \
+  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,    KC_NO,    KC_NO,  \
+  KC_TRNS,KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  BL_STEP,BL_TOGG,  KC_TRNS,  KC_TRNS,\
+  KC_TRNS,KC_TRNS,KC_TRNS,                KC_TRNS,                                KC_TRNS,KC_TRNS,  KC_TRNS,  KC_TRNS),
+  #endif
+};
+
+
+enum function_id {
+    SHIFT_ESC,
+    #ifdef RGBLIGHT_ENABLE
+    RGBLED_TOGGLE,
+    RGBLED_STEP_MODE,
+    RGBLED_INCREASE_HUE,
+    RGBLED_DECREASE_HUE,
+    RGBLED_INCREASE_SAT,
+    RGBLED_DECREASE_SAT,
+    RGBLED_INCREASE_VAL,
+    RGBLED_DECREASE_VAL,
+    #endif
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [0]  = ACTION_FUNCTION(SHIFT_ESC),
+  #ifdef RGBLIGHT_ENABLE
+  [1]  = ACTION_FUNCTION(RGBLED_TOGGLE),
+  [2]  = ACTION_FUNCTION(RGBLED_STEP_MODE),
+  [3]  = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
+  [4]  = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
+  [5]  = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
+  [6]  = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
+  [7]  = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
+  [8]  = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
+  #endif
+};
+
+#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  static uint8_t shift_esc_shift_mask;
+  switch (id) {
+    case SHIFT_ESC:
+      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
+      if (record->event.pressed) {
+        if (shift_esc_shift_mask) {
+          add_key(KC_GRV);
+          send_keyboard_report();
+        } else {
+          add_key(KC_ESC);
+          send_keyboard_report();
+        }
+      } else {
+        if (shift_esc_shift_mask) {
+          del_key(KC_GRV);
+          send_keyboard_report();
+        } else {
+          del_key(KC_ESC);
+          send_keyboard_report();
+        }
+      }
+      break;
+
+    #ifdef RGBLIGHT_ENABLE
+
+    case RGBLED_TOGGLE:
+      //led operations
+      if (record->event.pressed) {
+        rgblight_toggle();
+      }
+      break;
+    case RGBLED_INCREASE_HUE:
+      if (record->event.pressed) {
+        rgblight_increase_hue();
+      }
+      break;
+    case RGBLED_DECREASE_HUE:
+      if (record->event.pressed) {
+        rgblight_decrease_hue();
+      }
+      break;
+    case RGBLED_INCREASE_SAT:
+      if (record->event.pressed) {
+        rgblight_increase_sat();
+      }
+      break;
+    case RGBLED_DECREASE_SAT:
+      if (record->event.pressed) {
+        rgblight_decrease_sat();
+      }
+      break;
+      case RGBLED_INCREASE_VAL:
+        if (record->event.pressed) {
+          rgblight_increase_val();
+        }
+        break;
+      case RGBLED_DECREASE_VAL:
+        if (record->event.pressed) {
+          rgblight_decrease_val();
+        }
+        break;
+      case RGBLED_STEP_MODE:
+        if (record->event.pressed) {
+          rgblight_step();
+        }
+        break;
+      #endif
+  }
+}

BIN
keyboard/kc60/keymaps/stanleylai/rgb_layer.png


BIN
keyboard/kc60/keymaps/ws2812/compiled.hex