summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Allen <ylixir@gmail.com>2017-10-12 23:51:21 -0500
committerJack Humbert <jack.humb@gmail.com>2017-10-13 05:23:23 -1000
commitc037d4bb306613085a823e73f37653f1e71c0f0d (patch)
tree1e451de605b6150bd85ae5352376eb0cbdd782d8
parent66f45c9e2eb60b9bf7ecab10df0568bad5fbfc3f (diff)
downloadqmk_firmware-c037d4bb306613085a823e73f37653f1e71c0f0d.tar.gz
qmk_firmware-c037d4bb306613085a823e73f37653f1e71c0f0d.zip
Add the Tomato keyboard
-rw-r--r--keyboards/tomato/config.h51
-rw-r--r--keyboards/tomato/keymaps/default/keymap.c158
-rw-r--r--keyboards/tomato/readme.md20
-rw-r--r--keyboards/tomato/rules.mk56
-rw-r--r--keyboards/tomato/tomato.c1
-rw-r--r--keyboards/tomato/tomato.h18
6 files changed, 304 insertions, 0 deletions
diff --git a/keyboards/tomato/config.h b/keyboards/tomato/config.h
new file mode 100644
index 0000000000..f33c131087
--- /dev/null
+++ b/keyboards/tomato/config.h
@@ -0,0 +1,51 @@
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER 40 Percent Club
+#define PRODUCT Tomato
+#define DESCRIPTION A 30 key ortholinear keyboard with RGB backlighting
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 6
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F7, B1, B3, B2, B6 }
+#define MATRIX_COL_PINS { B4, E6, D7, C6, D4, D0 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* prevent stuck modifiers */
+#define PREVENT_STUCK_MODIFIERS
+
+/* eliminate lag on space cadet mods */
+#define PERMISSIVE_HOLD
+
+/* setup lighting */
+#define RGB_DI_PIN B5
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 30
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+#endif
diff --git a/keyboards/tomato/keymaps/default/keymap.c b/keyboards/tomato/keymaps/default/keymap.c
new file mode 100644
index 0000000000..26335b7184
--- /dev/null
+++ b/keyboards/tomato/keymaps/default/keymap.c
@@ -0,0 +1,158 @@
+#include "tomato.h"
+
+#define SPC_F1 LT(1,KC_SPC)
+#define BS_F2 LT(2,KC_BSPC)
+#define C_F3 LT(3,KC_C)
+#define V_F4 LT(4,KC_V)
+#define B_F5 LT(5,KC_B)
+#define Z_CTL MT(MOD_LCTL, KC_Z)
+#define X_ALT MT(MOD_LALT, KC_X)
+#define N_ALT MT(MOD_RALT, KC_N)
+#define M_CTL MT(MOD_RCTL, KC_M)
+#define ENT_SFT MT(MOD_RSFT, KC_ENT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Level 0: Default Layer
+ * ,-------------------------------------------------------------------------------.
+ * | Q | W | E | R | T | Y | U | I | O | P |
+ * |-------------------------------------------------------------------------------|
+ * | A | S | D | F | G | H | J | K | L | ESC |
+ * |-------------------------------------------------------------------------------|
+ * | Z | X | C | V | BSPC | SPC | B | N | M | ENT |
+ * '-------------------------------------------------------------------------------'
+ */
+ KEYMAP
+ ( KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P
+ , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC
+ , Z_CTL, X_ALT, C_F3, V_F4, BS_F2, SPC_F1, B_F5, N_ALT, M_CTL, ENT_SFT
+ ),
+ /* Level 1: Numbers Layer
+ * ,-------------------------------------------------------------------------------.
+ * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
+ * |-------------------------------------------------------------------------------|
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 |
+ * |-------------------------------------------------------------------------------|
+ * | | | | | DEL | | | | | |
+ * '-------------------------------------------------------------------------------'
+ */
+ KEYMAP
+ ( KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0
+ , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
+ , KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_DEL, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS
+ ),
+ /* Level 2: Symbols Layer
+ * ,-------------------------------------------------------------------------------.
+ * | ! | @ | # | $ | % | ^ | & | * | ( | ) |
+ * |-------------------------------------------------------------------------------|
+ * | F11 | F12 | | | | | | | | ` |
+ * |-------------------------------------------------------------------------------|
+ * | | | | | | | | | | |
+ * '-------------------------------------------------------------------------------'
+ */
+ KEYMAP
+ ( KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN
+ , KC_F11, KC_F12,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_GRAVE
+ , KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS
+ ),
+ /* Level 3: RGB Layer
+ * ,-------------------------------------------------------------------------------.
+ * | | | | | | - | = | [ | ] | \ |
+ * |-------------------------------------------------------------------------------|
+ * | Tab | | | | | , | . | / | ; | ' |
+ * |-------------------------------------------------------------------------------|
+ * | | | | | | | Left | Down | Up | Right |
+ * '-------------------------------------------------------------------------------'
+ */
+ KEYMAP
+ ( KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MINS,KC_EQL, KC_LBRC,KC_RBRC,KC_BSLS
+ , KC_TAB, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_COMM,KC_DOT, KC_SLSH,KC_SCLN,KC_QUOT
+ , KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT
+ ),
+ /* Level 4: RGB Layer
+ * ,-------------------------------------------------------------------------------.
+ * | | | | | | _ | + | { | } | | |
+ * |-------------------------------------------------------------------------------|
+ * | Tab | | | | | < | > | ? | : | " |
+ * |-------------------------------------------------------------------------------|
+ * | | | | | | | Home | PgDn | PgUp | End |
+ * '-------------------------------------------------------------------------------'
+ */
+ KEYMAP
+ ( KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UNDS,KC_PLUS,KC_LCBR,KC_RCBR,KC_PIPE
+ , KC_TAB, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_LT, KC_GT, KC_QUES,KC_COLN,KC_DQUO
+ , KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_HOME,KC_PGUP,KC_PGDN,KC_END
+ ),
+ /* Level 5: RGB Layer
+ * ,-------------------------------------------------------------------------------.
+ * | Calc | Web | Mail |Explore| | | | | | |
+ * |-------------------------------------------------------------------------------|
+ * |RGB_TOG|RGB_MOD|RGB_HUI|RGB_HUD|xxxxxxx|xxxxxxx|RGB_SAI|RGB_SAD|RGB_VAI|RGB_VAD|
+ * |-------------------------------------------------------------------------------|
+ * | | | | | Flash | | | | | |
+ * '-------------------------------------------------------------------------------'
+ */
+ KEYMAP
+ ( KC_CALC,KC_WSCH,KC_MAIL,KC_MYCM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS
+ , RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,KC_NO, KC_NO, RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD
+ , KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS
+ ),
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+}
+
+void matrix_scan_user(void) {
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+ if (usb_led & (1 << USB_LED_NUM_LOCK)) {
+
+ } else {
+
+ }
+
+ if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+
+ } else {
+
+ }
+
+ if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
+
+ } else {
+
+ }
+
+ if (usb_led & (1 << USB_LED_COMPOSE)) {
+
+ } else {
+
+ }
+
+ if (usb_led & (1 << USB_LED_KANA)) {
+
+ } else {
+
+ }
+
+}
diff --git a/keyboards/tomato/readme.md b/keyboards/tomato/readme.md
new file mode 100644
index 0000000000..fb38089963
--- /dev/null
+++ b/keyboards/tomato/readme.md
@@ -0,0 +1,20 @@
+Tomato
+===
+
+A 30 key keyboard with programmable rgb backlighting.
+
+* [The fluff](http://www.40percent.club/2017/07/tomato-in-gherkin.html)
+* [The meat](https://github.com/di0ib/Misc/tree/master/tomato)
+
+Keyboard Maintainer: QMK Community
+Hardware Supported: Tomato PCB
+Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.club/2017/07/tomato-in-gherkin.html)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make tomato-default
+
+See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+
+First pass at adding support for the tomato keyboard. Completely
+untested. Intended to kick-start development.
diff --git a/keyboards/tomato/rules.mk b/keyboards/tomato/rules.mk
new file mode 100644
index 0000000000..482f99b223
--- /dev/null
+++ b/keyboards/tomato/rules.mk
@@ -0,0 +1,56 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# Build Options
+# comment out to disable the options.
+#
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+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 = no # Enable keyboard backlight functionality
+AUDIO_ENABLE = no
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/tomato/tomato.c b/keyboards/tomato/tomato.c
new file mode 100644
index 0000000000..dbf8bfe12b
--- /dev/null
+++ b/keyboards/tomato/tomato.c
@@ -0,0 +1 @@
+#include "tomato.h"
diff --git a/keyboards/tomato/tomato.h b/keyboards/tomato/tomato.h
new file mode 100644
index 0000000000..ebb2303ac8
--- /dev/null
+++ b/keyboards/tomato/tomato.h
@@ -0,0 +1,18 @@
+#ifndef GHERKIN_H
+#define GHERKIN_H
+
+#include "quantum.h"
+
+#define KEYMAP( \
+ K00, K01, K02, K03, K04, K05, K10, K11, K12, K13 , \
+ K14, K15, K20, K21, K22, K23, K24, K25, K30, K31 , \
+ K32, K33, K34, K35, K40, K41, K42, K43, K44, K45 \
+) { \
+ { K00, K01, K02, K03, K04, K05 }, \
+ { K10, K11, K12, K13, K14, K15 }, \
+ { K20, K21, K22, K23, K24, K25 }, \
+ { K30, K31, K32, K33, K34, K35 }, \
+ { K40, K41, K42, K43, K44, K45 } \
+}
+
+#endif