forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Keymap] New keymap for crkbd (qmk#6103)
* New keymap * Update keymap
- Loading branch information
Showing
3 changed files
with
328 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
/* | ||
This is the c configuration file for the keymap | ||
Copyright 2012 Jun Wako <[email protected]> | ||
Copyright 2015 Jack Humbert | ||
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 USE_MATRIX_I2C | ||
|
||
/* Select hand configuration */ | ||
|
||
#define MASTER_LEFT | ||
// #define MASTER_RIGHT | ||
// #define EE_HANDS | ||
|
||
#define SSD1306OLED | ||
|
||
#define USE_SERIAL_PD2 | ||
|
||
#define TAPPING_FORCE_HOLD | ||
#define TAPPING_TERM 150 | ||
|
||
#undef RGBLED_NUM | ||
#define RGBLIGHT_ANIMATIONS | ||
#define RGBLED_NUM 27 | ||
#define RGBLIGHT_LIMIT_VAL 120 | ||
#define RGBLIGHT_HUE_STEP 10 | ||
#define RGBLIGHT_SAT_STEP 17 | ||
#define RGBLIGHT_VAL_STEP 17 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,253 @@ | ||
#include QMK_KEYBOARD_H | ||
#include "bootloader.h" | ||
#ifdef PROTOCOL_LUFA | ||
#include "lufa.h" | ||
#include "split_util.h" | ||
#endif | ||
#ifdef SSD1306OLED | ||
#include "ssd1306.h" | ||
#endif | ||
|
||
extern keymap_config_t keymap_config; | ||
|
||
#ifdef RGBLIGHT_ENABLE | ||
//Following line allows macro to read current RGB settings | ||
extern rgblight_config_t rgblight_config; | ||
#endif | ||
|
||
extern uint8_t is_master; | ||
|
||
// Each layer gets a name for readability, which is then used in the keymap matrix below. | ||
// The underscores don't mean anything - you can have a layer called STUFF or any other name. | ||
// Layer names don't all need to be of the same length, obviously, and you can also skip them | ||
// entirely and just use numbers. | ||
enum layer_names { | ||
_QWERTY, | ||
_LOWER, | ||
_RAISE, | ||
_ADJUST | ||
}; | ||
|
||
enum custom_keycodes { | ||
QWERTY = SAFE_RANGE, | ||
LOWER, | ||
RAISE, | ||
ADJUST, | ||
BACKLIT, | ||
RGBRST | ||
}; | ||
|
||
#define KC_ KC_TRNS | ||
#define KC______ KC_TRNS | ||
#define KC_XXXXX KC_NO | ||
#define KC_LOWER LOWER | ||
#define KC_RAISE RAISE | ||
#define KC_RST RESET | ||
#define KC_LRST RGBRST | ||
#define KC_LTOG RGB_TOG | ||
#define KC_LHUI RGB_HUI | ||
#define KC_LHUD RGB_HUD | ||
#define KC_LSAI RGB_SAI | ||
#define KC_LSAD RGB_SAD | ||
#define KC_LVAI RGB_VAI | ||
#define KC_LVAD RGB_VAD | ||
#define KC_LMOD RGB_MOD | ||
#define KC_CTLTB CTL_T(KC_TAB) | ||
#define KC_GUIEI GUI_T(KC_LANG2) | ||
#define KC_ALTKN ALT_T(KC_LANG1) | ||
#define KC_CTLEN CTL_T(KC_LANG2) // for Linux and Windows | ||
#define KC_GUIEN GUI_T(KC_LANG2) // for Mac | ||
#define KC_SFTJP SFT_T(KC_LANG1) | ||
#define KC_ALTSP ALT_T(KC_SPACE) | ||
#define KC_ALTDL ALT_T(KC_DEL) | ||
|
||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
[_QWERTY] = LAYOUT_kc( | ||
//,-----------------------------------------. ,-----------------------------------------. | ||
ESC, Q, W, E, R, T, Y, U, I, O, P, BSPC, | ||
//|------+------+------+------+------+------| |------+------+------+------+------+------| | ||
CTLTB, A, S, D, F, G, H, J, K, L, SCLN, QUOT, | ||
//|------+------+------+------+------+------| |------+------+------+------+------+------| | ||
LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, ENT, | ||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
ALTSP, LOWER, GUIEN, SFTJP, RAISE, ALTDL | ||
//`--------------------' `--------------------' | ||
), | ||
|
||
[_LOWER] = LAYOUT_kc( | ||
//,-----------------------------------------. ,-----------------------------------------. | ||
, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, , | ||
//|------+------+------+------+------+------| |------+------+------+------+------+------| | ||
, HOME, END, PGDN, PGUP, F11, LEFT, DOWN, UP, RGHT, F12, PIPE, | ||
//|------+------+------+------+------+------| |------+------+------+------+------+------| | ||
, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, , | ||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
, , , , , | ||
//`--------------------' `--------------------' | ||
), | ||
|
||
[_RAISE] = LAYOUT_kc( | ||
//,-----------------------------------------. ,-----------------------------------------. | ||
, EXLM, AT, HASH, DLR, PERC, CIRC, AMPR, ASTR, LPRN, RPRN, , | ||
//|------+------+------+------+------+------| |------+------+------+------+------+------| | ||
, XXXXX, XXXXX, XXXXX, XXXXX, PSCR, GRV, MINS, PLUS, LCBR, RCBR, BSLS, | ||
//|------+------+------+------+------+------| |------+------+------+------+------+------| | ||
, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, TILD, UNDS, EQL, LBRC, RBRC, , | ||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
, , , , , | ||
//`--------------------' `--------------------' | ||
), | ||
|
||
[_ADJUST] = LAYOUT_kc( | ||
//,-----------------------------------------. ,-----------------------------------------. | ||
RST, LRST, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, | ||
//|------+------+------+------+------+------| |------+------+------+------+------+------| | ||
LTOG, LHUI, LSAI, LVAI, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, | ||
//|------+------+------+------+------+------| |------+------+------+------+------+------| | ||
LMOD, LHUD, LSAD, LVAD, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, | ||
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
GUIEI, LOWER, SPC, ENT, RAISE, ALTKN | ||
//`--------------------' `--------------------' | ||
) | ||
}; | ||
|
||
int RGB_current_mode; | ||
|
||
void persistent_default_layer_set(uint16_t default_layer) { | ||
eeconfig_update_default_layer(default_layer); | ||
default_layer_set(default_layer); | ||
} | ||
|
||
// Setting ADJUST layer RGB back to default | ||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { | ||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { | ||
layer_on(layer3); | ||
} else { | ||
layer_off(layer3); | ||
} | ||
} | ||
|
||
void matrix_init_user(void) { | ||
#ifdef RGBLIGHT_ENABLE | ||
RGB_current_mode = rgblight_config.mode; | ||
#endif | ||
//SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h | ||
#ifdef SSD1306OLED | ||
iota_gfx_init(!has_usb()); // turns on the display | ||
#endif | ||
} | ||
|
||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h | ||
#ifdef SSD1306OLED | ||
|
||
// When add source files to SRC in rules.mk, you can use functions. | ||
const char *read_layer_state(void); | ||
const char *read_logo(void); | ||
void set_keylog(uint16_t keycode, keyrecord_t *record); | ||
const char *read_keylog(void); | ||
const char *read_keylogs(void); | ||
|
||
// const char *read_mode_icon(bool swap); | ||
// const char *read_host_led_state(void); | ||
// void set_timelog(void); | ||
// const char *read_timelog(void); | ||
|
||
void matrix_scan_user(void) { | ||
iota_gfx_task(); | ||
} | ||
|
||
void matrix_render_user(struct CharacterMatrix *matrix) { | ||
if (is_master) { | ||
// If you want to change the display of OLED, you need to change here | ||
matrix_write_ln(matrix, read_layer_state()); | ||
matrix_write_ln(matrix, read_keylog()); | ||
matrix_write_ln(matrix, read_keylogs()); | ||
//matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui)); | ||
//matrix_write_ln(matrix, read_host_led_state()); | ||
//matrix_write_ln(matrix, read_timelog()); | ||
} else { | ||
matrix_write(matrix, read_logo()); | ||
} | ||
} | ||
|
||
void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) { | ||
if (memcmp(dest->display, source->display, sizeof(dest->display))) { | ||
memcpy(dest->display, source->display, sizeof(dest->display)); | ||
dest->dirty = true; | ||
} | ||
} | ||
|
||
void iota_gfx_task_user(void) { | ||
struct CharacterMatrix matrix; | ||
matrix_clear(&matrix); | ||
matrix_render_user(&matrix); | ||
matrix_update(&display, &matrix); | ||
} | ||
#endif//SSD1306OLED | ||
|
||
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
if (record->event.pressed) { | ||
#ifdef SSD1306OLED | ||
set_keylog(keycode, record); | ||
#endif | ||
// set_timelog(); | ||
} | ||
|
||
switch (keycode) { | ||
case QWERTY: | ||
if (record->event.pressed) { | ||
persistent_default_layer_set(1UL<<_QWERTY); | ||
} | ||
return false; | ||
break; | ||
case LOWER: | ||
if (record->event.pressed) { | ||
layer_on(_LOWER); | ||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); | ||
} else { | ||
layer_off(_LOWER); | ||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); | ||
} | ||
return false; | ||
break; | ||
case RAISE: | ||
if (record->event.pressed) { | ||
layer_on(_RAISE); | ||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); | ||
} else { | ||
layer_off(_RAISE); | ||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST); | ||
} | ||
return false; | ||
break; | ||
case ADJUST: | ||
if (record->event.pressed) { | ||
layer_on(_ADJUST); | ||
} else { | ||
layer_off(_ADJUST); | ||
} | ||
return false; | ||
break; | ||
case RGB_MOD: | ||
#ifdef RGBLIGHT_ENABLE | ||
if (record->event.pressed) { | ||
rgblight_mode(RGB_current_mode); | ||
rgblight_step(); | ||
RGB_current_mode = rgblight_config.mode; | ||
} | ||
#endif | ||
return false; | ||
break; | ||
case RGBRST: | ||
#ifdef RGBLIGHT_ENABLE | ||
if (record->event.pressed) { | ||
eeconfig_update_rgblight_default(); | ||
rgblight_enable(); | ||
RGB_current_mode = rgblight_config.mode; | ||
} | ||
#endif | ||
break; | ||
} | ||
return true; | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
|
||
# Build Options | ||
# change to "no" to disable the options, or define them in the Makefile in | ||
# the appropriate keymap folder that will get included automatically | ||
# | ||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) | ||
MOUSEKEY_ENABLE = no # Mouse keys(+4700) | ||
EXTRAKEY_ENABLE = no # Audio control and System control(+450) | ||
CONSOLE_ENABLE = no # Console for debug(+400) | ||
COMMAND_ENABLE = no # Commands for debug and configuration | ||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality | ||
MIDI_ENABLE = no # MIDI controls | ||
AUDIO_ENABLE = no # Audio output on port C6 | ||
UNICODE_ENABLE = no # Unicode | ||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID | ||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. | ||
SWAP_HANDS_ENABLE = no # Enable one-hand typing | ||
|
||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE | ||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | ||
|
||
# If you want to change the display of OLED, you need to change here | ||
SRC += ./lib/glcdfont.c \ | ||
./lib/rgb_state_reader.c \ | ||
./lib/layer_state_reader.c \ | ||
./lib/logo_reader.c \ | ||
./lib/keylogger.c \ | ||
# ./lib/mode_icon_reader.c \ | ||
# ./lib/host_led_state_reader.c \ | ||
# ./lib/timelogger.c \ |