diff --git a/tests_pcb/sample_atmega32/qmk_firmware_keyboard/config.h b/qmk_keyboards/test9/config.h
similarity index 96%
rename from tests_pcb/sample_atmega32/qmk_firmware_keyboard/config.h
rename to qmk_keyboards/test9/config.h
index ea6fb6d..821f1cd 100644
--- a/tests_pcb/sample_atmega32/qmk_firmware_keyboard/config.h
+++ b/qmk_keyboards/test9/config.h
@@ -52,4 +52,8 @@ along with this program. If not, see .
#define BACKLIGHT_LEVELS 6
#endif
+#ifdef TAP_DANCE_ENABLE
+#define TAPPING_TERM 200
+#endif
+
#endif
diff --git a/tests_pcb/sample_atmega32/qmk_firmware_keyboard/info.json b/qmk_keyboards/test9/info.json
similarity index 100%
rename from tests_pcb/sample_atmega32/qmk_firmware_keyboard/info.json
rename to qmk_keyboards/test9/info.json
diff --git a/qmk_keyboards/test9/keymaps/default/keymap.c b/qmk_keyboards/test9/keymaps/default/keymap.c
new file mode 100644
index 0000000..992cc7f
--- /dev/null
+++ b/qmk_keyboards/test9/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ BASE, // Base 1-9
+ COLOR, // Gaming layer
+ EFFECTS, // Function layer
+};
+
+enum custom_tapdance {
+ TD_7_BLTOG,
+ TD_8_BLSTE,
+ TD_9_COLOR,
+};
+
+//Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_7_BLTOG] = ACTION_TAP_DANCE_DOUBLE(KC_7, BL_TOGG),
+ [TD_8_BLSTE] = ACTION_TAP_DANCE_DOUBLE(KC_8, BL_STEP),
+ [TD_9_COLOR] = ACTION_TAP_DANCE_DUAL_ROLE(KC_9, COLOR),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* LAYER 0 */
+[BASE] = LAYOUT( \
+ TD(TD_7_BLTOG), TD(TD_8_BLSTE), TD(TD_9_COLOR), \
+ KC_4, KC_5, KC_6, \
+ KC_1, KC_2, KC_3 \
+),
+
+/* LAYER 1 */
+[COLOR] = LAYOUT( \
+ RGB_TOG, RGB_MOD, TO(EFFECTS), \
+ RGB_SAI, RGB_VAI, RGB_HUI, \
+ RGB_SAD, RGB_VAD, RGB_HUD \
+),
+
+/* LAYER 2 */
+[EFFECTS] = LAYOUT( \
+ RGB_MODE_PLAIN, RGB_MODE_BREATHE, TO(BASE), \
+ RGB_MODE_RAINBOW, RGB_MODE_SWIRL, RGB_MODE_SNAKE, \
+ RGB_MODE_KNIGHT, RGB_MODE_XMAS, RGB_MODE_RGBTEST \
+)
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+}
diff --git a/tests_pcb/sample_atmega32/qmk_firmware_keyboard/keymaps/default/rules.mk b/qmk_keyboards/test9/keymaps/default/rules.mk
similarity index 100%
rename from tests_pcb/sample_atmega32/qmk_firmware_keyboard/keymaps/default/rules.mk
rename to qmk_keyboards/test9/keymaps/default/rules.mk
diff --git a/tests_pcb/sample_atmega32/qmk_firmware_keyboard/rules.mk b/qmk_keyboards/test9/rules.mk
similarity index 99%
rename from tests_pcb/sample_atmega32/qmk_firmware_keyboard/rules.mk
rename to qmk_keyboards/test9/rules.mk
index d2edcb8..e5c2602 100644
--- a/tests_pcb/sample_atmega32/qmk_firmware_keyboard/rules.mk
+++ b/qmk_keyboards/test9/rules.mk
@@ -63,6 +63,7 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
TAP_DANCE_ENABLE = yes
+VELOCIKEY_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/tests_pcb/sample_atmega32/qmk_firmware_keyboard/test9.c b/qmk_keyboards/test9/test9.c
similarity index 100%
rename from tests_pcb/sample_atmega32/qmk_firmware_keyboard/test9.c
rename to qmk_keyboards/test9/test9.c
diff --git a/tests_pcb/sample_atmega32/qmk_firmware_keyboard/test9.h b/qmk_keyboards/test9/test9.h
similarity index 100%
rename from tests_pcb/sample_atmega32/qmk_firmware_keyboard/test9.h
rename to qmk_keyboards/test9/test9.h
diff --git a/qmk_keyboards/valkey/config.h b/qmk_keyboards/valkey/config.h
new file mode 100644
index 0000000..240246b
--- /dev/null
+++ b/qmk_keyboards/valkey/config.h
@@ -0,0 +1,60 @@
+/*
+Copyright 2012 Jun Wako
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0007
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Inf3 Industries
+#define PRODUCT ValKey
+#define DESCRIPTION ValKey TKL
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 16
+
+/* PCB default pin-out */
+
+// 0 1 2 3 4 5
+#define MATRIX_ROW_PINS { D4, D7, D5, D1, D6, C6 }
+// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+#define MATRIX_COL_PINS { F5, B0, B1, B2, B3, F4, F1, F0, D0, F6, F7, E6, D3, C7, B5, B6 }
+
+#define UNUSED_PINS
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D2
+#define RGBLED_NUM 6
+#define RGBLIGHT_LIMIT_VAL 128
+#define RGBLIGHT_ANIMATIONS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+#define BACKLIGHT_PIN B7
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 6
+#define BACKLIGHT_BREATHING
+#endif
+
+#endif
diff --git a/qmk_keyboards/valkey/info.json b/qmk_keyboards/valkey/info.json
new file mode 100644
index 0000000..a6c2ee8
--- /dev/null
+++ b/qmk_keyboards/valkey/info.json
@@ -0,0 +1,12 @@
+{
+ "keyboard_name": "valkey",
+ "url": "",
+ "maintainer": "valdor",
+ "width": 16,
+ "height": 6,
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}]
+ }
+ }
+}
diff --git a/qmk_keyboards/valkey/keymaps/default/keymap.c b/qmk_keyboards/valkey/keymaps/default/keymap.c
new file mode 100644
index 0000000..b0022dd
--- /dev/null
+++ b/qmk_keyboards/valkey/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ BASE, // Base alpha
+ CONTROL, // Control layer
+ NONE, // Empty layer
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* LAYER 0 */
+[BASE] = LAYOUT( \
+ KC_ESC, 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_PSCR,KC_SLCK,KC_PAUS, \
+TO(CONTROL), KC_GRV, 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_BSPC, KC_INS,KC_HOME,KC_PGUP, \
+TO(CONTROL), 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_DEL, KC_END,KC_PGDN, \
+TO(CONTROL),KC_CLCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT,KC_NUHS, KC_ENT, \
+TO(CONTROL),KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH,KC_RSFT, KC_UP, \
+TO(CONTROL),KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT \
+),
+[CONTROL] = LAYOUT( \
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
+TO(BASE) ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
+TO(BASE) ,_______,BL_TOGG,BL_STEP,BL_BRTG,_______,_______,_______,RGB_HUI,RGB_SAI,RGB_VAI,_______,_______,_______, _______,_______,_______, \
+TO(BASE) ,_______, BL_OFF, BL_ON,_______,_______,_______,_______,RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______, \
+TO(BASE) ,_______,_______,_______,_______,_______,_______,_______,RGB_HUD,RGB_SAD,RGB_VAD,_______,_______,_______, _______, \
+TO(BASE) ,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______ \
+),
+[NONE] = LAYOUT( \
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
+TO(BASE) , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
+TO(BASE) , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
+TO(BASE) , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
+TO(BASE) , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
+TO(BASE) , KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO \
+)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+ return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+}
diff --git a/qmk_keyboards/valkey/keymaps/default/rules.mk b/qmk_keyboards/valkey/keymaps/default/rules.mk
new file mode 100644
index 0000000..e69de29
diff --git a/qmk_keyboards/valkey/rules.mk b/qmk_keyboards/valkey/rules.mk
new file mode 100644
index 0000000..6f7d93f
--- /dev/null
+++ b/qmk_keyboards/valkey/rules.mk
@@ -0,0 +1,69 @@
+# MCU name
+#MCU = at90usb1287
+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*
+# Teensy halfKay 512
+# Teensy++ halfKay 1024
+# Atmel DFU loader 4096
+# LUFA bootloader 4096
+# USBaspLoader 2048
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # 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
+NKRO_ENABLE = yes # 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
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+TAP_DANCE_ENABLE = no # Enable tapdance keys
+VELOCIKEY_ENABLE = yes
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
diff --git a/qmk_keyboards/valkey/valkey.c b/qmk_keyboards/valkey/valkey.c
new file mode 100644
index 0000000..b36df71
--- /dev/null
+++ b/qmk_keyboards/valkey/valkey.c
@@ -0,0 +1,5 @@
+#include "valkey.h"
+
+void matrix_init_kb(void) {
+ matrix_init_user();
+}
diff --git a/qmk_keyboards/valkey/valkey.h b/qmk_keyboards/valkey/valkey.h
new file mode 100644
index 0000000..5d812c2
--- /dev/null
+++ b/qmk_keyboards/valkey/valkey.h
@@ -0,0 +1,23 @@
+#ifndef VALKEY_H
+#define VALKEY_H
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K01, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K1E, K1F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2E, K2F, K4E, K4F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3F, K5E, K5F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K5D, \
+ K50, K51, K52, K53, K55, K56, K57, K58, K59, K5A, K5B, K5C \
+) \
+{ \
+ { KC_NO, K01, KC_NO, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
+ { K50, K51, K52, K53, KC_NO, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F } \
+}
+
+#endif
diff --git a/tests_pcb/sample_atmega32/qmk_firmware_keyboard/keymaps/default/keymap.c b/tests_pcb/sample_atmega32/qmk_firmware_keyboard/keymaps/default/keymap.c
deleted file mode 100644
index 32d14aa..0000000
--- a/tests_pcb/sample_atmega32/qmk_firmware_keyboard/keymaps/default/keymap.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* LAYER 0 */
-[0] = LAYOUT( \
- BL_TOGG, BL_STEP, TO(1), \
- KC_4, KC_5, KC_6, \
- KC_1, KC_2, KC_3 \
-),
-
-/* LAYER 1 */
-[1] = LAYOUT( \
- RGB_TOG, RGB_MOD, TO(2), \
- RGB_SAI, RGB_VAI, RGB_HUI, \
- RGB_SAD, RGB_VAD, RGB_HUD \
-),
-
-/* LAYER 2 */
-[2] = LAYOUT( \
- RGB_MODE_PLAIN, RGB_MODE_BREATHE, TO(0), \
- RGB_MODE_RAINBOW, RGB_MODE_SWIRL, RGB_MODE_SNAKE, \
- RGB_MODE_KNIGHT, RGB_MODE_XMAS, RGB_MODE_RGBTEST \
-)
-
-};
-
-qk_tap_dance_action_t tap_dance_actions[] = {
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
- return MACRO_NONE;
-};
-
-void matrix_init_user(void) {
-}