mirror of
https://github.com/qmk/qmk_userspace.git
synced 2026-03-07 00:01:09 -05:00
oled
This commit is contained in:
parent
149f1a6ff6
commit
da7694eae2
2 changed files with 205 additions and 11 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
#include QMK_KEYBOARD_H
|
#include QMK_KEYBOARD_H
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "matrix.h"
|
||||||
|
|
||||||
#define CC_A LGUI_T(KC_A)
|
#define CC_A LGUI_T(KC_A)
|
||||||
#define CC_S LALT_T(KC_S)
|
#define CC_S LALT_T(KC_S)
|
||||||
|
|
@ -12,11 +13,11 @@
|
||||||
#define CC_ESC LT(MSC, KC_ESC)
|
#define CC_ESC LT(MSC, KC_ESC)
|
||||||
#define CC_SPC LT(NUM, KC_SPC)
|
#define CC_SPC LT(NUM, KC_SPC)
|
||||||
#define CC_TAB LT(FUN, KC_TAB)
|
#define CC_TAB LT(FUN, KC_TAB)
|
||||||
#define CC_ENT LT(CUR, KC_ENT)
|
#define CC_ENT LT(NAV, KC_ENT)
|
||||||
#define CC_BSP LT(MSE, KC_BSPC)
|
#define CC_BSP LT(PNT, KC_BSPC)
|
||||||
#define CC_DEL LT(MED, KC_DEL)
|
#define CC_DEL LT(MED, KC_DEL)
|
||||||
|
|
||||||
enum {
|
enum layers {
|
||||||
HME,
|
HME,
|
||||||
// Home
|
// Home
|
||||||
// > qwerty
|
// > qwerty
|
||||||
|
|
@ -28,12 +29,12 @@ enum {
|
||||||
// > number row key codes to easily combine numbers and symbols
|
// > number row key codes to easily combine numbers and symbols
|
||||||
// > other symbols
|
// > other symbols
|
||||||
|
|
||||||
CUR,
|
NAV,
|
||||||
// Cursor movement
|
// Cursor movement
|
||||||
// > vim style arrow keys
|
// > vim style navigation
|
||||||
// > home / end, page up / page down
|
// > insert, home / end, page up / page down
|
||||||
|
|
||||||
MSE,
|
PNT,
|
||||||
// Pointer movement
|
// Pointer movement
|
||||||
// > vim style navigation
|
// > vim style navigation
|
||||||
|
|
||||||
|
|
@ -59,6 +60,7 @@ enum {
|
||||||
// > application menu
|
// > application menu
|
||||||
// > includes the right ctrl key with the intent to use it as the Compose Key
|
// > includes the right ctrl key with the intent to use it as the Compose Key
|
||||||
// > see https://en.wikipedia.org/wiki/Compose_key
|
// > see https://en.wikipedia.org/wiki/Compose_key
|
||||||
|
_LAYER_COUNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
@ -92,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_BSLS, KC_1, KC_2, KC_3, KC_GRV,
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_BSLS, KC_1, KC_2, KC_3, KC_GRV,
|
||||||
KC_ESC, XXXXXXX, KC_TAB, XXXXXXX, KC_0, XXXXXXX
|
KC_ESC, XXXXXXX, KC_TAB, XXXXXXX, KC_0, XXXXXXX
|
||||||
),
|
),
|
||||||
[CUR] = LAYOUT_split_3x5_3(
|
[NAV] = LAYOUT_split_3x5_3(
|
||||||
// --------------------------------------- ---------------------------------------
|
// --------------------------------------- ---------------------------------------
|
||||||
// | | | | | | | | | | | |
|
// | | | | | | | | | | | |
|
||||||
// |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
|
// |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
|
||||||
|
|
@ -102,12 +104,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
// -------+-------+-------+-------+-------+------- -------+-------+-------+-------+-------+-------
|
// -------+-------+-------+-------+-------+------- -------+-------+-------+-------+-------+-------
|
||||||
// | ESC | SPC | TAB | | | BSPC | DEL |
|
// | ESC | SPC | TAB | | | BSPC | DEL |
|
||||||
// -------+-------+------- -------+-------+-------
|
// -------+-------+------- -------+-------+-------
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
KC_0, KC_1, KC_2, KC_3, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_0,
|
||||||
KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
|
KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
|
||||||
XXXXXXX, KC_X, KC_C, KC_V, XXXXXXX, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
|
XXXXXXX, KC_X, KC_C, KC_V, XXXXXXX, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
|
||||||
KC_ESC, KC_SPC, KC_TAB, XXXXXXX, KC_BSPC, KC_DEL
|
KC_ESC, KC_SPC, KC_TAB, XXXXXXX, KC_BSPC, KC_DEL
|
||||||
),
|
),
|
||||||
[MSE] = LAYOUT_split_3x5_3(
|
[PNT] = LAYOUT_split_3x5_3(
|
||||||
// --------------------------------------- ---------------------------------------
|
// --------------------------------------- ---------------------------------------
|
||||||
// | | | | | | | | ← ← | ↓ ↓ | ↑ ↑ | → → |
|
// | | | | | | | | ← ← | ↓ ↓ | ↑ ↑ | → → |
|
||||||
// |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
|
// |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
|
||||||
|
|
@ -183,3 +185,195 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint16_t pressed;
|
||||||
|
uint16_t held;
|
||||||
|
} kc_state_t;
|
||||||
|
|
||||||
|
static kc_state_t kc_state = { 0 };
|
||||||
|
|
||||||
|
static const char * const layer_names[_LAYER_COUNT] PROGMEM = {
|
||||||
|
[HME] = "Home",
|
||||||
|
[NUM] = "Num",
|
||||||
|
[NAV] = "Nav",
|
||||||
|
[PNT] = "Pointer",
|
||||||
|
[MED] = "Media",
|
||||||
|
[FUN] = "Function",
|
||||||
|
[GME] = "Gaming",
|
||||||
|
[MSC] = "Misc"
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char alphanumeric_kc_names[38] PROGMEM = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
|
||||||
|
static const char symbol_kc_names[12] PROGMEM = {'-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/'};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint16_t keycode;
|
||||||
|
const char *label;
|
||||||
|
} key_label_t;
|
||||||
|
|
||||||
|
static const key_label_t kc_labels[] PROGMEM = {
|
||||||
|
{ KC_ENT, "Return" },
|
||||||
|
{ KC_ESC, "Escape" },
|
||||||
|
{ KC_BSPC, "Backspace" },
|
||||||
|
{ KC_TAB, "Tab" },
|
||||||
|
{ 44, "Space" },
|
||||||
|
{ KC_CAPS, "Caps" },
|
||||||
|
{ KC_DEL, "Delete" },
|
||||||
|
{ KC_LGUI, "Super" },
|
||||||
|
{ KC_LALT, "Alt" },
|
||||||
|
{ KC_LCTL, "Control" },
|
||||||
|
{ KC_LSFT, "Shift" },
|
||||||
|
{ KC_LEFT, "Left" },
|
||||||
|
{ KC_DOWN, "Down" },
|
||||||
|
{ KC_UP, "Up" },
|
||||||
|
{ KC_RGHT, "Right" },
|
||||||
|
{ KC_INS, "Insert" },
|
||||||
|
{ KC_HOME, "Home" },
|
||||||
|
{ KC_PGDN, "Page down" },
|
||||||
|
{ KC_PGUP, "Page up" },
|
||||||
|
{ KC_END, "End" },
|
||||||
|
{ MS_WHLL, "Scroll left" },
|
||||||
|
{ MS_WHLD, "Scroll down" },
|
||||||
|
{ MS_WHLU, "Scroll up" },
|
||||||
|
{ MS_WHLR, "Scroll right" },
|
||||||
|
{ MS_LEFT, "Mouse left" },
|
||||||
|
{ MS_DOWN, "Mouse down" },
|
||||||
|
{ MS_UP, "Mouse up" },
|
||||||
|
{ MS_RGHT, "Mouse right" },
|
||||||
|
{ MS_BTN1, "Left click" },
|
||||||
|
{ MS_BTN2, "Right click" },
|
||||||
|
{ MS_BTN3, "Wheel click" },
|
||||||
|
{ KC_MRWD, "Rewind" },
|
||||||
|
{ KC_MFFD, "Forward" },
|
||||||
|
{ KC_VOLU, "Vol +" },
|
||||||
|
{ KC_VOLD, "Vol -" },
|
||||||
|
{ KC_MUTE, "Mute" },
|
||||||
|
{ KC_MNXT, "Next" },
|
||||||
|
{ KC_MPRV, "Prev" },
|
||||||
|
{ KC_MPLY, "Play/Pause" },
|
||||||
|
{ KC_F1, "F1" },
|
||||||
|
{ KC_F2, "F2" },
|
||||||
|
{ KC_F3, "F3" },
|
||||||
|
{ KC_F4, "F4" },
|
||||||
|
{ KC_F5, "F5" },
|
||||||
|
{ KC_F6, "F6" },
|
||||||
|
{ KC_F7, "F7" },
|
||||||
|
{ KC_F8, "F8" },
|
||||||
|
{ KC_F9, "F9" },
|
||||||
|
{ KC_F10, "F10" },
|
||||||
|
{ KC_F11, "F11" },
|
||||||
|
{ KC_F12, "F12" },
|
||||||
|
{ KC_F13, "F13" },
|
||||||
|
{ KC_F14, "F14" },
|
||||||
|
{ KC_F15, "F15" },
|
||||||
|
{ KC_PWR, "Power" },
|
||||||
|
{ KC_PSCR, "Print screen" },
|
||||||
|
{ KC_BRID, "Brigtness -" },
|
||||||
|
{ KC_BRIU, "Brightnes +" },
|
||||||
|
{ KC_RCTL, "Compose key" },
|
||||||
|
{ KC_APP, "Menu" },
|
||||||
|
{ KC_LCBR, "{" },
|
||||||
|
{ KC_RBRC, "}" },
|
||||||
|
{ KC_LPRN, "(" },
|
||||||
|
{ KC_RPRN, ")" },
|
||||||
|
};
|
||||||
|
|
||||||
|
const char *int_string(uint16_t value) {
|
||||||
|
static char buffer[5];
|
||||||
|
snprintf(buffer, sizeof(buffer), "%i", value);
|
||||||
|
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *special_keycode_str(uint16_t keycode) {
|
||||||
|
for (uint16_t i = 0; i < ARRAY_SIZE(kc_labels); i++) {
|
||||||
|
key_label_t entry;
|
||||||
|
memcpy_P(&entry, &kc_labels[i], sizeof(key_label_t));
|
||||||
|
|
||||||
|
if (keycode == entry.keycode) {
|
||||||
|
return entry.label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "?";
|
||||||
|
}
|
||||||
|
|
||||||
|
static const char *keycode_string(uint16_t keycode) {
|
||||||
|
static char key;
|
||||||
|
|
||||||
|
if (0 == keycode) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (4 <= keycode && keycode <= 39) {
|
||||||
|
key = pgm_read_byte(&alphanumeric_kc_names[keycode - 4]);
|
||||||
|
|
||||||
|
return &key;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (45 <= keycode && keycode <= 57) {
|
||||||
|
key = pgm_read_byte(&symbol_kc_names[keycode- 45]);
|
||||||
|
|
||||||
|
return &key;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (KC_UNDS == keycode) {
|
||||||
|
return "_";
|
||||||
|
}
|
||||||
|
|
||||||
|
return special_keycode_str(keycode);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *layer_string(uint8_t layer) {
|
||||||
|
if (layer < _LAYER_COUNT) {
|
||||||
|
return (const char *)pgm_read_ptr(&layer_names[layer]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return get_u8_str(layer, ' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t get_keycode(uint16_t keycode) {
|
||||||
|
if (IS_QK_MOD_TAP(keycode)) {
|
||||||
|
return QK_MOD_TAP_GET_TAP_KEYCODE(keycode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_QK_LAYER_TAP(keycode)) {
|
||||||
|
return QK_LAYER_TAP_GET_TAP_KEYCODE(keycode);
|
||||||
|
}
|
||||||
|
|
||||||
|
return keycode;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
if (!record->event.pressed) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_QK_MOD_TAP(keycode)) {
|
||||||
|
kc_state.pressed = QK_MOD_TAP_GET_TAP_KEYCODE(keycode);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_QK_LAYER_TAP(keycode)) {
|
||||||
|
kc_state.pressed = QK_LAYER_TAP_GET_TAP_KEYCODE(keycode);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
kc_state.pressed = keycode;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
bool oled_task_user(void) {
|
||||||
|
oled_write("Layer: ", false);
|
||||||
|
oled_write_ln(layer_string(get_highest_layer(layer_state)), false);
|
||||||
|
|
||||||
|
oled_write("Key : ", false);
|
||||||
|
oled_write_ln(keycode_string(kc_state.pressed), false);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
RGB_MATRIX_SUPPORTED = no
|
RGB_MATRIX_SUPPORTED = no
|
||||||
COMBO_ENABLE = no
|
COMBO_ENABLE = no
|
||||||
BOOTLOADER = atmel-dfu
|
BOOTLOADER = atmel-dfu
|
||||||
OLED_ENABLE = no
|
OLED_ENABLE = yes
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue