]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
[Keyboard] Add handwired Wulkan keyboard (#6282)
authorNapoleon Wulkan <napoleon.wulkan@gmail.com>
Thu, 11 Jul 2019 18:31:36 +0000 (20:31 +0200)
committerDrashna Jaelre <drashna@live.com>
Thu, 11 Jul 2019 18:31:36 +0000 (11:31 -0700)
* added handwired keyboard wulkan

* added info.json for qmk configurator

* fixed spelling

* enum dont need to be assigned to zero

* removed cflag from readme

* updated rules.mk

* removed unneeded rows from config

* moved unicode to keymap conf

* fix adjust layer and comments for keymap

keyboards/handwired/wulkan/README.md [new file with mode: 0644]
keyboards/handwired/wulkan/config.h [new file with mode: 0644]
keyboards/handwired/wulkan/info.json [new file with mode: 0644]
keyboards/handwired/wulkan/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/handwired/wulkan/keymaps/default/rules.mk [new file with mode: 0644]
keyboards/handwired/wulkan/rules.mk [new file with mode: 0644]
keyboards/handwired/wulkan/wulkan.c [new file with mode: 0644]
keyboards/handwired/wulkan/wulkan.h [new file with mode: 0644]

diff --git a/keyboards/handwired/wulkan/README.md b/keyboards/handwired/wulkan/README.md
new file mode 100644 (file)
index 0000000..c6ea773
--- /dev/null
@@ -0,0 +1,14 @@
+# wulkan
+
+Handwired 40% keyboard build with Proton C.
+
+Keyboard Maintainer: [Napoleon Wulkan](https://github.com/wulkan)  
+Hardware Supported: Proton C  
+Hardware Availability: [OLKB.com](https://olkb.com)
+
+
+Make example for this keyboard (after setting up your build environment):
+
+    make handwired/wulkan:default:dfu-util
+
+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/handwired/wulkan/config.h b/keyboards/handwired/wulkan/config.h
new file mode 100644 (file)
index 0000000..4a9cbad
--- /dev/null
@@ -0,0 +1,23 @@
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Wulkan
+#define PRODUCT         Handwired48Keys
+#define DESCRIPTION     A compact ortholinear handwired keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+#define MATRIX_ROW_PINS { B8, A0, A1, A2 }
+#define MATRIX_COL_PINS { B13, B14, B15, B9, B7, B6, B5, B4, B3, B2, B1, B0 }
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define FORCE_NKRO
diff --git a/keyboards/handwired/wulkan/info.json b/keyboards/handwired/wulkan/info.json
new file mode 100644 (file)
index 0000000..db292af
--- /dev/null
@@ -0,0 +1,13 @@
+{
+    "keyboard_name": "wulkan",
+    "url": "",
+    "maintainer": "Napoleon Wulkan",
+    "width": 12,
+    "height": 4,
+    "layouts": {
+      "LAYOUT_ortho_4x12": {
+        "key_count": 48,
+        "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":10, "y":1}, {"x":11, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}]
+      }
+    }
+  }
diff --git a/keyboards/handwired/wulkan/keymaps/default/keymap.c b/keyboards/handwired/wulkan/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..5134fb0
--- /dev/null
@@ -0,0 +1,111 @@
+#include QMK_KEYBOARD_H
+
+enum layers {
+  _QWERTY,
+  _LOWER,
+  _RAISE,
+  _ADJUST,
+};
+
+enum unicode_names {
+  SE_AA_HIGH,
+  SE_AE_HIGH,
+  SE_OE_HIGH,
+  SE_AA_LOW,
+  SE_AE_LOW,
+  SE_OE_LOW,
+};
+
+const uint32_t PROGMEM unicode_map[] = {
+  [SE_AA_HIGH] = 0x00C5,
+  [SE_AE_HIGH] = 0x00C4,
+  [SE_OE_HIGH] = 0x00D6,
+  [SE_AA_LOW]  = 0x00E5,
+  [SE_AE_LOW]  = 0x00E4,
+  [SE_OE_LOW]  = 0x00F6,
+};
+
+#define LOWER  MO(_LOWER)
+#define RAISE  MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      | Ctrl | Alt  | GUI  |Lower |Enter |Space |Raise | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_4x12(
+  KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC,
+  KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,
+  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,
+  _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_ENT,  KC_SPC,  RAISE,   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO ~ |ISO | |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_4x12(
+  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR,    KC_ASTR,    KC_LPRN, KC_RPRN, KC_BSPC,
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS,    KC_PLUS,    KC_LCBR, KC_RCBR, KC_PIPE,
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  S(KC_NUHS), S(KC_NUBS), _______, _______, _______,
+  _______, _______, _______, _______, _______, _______, _______, _______,    KC_MNXT,    KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |ISO # |ISO / |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_4x12(
+  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL,
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS,
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, _______, _______, _______,
+  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |      | Reset|      |      |      |      |      |      |      |      |   Å  |  Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |   Ö  |   Ä  |      |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_ortho_4x12(
+  _______, RESET,   _______, _______, KC_WH_U, _______, _______, KC_MS_U, _______, _______,                   XP(SE_AA_LOW, SE_AA_HIGH), KC_DEL,
+  _______, _______, _______, _______, KC_WH_D, _______, KC_MS_L, KC_MS_D, KC_MS_R, XP(SE_OE_LOW, SE_OE_HIGH), XP(SE_AE_LOW, SE_AE_HIGH), _______,
+  _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, KC_BTN1, _______, KC_BTN2, _______,                   _______,                   _______,
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,                   _______
+)
+};
+
+uint32_t layer_state_set_user(uint32_t state) {
+  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+void eeconfig_init_user(void) {
+  set_unicode_input_mode(UC_LNX);
+}
diff --git a/keyboards/handwired/wulkan/keymaps/default/rules.mk b/keyboards/handwired/wulkan/keymaps/default/rules.mk
new file mode 100644 (file)
index 0000000..502b2de
--- /dev/null
@@ -0,0 +1 @@
+UNICODEMAP_ENABLE = yes
diff --git a/keyboards/handwired/wulkan/rules.mk b/keyboards/handwired/wulkan/rules.mk
new file mode 100644 (file)
index 0000000..3f881b7
--- /dev/null
@@ -0,0 +1,22 @@
+MCU = STM32F303
+
+# Build Options
+#   comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no
+BOOTMAGIC_ENABLE = yes      # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes       # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = no         # Commands for debug and configuration
+NKRO_ENABLE = yes           # USB Nkey Rollover
+AUDIO_ENABLE = no
+RGBLIGHT_ENABLE = no
+LAYOUTS = ortho_4x12
+MIDI_ENABLE = no            # MIDI support (+2400 to 4200, depending on config)
+UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+FAUXCLICKY_ENABLE = no      # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no            # Enable support for HD44780 based LCDs (+400)
+NO_SUSPEND_POWER_DOWN = yes
+UNICODEMAP_ENABLE = no
diff --git a/keyboards/handwired/wulkan/wulkan.c b/keyboards/handwired/wulkan/wulkan.c
new file mode 100644 (file)
index 0000000..5409fa5
--- /dev/null
@@ -0,0 +1,6 @@
+#include "wulkan.h"
+
+void matrix_init_kb(void) {
+  matrix_init_user();
+}
+
diff --git a/keyboards/handwired/wulkan/wulkan.h b/keyboards/handwired/wulkan/wulkan.h
new file mode 100644 (file)
index 0000000..cb4882a
--- /dev/null
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_ortho_4x12( \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
+    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B  \
+) \
+{ \
+    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
+    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
+    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
+    { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B }  \
+}
+
+
+#define LAYOUT LAYOUT_ortho_4x12