7 Commits

Author SHA1 Message Date
98f879ee45 Added SPOTLI to Iris keymap 2024-03-22 10:57:39 -05:00
bf829370bc Update keycodes.h to add SPOTLI 2024-03-22 09:59:00 -05:00
da320a4fbd Updated 2024-03-21 19:58:23 -05:00
9c299faa9b updated .gitignore and updated iris-kmk/main.py 2024-03-05 13:49:04 -06:00
dee1c1f7da Initial play with kb.py 2024-03-04 14:43:56 -06:00
07c9cab34e Adding skeleton for iris-kmk 2024-03-04 13:54:49 -06:00
b56ac10442 Updated for SN 2024-03-04 08:17:54 -06:00
9 changed files with 287 additions and 19 deletions

1
.gitignore vendored
View File

@@ -4,3 +4,4 @@ obj_*
*.map
build/
.DS_Store
.vscode/

View File

@@ -22,6 +22,14 @@ enum {
enum {
CUSTOM_KEYCODE_START = SAFE_RANGE,
WINDOWS,
COPY,
PASTE,
CUT,
UNDO,
REDO,
SALL,
SPOTLI,
M_PASS1,
M_PASS2,
M_PASS3,
@@ -41,9 +49,12 @@ enum {
#define NUM_SPC LT(_NUM, KC_SPC)
#define FUN_DEL LT(_FUN, KC_DEL)
#define QWERTY DF(_QWERTY)
#define COLEMAK DF(_COLEMAK_DH)
// 2 LEFT THUMB KEYS
#define FUN_TAB LT(_FUN, KC_TAB)
// 2 RIGHT THUMB KEYS
#define NUM_SPC LT(_NUM, KC_SPC)
// clang-format on
// clang-format on

View File

@@ -35,9 +35,9 @@
#define __________________NAV_L2____________________ _______, _______, _______, M_PASS3, M_PASS4
#define __________________NAV_L3____________________ _______, _______, _______, M_PASS2, M_PASS1
#define __________________NAV_R1____________________ _______, KC_PSTE, KC_COPY, KC_CUT, KC_UNDO
#define __________________NAV_R2____________________ KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
#define __________________NAV_R3____________________ _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END
#define __________________NAV_R1____________________ KC_CAPS, PASTE, COPY, CUT, UNDO
#define __________________NAV_R2____________________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______
#define __________________NAV_R3____________________ SALL, KC_HOME, KC_PGUP, KC_PGDN, KC_END
// NUM
@@ -70,4 +70,13 @@
// MOUSE
#define __________________MOU_R1____________________ _______, KC_PSTE, KC_COPY, KC_CUT, KC_UNDO
#define __________________MOU_R2____________________ KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
#define __________________MOU_R3____________________ KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R
#define __________________MOU_R3____________________ KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R
// COLEMAK-DH
#define __________________COLEML1____________________ Q_ESC, KC_W, KC_F, KC_P, KC_B
#define __________________COLEML2____________________ KC_A, KC_R, KC_S, KC_T, KC_G
#define __________________COLEML3____________________ KC_Z, KC_X, KC_C, KC_D, KC_V
#define __________________COLEMR1____________________ KC_J, KC_L, KC_U, KC_Y, KC_QUOT
#define __________________COLEMR2____________________ KC_M, KC_N, KC_E, KC_I, KC_O
#define __________________COLEMR3____________________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH

View File

@@ -1,11 +1,12 @@
#pragma once
typedef enum {
_BASE,
_QWERTY,
_NAV,
_NUM,
_SYM,
_FUN,
_MUS,
_MOUSE
_MOUSE,
_COLEMAK_DH
} layers_t;

View File

@@ -35,7 +35,7 @@ combo_t key_combos[] = {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_wrapper(
[_QWERTY] = LAYOUT_wrapper(
// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐
__________________BASE_L1____________________, __________________BASE_R1____________________,
// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤
@@ -253,8 +253,8 @@ static void render_status(void) {
oled_write_P(PSTR("\n"), false);
oled_write_P(PSTR("\n"), false);
switch (get_highest_layer(layer_state)) {
case _BASE:
oled_write_P(PSTR("BASE "), false);
case _QWERTY:
oled_write_P(PSTR("QWERTY "), false);
break;
case _NAV:
oled_write_P(PSTR("NAV "), false);
@@ -291,8 +291,70 @@ bool oled_task_user(void) {
#endif //OLED_ENABLE
uint8_t mod_state;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
static bool isWindows = false;
mod_state = get_mods();
switch (keycode) {
case WINDOWS:
if (record->event.pressed) {
isWindows = !isWindows;
}
return false;
case COPY:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_C));
} else {
tap_code16(LGUI(KC_C));
}
return false;
}
case PASTE:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_V));
} else {
tap_code16(LGUI(KC_V));
}
return false;
}
case CUT:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_X));
} else {
tap_code16(LGUI(KC_X));
}
return false;
}
case UNDO:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_Z));
} else {
tap_code16(LGUI(KC_Z));
}
return false;
}
case REDO:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_Y));
} else {
tap_code16(LSG(KC_Z));
}
return false;
}
case SALL:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_A));
} else {
tap_code16(LGUI(KC_A));
}
return false;
}
case M_PASS1:
if (record->event.pressed) {
SEND_STRING("P0plarLake!2023");
@@ -300,12 +362,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
case M_PASS2:
if (record->event.pressed) {
SEND_STRING("Thel0ve0fchrist!");
SEND_STRING("ThisisThel0ve0fchrist!");
}
return false;
case M_PASS3:
if (record->event.pressed) {
SEND_STRING("6754");
SEND_STRING("1029");
}
return false;
case M_PASS4:
@@ -318,6 +380,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
#ifdef ENCODER_ENABLE
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {

0
iris-kmk/README.md Normal file
View File

28
iris-kmk/kb.py Normal file
View File

@@ -0,0 +1,28 @@
import board
from kmk.extensions.LED import LED
from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard
from kmk.scanners import DiodeOrientation
class KMKKeyboard(_KMKKeyboard):
col_pins = (
board.GP2,
board.GP3,
board.GP29,
board.GP27,
board.GP6,
board.GP5,
)
row_pins = (
board.GP0,
board.GP1,
board.GP7,
board.GP16,
board.GP28,
)
diode_orientation = DiodeOrientation.COLUMNS
leds = LED(led_pin=[board.GP27, board.GP28])
_KMKKeyboard.extensions.append(leds)

23
iris-kmk/main.py Normal file
View File

@@ -0,0 +1,23 @@
from kb import KMKKeyboard
from kmk.extensions.media_keys import MediaKeys
from kmk.extensions.rgb import RGB, AnimationModes
from kmk.keys import KC
from kmk.modules.encoder import EncoderHandler
from kmk.modules.holdtap import HoldTap
from kmk.modules.layers import Layers
from kmk.modules.split import Split, SplitType
keyboard = KMKKeyboard()
keyboard.debug_enabled = True
keyboard.modules.append(Layers())
keyboard.modules.append(HoldTap())
keyboard.extensions.append(MediaKeys())
keyboard.keymap = [
[KC.A,]
]
if __name__ == '__main__':
keyboard.go()

View File

@@ -36,7 +36,7 @@ combo_t key_combos[] = {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_wrapper(
[_QWERTY] = LAYOUT_wrapper(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MUTE,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LCTL, __________________BASE_L2____________________, __________________BASE_R2____________________, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
KC_LSFT, __________________BASE_L3____________________,AS_TOGG, _______, __________________BASE_R3____________________, KC_RSFT,
KC_LSFT, __________________BASE_L3____________________,SPOTLI, _______, __________________BASE_R3____________________, KC_RSFT,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
___________THUMB_L3________, ___________THUMB_R3________
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, __________________NAV_L2____________________, __________________NAV_R2____________________, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______, __________________NAV_L3____________________, _______, _______, __________________NAV_R3____________________, _______,
_______, __________________NAV_L3____________________, WINDOWS, _______, __________________NAV_R3____________________, _______,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
___________THUMB_L3________, ___________THUMB_R3________
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
@@ -132,12 +132,87 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
___________THUMB_3__BLANK__, ___________THUMB_3__BLANK__
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
),
[_COLEMAK_DH] = LAYOUT_wrapper(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, KC_LPAD, KC_PSCR, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, __________________COLEML1____________________, __________________COLEMR1____________________, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, __________________COLEML2____________________, __________________COLEMR2____________________, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______, __________________COLEML3____________________, _______, _______, __________________COLEMR3____________________, _______,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
___________THUMB_3__BLANK__, ___________THUMB_3__BLANK__
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
)
};
uint8_t mod_state;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
static bool isWindows = false;
mod_state = get_mods();
switch (keycode) {
case WINDOWS:
if (record->event.pressed) {
isWindows = !isWindows;
}
return false;
case COPY:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_C));
} else {
tap_code16(LGUI(KC_C));
}
return false;
}
case PASTE:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_V));
} else {
tap_code16(LGUI(KC_V));
}
return false;
}
case CUT:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_X));
} else {
tap_code16(LGUI(KC_X));
}
return false;
}
case UNDO:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_Z));
} else {
tap_code16(LGUI(KC_Z));
}
return false;
}
case REDO:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_Y));
} else {
tap_code16(LSG(KC_Z));
}
return false;
}
case SALL:
if (record->event.pressed) {
if (isWindows) {
tap_code16(LCTL(KC_A));
} else {
tap_code16(LGUI(KC_A));
}
return false;
}
case M_PASS1:
if (record->event.pressed) {
SEND_STRING("P0plarLake!2023");
@@ -145,12 +220,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
case M_PASS2:
if (record->event.pressed) {
SEND_STRING("Thel0ve0fchrist!");
SEND_STRING("ThisisThel0ve0fchrist!");
}
return false;
case M_PASS3:
if (record->event.pressed) {
SEND_STRING("6754");
SEND_STRING("1029");
}
return false;
case M_PASS4:
@@ -158,16 +233,73 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
SEND_STRING("10242677");
}
return false;
case SPOTLI:
if (record->event.pressed) {
tap_code16(LGUI(KC_SPACE));
}
return false;
}
return true;
}
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_BASE] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_QWERTY] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_NAV] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(RGB_MOD, RGB_RMOD) },
[_NUM] = { ENCODER_CCW_CW(C(KC_LEFT), C(KC_RIGHT)), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(RGB_SAD, RGB_SAI), ENCODER_CCW_CW(KC_B, KC_B) },
[_SYM] = { ENCODER_CCW_CW(C(KC_TAB), S(C(KC_TAB))), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) },
[_MOUSE] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) },
[_FUN] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) },
[_MUS] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) },
[_COLEMAK_DH] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
};
// Onboard LED
#ifdef RGBLIGHT_ENABLE
// Configure LED
void keyboard_post_init_user(void) {
// Initialize RGB to static black
rgblight_enable_noeeprom();
rgblight_sethsv_noeeprom(HSV_BLACK);
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
}
// Change LED
void housekeeping_task_user(void) {
// Caps lock status
if (host_keyboard_led_state().caps_lock) {
rgblight_setrgb_at(4, 4, 0, 0);
} else {
// Layers
switch (get_highest_layer(layer_state | default_layer_state)) {
case 0:
rgblight_setrgb_at(4, 4, 4, 0);
break;
case 1:
rgblight_setrgb_at(4, 4, 4, 0);
break;
case 2:
rgblight_setrgb_at(4, 4, 4, 0);
break;
case 3:
rgblight_setrgb_at(4, 4, 4, 0);
break;
case 4:
rgblight_setrgb_at(0, 0, 4, 0);
break;
case 5:
rgblight_setrgb_at(0, 4, 0, 0);
break;
case 6:
rgblight_setrgb_at(0, 0, 4, 0);
break;
case 7:
rgblight_setrgb_at(0, 0, 4, 0);
break;
case 8:
rgblight_setrgb_at(0, 0, 4, 0);
break;
}
}
}
#endif