move melody96 to ymdk vendor folder (#15680)
Co-authored-by: Nick Brassel <nick@tzarc.org>
This commit is contained in:
parent
40a7714ce5
commit
314865f833
22 changed files with 1 additions and 1 deletions
55
keyboards/ymdk/melody96/config.h
Normal file
55
keyboards/ymdk/melody96/config.h
Normal file
|
@ -0,0 +1,55 @@
|
|||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0x594d // "YM"
|
||||
#define PRODUCT_ID 0x4D96 // "M" + 96
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER YMDK
|
||||
#define PRODUCT Melody96
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 12
|
||||
#define MATRIX_COLS 9
|
||||
|
||||
/* key matrix pins */
|
||||
#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0, E6, F0, F1, F4, F5, F6, F7 }
|
||||
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION ROW2COL
|
||||
|
||||
#define LED_NUM_LOCK_PIN C6
|
||||
#define LED_CAPS_LOCK_PIN C7
|
||||
#define LED_SCROLL_LOCK_PIN B5
|
||||
#define LED_PIN_ON_STATE 0
|
||||
|
||||
/* number of backlight levels */
|
||||
#define BACKLIGHT_PIN B6
|
||||
#ifdef BACKLIGHT_PIN
|
||||
#define BACKLIGHT_LEVELS 5
|
||||
#endif
|
||||
|
||||
/* Set location for BootMagic key*/
|
||||
#define BOOTMAGIC_LITE_ROW 5
|
||||
#define BOOTMAGIC_LITE_COLUMN 0
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
#define RGB_DI_PIN E2
|
||||
#ifdef RGB_DI_PIN
|
||||
#define RGBLIGHT_ANIMATIONS
|
||||
#define RGBLED_NUM 18
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#endif
|
884
keyboards/ymdk/melody96/info.json
Normal file
884
keyboards/ymdk/melody96/info.json
Normal file
|
@ -0,0 +1,884 @@
|
|||
{
|
||||
"keyboard_name": "melody96",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"layout_aliases": {
|
||||
"LAYOUT": "LAYOUT_all",
|
||||
"LAYOUT_hotswap": "LAYOUT_96_ansi"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0},
|
||||
{"x": 1, "y": 0},
|
||||
{"x": 2, "y": 0},
|
||||
{"x": 3, "y": 0},
|
||||
{"x": 4, "y": 0},
|
||||
{"x": 5, "y": 0},
|
||||
{"x": 6, "y": 0},
|
||||
{"x": 7, "y": 0},
|
||||
{"x": 8, "y": 0},
|
||||
{"x": 9, "y": 0},
|
||||
{"x": 10, "y": 0},
|
||||
{"x": 11, "y": 0},
|
||||
{"x": 12, "y": 0},
|
||||
{"x": 13, "y": 0},
|
||||
{"x": 14, "y": 0},
|
||||
{"x": 15, "y": 0},
|
||||
{"x": 16, "y": 0},
|
||||
{"x": 17, "y": 0},
|
||||
{"x": 18, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1},
|
||||
{"x": 1, "y": 1},
|
||||
{"x": 2, "y": 1},
|
||||
{"x": 3, "y": 1},
|
||||
{"x": 4, "y": 1},
|
||||
{"x": 5, "y": 1},
|
||||
{"x": 6, "y": 1},
|
||||
{"x": 7, "y": 1},
|
||||
{"x": 8, "y": 1},
|
||||
{"x": 9, "y": 1},
|
||||
{"x": 10, "y": 1},
|
||||
{"x": 11, "y": 1},
|
||||
{"x": 12, "y": 1},
|
||||
{"x": 13, "y": 1},
|
||||
{"x": 14, "y": 1},
|
||||
{"x": 15, "y": 1},
|
||||
{"x": 16, "y": 1},
|
||||
{"x": 17, "y": 1},
|
||||
{"x": 18, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.5},
|
||||
{"x": 1.5, "y": 2},
|
||||
{"x": 2.5, "y": 2},
|
||||
{"x": 3.5, "y": 2},
|
||||
{"x": 4.5, "y": 2},
|
||||
{"x": 5.5, "y": 2},
|
||||
{"x": 6.5, "y": 2},
|
||||
{"x": 7.5, "y": 2},
|
||||
{"x": 8.5, "y": 2},
|
||||
{"x": 9.5, "y": 2},
|
||||
{"x": 10.5, "y": 2},
|
||||
{"x": 11.5, "y": 2},
|
||||
{"x": 12.5, "y": 2},
|
||||
{"x": 13.5, "y": 2, "w": 1.5},
|
||||
{"x": 15, "y": 2},
|
||||
{"x": 16, "y": 2},
|
||||
{"x": 17, "y": 2},
|
||||
{"x": 18, "y": 2},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.75},
|
||||
{"x": 1.75, "y": 3},
|
||||
{"x": 2.75, "y": 3},
|
||||
{"x": 3.75, "y": 3},
|
||||
{"x": 4.75, "y": 3},
|
||||
{"x": 5.75, "y": 3},
|
||||
{"x": 6.75, "y": 3},
|
||||
{"x": 7.75, "y": 3},
|
||||
{"x": 8.75, "y": 3},
|
||||
{"x": 9.75, "y": 3},
|
||||
{"x": 10.75, "y": 3},
|
||||
{"x": 11.75, "y": 3},
|
||||
{"x": 12.75, "y": 3, "w": 2.25},
|
||||
{"x": 15, "y": 3},
|
||||
{"x": 16, "y": 3},
|
||||
{"x": 17, "y": 3},
|
||||
{"x": 18, "y": 3},
|
||||
|
||||
{"x": 0, "y": 4, "w": 1.25},
|
||||
{"x": 1.25, "y": 4},
|
||||
{"x": 2.25, "y": 4},
|
||||
{"x": 3.25, "y": 4},
|
||||
{"x": 4.25, "y": 4},
|
||||
{"x": 5.25, "y": 4},
|
||||
{"x": 6.25, "y": 4},
|
||||
{"x": 7.25, "y": 4},
|
||||
{"x": 8.25, "y": 4},
|
||||
{"x": 9.25, "y": 4},
|
||||
{"x": 10.25, "y": 4},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 1.75},
|
||||
{"x": 14, "y": 4},
|
||||
{"x": 15, "y": 4},
|
||||
{"x": 16, "y": 4},
|
||||
{"x": 17, "y": 4},
|
||||
{"x": 18, "y": 4},
|
||||
|
||||
{"x": 0, "y": 5, "w": 1.25},
|
||||
{"x": 1.25, "y": 5, "w": 1.25},
|
||||
{"x": 2.5, "y": 5, "w": 1.25},
|
||||
{"x": 3.75, "y": 5, "w": 6.25},
|
||||
{"x": 10, "y": 5},
|
||||
{"x": 11, "y": 5},
|
||||
{"x": 12, "y": 5},
|
||||
{"x": 13, "y": 5},
|
||||
{"x": 14, "y": 5},
|
||||
{"x": 15, "y": 5},
|
||||
{"x": 16, "y": 5},
|
||||
{"x": 17, "y": 5},
|
||||
{"x": 18, "y": 5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_96_ansi": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0},
|
||||
{"x": 1, "y": 0},
|
||||
{"x": 2, "y": 0},
|
||||
{"x": 3, "y": 0},
|
||||
{"x": 4, "y": 0},
|
||||
{"x": 5, "y": 0},
|
||||
{"x": 6, "y": 0},
|
||||
{"x": 7, "y": 0},
|
||||
{"x": 8, "y": 0},
|
||||
{"x": 9, "y": 0},
|
||||
{"x": 10, "y": 0},
|
||||
{"x": 11, "y": 0},
|
||||
{"x": 12, "y": 0},
|
||||
{"x": 13, "y": 0},
|
||||
{"x": 14, "y": 0},
|
||||
{"x": 15, "y": 0},
|
||||
{"x": 16, "y": 0},
|
||||
{"x": 17, "y": 0},
|
||||
{"x": 18, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1},
|
||||
{"x": 1, "y": 1},
|
||||
{"x": 2, "y": 1},
|
||||
{"x": 3, "y": 1},
|
||||
{"x": 4, "y": 1},
|
||||
{"x": 5, "y": 1},
|
||||
{"x": 6, "y": 1},
|
||||
{"x": 7, "y": 1},
|
||||
{"x": 8, "y": 1},
|
||||
{"x": 9, "y": 1},
|
||||
{"x": 10, "y": 1},
|
||||
{"x": 11, "y": 1},
|
||||
{"x": 12, "y": 1},
|
||||
{"x": 13, "y": 1, "w": 2},
|
||||
{"x": 15, "y": 1},
|
||||
{"x": 16, "y": 1},
|
||||
{"x": 17, "y": 1},
|
||||
{"x": 18, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.5},
|
||||
{"x": 1.5, "y": 2},
|
||||
{"x": 2.5, "y": 2},
|
||||
{"x": 3.5, "y": 2},
|
||||
{"x": 4.5, "y": 2},
|
||||
{"x": 5.5, "y": 2},
|
||||
{"x": 6.5, "y": 2},
|
||||
{"x": 7.5, "y": 2},
|
||||
{"x": 8.5, "y": 2},
|
||||
{"x": 9.5, "y": 2},
|
||||
{"x": 10.5, "y": 2},
|
||||
{"x": 11.5, "y": 2},
|
||||
{"x": 12.5, "y": 2},
|
||||
{"x": 13.5, "y": 2, "w": 1.5},
|
||||
{"x": 15, "y": 2},
|
||||
{"x": 16, "y": 2},
|
||||
{"x": 17, "y": 2},
|
||||
{"x": 18, "y": 2, "h": 2},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.75},
|
||||
{"x": 1.75, "y": 3},
|
||||
{"x": 2.75, "y": 3},
|
||||
{"x": 3.75, "y": 3},
|
||||
{"x": 4.75, "y": 3},
|
||||
{"x": 5.75, "y": 3},
|
||||
{"x": 6.75, "y": 3},
|
||||
{"x": 7.75, "y": 3},
|
||||
{"x": 8.75, "y": 3},
|
||||
{"x": 9.75, "y": 3},
|
||||
{"x": 10.75, "y": 3},
|
||||
{"x": 11.75, "y": 3},
|
||||
{"x": 12.75, "y": 3, "w": 2.25},
|
||||
{"x": 15, "y": 3},
|
||||
{"x": 16, "y": 3},
|
||||
{"x": 17, "y": 3},
|
||||
|
||||
{"x": 0, "y": 4, "w": 2.25},
|
||||
{"x": 2.25, "y": 4},
|
||||
{"x": 3.25, "y": 4},
|
||||
{"x": 4.25, "y": 4},
|
||||
{"x": 5.25, "y": 4},
|
||||
{"x": 6.25, "y": 4},
|
||||
{"x": 7.25, "y": 4},
|
||||
{"x": 8.25, "y": 4},
|
||||
{"x": 9.25, "y": 4},
|
||||
{"x": 10.25, "y": 4},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 1.75},
|
||||
{"x": 14, "y": 4},
|
||||
{"x": 15, "y": 4},
|
||||
{"x": 16, "y": 4},
|
||||
{"x": 17, "y": 4},
|
||||
{"x": 18, "y": 4, "h": 2},
|
||||
|
||||
{"x": 0, "y": 5, "w": 1.25},
|
||||
{"x": 1.25, "y": 5, "w": 1.25},
|
||||
{"x": 2.5, "y": 5, "w": 1.25},
|
||||
{"x": 3.75, "y": 5, "w": 6.25},
|
||||
{"x": 10, "y": 5},
|
||||
{"x": 11, "y": 5},
|
||||
{"x": 12, "y": 5},
|
||||
{"x": 13, "y": 5},
|
||||
{"x": 14, "y": 5},
|
||||
{"x": 15, "y": 5},
|
||||
{"x": 16, "y": 5},
|
||||
{"x": 17, "y": 5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_96_ansi_splitbs": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0},
|
||||
{"x": 1, "y": 0},
|
||||
{"x": 2, "y": 0},
|
||||
{"x": 3, "y": 0},
|
||||
{"x": 4, "y": 0},
|
||||
{"x": 5, "y": 0},
|
||||
{"x": 6, "y": 0},
|
||||
{"x": 7, "y": 0},
|
||||
{"x": 8, "y": 0},
|
||||
{"x": 9, "y": 0},
|
||||
{"x": 10, "y": 0},
|
||||
{"x": 11, "y": 0},
|
||||
{"x": 12, "y": 0},
|
||||
{"x": 13, "y": 0},
|
||||
{"x": 14, "y": 0},
|
||||
{"x": 15, "y": 0},
|
||||
{"x": 16, "y": 0},
|
||||
{"x": 17, "y": 0},
|
||||
{"x": 18, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1},
|
||||
{"x": 1, "y": 1},
|
||||
{"x": 2, "y": 1},
|
||||
{"x": 3, "y": 1},
|
||||
{"x": 4, "y": 1},
|
||||
{"x": 5, "y": 1},
|
||||
{"x": 6, "y": 1},
|
||||
{"x": 7, "y": 1},
|
||||
{"x": 8, "y": 1},
|
||||
{"x": 9, "y": 1},
|
||||
{"x": 10, "y": 1},
|
||||
{"x": 11, "y": 1},
|
||||
{"x": 12, "y": 1},
|
||||
{"x": 13, "y": 1},
|
||||
{"x": 14, "y": 1},
|
||||
{"x": 15, "y": 1},
|
||||
{"x": 16, "y": 1},
|
||||
{"x": 17, "y": 1},
|
||||
{"x": 18, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.5},
|
||||
{"x": 1.5, "y": 2},
|
||||
{"x": 2.5, "y": 2},
|
||||
{"x": 3.5, "y": 2},
|
||||
{"x": 4.5, "y": 2},
|
||||
{"x": 5.5, "y": 2},
|
||||
{"x": 6.5, "y": 2},
|
||||
{"x": 7.5, "y": 2},
|
||||
{"x": 8.5, "y": 2},
|
||||
{"x": 9.5, "y": 2},
|
||||
{"x": 10.5, "y": 2},
|
||||
{"x": 11.5, "y": 2},
|
||||
{"x": 12.5, "y": 2},
|
||||
{"x": 13.5, "y": 2, "w": 1.5},
|
||||
{"x": 15, "y": 2},
|
||||
{"x": 16, "y": 2},
|
||||
{"x": 17, "y": 2},
|
||||
{"x": 18, "y": 2, "h": 2},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.75},
|
||||
{"x": 1.75, "y": 3},
|
||||
{"x": 2.75, "y": 3},
|
||||
{"x": 3.75, "y": 3},
|
||||
{"x": 4.75, "y": 3},
|
||||
{"x": 5.75, "y": 3},
|
||||
{"x": 6.75, "y": 3},
|
||||
{"x": 7.75, "y": 3},
|
||||
{"x": 8.75, "y": 3},
|
||||
{"x": 9.75, "y": 3},
|
||||
{"x": 10.75, "y": 3},
|
||||
{"x": 11.75, "y": 3},
|
||||
{"x": 12.75, "y": 3, "w": 2.25},
|
||||
{"x": 15, "y": 3},
|
||||
{"x": 16, "y": 3},
|
||||
{"x": 17, "y": 3},
|
||||
|
||||
{"x": 0, "y": 4, "w": 2.25},
|
||||
{"x": 2.25, "y": 4},
|
||||
{"x": 3.25, "y": 4},
|
||||
{"x": 4.25, "y": 4},
|
||||
{"x": 5.25, "y": 4},
|
||||
{"x": 6.25, "y": 4},
|
||||
{"x": 7.25, "y": 4},
|
||||
{"x": 8.25, "y": 4},
|
||||
{"x": 9.25, "y": 4},
|
||||
{"x": 10.25, "y": 4},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 1.75},
|
||||
{"x": 14, "y": 4},
|
||||
{"x": 15, "y": 4},
|
||||
{"x": 16, "y": 4},
|
||||
{"x": 17, "y": 4},
|
||||
{"x": 18, "y": 4, "h": 2},
|
||||
|
||||
{"x": 0, "y": 5, "w": 1.25},
|
||||
{"x": 1.25, "y": 5, "w": 1.25},
|
||||
{"x": 2.5, "y": 5, "w": 1.25},
|
||||
{"x": 3.75, "y": 5, "w": 6.25},
|
||||
{"x": 10, "y": 5},
|
||||
{"x": 11, "y": 5},
|
||||
{"x": 12, "y": 5},
|
||||
{"x": 13, "y": 5},
|
||||
{"x": 14, "y": 5},
|
||||
{"x": 15, "y": 5},
|
||||
{"x": 16, "y": 5},
|
||||
{"x": 17, "y": 5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_96_iso": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0},
|
||||
{"x": 1, "y": 0},
|
||||
{"x": 2, "y": 0},
|
||||
{"x": 3, "y": 0},
|
||||
{"x": 4, "y": 0},
|
||||
{"x": 5, "y": 0},
|
||||
{"x": 6, "y": 0},
|
||||
{"x": 7, "y": 0},
|
||||
{"x": 8, "y": 0},
|
||||
{"x": 9, "y": 0},
|
||||
{"x": 10, "y": 0},
|
||||
{"x": 11, "y": 0},
|
||||
{"x": 12, "y": 0},
|
||||
{"x": 13, "y": 0},
|
||||
{"x": 14, "y": 0},
|
||||
{"x": 15, "y": 0},
|
||||
{"x": 16, "y": 0},
|
||||
{"x": 17, "y": 0},
|
||||
{"x": 18, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1},
|
||||
{"x": 1, "y": 1},
|
||||
{"x": 2, "y": 1},
|
||||
{"x": 3, "y": 1},
|
||||
{"x": 4, "y": 1},
|
||||
{"x": 5, "y": 1},
|
||||
{"x": 6, "y": 1},
|
||||
{"x": 7, "y": 1},
|
||||
{"x": 8, "y": 1},
|
||||
{"x": 9, "y": 1},
|
||||
{"x": 10, "y": 1},
|
||||
{"x": 11, "y": 1},
|
||||
{"x": 12, "y": 1},
|
||||
{"x": 13, "y": 1, "w": 2},
|
||||
{"x": 15, "y": 1},
|
||||
{"x": 16, "y": 1},
|
||||
{"x": 17, "y": 1},
|
||||
{"x": 18, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.5},
|
||||
{"x": 1.5, "y": 2},
|
||||
{"x": 2.5, "y": 2},
|
||||
{"x": 3.5, "y": 2},
|
||||
{"x": 4.5, "y": 2},
|
||||
{"x": 5.5, "y": 2},
|
||||
{"x": 6.5, "y": 2},
|
||||
{"x": 7.5, "y": 2},
|
||||
{"x": 8.5, "y": 2},
|
||||
{"x": 9.5, "y": 2},
|
||||
{"x": 10.5, "y": 2},
|
||||
{"x": 11.5, "y": 2},
|
||||
{"x": 12.5, "y": 2},
|
||||
{"x": 15, "y": 2},
|
||||
{"x": 16, "y": 2},
|
||||
{"x": 17, "y": 2},
|
||||
{"x": 18, "y": 2, "h": 2},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.75},
|
||||
{"x": 1.75, "y": 3},
|
||||
{"x": 2.75, "y": 3},
|
||||
{"x": 3.75, "y": 3},
|
||||
{"x": 4.75, "y": 3},
|
||||
{"x": 5.75, "y": 3},
|
||||
{"x": 6.75, "y": 3},
|
||||
{"x": 7.75, "y": 3},
|
||||
{"x": 8.75, "y": 3},
|
||||
{"x": 9.75, "y": 3},
|
||||
{"x": 10.75, "y": 3},
|
||||
{"x": 11.75, "y": 3},
|
||||
{"x": 12.75, "y": 3},
|
||||
{"x": 13.75, "y": 2, "w": 1.25, "h": 2},
|
||||
{"x": 15, "y": 3},
|
||||
{"x": 16, "y": 3},
|
||||
{"x": 17, "y": 3},
|
||||
|
||||
{"x": 0, "y": 4, "w": 1.25},
|
||||
{"x": 1.25, "y": 4},
|
||||
{"x": 2.25, "y": 4},
|
||||
{"x": 3.25, "y": 4},
|
||||
{"x": 4.25, "y": 4},
|
||||
{"x": 5.25, "y": 4},
|
||||
{"x": 6.25, "y": 4},
|
||||
{"x": 7.25, "y": 4},
|
||||
{"x": 8.25, "y": 4},
|
||||
{"x": 9.25, "y": 4},
|
||||
{"x": 10.25, "y": 4},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 1.75},
|
||||
{"x": 14, "y": 4},
|
||||
{"x": 15, "y": 4},
|
||||
{"x": 16, "y": 4},
|
||||
{"x": 17, "y": 4},
|
||||
{"x": 18, "y": 4, "h": 2},
|
||||
|
||||
{"x": 0, "y": 5, "w": 1.25},
|
||||
{"x": 1.25, "y": 5, "w": 1.25},
|
||||
{"x": 2.5, "y": 5, "w": 1.25},
|
||||
{"x": 3.75, "y": 5, "w": 6.25},
|
||||
{"x": 10, "y": 5},
|
||||
{"x": 11, "y": 5},
|
||||
{"x": 12, "y": 5},
|
||||
{"x": 13, "y": 5},
|
||||
{"x": 14, "y": 5},
|
||||
{"x": 15, "y": 5},
|
||||
{"x": 16, "y": 5},
|
||||
{"x": 17, "y": 5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_96_iso_splitbs": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0},
|
||||
{"x": 1, "y": 0},
|
||||
{"x": 2, "y": 0},
|
||||
{"x": 3, "y": 0},
|
||||
{"x": 4, "y": 0},
|
||||
{"x": 5, "y": 0},
|
||||
{"x": 6, "y": 0},
|
||||
{"x": 7, "y": 0},
|
||||
{"x": 8, "y": 0},
|
||||
{"x": 9, "y": 0},
|
||||
{"x": 10, "y": 0},
|
||||
{"x": 11, "y": 0},
|
||||
{"x": 12, "y": 0},
|
||||
{"x": 13, "y": 0},
|
||||
{"x": 14, "y": 0},
|
||||
{"x": 15, "y": 0},
|
||||
{"x": 16, "y": 0},
|
||||
{"x": 17, "y": 0},
|
||||
{"x": 18, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1},
|
||||
{"x": 1, "y": 1},
|
||||
{"x": 2, "y": 1},
|
||||
{"x": 3, "y": 1},
|
||||
{"x": 4, "y": 1},
|
||||
{"x": 5, "y": 1},
|
||||
{"x": 6, "y": 1},
|
||||
{"x": 7, "y": 1},
|
||||
{"x": 8, "y": 1},
|
||||
{"x": 9, "y": 1},
|
||||
{"x": 10, "y": 1},
|
||||
{"x": 11, "y": 1},
|
||||
{"x": 12, "y": 1},
|
||||
{"x": 13, "y": 1},
|
||||
{"x": 14, "y": 1},
|
||||
{"x": 15, "y": 1},
|
||||
{"x": 16, "y": 1},
|
||||
{"x": 17, "y": 1},
|
||||
{"x": 18, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.5},
|
||||
{"x": 1.5, "y": 2},
|
||||
{"x": 2.5, "y": 2},
|
||||
{"x": 3.5, "y": 2},
|
||||
{"x": 4.5, "y": 2},
|
||||
{"x": 5.5, "y": 2},
|
||||
{"x": 6.5, "y": 2},
|
||||
{"x": 7.5, "y": 2},
|
||||
{"x": 8.5, "y": 2},
|
||||
{"x": 9.5, "y": 2},
|
||||
{"x": 10.5, "y": 2},
|
||||
{"x": 11.5, "y": 2},
|
||||
{"x": 12.5, "y": 2},
|
||||
{"x": 15, "y": 2},
|
||||
{"x": 16, "y": 2},
|
||||
{"x": 17, "y": 2},
|
||||
{"x": 18, "y": 2, "h": 2},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.75},
|
||||
{"x": 1.75, "y": 3},
|
||||
{"x": 2.75, "y": 3},
|
||||
{"x": 3.75, "y": 3},
|
||||
{"x": 4.75, "y": 3},
|
||||
{"x": 5.75, "y": 3},
|
||||
{"x": 6.75, "y": 3},
|
||||
{"x": 7.75, "y": 3},
|
||||
{"x": 8.75, "y": 3},
|
||||
{"x": 9.75, "y": 3},
|
||||
{"x": 10.75, "y": 3},
|
||||
{"x": 11.75, "y": 3},
|
||||
{"x": 12.75, "y": 3},
|
||||
{"x": 13.75, "y": 2, "w": 1.25, "h": 2},
|
||||
{"x": 15, "y": 3},
|
||||
{"x": 16, "y": 3},
|
||||
{"x": 17, "y": 3},
|
||||
|
||||
{"x": 0, "y": 4, "w": 1.25},
|
||||
{"x": 1.25, "y": 4},
|
||||
{"x": 2.25, "y": 4},
|
||||
{"x": 3.25, "y": 4},
|
||||
{"x": 4.25, "y": 4},
|
||||
{"x": 5.25, "y": 4},
|
||||
{"x": 6.25, "y": 4},
|
||||
{"x": 7.25, "y": 4},
|
||||
{"x": 8.25, "y": 4},
|
||||
{"x": 9.25, "y": 4},
|
||||
{"x": 10.25, "y": 4},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 1.75},
|
||||
{"x": 14, "y": 4},
|
||||
{"x": 15, "y": 4},
|
||||
{"x": 16, "y": 4},
|
||||
{"x": 17, "y": 4},
|
||||
{"x": 18, "y": 4, "h": 2},
|
||||
|
||||
{"x": 0, "y": 5, "w": 1.25},
|
||||
{"x": 1.25, "y": 5, "w": 1.25},
|
||||
{"x": 2.5, "y": 5, "w": 1.25},
|
||||
{"x": 3.75, "y": 5, "w": 6.25},
|
||||
{"x": 10, "y": 5},
|
||||
{"x": 11, "y": 5},
|
||||
{"x": 12, "y": 5},
|
||||
{"x": 13, "y": 5},
|
||||
{"x": 14, "y": 5},
|
||||
{"x": 15, "y": 5},
|
||||
{"x": 16, "y": 5},
|
||||
{"x": 17, "y": 5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_96_with60": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0},
|
||||
{"x": 1, "y": 0},
|
||||
{"x": 2, "y": 0},
|
||||
{"x": 3, "y": 0},
|
||||
{"x": 4, "y": 0},
|
||||
{"x": 5, "y": 0},
|
||||
{"x": 6, "y": 0},
|
||||
{"x": 7, "y": 0},
|
||||
{"x": 8, "y": 0},
|
||||
{"x": 9, "y": 0},
|
||||
{"x": 10, "y": 0},
|
||||
{"x": 11, "y": 0},
|
||||
{"x": 12, "y": 0},
|
||||
{"x": 13, "y": 0},
|
||||
{"x": 14, "y": 0},
|
||||
{"x": 15, "y": 0},
|
||||
{"x": 16, "y": 0},
|
||||
{"x": 17, "y": 0},
|
||||
{"x": 18, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1},
|
||||
{"x": 1, "y": 1},
|
||||
{"x": 2, "y": 1},
|
||||
{"x": 3, "y": 1},
|
||||
{"x": 4, "y": 1},
|
||||
{"x": 5, "y": 1},
|
||||
{"x": 6, "y": 1},
|
||||
{"x": 7, "y": 1},
|
||||
{"x": 8, "y": 1},
|
||||
{"x": 9, "y": 1},
|
||||
{"x": 10, "y": 1},
|
||||
{"x": 11, "y": 1},
|
||||
{"x": 12, "y": 1},
|
||||
{"x": 13, "y": 1, "w": 2},
|
||||
{"x": 15, "y": 1},
|
||||
{"x": 16, "y": 1},
|
||||
{"x": 17, "y": 1},
|
||||
{"x": 18, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.5},
|
||||
{"x": 1.5, "y": 2},
|
||||
{"x": 2.5, "y": 2},
|
||||
{"x": 3.5, "y": 2},
|
||||
{"x": 4.5, "y": 2},
|
||||
{"x": 5.5, "y": 2},
|
||||
{"x": 6.5, "y": 2},
|
||||
{"x": 7.5, "y": 2},
|
||||
{"x": 8.5, "y": 2},
|
||||
{"x": 9.5, "y": 2},
|
||||
{"x": 10.5, "y": 2},
|
||||
{"x": 11.5, "y": 2},
|
||||
{"x": 12.5, "y": 2},
|
||||
{"x": 13.5, "y": 2, "w": 1.5},
|
||||
{"x": 15, "y": 2},
|
||||
{"x": 16, "y": 2},
|
||||
{"x": 17, "y": 2},
|
||||
{"x": 18, "y": 2, "h": 2},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.75},
|
||||
{"x": 1.75, "y": 3},
|
||||
{"x": 2.75, "y": 3},
|
||||
{"x": 3.75, "y": 3},
|
||||
{"x": 4.75, "y": 3},
|
||||
{"x": 5.75, "y": 3},
|
||||
{"x": 6.75, "y": 3},
|
||||
{"x": 7.75, "y": 3},
|
||||
{"x": 8.75, "y": 3},
|
||||
{"x": 9.75, "y": 3},
|
||||
{"x": 10.75, "y": 3},
|
||||
{"x": 11.75, "y": 3},
|
||||
{"x": 12.75, "y": 3, "w": 2.25},
|
||||
{"x": 15, "y": 3},
|
||||
{"x": 16, "y": 3},
|
||||
{"x": 17, "y": 3},
|
||||
|
||||
{"x": 0, "y": 4, "w": 2.25},
|
||||
{"x": 2.25, "y": 4},
|
||||
{"x": 3.25, "y": 4},
|
||||
{"x": 4.25, "y": 4},
|
||||
{"x": 5.25, "y": 4},
|
||||
{"x": 6.25, "y": 4},
|
||||
{"x": 7.25, "y": 4},
|
||||
{"x": 8.25, "y": 4},
|
||||
{"x": 9.25, "y": 4},
|
||||
{"x": 10.25, "y": 4},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 2.75},
|
||||
{"x": 15, "y": 4},
|
||||
{"x": 16, "y": 4},
|
||||
{"x": 17, "y": 4},
|
||||
{"x": 18, "y": 4, "h": 2}
|
||||
|
||||
{"x": 0, "y": 5, "w": 1.25},
|
||||
{"x": 1.25, "y": 5, "w": 1.25},
|
||||
{"x": 2.5, "y": 5, "w": 1.25},
|
||||
{"x": 3.75, "y": 5, "w": 6.25},
|
||||
{"x": 10, "y": 5, "w": 1.25},
|
||||
{"x": 11.25, "y": 5, "w": 1.25},
|
||||
{"x": 12.5, "y": 5, "w": 1.25},
|
||||
{"x": 13.75, "y": 5, "w": 1.25},
|
||||
{"x": 15, "y": 5, "w": 2},
|
||||
{"x": 17, "y": 5},
|
||||
]
|
||||
},
|
||||
"LAYOUT_96_with60_splitbs": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0},
|
||||
{"x": 1, "y": 0},
|
||||
{"x": 2, "y": 0},
|
||||
{"x": 3, "y": 0},
|
||||
{"x": 4, "y": 0},
|
||||
{"x": 5, "y": 0},
|
||||
{"x": 6, "y": 0},
|
||||
{"x": 7, "y": 0},
|
||||
{"x": 8, "y": 0},
|
||||
{"x": 9, "y": 0},
|
||||
{"x": 10, "y": 0},
|
||||
{"x": 11, "y": 0},
|
||||
{"x": 12, "y": 0},
|
||||
{"x": 13, "y": 0},
|
||||
{"x": 14, "y": 0},
|
||||
{"x": 15, "y": 0},
|
||||
{"x": 16, "y": 0},
|
||||
{"x": 17, "y": 0},
|
||||
{"x": 18, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1},
|
||||
{"x": 1, "y": 1},
|
||||
{"x": 2, "y": 1},
|
||||
{"x": 3, "y": 1},
|
||||
{"x": 4, "y": 1},
|
||||
{"x": 5, "y": 1},
|
||||
{"x": 6, "y": 1},
|
||||
{"x": 7, "y": 1},
|
||||
{"x": 8, "y": 1},
|
||||
{"x": 9, "y": 1},
|
||||
{"x": 10, "y": 1},
|
||||
{"x": 11, "y": 1},
|
||||
{"x": 12, "y": 1},
|
||||
{"x": 13, "y": 1},
|
||||
{"x": 14, "y": 1},
|
||||
{"x": 15, "y": 1},
|
||||
{"x": 16, "y": 1},
|
||||
{"x": 17, "y": 1},
|
||||
{"x": 18, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.5},
|
||||
{"x": 1.5, "y": 2},
|
||||
{"x": 2.5, "y": 2},
|
||||
{"x": 3.5, "y": 2},
|
||||
{"x": 4.5, "y": 2},
|
||||
{"x": 5.5, "y": 2},
|
||||
{"x": 6.5, "y": 2},
|
||||
{"x": 7.5, "y": 2},
|
||||
{"x": 8.5, "y": 2},
|
||||
{"x": 9.5, "y": 2},
|
||||
{"x": 10.5, "y": 2},
|
||||
{"x": 11.5, "y": 2},
|
||||
{"x": 12.5, "y": 2},
|
||||
{"x": 13.5, "y": 2, "w": 1.5},
|
||||
{"x": 15, "y": 2},
|
||||
{"x": 16, "y": 2},
|
||||
{"x": 17, "y": 2},
|
||||
{"x": 18, "y": 2, "h": 2},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.75},
|
||||
{"x": 1.75, "y": 3},
|
||||
{"x": 2.75, "y": 3},
|
||||
{"x": 3.75, "y": 3},
|
||||
{"x": 4.75, "y": 3},
|
||||
{"x": 5.75, "y": 3},
|
||||
{"x": 6.75, "y": 3},
|
||||
{"x": 7.75, "y": 3},
|
||||
{"x": 8.75, "y": 3},
|
||||
{"x": 9.75, "y": 3},
|
||||
{"x": 10.75, "y": 3},
|
||||
{"x": 11.75, "y": 3},
|
||||
{"x": 12.75, "y": 3, "w": 2.25},
|
||||
{"x": 15, "y": 3},
|
||||
{"x": 16, "y": 3},
|
||||
{"x": 17, "y": 3},
|
||||
|
||||
{"x": 0, "y": 4, "w": 2.25},
|
||||
{"x": 2.25, "y": 4},
|
||||
{"x": 3.25, "y": 4},
|
||||
{"x": 4.25, "y": 4},
|
||||
{"x": 5.25, "y": 4},
|
||||
{"x": 6.25, "y": 4},
|
||||
{"x": 7.25, "y": 4},
|
||||
{"x": 8.25, "y": 4},
|
||||
{"x": 9.25, "y": 4},
|
||||
{"x": 10.25, "y": 4},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 2.75},
|
||||
{"x": 15, "y": 4},
|
||||
{"x": 16, "y": 4},
|
||||
{"x": 17, "y": 4},
|
||||
{"x": 18, "y": 4, "h": 2}
|
||||
|
||||
{"x": 0, "y": 5, "w": 1.25},
|
||||
{"x": 1.25, "y": 5, "w": 1.25},
|
||||
{"x": 2.5, "y": 5, "w": 1.25},
|
||||
{"x": 3.75, "y": 5, "w": 6.25},
|
||||
{"x": 10, "y": 5, "w": 1.25},
|
||||
{"x": 11.25, "y": 5, "w": 1.25},
|
||||
{"x": 12.5, "y": 5, "w": 1.25},
|
||||
{"x": 13.75, "y": 5, "w": 1.25},
|
||||
{"x": 15, "y": 5, "w": 2},
|
||||
{"x": 17, "y": 5},
|
||||
]
|
||||
},
|
||||
"LAYOUT_96_with60_split_num0": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0},
|
||||
{"x": 1, "y": 0},
|
||||
{"x": 2, "y": 0},
|
||||
{"x": 3, "y": 0},
|
||||
{"x": 4, "y": 0},
|
||||
{"x": 5, "y": 0},
|
||||
{"x": 6, "y": 0},
|
||||
{"x": 7, "y": 0},
|
||||
{"x": 8, "y": 0},
|
||||
{"x": 9, "y": 0},
|
||||
{"x": 10, "y": 0},
|
||||
{"x": 11, "y": 0},
|
||||
{"x": 12, "y": 0},
|
||||
{"x": 13, "y": 0},
|
||||
{"x": 14, "y": 0},
|
||||
{"x": 15, "y": 0},
|
||||
{"x": 16, "y": 0},
|
||||
{"x": 17, "y": 0},
|
||||
{"x": 18, "y": 0},
|
||||
|
||||
{"x": 0, "y": 1},
|
||||
{"x": 1, "y": 1},
|
||||
{"x": 2, "y": 1},
|
||||
{"x": 3, "y": 1},
|
||||
{"x": 4, "y": 1},
|
||||
{"x": 5, "y": 1},
|
||||
{"x": 6, "y": 1},
|
||||
{"x": 7, "y": 1},
|
||||
{"x": 8, "y": 1},
|
||||
{"x": 9, "y": 1},
|
||||
{"x": 10, "y": 1},
|
||||
{"x": 11, "y": 1},
|
||||
{"x": 12, "y": 1},
|
||||
{"x": 13, "y": 1, "w": 2},
|
||||
{"x": 15, "y": 1},
|
||||
{"x": 16, "y": 1},
|
||||
{"x": 17, "y": 1},
|
||||
{"x": 18, "y": 1},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.5},
|
||||
{"x": 1.5, "y": 2},
|
||||
{"x": 2.5, "y": 2},
|
||||
{"x": 3.5, "y": 2},
|
||||
{"x": 4.5, "y": 2},
|
||||
{"x": 5.5, "y": 2},
|
||||
{"x": 6.5, "y": 2},
|
||||
{"x": 7.5, "y": 2},
|
||||
{"x": 8.5, "y": 2},
|
||||
{"x": 9.5, "y": 2},
|
||||
{"x": 10.5, "y": 2},
|
||||
{"x": 11.5, "y": 2},
|
||||
{"x": 12.5, "y": 2},
|
||||
{"x": 13.5, "y": 2, "w": 1.5},
|
||||
{"x": 15, "y": 2},
|
||||
{"x": 16, "y": 2},
|
||||
{"x": 17, "y": 2},
|
||||
{"x": 18, "y": 2, "h": 2},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.75},
|
||||
{"x": 1.75, "y": 3},
|
||||
{"x": 2.75, "y": 3},
|
||||
{"x": 3.75, "y": 3},
|
||||
{"x": 4.75, "y": 3},
|
||||
{"x": 5.75, "y": 3},
|
||||
{"x": 6.75, "y": 3},
|
||||
{"x": 7.75, "y": 3},
|
||||
{"x": 8.75, "y": 3},
|
||||
{"x": 9.75, "y": 3},
|
||||
{"x": 10.75, "y": 3},
|
||||
{"x": 11.75, "y": 3},
|
||||
{"x": 12.75, "y": 3, "w": 2.25},
|
||||
{"x": 15, "y": 3},
|
||||
{"x": 16, "y": 3},
|
||||
{"x": 17, "y": 3},
|
||||
|
||||
{"x": 0, "y": 4, "w": 2.25},
|
||||
{"x": 2.25, "y": 4},
|
||||
{"x": 3.25, "y": 4},
|
||||
{"x": 4.25, "y": 4},
|
||||
{"x": 5.25, "y": 4},
|
||||
{"x": 6.25, "y": 4},
|
||||
{"x": 7.25, "y": 4},
|
||||
{"x": 8.25, "y": 4},
|
||||
{"x": 9.25, "y": 4},
|
||||
{"x": 10.25, "y": 4},
|
||||
{"x": 11.25, "y": 4},
|
||||
{"x": 12.25, "y": 4, "w": 2.75},
|
||||
{"x": 15, "y": 4},
|
||||
{"x": 16, "y": 4},
|
||||
{"x": 17, "y": 4},
|
||||
{"x": 18, "y": 4, "h": 2},
|
||||
|
||||
{"x": 0, "y": 5, "w": 1.25},
|
||||
{"x": 1.25, "y": 5, "w": 1.25},
|
||||
{"x": 2.5, "y": 5, "w": 1.25},
|
||||
{"x": 3.75, "y": 5, "w": 6.25},
|
||||
{"x": 10, "y": 5, "w": 1.25},
|
||||
{"x": 11.25, "y": 5, "w": 1.25},
|
||||
{"x": 12.5, "y": 5, "w": 1.25},
|
||||
{"x": 13.75, "y": 5, "w": 1.25},
|
||||
{"x": 15, "y": 5},
|
||||
{"x": 16, "y": 5},
|
||||
{"x": 17, "y": 5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
38
keyboards/ymdk/melody96/keymaps/crilith/keymap.c
Normal file
38
keyboards/ymdk/melody96/keymaps/crilith/keymap.c
Normal file
|
@ -0,0 +1,38 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
DYNAMIC_MACRO_RANGE,
|
||||
};
|
||||
|
||||
#include "dynamic_macro.h"
|
||||
|
||||
#define KC_REC DYN_REC_START1
|
||||
#define KC_DONE DYN_REC_STOP
|
||||
#define KC_PLAY DYN_MACRO_PLAY1
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
LAYOUT(
|
||||
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_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL,
|
||||
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_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
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_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
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_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, TT(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
|
||||
|
||||
LAYOUT(
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______,
|
||||
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, KC_TAB,
|
||||
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TAB,
|
||||
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_PLAY, _______, KC_REC, KC_DONE, _______, _______, _______, _______, _______, _______),
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (!process_record_dynamic_macro(keycode, record)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
20
keyboards/ymdk/melody96/keymaps/default/keymap.c
Normal file
20
keyboards/ymdk/melody96/keymaps/default/keymap.c
Normal file
|
@ -0,0 +1,20 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
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_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL,
|
||||
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_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
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_P7, KC_P8, KC_P9, KC_PMNS,
|
||||
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_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
[1] = LAYOUT_all(
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
|
@ -0,0 +1,36 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum custom_keycodes {
|
||||
KC_P00 = SAFE_RANGE
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_96_with60_split_num0(
|
||||
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_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL,
|
||||
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_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
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_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
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_P4, KC_P5, KC_P6,
|
||||
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_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_P0, KC_P00, KC_PDOT
|
||||
),
|
||||
[1] = LAYOUT_96_with60_split_num0(
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_P00:
|
||||
if (record->event.pressed) {
|
||||
tap_code(KC_P0);
|
||||
tap_code(KC_P0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
34
keyboards/ymdk/melody96/keymaps/dvz/config.h
Normal file
34
keyboards/ymdk/melody96/keymaps/dvz/config.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
/* Copyright 2021 Milan Düwel
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define COMBO_COUNT 4
|
||||
#define COMBO_TERM 100
|
||||
|
||||
//#define UNICODE_SELECTED_MODES UC_WINC
|
||||
|
||||
#define RGBLIGHT_LAYERS
|
||||
#define RGBLIGHT_LAYER_BLINK
|
||||
|
||||
#undef RGBLIGHT_ANIMATIONS
|
||||
#define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
#define RGBLIGHT_EFFECT_SNAKE
|
||||
#define RGBLIGHT_EFFECT_TWINKLE
|
||||
|
161
keyboards/ymdk/melody96/keymaps/dvz/keymap.c
Normal file
161
keyboards/ymdk/melody96/keymaps/dvz/keymap.c
Normal file
|
@ -0,0 +1,161 @@
|
|||
/* Copyright 2021 Milan Düwel
|
||||
*
|
||||
* 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
|
||||
|
||||
/* This keymap is designed for use with a German keyboard layout.
|
||||
* It is essentially the same as the default via keymap but adds combo functionality to type umlauts as well as lighting layers for various actions.
|
||||
* Toggling the combo feature also disables KC_LGUI so both can be turned off for gaming. If you want to get rid of it without reflashing new firmware, use KC_RGUI instead.
|
||||
* Layers 2 and 3 are currently unused but are configurable within via.
|
||||
*/
|
||||
|
||||
enum combos {
|
||||
UML_AE,
|
||||
UML_OE,
|
||||
UML_UE,
|
||||
UML_SZ
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM ae_combo[] = {KC_A, KC_E, COMBO_END};
|
||||
const uint16_t PROGMEM oe_combo[] = {KC_O, KC_E, COMBO_END};
|
||||
const uint16_t PROGMEM ue_combo[] = {KC_U, KC_E, COMBO_END};
|
||||
const uint16_t PROGMEM sz_combo[] = {KC_S, KC_Y, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
[UML_AE] = COMBO(ae_combo, KC_QUOT),
|
||||
[UML_OE] = COMBO(oe_combo, KC_SCLN),
|
||||
[UML_UE] = COMBO(ue_combo, KC_LBRC),
|
||||
[UML_SZ] = COMBO(sz_combo, KC_MINS)
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
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_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL,
|
||||
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_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
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_P7, KC_P8, KC_P9, KC_PMNS,
|
||||
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_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
|
||||
|
||||
[1] = LAYOUT(
|
||||
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
|
||||
KC_TRNS, RGB_TOG, KC_TRNS, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
|
||||
BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CMB_TOG, BL_TOGG, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, KC_MUTE),
|
||||
|
||||
[2] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
|
||||
[3] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
};
|
||||
|
||||
/* The lighting layers feature a caps indicator as well as layer blinks for mute and the function layer (blink only to allow unhindered adjustment of the RGB backlight settings).
|
||||
Sadly these colours can not be customized within VIA.
|
||||
*/
|
||||
|
||||
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0, 1, HSV_RED},
|
||||
{15, 17, HSV_RED}
|
||||
);
|
||||
|
||||
const rgblight_segment_t PROGMEM my_function_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{10, 12, HSV_YELLOW}
|
||||
);
|
||||
|
||||
const rgblight_segment_t PROGMEM my_f2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0, 17, HSV_CYAN}
|
||||
);
|
||||
|
||||
const rgblight_segment_t PROGMEM my_f3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0, 17, HSV_PURPLE}
|
||||
);
|
||||
|
||||
const rgblight_segment_t PROGMEM my_flash_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0, 17, HSV_RED}
|
||||
);
|
||||
|
||||
// Now define the array of layers. Later layers take precedence
|
||||
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
||||
my_capslock_layer,
|
||||
my_function_layer, // Overrides caps lock layer
|
||||
my_f2_layer,
|
||||
my_f3_layer,
|
||||
my_flash_layer
|
||||
);
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
// Enable the LED layers
|
||||
rgblight_layers = my_rgb_layers;
|
||||
};
|
||||
|
||||
bool led_update_user(led_t led_state) {
|
||||
rgblight_set_layer_state(0, led_state.caps_lock);
|
||||
return true;
|
||||
};
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
//rgblight_set_layer_state(1, layer_state_cmp(state, 1));
|
||||
rgblight_set_layer_state(2, layer_state_cmp(state, 2));
|
||||
rgblight_set_layer_state(3, layer_state_cmp(state, 3));
|
||||
return state;
|
||||
};
|
||||
|
||||
// Note we user post_process_record_user because we want the state
|
||||
// after the flag has been flipped...
|
||||
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_CAPS:
|
||||
case KC_MUTE:
|
||||
case CMB_TOG:
|
||||
if (record->event.pressed) {
|
||||
rgblight_blink_layer(4, 250);
|
||||
}
|
||||
break;
|
||||
case MO(1):
|
||||
if (record->event.pressed) {
|
||||
rgblight_blink_layer(1, 250);
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_LGUI: //use combo toggle to disable the win key while gaming
|
||||
if (record->event.pressed) {
|
||||
if (is_combo_enabled()==false) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true; // Let QMK send the enter press/release events
|
||||
default:
|
||||
return true; // Process all other keycodes normally
|
||||
}
|
||||
};
|
3
keyboards/ymdk/melody96/keymaps/dvz/readme.md
Normal file
3
keyboards/ymdk/melody96/keymaps/dvz/readme.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# DvZ's VIA compatible keymap with rolling umlauts for german typists
|
||||
|
||||
Added by: [devilzmods](https://github.com/devilzmods)
|
5
keyboards/ymdk/melody96/keymaps/dvz/rules.mk
Normal file
5
keyboards/ymdk/melody96/keymaps/dvz/rules.mk
Normal file
|
@ -0,0 +1,5 @@
|
|||
VIA_ENABLE = yes
|
||||
LTO_ENABLE = yes # reduce firmware size
|
||||
COMBO_ENABLE = yes
|
||||
#UNICODE_ENABLE = yes
|
||||
BOOTLOADER = caterina
|
3
keyboards/ymdk/melody96/keymaps/konstantin/config.h
Normal file
3
keyboards/ymdk/melody96/keymaps/konstantin/config.h
Normal file
|
@ -0,0 +1,3 @@
|
|||
#pragma once
|
||||
|
||||
#define LAYER_FN
|
77
keyboards/ymdk/melody96/keymaps/konstantin/keymap.c
Normal file
77
keyboards/ymdk/melody96/keymaps/konstantin/keymap.c
Normal file
|
@ -0,0 +1,77 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
#include "konstantin.h"
|
||||
|
||||
static const HSV *colors[] = { &godspeed_blue, &godspeed_yellow };
|
||||
static const size_t cnum = sizeof colors / sizeof *colors;
|
||||
static size_t cidx = 0;
|
||||
|
||||
enum keycodes_keymap {
|
||||
RGB_SET = RANGE_KEYMAP,
|
||||
};
|
||||
|
||||
void eeconfig_init_keymap(void) {
|
||||
rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
|
||||
}
|
||||
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case RGB_SET:
|
||||
if (record->event.pressed) {
|
||||
cidx = (cidx + 1) % cnum;
|
||||
rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Base layer
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||
* │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│PSc│Ins│Hom│End│PgU│PgD│
|
||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||
* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │Del│NLk│P/ │P* │P- │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
|
||||
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bspc │P7 │P8 │P9 │ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤P+ │
|
||||
* │FnCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │P4 │P5 │P6 │ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
|
||||
* │LSft│RAG│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RSfRCt│ ↑ │P1 │P2 │P3 │ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┼───┼───┤PEn│
|
||||
* │LCtl│LGui│LAlt│ Space │RAlGu│FnFLk│ ← │ ↓ │ → │P0 │P. │ │
|
||||
* └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┴───┴───┴───┘
|
||||
*/
|
||||
[L_BASE] = LAYOUT(
|
||||
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_INS, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
|
||||
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_BSLS, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
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_BSPC, KC_P7, KC_P8, KC_P9, XXXXXXX,
|
||||
FN_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_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_LSFT, RAL_RGU, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSF_RCT, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, RAL_RGU, XXXXXXX, FN_FNLK, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
|
||||
/* Fn layer
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │Sys│SLk│Pau│Brk│Top│Btm│
|
||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||
* │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │RTg│ ÷ │ × │ − │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┼───┼───┼───┤
|
||||
* │ M4 │M2 │M↑ │M1 │M3 │M5 │ │UCM│ │Stp│Ply│Prv│Nxt│Clear│RH+│RS+│RV+│ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤RSt│
|
||||
* │ │M← │M↓ │M→ │MW↑│ │ │ │ │ │ │ │ │RH-│RS-│RV-│ │
|
||||
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤
|
||||
* │ │ │MA0│MA2│MW←│MW→│ │ │App│Vo-│Vo+│Mut│ │PgU│RMR│RMS│RMB│ │
|
||||
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┼───┼───┤RMP│
|
||||
* │ │DtPR│DtNA│ MW↓ │ │ │ │Hom│PgD│End│RM-│RM+│ │
|
||||
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
|
||||
*/
|
||||
[L_FN] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, SYSRQ, KC_SLCK, KC_PAUS, BREAK, TOP, BOTTOM,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, DIVIDE, TIMES, MINUS,
|
||||
KC_BTN4, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, KC_BTN5, _______, UC_MOD, _______, KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, CLEAR, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX,
|
||||
_______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SET,
|
||||
_______, _______, KC_ACL0, KC_ACL2, KC_WH_L, KC_WH_R, _______, _______, KC_APP, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_PGUP, RGB_M_R, RGB_M_SN,RGB_M_B, XXXXXXX,
|
||||
_______, DST_P_R, DST_N_A, KC_WH_D, _______, XXXXXXX, _______, KC_HOME, KC_PGDN, KC_END, RGB_RMOD,RGB_MOD, RGB_M_P
|
||||
),
|
||||
};
|
19
keyboards/ymdk/melody96/keymaps/konstantin/rules.mk
Normal file
19
keyboards/ymdk/melody96/keymaps/konstantin/rules.mk
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Generic features
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
COMMAND_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
NKRO_ENABLE = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
UNICODEMAP_ENABLE = yes
|
||||
|
||||
# Keyboard-specific features
|
||||
BACKLIGHT_ENABLE = no
|
||||
RGBLIGHT_ENABLE = yes
|
||||
VIA_ENABLE = yes
|
||||
|
||||
# Firmware size reduction
|
||||
GRAVE_ESC_ENABLE = no
|
||||
MAGIC_ENABLE = no
|
||||
SPACE_CADET_ENABLE = no
|
36
keyboards/ymdk/melody96/keymaps/via/keymap.c
Normal file
36
keyboards/ymdk/melody96/keymaps/via/keymap.c
Normal file
|
@ -0,0 +1,36 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
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_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL,
|
||||
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_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
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_P7, KC_P8, KC_P9, KC_PMNS,
|
||||
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_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
[1] = LAYOUT_all(
|
||||
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[2] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[3] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
2
keyboards/ymdk/melody96/keymaps/via/rules.mk
Normal file
2
keyboards/ymdk/melody96/keymaps/via/rules.mk
Normal file
|
@ -0,0 +1,2 @@
|
|||
VIA_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
22
keyboards/ymdk/melody96/keymaps/zunger/config.h
Normal file
22
keyboards/ymdk/melody96/keymaps/zunger/config.h
Normal file
|
@ -0,0 +1,22 @@
|
|||
/* Copyright 2018 MechMerlin
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Enable cmd-option-escape on mac.
|
||||
#define GRAVE_ESC_ALT_OVERRIDE
|
||||
|
||||
// place overrides here
|
489
keyboards/ymdk/melody96/keymaps/zunger/keymap.c
Normal file
489
keyboards/ymdk/melody96/keymaps/zunger/keymap.c
Normal file
|
@ -0,0 +1,489 @@
|
|||
/* Copyright 2019 Yonatan Zunger
|
||||
*
|
||||
* 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 <assert.h>
|
||||
|
||||
// This keymap is designed to make it easy to type in a wide variety of languages, as well as
|
||||
// generate mathematical symbols (à la Space Cadet).
|
||||
//
|
||||
// LAYER MAGIC (aka, typing in many alphabets)
|
||||
// This keyboard has three "base" layers: QWERTY, GREEK, and CADET. The GREEK and CADET layers
|
||||
// are actually full of Unicode points, and so which point they generate depends on things like
|
||||
// whether the shift key is down. To handle this, each of those layers is actually *two* layers, one
|
||||
// with and one without shift. In our main loop, we manage modifier state detection, as well as
|
||||
// layer switch detection, and pick the right layer on the fly.
|
||||
// Layers are selected with a combination of three keys. The "Greek" and "Cadet" keys act like
|
||||
// modifiers: When held down, they transiently select the indicated base layer. The "Layer Lock" key
|
||||
// locks the value of the base layer at whatever is currently held; so e.g., if you hold Greek +
|
||||
// Layer Lock, you'll stay in Greek mode until you hit Layer Lock again without any of the mods
|
||||
// held.
|
||||
// TODO: This system of layer selection is nice for math, but it's not very nice for actually
|
||||
// typing in multiple languages. It seems like a better plan will be to reserve one key for each
|
||||
// base layer -- maybe fn + F(n) -- which can either be held as a modifier or tapped to switch
|
||||
// layers. That will open up adding some more languages, like Yiddish, but to do this effectively
|
||||
// we'll need to find a good UI with which to show the currently selected layer. Need to check what
|
||||
// the melody96 has in the way of outputs (LEDs, sound, etc).
|
||||
//
|
||||
// ACCENT MAGIC (aka, typing conveniently in Romance languages)
|
||||
// We want to support easy typing of diacritical marks. We can't rely on the host OS for this,
|
||||
// because (e.g.) on MacOS, to make any of the other stuff work, we need to be using the Unicode
|
||||
// input method at the OS level, which breaks all the normal accent stuff on that end. So we do it
|
||||
// ourselves. Accents can actually be invoked in two different ways: one fast and very compatible,
|
||||
// one very versatile but with occasional compatibility problems.
|
||||
//
|
||||
// THE MAIN WAY: You can hit one of the "accent request" key patterns immediately *before* typing
|
||||
// a letter to be accented. It will emit the corresponding accented Unicode. For example, you can
|
||||
// hit fn-e to request an acute accent, followed by i, and it will output í, U+00ED LATIN SMALL
|
||||
// LETTER I WITH ACUTE. These "combined characters" are in Unicode normal form C (NFKC), which is
|
||||
// important because many European websites and apps, in particular, tend to behave very badly
|
||||
// (misunderstanding and/or crashing) when presented with characters in other forms! The catch is
|
||||
// that this only works for the various combinations of letters and accents found in the Latin-1
|
||||
// supplement block of Unicode -- basically, things you need for Western European languages.
|
||||
//
|
||||
// (NB: If you make an accent request followed by a letter which can't take the corresponding
|
||||
// accent, it will output the uncombined form of the accent followed by whatever you typed; so
|
||||
// e.g., if you hit fn-e followed by f, it will output ´f, U+00B4 ACUTE ACCENT followed by an
|
||||
// ordinary f. This is very similar to the default behavior of MacOS.)
|
||||
//
|
||||
// THE FLEXIBLE WAY: If you hit the accent request with a shift -- e.g., fn-shift-e -- it will
|
||||
// instead immediately output the corresponding *combining* Unicode accent mark, which will modify
|
||||
// the *previous* character you typed. For example, if you type i followed by fn-shift-e, it will
|
||||
// generate í. But don't be fooled by visual similarity: unlike the previous example, this one is
|
||||
// an ordinary i followed by U+0301 COMBINING ACUTE ACCENT. It's actually *two symbols*, and this
|
||||
// is Unicode normal form D (NFKD). Unlike NFKC, there are NFKD representations of far more
|
||||
// combinations of letters and accents, and it's easy to add more of these if you need. (The NFKC
|
||||
// representation of such combinations is identical to their NFKD representation)
|
||||
//
|
||||
// Programs that try to compare Unicode strings *should* first normalize them by converting them
|
||||
// all into one normal form or another, and there are functions in every programming language to
|
||||
// do this -- e.g., JavaScript's string.normalize() -- but lots of programmers fail to understand
|
||||
// this, and so write code that massively freaks out when it encounters the wrong form.
|
||||
//
|
||||
// The current accent request codes are modeled on the ones in MacOS.
|
||||
//
|
||||
// fn+` Grave accent (`)
|
||||
// fn+e Acute accent (´)
|
||||
// fn+i Circumflex (^)
|
||||
// fn+u Diaresis / umlaut / trema (¨)
|
||||
// fn+c Cedilla (¸)
|
||||
// fn+n Tilde (˜)
|
||||
//
|
||||
// Together, these functions make for a nice "polyglot" keyboard: one that can easily type in a wide
|
||||
// variety of languages, which is very useful for people who, well, need to type in a bunch of
|
||||
// languages.
|
||||
//
|
||||
// The major TODOs are:
|
||||
// - Update the layer selection logic (and add visible layer cues);
|
||||
// - Factor the code below so that the data layers are more clearly separated from the code logic,
|
||||
// so that other users of this keymap can easily add whichever alphabets they need without
|
||||
// having to deeply understand the implementation.
|
||||
|
||||
|
||||
enum custom_keycodes {
|
||||
// We provide special layer management keys:
|
||||
// GREEK triggers the Greek (aka "Front") layer, or the SHIFTGREEK layer when shift is held.
|
||||
// (Because we use Unicode, we need to implement shift-handling at the firmware level,
|
||||
// rather than the OS level like we do in the QWERTY layer)
|
||||
// CADET or GREEK+ALT triggers the Cadet (aka "Top") layer, or the SHIFTCADET layer when
|
||||
// shift is held.
|
||||
// LAYER_LOCK locks the "base" layer (i.e., QWERTY, GREEK, or CADET) to the value which is
|
||||
// pressed at the moment that it is being released. When a layer lock is set, the
|
||||
// analogous layer modifier key is reversed; e.g., if you lock the GREEK layer, then the
|
||||
// GREEK button bounces you back to QWERTY.
|
||||
//
|
||||
// We also parse the shift, alt, and caps lock keys to provide management of those which is
|
||||
// compatible with these various layers.
|
||||
KC_GREEK = SAFE_RANGE,
|
||||
KC_CADET,
|
||||
KC_LAYER_LOCK,
|
||||
|
||||
// These are the keycodes generated by the various "accent request" keystrokes.
|
||||
KC_ACCENT_START,
|
||||
KC_CGRV = KC_ACCENT_START, // Grave accent
|
||||
KC_CAGU, // Acute accent
|
||||
KC_CDIA, // Diaresis / umlaut / trema
|
||||
KC_CCIR, // Circumflex
|
||||
KC_CCED, // Cedilla
|
||||
KC_CTIL, // Tilde
|
||||
KC_ACCENT_END,
|
||||
};
|
||||
|
||||
enum layers_keymap {
|
||||
_QWERTY = 0,
|
||||
_FUNCTION,
|
||||
|
||||
_GREEK,
|
||||
_SHIFTGREEK,
|
||||
_CADET,
|
||||
_SHIFTCADET,
|
||||
};
|
||||
|
||||
// This is so that H(xxxx) has the same width as _______, which makes the grids more legible.
|
||||
#define H(x) UC(0x##x)
|
||||
#define MO_FN MO(_FUNCTION)
|
||||
#define KC_LLCK KC_LAYER_LOCK
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// NB: Using GESC for escape in the QWERTY layer as a temporary hack because I messed up the
|
||||
// switch on the KC_GRV key; change back to KC_ESC once this is fixed.
|
||||
[_QWERTY] = LAYOUT_hotswap(
|
||||
KC_GESC, 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_HOME, KC_END, KC_PGUP, KC_PGDN, KC_MPLY, 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_LLCK, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
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_P7, KC_P8, KC_P9,
|
||||
KC_LCTL, 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_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
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_P1, KC_P2, KC_P3,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO_FN, KC_GREEK,KC_CADET,KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
|
||||
/* The Greek layers. Shown here are the QWERTY layer (for visual reference) and the two Greek
|
||||
* layers.
|
||||
* ,----------------------------------------------------------------------------
|
||||
* | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|HOM|END|PGU|PGD|MUT|BRK| QWERTY
|
||||
* | ` | ₁ | ₂ | ₃ | ₄ | ₅ | ₆ | ₇ | ₈ | ₉ | ₀ | ₋ | ₊ | ₍ | ₎ | | | | | SHIFTGREEK
|
||||
* | ` | ¹ | ² | ³ | ⁴ | ⁵ | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | ⁻ | ⁺ | ⁽ | ⁾ | | | | | GREEK
|
||||
* |---------------------------------------------------------------------------|
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |LCK| / | * | - |
|
||||
* | ` | ¿ | | € | | | | | | | | | ≁ | BKSPC |LCK| | ⊗ | |
|
||||
* | | | | | | | | | | | | ∝ | ∼ | BKSPC |LCK| ⊘ | ⊙ | ⊖ |
|
||||
* |---------------------------------------------------------------------------|
|
||||
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | 7 | 8 | 9 | |
|
||||
* | | Θ | Ω | Ε | Ρ | Τ | Ψ | Υ | Ι | Ο | Π | | | | | | | |
|
||||
* | | θ | ω | ε | ρ | τ | ψ | υ | ι | ο | π | | | | | | | |
|
||||
* |-----------------------------------------------------------------------| + |
|
||||
* | CTRL | A | S | D | F | G | H | J | K | L | ; | ' | RET | 4 | 5 | 6 | ⊕ |
|
||||
* | CTRL | Α | Σ | Δ | Φ | Γ | Η | | Κ | Λ | … | ∴ | RET | | | | |
|
||||
* | CTRL | α | σ | δ | φ | γ | η | ϑ | κ | λ | ⋯ | ⋅ | RET | | | | |
|
||||
* |-----------------------------------------------------------------------|---|
|
||||
* | SHIFT | Z | X | C | V | B | N | M | , | . | / |SHFT | ↑ | 1 | 2 | 3 | |
|
||||
* | SHIFT | Ζ | Ξ | Χ | ✔ | Β | Ν | Μ | ≲ | ≳ | |SHFT | | | | | |
|
||||
* | SHIFT | ζ | ξ | χ | ς | β | ν | μ | ≪ | ≫ | ∫ |SHFT | | | | | |
|
||||
* |-----------------------------------------------------------------------|ENT|
|
||||
* | CTL | ALT| CMD| SPACE | α | β | γ | ← | ↓ | → | 0 | . | |
|
||||
* | CTL | ALT| CMD| SPACE | α | β | γ | | | | | | |
|
||||
* | CTL | ALT| CMD| SPACE | α | β | γ | | | | | | |
|
||||
* `---------------------------------------------------------------------------'
|
||||
*/
|
||||
[_GREEK] = LAYOUT_hotswap(
|
||||
KC_GRV, H(00b9), H(00b2), H(00b3), H(2074), H(2075), H(2076), H(2077), H(2078), H(2079), H(2070), H(207b), H(207a), H(207d), H(207e), XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
KC_GRV, _______, _______, _______, _______, _______, _______, _______, H(00b0), _______, _______, H(221d), H(223c), _______, _______, H(2298), H(2299), H(2296),
|
||||
_______, H(03b8), H(03c9), H(03b5), H(03c1), H(03c4), H(03c8), H(03c5), H(03b9), H(03bf), H(03c0), KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9,
|
||||
_______, H(03b1), H(03c3), H(03b4), H(03c6), H(03b3), H(03b7), H(03d1), H(03ba), H(03bb), H(22ef), H(22c5), _______, KC_P4, KC_P5, KC_P6, H(2295),
|
||||
_______, H(03b6), H(03be), H(03c7), H(03c2), H(03b2), H(03bd), H(03bc), H(226a), H(226b), H(222b), _______, _______, KC_P1, KC_P2, KC_P3,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT),
|
||||
[_SHIFTGREEK] = LAYOUT_hotswap(
|
||||
KC_GRV, H(2081), H(2082), H(2083), H(2084), H(2085), H(2086), H(2087), H(2088), H(2089), H(2080), H(208b), H(208a), H(208d), H(208e), XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
KC_GRV, H(00bf), _______, H(20ac), _______, _______, _______, _______, _______, _______, _______, XXXXXXX, H(2241), _______, _______, XXXXXXX, H(2297), XXXXXXX,
|
||||
_______, H(0398), H(03a9), H(0395), H(03a1), H(03a4), H(03a8), H(03a5), H(0399), H(039f), H(03a0), KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9,
|
||||
_______, H(0391), H(03a3), H(0394), H(03a6), H(0393), H(0397), XXXXXXX, H(039a), H(039b), H(2026), H(2234), _______, KC_P4, KC_P5, KC_P6, H(2295),
|
||||
_______, H(0396), H(039e), H(03a7), H(2714), H(0392), H(039d), H(039c), H(2272), H(2273), XXXXXXX, _______, _______, KC_P1, KC_P2, KC_P3,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT),
|
||||
/* The Cadet layers. Again, we show the QWERTY layer and the two cadet layers.
|
||||
* ,----------------------------------------------------------------------------
|
||||
* | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|HOM|END|PGU|PGD|MUT|BRK| QWERTY
|
||||
* | ∅ | | | | | | | | | | | | | | | | | | | SHIFTCADET
|
||||
* | ¬ | | | | | | | | | | | | | | | | | | | CADET
|
||||
* |---------------------------------------------------------------------------|
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | + | BKSPC |LCK| / | * | - |
|
||||
* | ` | ¡ | | £ | | | | | ° | | | * | ∓ | BKSPC |LCK| | | |
|
||||
* | | | | | | | | | | | | | ± | BKSPC |LCK| | × | |
|
||||
* |---------------------------------------------------------------------------|
|
||||
* | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | 7 | 8 | 9 | |
|
||||
* | | ℚ | | | ℝ | ⊆ | ⊇ | | ℵ | ∄ | | ∉ | | | * | * | * | |
|
||||
* | | ∧ | ∨ | ∩ | ∪ | ⊂ | ⊃ | ∀ | ∞ | ∃ | ∂ | ∈ | | | * | * | * | | [1]
|
||||
* |-----------------------------------------------------------------------| + |
|
||||
* | CTRL | A | S | D | F | G | H | J | K | L | ; | ' | RET | 4 | 5 | 6 | ⊕ |
|
||||
* | CTRL | Å | | ∇ | | ⇑ | ⇓ | ⇐ | ⇒ | ⇔ | | | RET | * | * | * | |
|
||||
* | CTRL | ⟘ | ⊤ | ⊢ | ⊣ | ↑ | ↓ | ← | → | ↔ | | | RET | * | * | * | | [1]
|
||||
* |-----------------------------------------------------------------------|---|
|
||||
* | SHIFT | Z | X | C | V | B | N | M | , | . | / |SHFT | ↑ | 1 | 2 | 3 | |
|
||||
* | SHIFT | ℤ | ℂ | | ≉ | ≢ | ℕ | | | | |SHFT | | * | * | * | |
|
||||
* | SHIFT | | ≠ | | ≈ | ≡ | ≤ | ≥ | | | ÷ |SHFT | | * | * | * | | [1]
|
||||
* |-----------------------------------------------------------------------|ENT|
|
||||
* | CTL | ALT| CMD| SPACE | α | β | γ | ← | ↓ | → | 0 | . | |
|
||||
* | CTL | ALT| CMD| SPACE | α | β | γ | | | | | | |
|
||||
* | CTL | ALT| CMD| SPACE | α | β | γ | | | | | | |
|
||||
* `---------------------------------------------------------------------------'
|
||||
* [1] CADET + numpad moves the mouse. SHIFT+CADET+NUMPAD moves it more quickly. CADET+5
|
||||
* clicks the mouse, and SHIFT+CADET+FIVE right-clicks.
|
||||
*/
|
||||
[_CADET] = LAYOUT_hotswap(
|
||||
H(00AC), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
KC_GRV, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, H(00b1), _______, _______, XXXXXXX, H(00d7), XXXXXXX,
|
||||
_______, H(2227), H(2228), H(2229), H(222a), H(2282), H(2283), H(2200), H(221e), H(2203), H(2202), H(2208), XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9,
|
||||
_______, H(22a5), H(22a4), H(22a2), H(22a3), H(2191), H(2193), H(2190), H(2192), H(2194), XXXXXXX, XXXXXXX, _______, KC_P4, KC_P5, KC_P6, XXXXXXX,
|
||||
_______, XXXXXXX, H(2260), XXXXXXX, H(2248), H(2261), H(2264), H(2265), XXXXXXX, XXXXXXX, H(00f7), _______, _______, KC_P1, KC_P2, KC_P3,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT),
|
||||
[_SHIFTCADET] = LAYOUT_hotswap(
|
||||
H(2205), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
KC_GRV, H(00a1), XXXXXXX, H(00a3), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, H(2213), _______, _______, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
_______, H(211a), XXXXXXX, XXXXXXX, H(211d), H(2286), H(2287), XXXXXXX, H(2135), H(2204), XXXXXXX, H(2209), XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9,
|
||||
_______, H(212b), XXXXXXX, H(2207), XXXXXXX, H(21d1), H(21d3), H(21d0), H(21d2), H(21d4), XXXXXXX, XXXXXXX, _______, KC_P4, KC_P5, KC_P6, XXXXXXX,
|
||||
_______, H(2124), H(2102), XXXXXXX, H(2249), H(2262), H(2115), XXXXXXX, XXXXXXX, XXXXXXX, H(00f7), _______, _______, KC_P1, KC_P2, KC_P3,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, KC_PENT),
|
||||
|
||||
// Function layer is mostly for keyboard meta-control operations, but also contains the combining
|
||||
// accent marks. These are deliberately placed to match where the analogous controls go on Mac OS.
|
||||
[_FUNCTION] = LAYOUT_hotswap(
|
||||
KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RESET,
|
||||
KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_CAGU, _______, _______, _______, KC_CDIA, KC_CCIR, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, UC_M_OS, UC_M_LN, UC_M_WI, UC_M_BS, UC_M_WC, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_CCED, _______, _______, KC_CTIL, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Accent implementation
|
||||
//
|
||||
// In the body of process_record_user, we store an "accent_request", which is the accent keycode if
|
||||
// one was just selected, or zero otherwise. When the *next* key is hit, we look up whether the
|
||||
// accent request plus that next keycode (plus the state of the shift key) together amount to an
|
||||
// interesting combined (NFKC) character, and if so, emit it; otherwise, we emit the accent as a
|
||||
// separate character and then process the next key normally. The resulting UI behavior is similar
|
||||
// to that of the combining accent keys in MacOS.
|
||||
//
|
||||
// We store two arrays, depending on whether shift is or isn't held. Each is two-dimensional, with
|
||||
// its outer key by the next keycode struck, and the inner key by the accent requested. The outer
|
||||
// array has KC_Z + 1 as its upper bound, so that we can save memory by only coding alphabetic keys.
|
||||
// The contents are either Unicode code points, or zero to indicate that we don't have a point for
|
||||
// this combination.
|
||||
|
||||
#define KC_NUM_ACCENTS (KC_ACCENT_END - KC_ACCENT_START)
|
||||
#define KC_NUM_SLOTS (KC_Z + 1)
|
||||
|
||||
const uint16_t PROGMEM unshifted_accents[KC_NUM_SLOTS][KC_NUM_ACCENTS] = {
|
||||
// KC_CGRV, KC_CAGU, KC_CDIA, KC_CCIR, KC_CCED, KC_CTIL
|
||||
[KC_A] = { 0x00e0, 0x00e1, 0x00e4, 0x00e2, 0, 0x00e3 },
|
||||
[KC_E] = { 0x00e8, 0x00e9, 0x00eb, 0x00ea, 0, 0 },
|
||||
[KC_I] = { 0x00ec, 0x00ed, 0x00ef, 0x00ee, 0, 0 },
|
||||
[KC_O] = { 0x00f2, 0x00f3, 0x00f6, 0x00f4, 0, 0x00f5 },
|
||||
[KC_U] = { 0x00f9, 0x00fa, 0x00fc, 0x00fb, 0, 0 },
|
||||
[KC_Y] = { 0, 0, 0x00ff, 0, 0, 0 },
|
||||
[KC_N] = { 0, 0, 0, 0, 0, 0x00f1 },
|
||||
[KC_C] = { 0, 0, 0, 0, 0x00e7, 0 },
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM shifted_accents[KC_NUM_SLOTS][KC_NUM_ACCENTS] = {
|
||||
// KC_CGRV, KC_CAGU, KC_CDIA, KC_CCIR, KC_CCED, KC_CTIL
|
||||
[KC_A] = { 0x00c0, 0x00c1, 0x00c4, 0x00c2, 0, 0x00c3 },
|
||||
[KC_E] = { 0x00c8, 0x00c9, 0x00cb, 0x00ca, 0, 0 },
|
||||
[KC_I] = { 0x00cc, 0x00cd, 0x00cf, 0x00ce, 0, 0 },
|
||||
[KC_O] = { 0x00d2, 0x00d3, 0x00d6, 0x00d4, 0, 0x00d5 },
|
||||
[KC_U] = { 0x00d9, 0x00da, 0x00dc, 0x00db, 0, 0 },
|
||||
[KC_Y] = { 0, 0, 0x00df, 0, 0, 0 },
|
||||
[KC_N] = { 0, 0, 0, 0, 0, 0x00d1 },
|
||||
[KC_C] = { 0, 0, 0, 0, 0x00c7, 0 },
|
||||
};
|
||||
|
||||
// The uncombined and combined forms of the accents, for when we want to emit them as single
|
||||
// characters.
|
||||
const uint16_t PROGMEM uncombined_accents[KC_NUM_ACCENTS] = {
|
||||
[KC_CGRV - KC_ACCENT_START] = 0x0060,
|
||||
[KC_CAGU - KC_ACCENT_START] = 0x00b4,
|
||||
[KC_CDIA - KC_ACCENT_START] = 0x00a8,
|
||||
[KC_CCIR - KC_ACCENT_START] = 0x005e,
|
||||
[KC_CCED - KC_ACCENT_START] = 0x00b8,
|
||||
[KC_CTIL - KC_ACCENT_START] = 0x02dc,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM combined_accents[KC_NUM_ACCENTS] = {
|
||||
[KC_CGRV - KC_ACCENT_START] = 0x0300,
|
||||
[KC_CAGU - KC_ACCENT_START] = 0x0301,
|
||||
[KC_CDIA - KC_ACCENT_START] = 0x0308,
|
||||
[KC_CCIR - KC_ACCENT_START] = 0x0302,
|
||||
[KC_CCED - KC_ACCENT_START] = 0x0327,
|
||||
[KC_CTIL - KC_ACCENT_START] = 0x0303,
|
||||
};
|
||||
|
||||
// This function manages keypresses that happen after an accent has been selected by an earlier
|
||||
// keypress.
|
||||
// Args:
|
||||
// accent_key: The accent key which was earlier selected. This must be in the range
|
||||
// [KC_ACCENT_START, KC_ACCENT_END).
|
||||
// keycode: The keycode which was just pressed.
|
||||
// is_shifted: The current shift state (as set by a combination of shift and caps lock)
|
||||
// force_no_accent: If true, we're in a situation where we want to force there to be no
|
||||
// accent combination -- if e.g. we're in a non-QWERTY layer, or if other modifier keys
|
||||
// are held.
|
||||
//
|
||||
// Returns true if the keycode has been completely handled by this function (and so should not be
|
||||
// processed further by process_record_user) or false otherwise.
|
||||
bool process_key_after_accent(
|
||||
uint16_t accent_key,
|
||||
uint16_t keycode,
|
||||
bool is_shifted,
|
||||
bool force_no_accent
|
||||
) {
|
||||
assert(accent_key >= KC_ACCENT_START);
|
||||
assert(accent_key < KC_ACCENT_END);
|
||||
const int accent_index = accent_key - KC_ACCENT_START;
|
||||
|
||||
// If the keycode is outside A..Z, or force_no_accent is set, we know we shouldn't even bother
|
||||
// with a table lookup.
|
||||
if (keycode <= KC_Z && !force_no_accent) {
|
||||
// Pick the correct array. Because this is progmem, we're going to need to do the
|
||||
// two-dimensional array indexing by hand, and so we just cast it to a single-dimensional array.
|
||||
const uint16_t *points = (const uint16_t*)(is_shifted ? shifted_accents : unshifted_accents);
|
||||
const uint16_t code_point = pgm_read_word_near(points + KC_NUM_ACCENTS * keycode + accent_index);
|
||||
if (code_point) {
|
||||
register_unicode(code_point);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// If we get here, there was no accent match. Emit the accent as its own character, and then let
|
||||
// the caller figure out what to do next.
|
||||
register_unicode(pgm_read_word_near(uncombined_accents + accent_index));
|
||||
return false;
|
||||
}
|
||||
|
||||
// Layer bitfields.
|
||||
#define GREEK_LAYER (1UL << _GREEK)
|
||||
#define SHIFTGREEK_LAYER (1UL << _SHIFTGREEK)
|
||||
#define CADET_LAYER (1UL << _CADET)
|
||||
#define SHIFTCADET_LAYER (1UL << _SHIFTCADET)
|
||||
// The layers we don't touch.
|
||||
#define LAYER_MASK ~(GREEK_LAYER|SHIFTGREEK_LAYER|CADET_LAYER|SHIFTCADET_LAYER)
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
// We track these persistent globals and manage them on our own, rather than trying to rely on
|
||||
// get_mods or the like, because this function is called *before* that's updated!
|
||||
static bool shift_held = false;
|
||||
static bool alt_held = false;
|
||||
static bool ctrl_held = false;
|
||||
static bool super_held = false;
|
||||
static bool greek_held = false;
|
||||
static bool cadet_held = false;
|
||||
|
||||
// These are where we remember the values of lock states.
|
||||
static bool shift_lock = false;
|
||||
static int layer_lock = _QWERTY;
|
||||
|
||||
// The accent request, or zero if there isn't one.
|
||||
static uint16_t accent_request = 0;
|
||||
|
||||
// If this is set to true, don't trigger any handling of pending accent requests. That's what we
|
||||
// want to do if e.g. the user just hit the shift key or something.
|
||||
bool ignore_accent_change = !record->event.pressed;
|
||||
|
||||
// Step 1: Process any modifier key state changes, so we can maintain that state.
|
||||
if (keycode == KC_LSHIFT || keycode == KC_RSHIFT) {
|
||||
shift_held = record->event.pressed;
|
||||
ignore_accent_change = true;
|
||||
} else if (keycode == KC_LALT || keycode == KC_RALT) {
|
||||
alt_held = record->event.pressed;
|
||||
ignore_accent_change = true;
|
||||
} else if (keycode == KC_LCTRL || keycode == KC_RCTRL) {
|
||||
ctrl_held = record->event.pressed;
|
||||
ignore_accent_change = true;
|
||||
} else if (keycode == KC_LGUI || keycode == KC_RGUI) {
|
||||
super_held = record->event.pressed;
|
||||
ignore_accent_change = true;
|
||||
} else if (keycode == KC_GREEK) {
|
||||
greek_held = record->event.pressed;
|
||||
ignore_accent_change = true;
|
||||
} else if (keycode == KC_CADET) {
|
||||
cadet_held = record->event.pressed;
|
||||
ignore_accent_change = true;
|
||||
}
|
||||
|
||||
// Step 2: Figure out which layer we're supposed to be in, by transforming all the prior stuff
|
||||
// into layer requests.
|
||||
const bool greek_request = (greek_held && !alt_held);
|
||||
const bool cadet_request = (cadet_held || (greek_held && alt_held));
|
||||
|
||||
// Now, handle the lock keys. We store next_layer_lock in a local variable so that we can
|
||||
// determine the layer to pick right now before we update layer_lock.
|
||||
int next_layer_lock = layer_lock;
|
||||
if (keycode == KC_CAPS) {
|
||||
// If we're in QWERTY mode, caps lock is already going to be managed by the host OS, but by
|
||||
// tracking it ourselves we can also usefully apply it to the GREEK and CADET layers.
|
||||
if (record->event.pressed) {
|
||||
shift_lock = !shift_lock;
|
||||
}
|
||||
} else if (keycode == KC_LAYER_LOCK) {
|
||||
if (record->event.pressed) {
|
||||
if (cadet_request) {
|
||||
next_layer_lock = _CADET;
|
||||
} else if (greek_request) {
|
||||
next_layer_lock = _GREEK;
|
||||
} else {
|
||||
next_layer_lock = _QWERTY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// OK! Now we know which buttons are being held, and the current and upcoming states of the locks.
|
||||
// We can compute our new base layer. Remember that the CADET and GREEK keys act as their own
|
||||
// antonyms if they match the layer lock -- e.g., if you have CADET locked, then CADET+X generates
|
||||
// QWERTY-X.
|
||||
int base_layer;
|
||||
if (cadet_request) {
|
||||
base_layer = (layer_lock == _CADET ? _QWERTY : _CADET);
|
||||
} else if (greek_request) {
|
||||
base_layer = (layer_lock == _GREEK ? _QWERTY : _GREEK);
|
||||
} else {
|
||||
base_layer = layer_lock;
|
||||
}
|
||||
|
||||
const bool shifted = (shift_held != shift_lock);
|
||||
int actual_layer;
|
||||
if (base_layer == _CADET) {
|
||||
actual_layer = (shifted ? _SHIFTCADET : _CADET);
|
||||
} else if (base_layer == _GREEK) {
|
||||
actual_layer = (shifted ? _SHIFTGREEK : _GREEK);
|
||||
} else {
|
||||
// We don't do shifting for the QWERTY layer, since for that we emit USB HID codes and shifting
|
||||
// is managed by the host OS.
|
||||
actual_layer = _QWERTY;
|
||||
}
|
||||
|
||||
// And now we can update the layer lock and the actual firmware layer selector.
|
||||
layer_lock = next_layer_lock;
|
||||
layer_state_t new_layer_state = (layer_state & LAYER_MASK) | (1UL << actual_layer);
|
||||
if (new_layer_state != layer_state) {
|
||||
layer_state_set(new_layer_state);
|
||||
}
|
||||
|
||||
// Step 3: Handle accents. If there's a pending accent request, process it. If what the user just
|
||||
// hit creates a new accent request, update the pending state for the next keypress.
|
||||
if (!ignore_accent_change && accent_request && record->event.pressed) {
|
||||
// Only do the accent stuff if we're in the QWERTY layer and we aren't modifying something.
|
||||
const bool force_no_accent = (
|
||||
actual_layer != _QWERTY ||
|
||||
ctrl_held ||
|
||||
super_held ||
|
||||
alt_held
|
||||
);
|
||||
const uint16_t old_accent = accent_request;
|
||||
accent_request = 0;
|
||||
if (process_key_after_accent(old_accent, keycode, shifted, force_no_accent)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// And if a new accent request just arrived, update accent_request.
|
||||
if (keycode >= KC_ACCENT_START && keycode < KC_ACCENT_END && record->event.pressed) {
|
||||
if (shifted) {
|
||||
// Shift + accent request generates the combining accent key, and leaves accent_request alone.
|
||||
register_unicode(pgm_read_word_near(combined_accents + keycode - KC_ACCENT_START));
|
||||
return false;
|
||||
} else {
|
||||
accent_request = keycode;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
78
keyboards/ymdk/melody96/keymaps/zunger/readme.md
Normal file
78
keyboards/ymdk/melody96/keymaps/zunger/readme.md
Normal file
|
@ -0,0 +1,78 @@
|
|||
* The "Cadet-Style" keymap for the melody96.
|
||||
* Author: Yonatan Zunger (zunger@gmail.com)
|
||||
|
||||
This is an experimental keymap being used both for practical reasons (as my daily driver) and to
|
||||
work out the ideas of a "space-cadet-style" keyboard which can type text and mathematical symbols
|
||||
with equal ease. It's designed for anyone who frequently needs to do this outside of a LaTeX
|
||||
environment, or for anyone who loves the old "Space Cadet" keyboard! And it works at its best when
|
||||
you have actual Cadet keycaps (like SA Symbolics) installed, because those keycaps will actually
|
||||
show what you get.
|
||||
|
||||
The core idea of this keyboard is that, in addition to a QWERTY base layer and a function layer, it
|
||||
supports two additional base layers -- the GREEK layer (the analogue of the Space Cadet "Greek," or
|
||||
"Front," keys) and the CADET layer (the analogue of the Space Cadet "Top" keys). These layers use
|
||||
Unicode to generate all of the mathematical symbols you can find on a traditional Space Cadet
|
||||
layout, plus a bunch of extras.
|
||||
|
||||
Because Unicode can't be encoded using the traditional USB HID protocol, QMK does some clever but
|
||||
horrifying things to fool your OS. One consequence of this is that the shift key needs to be handled
|
||||
by the keyboard firmware, not the host OS. To handle this, we have two additional layers --
|
||||
SHIFTGREEK and SHIFTCADET -- and handle the flipping between all of these layers here in the
|
||||
firmware.
|
||||
|
||||
*The simple bit: Using this layout on a Melody96*
|
||||
|
||||
At the core of this layout are three special modifier keys and two special lock keys:
|
||||
|
||||
* The GREEK key, to the right of the spacebar, activates the GREEK layer. GREEK+SHIFT activates
|
||||
SHIFTGREEK. These keys generate Greek letters on the letter keys (thus the name), and a few
|
||||
mathematical symbols on other keys. They correspond to the notations on the front of traditional
|
||||
Space Cadet keys; if your capset doesn't include those (alas, most don't), they're the "pretty
|
||||
obvious" mappings.
|
||||
* The CADET key, to the right of GREEK, activates the CADET layer. These are the symbols above the
|
||||
letters on a Space Cadet layout. CADET+SHIFT activates the SHIFTCADET layer, with even more
|
||||
symbols.
|
||||
* The FUNCTION key, to the right of CADET, activates the function layer. This is where you have a
|
||||
reset mechanism, a selector for which Unicode input type you want, and so on.
|
||||
|
||||
Additionally, GREEK+ALT is equivalent to CADET. This is handy for other keyboards where you don't
|
||||
have room for this many modifiers.
|
||||
|
||||
The lock keys are:
|
||||
|
||||
* Caps lock, if you use it, will also act as a "shift lock" for the Greek and Cadet layers. Shift
|
||||
lock is slightly different, in that while it is engaged shift will _dis_engage it; that's actually
|
||||
pretty useful when typing math.
|
||||
* An additional "layer lock" key, by default where "num lock" usually goes, will lock the choice of
|
||||
base layer. To use it, hold down any invocation of the GREEK or CADET layers, or none at all, and
|
||||
hit lock; it will then put you in that layer. The corresponding modifier key will then toggle you
|
||||
back to the QWERTY layer. (So for example, if you hit GREEK+LAYER_LOCK and release them, you're
|
||||
now typing in Greek; the GREEK modifier would cause you to type QWERTY momentarily. To go back to
|
||||
ordinary QWERTY mode, you'd just hit LAYER_LOCK again with no modifiers held)
|
||||
|
||||
To see the full layout, check out the big comment in keymap.c.
|
||||
|
||||
*A less-simple bit: Adapting this to other keyboards*
|
||||
|
||||
This is really a canary for generic Cadet implementations. Before this can be made generic, a few
|
||||
things will have to happen:
|
||||
|
||||
(1) Instead of a fixed keymap, this has to be refactored into some kind of array showing the
|
||||
mappings of QWERTY-layer keys onto the appropriate code points in the GREEK and CADET layers, and
|
||||
some preprocessor magic needs to auto-transform this plus a traditional keymap for the QWERTY layer
|
||||
into keymaps for all five of the core layers. (Function layers would presumably be handled on a
|
||||
per-keyboard basis)
|
||||
|
||||
(2) The standard mapping of those should have some #define's to control things like whether there
|
||||
are physical F-keys (you would probably want to move superscript and subscripts onto the numbers if
|
||||
there weren't, and figure out what to do with the non-numeric super/sub keys), whether you actually
|
||||
want to enable GREEK+ALT=CADET, and so on;
|
||||
|
||||
(3) There should be support for controlling indicator LEDs based on the base layer selection,
|
||||
caps/shift lock state, and layer lock state, as well as for triggering audio on transitions;
|
||||
|
||||
(4) All the core fancy logic in process_record_user which implements the layer handling should be
|
||||
factored out into its own function, so that keyboards can easily reuse that, too.
|
||||
|
||||
This is a lovely TODO for future work, and could be particularly fun to go along with new releases
|
||||
of SA Symbolics and the like. Anyone interested in such things, ping me!
|
2
keyboards/ymdk/melody96/keymaps/zunger/rules.mk
Normal file
2
keyboards/ymdk/melody96/keymaps/zunger/rules.mk
Normal file
|
@ -0,0 +1,2 @@
|
|||
# You need Unicode for this map.
|
||||
UNICODE_ENABLE = yes # Unicode
|
1
keyboards/ymdk/melody96/melody96.c
Normal file
1
keyboards/ymdk/melody96/melody96.c
Normal file
|
@ -0,0 +1 @@
|
|||
#include "melody96.h"
|
233
keyboards/ymdk/melody96/melody96.h
Normal file
233
keyboards/ymdk/melody96/melody96.h
Normal file
|
@ -0,0 +1,233 @@
|
|||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define XXX KC_NO
|
||||
|
||||
/*
|
||||
* ┌────┬───┐ ┌───┬───┐
|
||||
* │10 │11 │ │A3 │A6 │
|
||||
* └────┴───┘ └───┴───┘
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||
* │50 │51 │52 │53 │54 │55 │56 │57 │58 │B8 │B7 │B5 │B4 │B3 │B6 │B2 │B1 │B0 │63 │
|
||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┼───┼───┼───┤
|
||||
* │40 │41 │42 │43 │44 │45 │46 │47 │48 │A8 │A7 │A5 │A4 │A6 │A2 │A1 │A0 │64 │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┼───┼───┼───┤ ┌─────┐ ┌───┐
|
||||
* │30 │31 │32 │33 │34 │35 │36 │37 │38 │98 │97 │95 │94 │93 │96 │92 │91 │80 │ │93 │ │90 │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┼───┼───┤ │ ┌──┴┐ │ ├───┤
|
||||
* │20 │21 │22 │23 │24 │25 │26 │27 │28 │88 │87 │85 │84 │86 │82 │81 │ │ │84 │ │ │80 │
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┼───┼───┼───┤ ├───┼────┘ └───┘
|
||||
* │10 │12 │13 │14 │15 │16 │17 │18 │78 │77 │75 │74 │73 │76 │72 │71 │60 │ │70 │
|
||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┴───┼───┤ │ ├───┤
|
||||
* │00 │01 │02 │06 │08 │07 │05 │04 │03 │62 │61 │ │ │60 │
|
||||
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───────┴───┴───┘ └───┘
|
||||
* ┌──────────┬───┬───┐
|
||||
* │74 │66 │62 │
|
||||
* └──────────┴───┴───┘
|
||||
* ┌────┬────┬────┬────────────────────────┬─────┬─────┬───┬───┐
|
||||
* │00 │01 │02 │06 │08 │05 │04 │03 │
|
||||
* └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┘
|
||||
* ┌────┬────┬────┬─────────────────────────────┬────┬────┬────┐
|
||||
* │00 │01 │02 │06 │08 │07 │04 │03 │
|
||||
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
* ┌─────┬─────┬───────────────────────────┬─────┬─────┬───┬───┐
|
||||
* │00 │01 │06 │08 │05 │04 │03 │
|
||||
* └─────┴─────┴───────────────────────────┴─────┴─────┴───┴───┘
|
||||
* ┌─────┬─────┬───────────────────────────┬────┬────┬────┬────┐
|
||||
* │00 │01 │06 │08 │07 │04 │03 │
|
||||
* └─────┴─────┴───────────────────────────┴────┴────┴────┴────┘
|
||||
* ┌─────┬─────┬───────────────────────────┬───┬───┬───┬───┬───┐
|
||||
* │00 │01 │06 │08 │07 │05 │04 │03 │
|
||||
* └─────┴─────┴───────────────────────────┴───┴───┴───┴───┴───┘
|
||||
* ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
|
||||
* │00 │01 │02 │06 │07 │04 │03 │
|
||||
* └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
|
||||
* ┌─────┬───┬─────┬───────────────────────────┬───┬───┬───┬───┐
|
||||
* │00 │01 │02 │06 │07 │05 │04 │03 │
|
||||
* └─────┴───┴─────┴───────────────────────────┴───┴───┴───┴───┘
|
||||
* ┌─────┬───┬─────┬───────────────────────┬─────┬─────┬───┬───┐
|
||||
* │00 │01 │02 │06 │08 │05 │04 │03 │
|
||||
* └─────┴───┴─────┴───────────────────────┴─────┴─────┴───┴───┘
|
||||
* ┌─────┬───┬─────┬───────────────────────┬───┬───┬───┬───┬───┐
|
||||
* │00 │01 │02 │06 │08 │07 │05 │04 │03 │
|
||||
* └─────┴───┴─────┴───────────────────────┴───┴───┴───┴───┴───┘
|
||||
* ┌─────┬───┬─────┬───────────────────────┬────┬────┬────┬────┐
|
||||
* │00 │01 │02 │06 │08 │07 │04 │03 │
|
||||
* └─────┴───┴─────┴───────────────────────┴────┴────┴────┴────┘
|
||||
*/
|
||||
|
||||
#define LAYOUT_all( \
|
||||
k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k93, k96, k92, k91, k90, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k84, k86, k82, k81, k80, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k70, \
|
||||
k00, k01, k02, k06, k08, k07, k05, k04, k03, k66, k62, k61, k60 \
|
||||
) { \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
|
||||
{ k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
|
||||
{ k70, k71, k72, k73, k74, k75, k76, k77, k78 }, \
|
||||
{ k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
|
||||
{ k90, k91, k92, k93, k94, k95, k96, k97, k98 }, \
|
||||
{ kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8 }, \
|
||||
{ kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_96_ansi( \
|
||||
k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k93, k96, k92, k91, k80, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k84, k86, k82, k81, \
|
||||
k10, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
|
||||
k00, k01, k02, k06, k08, k07, k05, k04, k03, k66, k62, k61 \
|
||||
) { \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
|
||||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
|
||||
{ k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
|
||||
{ XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
|
||||
{ k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
|
||||
{ XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
|
||||
{ kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
|
||||
{ kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_96_ansi_splitbs( \
|
||||
k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k93, k96, k92, k91, k80, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k84, k86, k82, k81, \
|
||||
k10, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
|
||||
k00, k01, k02, k06, k08, k07, k05, k04, k03, k66, k62, k61 \
|
||||
) { \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
|
||||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
|
||||
{ k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
|
||||
{ XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
|
||||
{ k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
|
||||
{ XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
|
||||
{ kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
|
||||
{ kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_96_iso( \
|
||||
k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k96, k92, k91, k80, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k84, k93, k86, k82, k81, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
|
||||
k00, k01, k02, k06, k08, k07, k05, k04, k03, k66, k62, k61 \
|
||||
) { \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
|
||||
{ k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
|
||||
{ XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
|
||||
{ k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
|
||||
{ XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
|
||||
{ kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
|
||||
{ kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_96_iso_splitbs( \
|
||||
k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k96, k92, k91, k80, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k84, k93, k86, k82, k81, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k73, k76, k72, k71, k60, \
|
||||
k00, k01, k02, k06, k08, k07, k05, k04, k03, k66, k62, k61 \
|
||||
) { \
|
||||
{ k00, k01, k02, k03, k04, k05, k06, k07, k08 }, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17, k18 }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
|
||||
{ k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
|
||||
{ XXX, k71, k72, k73, k74, k75, k76, k77, k78 }, \
|
||||
{ k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
|
||||
{ XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
|
||||
{ kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8 }, \
|
||||
{ kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_96_with60( \
|
||||
k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k84, k96, k92, k91, k80, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k93, k86, k82, k81, \
|
||||
k10, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k76, k72, k71, k60,\
|
||||
k00, k01, k02, k06, k08, k07, k04, k03, k62, k61 \
|
||||
) { \
|
||||
{ k00, k01, k02, k03, k04, XXX, k06, k07, k08 }, \
|
||||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
|
||||
{ k60, k61, k62, k63, k64, XXX, XXX, XXX, XXX }, \
|
||||
{ XXX, k71, k72, XXX, k74, k75, k76, k77, k78 }, \
|
||||
{ k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
|
||||
{ XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
|
||||
{ kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
|
||||
{ kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_96_with60_splitbs( \
|
||||
k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA3, kA6, kA2, kA1, kA0, k64, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k84, k96, k92, k91, k80, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k93, k86, k82, k81, \
|
||||
k10, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k76, k72, k71, k60, \
|
||||
k00, k01, k02, k06, k08, k07, k04, k03, k62, k61 \
|
||||
) { \
|
||||
{ k00, k01, k02, k03, k04, XXX, k06, k07, k08 }, \
|
||||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
|
||||
{ k60, k61, k62, k63, k64, XXX, XXX, XXX, XXX }, \
|
||||
{ XXX, k71, k72, XXX, k74, k75, k76, k77, k78 }, \
|
||||
{ k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
|
||||
{ XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
|
||||
{ kA0, kA1, kA2, kA3, kA4, kA5, kA6, kA7, kA8 }, \
|
||||
{ kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
|
||||
}
|
||||
|
||||
#define LAYOUT_96_with60_split_num0( \
|
||||
k50, k51, k52, k53, k54, k55, k56, k57, k58, kB8, kB7, kB5, kB4, kB3, kB6, kB2, kB1, kB0, k63, \
|
||||
k40, k41, k42, k43, k44, k45, k46, k47, k48, kA8, kA7, kA5, kA4, kA6, kA2, kA1, kA0, k64, \
|
||||
k30, k31, k32, k33, k34, k35, k36, k37, k38, k98, k97, k95, k94, k84, k96, k92, k91, k80,\
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k88, k87, k85, k93, k86, k82, k81, \
|
||||
k10, k12, k13, k14, k15, k16, k17, k18, k78, k77, k75, k74, k76, k72, k71, k60, \
|
||||
k00, k01, k02, k06, k08, k07, k04, k03, k66, k62, k61 \
|
||||
) { \
|
||||
{ k00, k01, k02, k03, k04, XXX, k06, k07, k08 }, \
|
||||
{ k10, XXX, k12, k13, k14, k15, k16, k17, k18 }, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27, k28 }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37, k38 }, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47, k48 }, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
|
||||
{ k60, k61, k62, k63, k64, XXX, k66, XXX, XXX }, \
|
||||
{ XXX, k71, k72, XXX, k74, k75, k76, k77, k78 }, \
|
||||
{ k80, k81, k82, XXX, k84, k85, k86, k87, k88 }, \
|
||||
{ XXX, k91, k92, k93, k94, k95, k96, k97, k98 }, \
|
||||
{ kA0, kA1, kA2, XXX, kA4, kA5, kA6, kA7, kA8 }, \
|
||||
{ kB0, kB1, kB2, kB3, kB4, kB5, kB6, kB7, kB8 } \
|
||||
}
|
19
keyboards/ymdk/melody96/readme.md
Normal file
19
keyboards/ymdk/melody96/readme.md
Normal file
|
@ -0,0 +1,19 @@
|
|||
# YMDK Melody96
|
||||
|
||||

|
||||
|
||||
96-key Keyboard from YMDK. The PCB for this board is also commonly used in the NYM96.
|
||||
|
||||
* Keyboard Maintainer: [superuser41](https://github.com/kaylanm)
|
||||
* Hardware Supported: melody96
|
||||
* Hardware Availability: [YMDK on Geekhack, group buy closed](https://geekhack.org/index.php?topic=93614.0), [NYM96 on Massdrop](https://www.massdrop.com/buy/nym96-aluminum-mechanical-keyboard?mode=guest_open)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ymdk/melody96:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make melody96:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
18
keyboards/ymdk/melody96/rules.mk
Normal file
18
keyboards/ymdk/melody96/rules.mk
Normal file
|
@ -0,0 +1,18 @@
|
|||
# MCU name
|
||||
MCU = atmega32u4
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = atmel-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # Enable N-Key Rollover
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||
AUDIO_ENABLE = no # Audio output
|
Loading…
Add table
Add a link
Reference in a new issue