qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

keymap.c (6659B)


      1 /*  -*-  eval: (turn-on-orgtbl); -*-
      2  * kanru's HHKB Layout
      3  *
      4  * Copyright 2021 Kan-Ru Chen <kanru@kanru.info>
      5  *
      6  * This program is free software: you can redistribute it and/or modify
      7  * it under the terms of the GNU General Public License as published by
      8  * the Free Software Foundation, either version 2 of the License, or
      9  * (at your option) any later version.
     10  *
     11  * This program is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14  * GNU General Public License for more details.
     15  *
     16  * You should have received a copy of the GNU General Public License
     17  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     18  */
     19 #include QMK_KEYBOARD_H
     20 #include <stdio.h>
     21 
     22 enum custom_layers {
     23     BASE,
     24     HHKB,
     25     MOUSE,
     26 };
     27 
     28 #define BATTERY_FULL 550
     29 #define BATTERY_EMPTY 326
     30 
     31 enum my_keycodes { KC_VBAT = SAFE_RANGE };
     32 
     33 uint32_t adafruit_ble_read_battery_voltage(void);
     34 
     35 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     36     switch (keycode) {
     37 #ifdef BLUETOOTH_ENABLE
     38         case KC_VBAT:
     39             if (record->event.pressed) {
     40                 char    vbat[8];
     41                 uint8_t level = (adafruit_ble_read_battery_voltage() - BATTERY_EMPTY) / (float)(BATTERY_FULL - BATTERY_EMPTY) * 100;
     42                 snprintf(vbat, sizeof(vbat), "%d", level);
     43                 send_string(vbat);
     44             }
     45             return false;
     46 #endif
     47         default:
     48             return true;
     49     }
     50 }
     51 
     52 // clang-format off
     53 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     54 
     55     /* BASE Level: Default Layer
     56      |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
     57      | Esc   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -     | =   | \     | ` |
     58      |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
     59      | Tab   | Q | W | E | R | T | Y | U | I | O | P | [     | ]   | Backs |   |
     60      |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
     61      | Cont  | A | S | D | F | G | H | J | K | L | ; | '     | Ent |       |   |
     62      |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
     63      | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 |       |   |
     64      |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
     65 
     66             |------+------+-----------------------+------+------|
     67             | LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
     68             |------+------+-----------------------+------+------|
     69     */
     70 
     71     [BASE] = LAYOUT_60_hhkb( //  default layer
     72         LT(MOUSE, KC_ESC), 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_GRV,
     73         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,
     74         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,
     75         KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(HHKB),
     76         KC_LALT, KC_LGUI, /*        */ KC_SPC, KC_RGUI, KC_RALT),
     77 
     78     /* Layer HHKB: HHKB mode (HHKB Fn)
     79       |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
     80       | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
     81       |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
     82       | Caps |     |     | BAT |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
     83       |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
     84       |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
     85       |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
     86       |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
     87       |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
     88 
     89                  |------+------+----------------------+------+------+
     90                  | **** | **** | ******************** | **** | **** |
     91                  |------+------+----------------------+------+------+
     92 
     93      */
     94 
     95     [HHKB] = LAYOUT_60_hhkb(
     96         KC_PWR, 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_INS, KC_DEL,
     97         KC_CAPS, KC_TRNS, KC_TRNS, KC_VBAT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC,
     98         KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT,
     99         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
    100         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
    101 
    102     /* Layer MOUSE: Mouse Key mode (ESC)
    103       |------+------+------+-----+----+----+----+----+----+----+-----+-----+-------+-------+----- |
    104       |      |      |      |     |    |    |    |    |    |    |     |     |       |       |     |
    105       |------+------+------+-----+----+----+----+----+----+----+-----+-----+-------+-------+-----|
    106       |      | BTN1 | WH_U |     |    |    |    |    |    |    |     |     |       |       |     |
    107       |------+------+------+-----+----+----+----+----+----+----+-----+-----+-------+-------+-----|
    108       |      | BTN2 | WH_D |     |    |    |MS_L|MS_D|MS_U|MS_R|     |     |       |       |     |
    109       |------+------+------+-----+----+----+----+----+----+----+-----+-----+-------+-------+-----|
    110       |      | BTN3 |      |     |    |    |    |    |    |    |     |     |       |       |     |
    111       |------+------+------+-----+----+----+----+----+----+----+-----+-----+-------+-------+-----|
    112 
    113                  |------+------+----------------------+------+------+
    114                  | **** | **** | ******************** | **** | **** |
    115                  |------+------+----------------------+------+------+
    116 
    117      */
    118 
    119     [MOUSE] = LAYOUT_60_hhkb(
    120         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,
    121         KC_TRNS, MS_BTN1, MS_WHLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    122         KC_TRNS, MS_BTN2, MS_WHLD, KC_TRNS, KC_TRNS, KC_TRNS, MS_LEFT, MS_DOWN, MS_UP,   MS_RGHT, KC_TRNS, KC_TRNS, KC_TRNS,
    123         KC_TRNS, MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
    124         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
    125 };
    126 // clang-format on