summaryrefslogtreecommitdiff
path: root/keyboards/tokyokeyboard/tokyo60
diff options
context:
space:
mode:
authorJames <13719009+quadcube@users.noreply.github.com>2021-06-16 12:21:13 +0900
committerGitHub <noreply@github.com>2021-06-15 20:21:13 -0700
commitf5c2f7153d7e8c5d4356551bbf8b374da545b8fc (patch)
treefcdf3d1b35a97bb85274af2bd1194dd31a510926 /keyboards/tokyokeyboard/tokyo60
parent640f0fc7c6e69b5950a09f0e114914b71196752d (diff)
downloadqmk_firmware-f5c2f7153d7e8c5d4356551bbf8b374da545b8fc.tar.gz
qmk_firmware-f5c2f7153d7e8c5d4356551bbf8b374da545b8fc.zip
[Keyboard] Moved tokyo60/ into tokyokeyboard/tokyo60/. (#12023)
* Moved tokyo60/ into tokyokeyboard/tokyo60/. * Updated make instruction, fixed broken image link * Fixed still broken image link.
Diffstat (limited to 'keyboards/tokyokeyboard/tokyo60')
-rw-r--r--keyboards/tokyokeyboard/tokyo60/config.h53
-rw-r--r--keyboards/tokyokeyboard/tokyo60/info.json320
-rw-r--r--keyboards/tokyokeyboard/tokyo60/keymaps/default/config.h3
-rw-r--r--keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c49
-rw-r--r--keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/config.h3
-rw-r--r--keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/keymap.c47
-rw-r--r--keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c37
-rw-r--r--keyboards/tokyokeyboard/tokyo60/keymaps/via/rules.mk1
-rw-r--r--keyboards/tokyokeyboard/tokyo60/readme.md15
-rw-r--r--keyboards/tokyokeyboard/tokyo60/rules.mk33
-rw-r--r--keyboards/tokyokeyboard/tokyo60/tokyo60.c18
-rw-r--r--keyboards/tokyokeyboard/tokyo60/tokyo60.h19
12 files changed, 598 insertions, 0 deletions
diff --git a/keyboards/tokyokeyboard/tokyo60/config.h b/keyboards/tokyokeyboard/tokyo60/config.h
new file mode 100644
index 0000000000..03dee74e9b
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/config.h
@@ -0,0 +1,53 @@
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5436 // "T6"
+#define PRODUCT_ID 0x6060 // Tokyo60
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Tokyo Keyboard
+#define PRODUCT Tokyo60
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/* number of backlight levels */
+#define BACKLIGHT_PIN B7
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 6
+#endif
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Set power consumption to work with mobile devices */
+#define USB_MAX_POWER_CONSUMPTION 100
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
+#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B2, B5, B4, D7, D6, B3 }
+#define UNUSED_PINS
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define RGB_DI_PIN F7
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 10
+#define RGBLIGHT_HUE_STEP 12
+#define RGBLIGHT_SAT_STEP 12
+#define RGBLIGHT_VAL_STEP 12
+#endif
+
+/* For Production */
+#define QMK_ESC_OUTPUT F0 // usually COL
+#define QMK_ESC_INPUT D0 // usually ROW
diff --git a/keyboards/tokyokeyboard/tokyo60/info.json b/keyboards/tokyokeyboard/tokyo60/info.json
new file mode 100644
index 0000000000..10d1bf093f
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/info.json
@@ -0,0 +1,320 @@
+{
+ "keyboard_name": "Tokyo60",
+ "url": "https://tokyokeyboard.com/",
+ "maintainer": "qmk",
+ "width": 15,
+ "height": 5,
+ "layouts": {
+ "LAYOUT_60_hhkb": {
+ "layout": [{
+ "label": "Esc",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "!",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "@",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "#",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "$",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "%",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "^",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "&",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "*",
+ "x": 8,
+ "y": 0
+ },
+ {
+ "label": "(",
+ "x": 9,
+ "y": 0
+ },
+ {
+ "label": ")",
+ "x": 10,
+ "y": 0
+ },
+ {
+ "label": "_",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "+",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "|",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "~",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "Tab",
+ "x": 0,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "label": "Q",
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "label": "W",
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "label": "E",
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "label": "R",
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "label": "T",
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "label": "Y",
+ "x": 6.5,
+ "y": 1
+ },
+ {
+ "label": "U",
+ "x": 7.5,
+ "y": 1
+ },
+ {
+ "label": "I",
+ "x": 8.5,
+ "y": 1
+ },
+ {
+ "label": "O",
+ "x": 9.5,
+ "y": 1
+ },
+ {
+ "label": "P",
+ "x": 10.5,
+ "y": 1
+ },
+ {
+ "label": "{",
+ "x": 11.5,
+ "y": 1
+ },
+ {
+ "label": "}",
+ "x": 12.5,
+ "y": 1
+ },
+ {
+ "label": "Delete",
+ "x": 13.5,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "label": "Control",
+ "x": 0,
+ "y": 2,
+ "w": 1.75
+ },
+ {
+ "label": "A",
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "label": "S",
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "label": "D",
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "label": "F",
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "label": "G",
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "label": "H",
+ "x": 6.75,
+ "y": 2
+ },
+ {
+ "label": "J",
+ "x": 7.75,
+ "y": 2
+ },
+ {
+ "label": "K",
+ "x": 8.75,
+ "y": 2
+ },
+ {
+ "label": "L",
+ "x": 9.75,
+ "y": 2
+ },
+ {
+ "label": ":",
+ "x": 10.75,
+ "y": 2
+ },
+ {
+ "label": "\"",
+ "x": 11.75,
+ "y": 2
+ },
+ {
+ "label": "Enter",
+ "x": 12.75,
+ "y": 2,
+ "w": 2.25
+ },
+ {
+ "label": "Shift",
+ "x": 0,
+ "y": 3,
+ "w": 2.25
+ },
+ {
+ "label": "Z",
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "label": "X",
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "label": "C",
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "label": "V",
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "label": "B",
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "label": "N",
+ "x": 7.25,
+ "y": 3
+ },
+ {
+ "label": "M",
+ "x": 8.25,
+ "y": 3
+ },
+ {
+ "label": "<",
+ "x": 9.25,
+ "y": 3
+ },
+ {
+ "label": ">",
+ "x": 10.25,
+ "y": 3
+ },
+ {
+ "label": "?",
+ "x": 11.25,
+ "y": 3
+ },
+ {
+ "label": "Shift",
+ "x": 12.25,
+ "y": 3,
+ "w": 1.75
+ },
+ {
+ "label": "Fn",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "Os",
+ "x": 1.5,
+ "y": 4
+ },
+ {
+ "label": "Alt",
+ "x": 2.5,
+ "y": 4,
+ "w": 1.5
+ },
+ {
+ "x": 4,
+ "y": 4,
+ "w": 7
+ },
+ {
+ "label": "Alt",
+ "x": 11,
+ "y": 4,
+ "w": 1.5
+ },
+ {
+ "label": "Os",
+ "x": 12.5,
+ "y": 4
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/default/config.h b/keyboards/tokyokeyboard/tokyo60/keymaps/default/config.h
new file mode 100644
index 0000000000..271f48d001
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/keymaps/default/config.h
@@ -0,0 +1,3 @@
+#pragma once
+
+// place overrides here
diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c b/keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..9139d15bc4
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+#include QMK_KEYBOARD_H
+
+#define BL 0
+#define FN 1
+/*
+ * Default HHKB Layout
+ */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: Default layer
+┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
+│ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │BkSpc│█████│
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │█████│Enter│█████│
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│Shift│█████│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │█████│Shift│ Fn │
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│█████│ Alt │ Gui │█████│█████│Space│█████│█████│█████│█████│█████│ Gui │ Alt │█████│█████│
+└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ */
+[BL] = LAYOUT_60_hhkb(
+ 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, \
+ 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, \
+ 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, \
+ 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(FN), \
+ KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT ),
+ /* 1: HHKB Fn layer
+┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
+│ Pwr │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ Ins │ Del │
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│Caps │ RGB │RGBfw│RGBrv│BLtog│BLstp│ │ │ Psc │ Slk │ Pus │ Up │ │ │█████│
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│ │ VoD │ VoU │ Mut │ Ejc │ │NP_* │NP_/ │Home │PgUp │Left │Right│█████│NPEnt│█████│
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│ │█████│ │ │ │ │ │NP_+ │NP_- │ End │PgDwn│Down │█████│ │ │
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│█████│ │ │█████│█████│█████│ │█████│█████│█████│█████│ │ │█████│█████│
+└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ */
+[FN]= LAYOUT_60_hhkb(
+ 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, \
+ KC_CAPS, RGB_TOG, RGB_MOD, RGB_RMOD, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
+ 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, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+};
+
+
diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/config.h b/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/config.h
new file mode 100644
index 0000000000..271f48d001
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/config.h
@@ -0,0 +1,3 @@
+#pragma once
+
+// place overrides here
diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/keymap.c b/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/keymap.c
new file mode 100644
index 0000000000..54b68f5825
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/keymaps/swappedBottomRow/keymap.c
@@ -0,0 +1,47 @@
+#include QMK_KEYBOARD_H
+
+#define BL 0
+#define FN 1
+/*
+ * Default HHKB Layout
+ */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* 0: Default layer
+┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
+│ Esc │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │BkSpc│█████│
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │█████│Enter│█████│
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│Shift│█████│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │█████│Shift│ Fn │
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│█████│ Gui │ Alt │█████│█████│Space│█████│█████│█████│█████│█████│ Alt │ Gui │█████│█████│
+└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ */
+[BL] = LAYOUT_60_hhkb(
+ 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, \
+ 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, \
+ 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, \
+ 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(FN), \
+ KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI ),
+ /* 1: HHKB Fn layer
+┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
+│ │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ Ins │ Del │
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│Caps │ RGB │RGBfw│RGBrv│BLtog│BLstp│ │ │ Psc │ Slk │ Pus │ Up │ │ │█████│
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│ │ VoD │ VoU │ Mut │ │ │NP_* │NP_/ │Home │PgUp │Left │Right│█████│NPEnt│█████│
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│ │█████│ │ │Calc │ │ │NP_+ │NP_- │ End │PgDwn│Down │█████│ │ │
+├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+│█████│ │ │█████│█████│█████│ │█████│█████│█████│█████│ │ │█████│█████│
+└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
+ */
+[FN]= LAYOUT_60_hhkb(
+ KC_TRNS, 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, RGB_TOG, RGB_MOD, RGB_RMOD, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, \
+ 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, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+};
diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c b/keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ffef9af795
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/keymaps/via/keymap.c
@@ -0,0 +1,37 @@
+#include QMK_KEYBOARD_H
+
+#define BL 0
+#define FN 1
+/*
+ * Default HHKB Layout
+ */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[BL] = LAYOUT_60_hhkb(
+ 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, \
+ 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, \
+ 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, \
+ 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(FN), \
+ KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT ),
+
+[FN]= LAYOUT_60_hhkb(
+ 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, \
+ KC_CAPS, RGB_TOG, RGB_MOD, RGB_RMOD, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
+ 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, \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
+
+[2]= LAYOUT_60_hhkb(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______ ),
+
+[3]= LAYOUT_60_hhkb(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/tokyokeyboard/tokyo60/keymaps/via/rules.mk b/keyboards/tokyokeyboard/tokyo60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/tokyokeyboard/tokyo60/readme.md b/keyboards/tokyokeyboard/tokyo60/readme.md
new file mode 100644
index 0000000000..56c31efad9
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/readme.md
@@ -0,0 +1,15 @@
+# Tokyo60
+​
+![Tokyo60](https://i2.wp.com/tokyokeyboard.com/wp-content/uploads/2018/02/AI7B4543_copy_page_20180215141449-1200x800.jpg)
+​
+Minimal hacker style mechanical keyboard designed in Tokyo. Full aluminum hi-pro construction with integrated top-plate. Cherry MX compatible. More Info at [Tokyo Keyboard](http://tokyokeyboard.com).
+​
+* Keyboard Maintainer: [Tokyo Keyboard](https://tokyokeyboard.com)
+* Hardware Supported: Tokyo60 Rev.1 - 4
+* Hardware Availability: [Drop](https://drop.com/buy/massdrop-x-tokyo-keyboard-tokyo60-keyboard-kit?mode=guest_open)
+​
+Make example for this keyboard (after setting up your build environment):
+​
+ make tokyokeyboard/tokyo60:default
+​
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/tokyokeyboard/tokyo60/rules.mk b/keyboards/tokyokeyboard/tokyo60/rules.mk
new file mode 100644
index 0000000000..fa639b1cab
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+# Teensy halfkay
+# Pro Micro caterina
+# Atmel DFU atmel-dfu
+# LUFA DFU lufa-dfu
+# QMK DFU qmk-dfu
+# ATmega32A bootloadHID
+# ATmega328P USBasp
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+# 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 this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+MIDI_ENABLE = no # MIDI controls
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no # Audio output on port C6
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable RGB light
+
+LAYOUTS = 60_hhkb
diff --git a/keyboards/tokyokeyboard/tokyo60/tokyo60.c b/keyboards/tokyokeyboard/tokyo60/tokyo60.c
new file mode 100644
index 0000000000..2126bb612d
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/tokyo60.c
@@ -0,0 +1,18 @@
+#include "tokyo60.h"
+
+void matrix_init_kb(void) {
+ // Keyboard start-up code goes here
+ // Runs once when the firmware starts up
+ matrix_init_user();
+ led_init_ports();
+};
+
+void matrix_scan_kb(void) {
+ // Looping keyboard code goes here
+ // This runs every cycle (a lot)
+ matrix_scan_user();
+};
+
+void led_init_ports(void) {
+ /* LEDs on */
+}
diff --git a/keyboards/tokyokeyboard/tokyo60/tokyo60.h b/keyboards/tokyokeyboard/tokyo60/tokyo60.h
new file mode 100644
index 0000000000..9eb5f3e624
--- /dev/null
+++ b/keyboards/tokyokeyboard/tokyo60/tokyo60.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_60_hhkb( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K1D,\
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K3D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K4D, \
+ K42, K43, K46, K4B, K4C \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { XXX, K42, K43, XXX, XXX, K46, XXX, XXX, XXX, XXX, XXX, K4B, K4C, K4D } \
+}