Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added HHKB Keymap and user config #8119

Merged
merged 6 commits into from
Mar 10, 2020
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions keyboards/hhkb/keymaps/brett/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#pragma once

// Define mousekey settings
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_MAX_SPEED 2
#define MOUSEKEY_TIME_TO_MAX 5
#define MOUSEKEY_WHEEL_DELAY 0

#define LSPO_KEY KC_9
#define RSPC_KEY KC_0
#define LSPO_MOD KC_LSHIFT
#define RSPC_MOD KC_RSHIFT

// This makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when
// you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
#define IGNORE_MOD_TAP_INTERRUPT
120 changes: 120 additions & 0 deletions keyboards/hhkb/keymaps/brett/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
/* -*- eval: (turn-on-orgtbl); -*-
* Brettm12345 HHKB Layout
*/
#include QMK_KEYBOARD_H
Brettm12345 marked this conversation as resolved.
Show resolved Hide resolved
#include "brett.h"

enum layers {
BASE = 0,
HHKB = 1,
PROG = 2,
MOUSE = 3
Brettm12345 marked this conversation as resolved.
Show resolved Hide resolved
};

// Tap for tab hold for MOUSE
#define TAB_MOUSE LT(MOUSE, KC_TAB)

// Tap for space hold for PROG
#define SPACE_PROG LT(PROG, KC_SPC)

// Tap for ESC hold for CTRL
#define CTL_ESC CTL_T(KC_ESC)

// Tab for ; hold for PROG
#define PROG_SCLN LT(PROG, KC_SCLN)

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* BASE Level: Default Layer
|---------+---+---+---+---+---+---+---+---+---+---+--------+--------+-----------+---|
| Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
|---------+---+---+---+---+---+---+---+---+---+---+--------+--------+-----------+---|
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backspace | * |
|---------+---+---+---+---+---+---+---+---+---+---+--------+--------+-----------+---|
| Control | A | S | D | F | G | H | J | K | L | ; | ' | Return | ****** | * |
|---------+---+---+---+---+---+---+---+---+---+---+--------+--------+-----------+---|
| LShift | Z | X | C | V | B | N | M | , | . | / | RShift | HHKB | ****** | * |
|---------+---+---+---+---+---+---+---+---+---+---+--------+--------+-----------+---|

|------+------+----------------------------+------+------|
| LAlt | LGUI | ******* Space/Prog ******* | RGUI | RAlt |
|------+------+----------------------------+------+------|
*/

[BASE] = LAYOUT(
KC_GESC, 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,
TAB_MOUSE, 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,
CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, PROG_SCLN, KC_QUOT, KC_ENT,
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, MO(HHKB),
KC_LALT, KC_LGUI, SPACE_PROG, KC_RGUI, KC_RALT),

/* HHKB Level: Function Layer
|---------+------+------+--------+---------+-------+-----------+---------+---------+---------+----------------+--------+------+--------+-----|
| Flash | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
|---------+------+------+--------+---------+-------+-----------+---------+---------+---------+----------------+--------+------+--------+-----|
| Caps | Calc | Mail | Media | Browser | My PC | Browser | u | i | o | Print | [ | ] | Backsp | * |
| | | | Player | Refresh | | Favorites | | | | Screen | | | | |
|---------+------+------+--------+---------+-------+-----------+---------+---------+---------+----------------+--------+------+--------+-----|
| Control | Prev | Next | Find | f | g | Browser | Browser | Browser | Browser | ; | ' | Exec | ****** | * |
| | | | | | | Back | Home | Search | Forward | | | | | |
|---------+------+------+--------+---------+-------+-----------+---------+---------+---------+----------------+--------+------+--------+-----|
| LShift | Vol+ | Vol- | Mute | Select | b | n | m | , | Again | Browser Search | RShift | HHKB | ****** | * |
|---------+------+------+--------+---------+-------+-----------+---------+---------+---------+----------------+--------+------+--------+-----|

|------+------+----------------------+------+------|
| Menu | LGUI | ******* Play ******* | RGUI | Menu |
|------+------+----------------------+------+------|
*/
[HHKB] = LAYOUT(
FLASH, 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,
KC_CAPS, KC_CALC, KC_MAIL, KC_MSEL, KC_WREF, KC_MYCM, KC_WFAV, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_BSPC,
KC_TRNS, KC_MPRV, KC_MNXT, KC_FIND, KC_TRNS, KC_TRNS, KC_WBAK, KC_WHOM, KC_WSCH, KC_WFWD, KC_TRNS, KC_TRNS, KC_EXEC,
KC_TRNS, KC__VOLUP, KC_VOLD, KC_MUTE, KC_SLCT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AGIN, KC_WSCH, KC_TRNS, KC_TRNS,
Brettm12345 marked this conversation as resolved.
Show resolved Hide resolved
KC_MENU, KC_TRNS, KC_MPLY, KC_TRNS, KC_MENU),


/* Programming Level: Symbols Layer
|--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+---|
| Esc | TTY 1 | TTY 2 | TTY 3 | TTY 4 | TTY 5 | TTY 6 | TTY 7 | TTY 8 | TTY 9 | TTY 10 | TTY 11 | TTY 12 | \ | ` |
|--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+---|
| Tab/Mouse | => | @ | >>= | =<< | ‖ | <> | <|> | <*> | <@> | |> | <$ | $> | Backsp | * |
|--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+---|
| Toggle Mouse | -> | * | <$> | <#> | && | Left | Down | Up | Right | :: | ` | Return | ****** | * |
|--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+---|
| LShift | z | x | c | v | b | n | m | <- | -> | <> | Shift | HHKB | ****** | * |
|--------------+-------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+---|

|------+------+----------------------------+------+------|
| LAlt | LGUI | ******* Space/Prog ******* | RGUI | RAlt |
|------+------+----------------------------+------+------|
*/
[PROG] = LAYOUT(
KC_GESC, LCA(KC_F1), LCA(KC_F2), LCA(KC_F3), LCA(KC_F4), LCA(KC_F5), LCA(KC_F6), LCA(KC_F7), LCA(KC_F8), LCA(KC_F9), LCA(KC_F10), LCA(KC_F11), LCA(KC_F12), KC_TRNS, KC_TRNS,
KC_TRNS, FAT_ARROW, KC_AT, BIND, BIND_FLIPPED, OR, CONCAT, ALT, APPLY, FLAP, PIPE, VOID_LEFT, VOID_RIGHT, KC_TRNS,
TG(MOUSE), SKINNY_ARROW, KC_ASTR, MAP, MAP_FLIPPED, AND, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, DOUBLE_COLON, KC_GRV, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, REVERSE_ARROW, SKINNY_ARROW, CONCAT, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),


/* Mouse Level: Mouse Layer
|--------------+---------+---------+---------+---------+---------+-------+-------+---------+---------+---------+-----------+-----------------+--------+---|
| Esc | Speed 1 | Speed 2 | Speed 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
|--------------+---------+---------+---------+---------+---------+-------+-------+---------+---------+---------+-----------+-----------------+--------+---|
| Mouse(Tab) | Q | Up | Button3 | Button4 | Button5 | Y | U | Button3 | Button4 | Button5 | [ | ] | Backsp | * |
|--------------+---------+---------+---------+---------+---------+-------+-------+---------+---------+---------+-----------+-----------------+--------+---|
| Control(Esc) | Left | Down | Right | Button1 | Button2 | SLeft | SDown | SUp | SRight | Button1 | Button2 | Control(Return) | ****** | * |
|--------------+---------+---------+---------+---------+---------+-------+-------+---------+---------+---------+-----------+-----------------+--------+---|
| LShift(() | Z | X | C | V | B | N | M | Button5 | Button4 | Button3 | RShift()) | HHKB | ****** | * |
|--------------+---------+---------+---------+---------+---------+-------+-------+---------+---------+---------+-----------+-----------------+--------+---|

|---------+---------+----------------------------+---------+---------|
| LAlt([) | LGUI({) | ******* Space/Prog ******* | RGUI(}) | RAlt(]) |
|---------+---------+----------------------------+---------+---------|
*/
[MOUSE] = LAYOUT(
KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2, 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_MS_U, KC_BTN3, KC_BTN4, KC_BTN5, KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN4, KC_BTN5, KC_TRNS, KC_TRNS, KC_TRNS,
TG(MOUSE), KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN1, KC_BTN2, 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),
};

13 changes: 13 additions & 0 deletions keyboards/hhkb/keymaps/brett/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Generated Keymap Layout

This layout was generated by the QMK API. You can find the JSON data used to
generate this keymap in the file layers.json.

To make use of this file you will need follow the following steps:

* Download or Clone QMK Firmware: <https://github.com/qmk/qmk_firmware/>
* Extract QMK Firmware to a location on your hard drive
* Copy this folder into %s
* You are now ready to compile or use your keymap with the source

More information can be found in the QMK docs: <https://docs.qmk.fm>
4 changes: 4 additions & 0 deletions keyboards/hhkb/keymaps/brett/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
MOUSEKEY_ENABLE = yes
TAP_DANCE_ENABLE = no
LEADER_ENABLE = no
UNICODE_ENABLE = no
61 changes: 61 additions & 0 deletions users/brett/brett.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#include "brett.h"

char * get_key(uint16_t keycode) {
switch (keycode) {
case FAT_ARROW:
return "=>";
case SKINNY_ARROW:
return "->";
case REVERSE_ARROW:
return "<-";
case CONCAT:
return "<>";
case MAP:
return "<$>";
case MAP_FLIPPED:
return "<#>";
case FLAP:
return "<@>";
case PIPE:
return "|>";
case ALT:
return "<|>";
case APPLY:
return "<*>";
case AND:
return "&&";
case OR:
return "||";
case BIND:
return ">>=";
case BIND_FLIPPED:
return "=<<";
case DOUBLE_COLON:
return "::";
case VOID_LEFT:
return "<$";
case VOID_RIGHT:
return "$>";
default:
return "";
}
}

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool pressed = record->event.pressed;
switch (keycode) {
case FAT_ARROW ... DOUBLE_COLON:
if (pressed) {
send_string(get_key(keycode));
}
return false;
case FLASH:
if (!pressed) {
SEND_STRING("make -j8 --output-sync " QMK_KEYBOARD ":" QMK_KEYMAP ":flash" SS_TAP(X_ENTER));
reset_keyboard();
}
return false;
default:
return true;
}
}
25 changes: 25 additions & 0 deletions users/brett/brett.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#pragma once

enum userspace_custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // Can always be here
FAT_ARROW, // =>
SKINNY_ARROW, // ->
REVERSE_ARROW, // <-
CONCAT, // <>
MAP, // <$>
MAP_FLIPPED, // <#>
FLAP, // <@>
PIPE, // |>
ALT, // <|>
APPLY, // <*>
AND, // &&
OR, // ||
BIND, // >>=
BIND_FLIPPED, // =<<
VOID_LEFT, // <$
VOID_RIGHT, // $>
DOUBLE_COLON, // ::
FLASH // Handle keyboard flashing
};

bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
1 change: 1 addition & 0 deletions users/brett/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
SRC += brett.c