aboutsummaryrefslogtreecommitdiffstats
path: root/keyboards/freyr
diff options
context:
space:
mode:
authorGravatar William Chang <william@factual.com>2019-11-20 22:17:07 -0800
committerGravatar William Chang <william@factual.com>2019-11-20 22:17:07 -0800
commite7f4d56592b3975c38af329e77b4efd9108495e8 (patch)
tree0a416bccbf70bfdbdb9ffcdb3bf136b47378c014 /keyboards/freyr
parent71493b2f9bbd5f3d18373c518fa14ccafcbf48fc (diff)
parent8416a94ad27b3ff058576f09f35f0704a8b39ff3 (diff)
downloadqmk_firmware-e7f4d56592b3975c38af329e77b4efd9108495e8.tar.gz
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'keyboards/freyr')
-rw-r--r--keyboards/freyr/config.h65
-rw-r--r--keyboards/freyr/freyr.c45
-rw-r--r--keyboards/freyr/freyr.h72
-rw-r--r--keyboards/freyr/info.json290
-rw-r--r--keyboards/freyr/keymaps/default/config.h19
-rw-r--r--keyboards/freyr/keymaps/default/keymap.c44
-rw-r--r--keyboards/freyr/keymaps/default/readme.md1
-rw-r--r--keyboards/freyr/readme.md15
-rw-r--r--keyboards/freyr/rules.mk36
9 files changed, 587 insertions, 0 deletions
diff --git a/keyboards/freyr/config.h b/keyboards/freyr/config.h
new file mode 100644
index 000000000..ce30fd534
--- /dev/null
+++ b/keyboards/freyr/config.h
@@ -0,0 +1,65 @@
+/*
+Copyright 2019 HnahKB
+
+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 <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0002
+#define MANUFACTURER HnahKB
+#define PRODUCT Freyr
+#define DESCRIPTION Custom PCB TKL keyboard
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { D3, B2, B1, B0, E6, F0, D2, D5, F4, F1 }
+#define MATRIX_COL_PINS { B4, D7, D6, D4, B5, C7, C6, F5, F6, F7 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+
+#define BACKLIGHT_PIN B6
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/freyr/freyr.c b/keyboards/freyr/freyr.c
new file mode 100644
index 000000000..68c26294f
--- /dev/null
+++ b/keyboards/freyr/freyr.c
@@ -0,0 +1,45 @@
+/* Copyright 2019 HnahKB
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+#include "freyr.h"
+
+
+void matrix_init_kb(void) {
+ matrix_init_user();
+ led_init_ports();
+};
+
+void led_init_ports(void) {
+ setPinOutput(B3);
+ setPinOutput(B7);
+}
+
+void led_set_kb(uint8_t usb_led) {
+ if (IS_LED_ON(usb_led, USB_LED_CAPS_LOCK)) {
+ // Turn Caps Lock LED on
+ writePinLow(B3);
+ } else {
+ // Turn Caps Lock LED off
+ writePinHigh(B3);
+ }
+ if (IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK)) {
+ // Turn Scroll Lock LED on
+ writePinLow(B7);
+ } else {
+ // Turn Scroll Lock LED off
+ writePinHigh(B7);
+ }
+ led_set_user(usb_led);
+}
diff --git a/keyboards/freyr/freyr.h b/keyboards/freyr/freyr.h
new file mode 100644
index 000000000..f18e74432
--- /dev/null
+++ b/keyboards/freyr/freyr.h
@@ -0,0 +1,72 @@
+/* Copyright 2019 HnahKB
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+
+#define LAYOUT_all( \
+ k00, k01, k02, k03, k04, k06, k07, k08,k09, k60, k61, k62, k63, k64, k65, k66, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k70, k71, k72, k73, k74, k75, k76, k67, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k80, k81, k82, k83, k78, k77, k68, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k90, k91, k92, k84, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k95, k94, k85, k93, k79, \
+ k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k69 \
+) { \
+ { k00, k01, k02, k03, k04, KC_NO, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49}, \
+ { k50, k51, k52, k53, k54, k55, k56, k57, k58, k59 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67, k68, k69 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77, k78, k79 }, \
+ { k80, k81, k82, k83, k84, k85, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { k90, k91, k92, k93, k94, k95, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_tkl_ansi( \
+ k00, k01, k02, k03, k04, k06, k07, k08,k09, k60, k61, k62, k63, k64, k65, k66, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k70, k71, k72, k73, k75, k76, k67, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k80, k81, k82, k83, k78, k77, k68, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k90, k91, k84, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k95, k94, k93, k79, \
+ k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k69 \
+) LAYOUT_all( \
+ k00, k01, k02, k03, k04, k06, k07, k08,k09, k60, k61, k62, k63, k64, k65, k66, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k70, k71, k72, k73, KC_NO, k75, k76, k67, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k80, k81, k82, k83, k78, k77, k68, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k90, k91, KC_NO, k84, \
+ k40, KC_NO, k42, k43, k44, k45, k46, k47, k48, k49, k95, k94, KC_NO, k93, k79, \
+ k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k69 \
+)
+
+#define LAYOUT_tkl_iso( \
+ k00, k01, k02, k03, k04, k06, k07, k08,k09, k60, k61, k62, k63, k64, k65, k66, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k70, k71, k72, k73, k75, k76, k67, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k80, k81, k82, k78, k77, k68, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k90, k91, k92, k84, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k95, k94, k93, k79, \
+ k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k69 \
+) LAYOUT_all( \
+ k00, k01, k02, k03, k04, k06, k07, k08,k09, k60, k61, k62, k63, k64, k65, k66, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k70, k71, k72, k73, KC_NO, k75, k76, k67, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k80, k81, k82, KC_NO, k78, k77, k68, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k90, k91, k92, k84, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k95, k94, KC_NO, k93, k79, \
+ k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k69 \
+)
+
diff --git a/keyboards/freyr/info.json b/keyboards/freyr/info.json
new file mode 100644
index 000000000..22fc96fa2
--- /dev/null
+++ b/keyboards/freyr/info.json
@@ -0,0 +1,290 @@
+{
+ "keyboard_name": "freyr",
+ "url": "",
+ "maintainer": "vuhopkep",
+ "width": 18.25,
+ "height": 6.25,
+ "layouts": {
+ "LAYOUT_all": {
+ "key_count": 91,
+ "layout": [
+ {"label":"Esc (k00)", "x":0, "y":0},
+ {"label":"F1 (k01)", "x":2, "y":0},
+ {"label":"F2 (k02)", "x":3, "y":0},
+ {"label":"F3 (k03)", "x":4, "y":0},
+ {"label":"F4 (k04)", "x":5, "y":0},
+ {"label":"F5 (k06)", "x":6.5, "y":0},
+ {"label":"F6 (k07)", "x":7.5, "y":0},
+ {"label":"F7 (k08)", "x":8.5, "y":0},
+ {"label":"F8 (k09)", "x":9.5, "y":0},
+ {"label":"F9 (k60)", "x":11, "y":0},
+ {"label":"F10 (k61)", "x":12, "y":0},
+ {"label":"F11 (k62)", "x":13, "y":0},
+ {"label":"F12 (k63)", "x":14, "y":0},
+ {"label":"PrtSc (k64)", "x":15.25, "y":0},
+ {"label":"Scroll Lock (k65)", "x":16.25, "y":0},
+ {"label":"Pause (k66)", "x":17.25, "y":0},
+ {"label":"~ (k10)", "x":0, "y":1.25},
+ {"label":"! (k11)", "x":1, "y":1.25},
+ {"label":"@ (k12)", "x":2, "y":1.25},
+ {"label":"# (k13)", "x":3, "y":1.25},
+ {"label":"$ (k14)", "x":4, "y":1.25},
+ {"label":"% (k15)", "x":5, "y":1.25},
+ {"label":"^ (k16)", "x":6, "y":1.25},
+ {"label":"& (k17)", "x":7, "y":1.25},
+ {"label":"* (k18)", "x":8, "y":1.25},
+ {"label":"( (k19)", "x":9, "y":1.25},
+ {"label":") (k70)", "x":10, "y":1.25},
+ {"label":"_ (k71)", "x":11, "y":1.25},
+ {"label":"+ (k72)", "x":12, "y":1.25},
+ {"label":"Backspace (k73)", "x":13, "y":1.25},
+ {"label":"Backspace2 (k74)", "x":14, "y":1.25},
+ {"label":"Insert (k75)", "x":15.25, "y":1.25},
+ {"label":"Home (k76)", "x":16.25, "y":1.25},
+ {"label":"PgUp (k67)", "x":17.25, "y":1.25},
+ {"label":"Tab (k20)", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q (k21)", "x":1.5, "y":2.25},
+ {"label":"W (k22)", "x":2.5, "y":2.25},
+ {"label":"E (k23)", "x":3.5, "y":2.25},
+ {"label":"R (k24)", "x":4.5, "y":2.25},
+ {"label":"T (k25)", "x":5.5, "y":2.25},
+ {"label":"Y (k26)", "x":6.5, "y":2.25},
+ {"label":"U (k27)", "x":7.5, "y":2.25},
+ {"label":"I (k28)", "x":8.5, "y":2.25},
+ {"label":"O (k29)", "x":9.5, "y":2.25},
+ {"label":"P (k80)", "x":10.5, "y":2.25},
+ {"label":"{ (k81)", "x":11.5, "y":2.25},
+ {"label":"} (k82)", "x":12.5, "y":2.25},
+ {"label":"| (k83)", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete (k78)", "x":15.25, "y":2.25},
+ {"label":"End (k77)", "x":16.25, "y":2.25},
+ {"label":"PgDn (k68)", "x":17.25, "y":2.25},
+ {"label":"Caps Lock (k30)", "x":0, "y":3.25, "w":1.75},
+ {"label":"A (k31)", "x":1.75, "y":3.25},
+ {"label":"S (k32)", "x":2.75, "y":3.25},
+ {"label":"D (k33)", "x":3.75, "y":3.25},
+ {"label":"F (k34)", "x":4.75, "y":3.25},
+ {"label":"G (k35)", "x":5.75, "y":3.25},
+ {"label":"H (k36)", "x":6.75, "y":3.25},
+ {"label":"J (k37)", "x":7.75, "y":3.25},
+ {"label":"K (k38)", "x":8.75, "y":3.25},
+ {"label":"L (k39)", "x":9.75, "y":3.25},
+ {"label":": (k90)", "x":10.75, "y":3.25},
+ {"label":"\" (k91)", "x":11.75, "y":3.25},
+ {"label":"~ (k92)", "x":12.75, "y":3.25},
+ {"label":"Enter (k84)", "x":13.75, "y":3.25, "w":1.25},
+ {"label":"Shift (k40)", "x":0, "y":4.25, "w":1.25},
+ {"label":"| (k41)", "x":1.25, "y":4.25},
+ {"label":"Z (k42)", "x":2.25, "y":4.25},
+ {"label":"X (k43)", "x":3.25, "y":4.25},
+ {"label":"C (k44)", "x":4.25, "y":4.25},
+ {"label":"V (k45)", "x":5.25, "y":4.25},
+ {"label":"B (k46)", "x":6.25, "y":4.25},
+ {"label":"N (k47)", "x":7.25, "y":4.25},
+ {"label":"M (k48)", "x":8.25, "y":4.25},
+ {"label":"< (k49)", "x":9.25, "y":4.25},
+ {"label":"> (k95)", "x":10.25, "y":4.25},
+ {"label":"? (k94)", "x":11.25, "y":4.25},
+ {"label":"JP Ro (k85)", "x":12.25, "y":4.25},
+ {"label":"Shift (k93)", "x":13.25, "y":4.25, "w":1.75},
+ {"label":"Up (k79)", "x":16.25, "y":4.25},
+ {"label":"Ctrl (k50)", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win (k51)", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt (k52)", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space (k53)", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt (k54)", "x":10, "y":5.25, "w":1.25},
+ {"label":"Win (k55)", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu (k56)", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl (k57)", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"Left (k58)", "x":15.25, "y":5.25},
+ {"label":"Down (k59)", "x":16.25, "y":5.25},
+ {"label":"Right (k69)", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_ansi": {
+ "key_count": 87,
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"!", "x":1, "y":1.25},
+ {"label":"@", "x":2, "y":1.25},
+ {"label":"#", "x":3, "y":1.25},
+ {"label":"$", "x":4, "y":1.25},
+ {"label":"%", "x":5, "y":1.25},
+ {"label":"^", "x":6, "y":1.25},
+ {"label":"&", "x":7, "y":1.25},
+ {"label":"*", "x":8, "y":1.25},
+ {"label":"(", "x":9, "y":1.25},
+ {"label":")", "x":10, "y":1.25},
+ {"label":"_", "x":11, "y":1.25},
+ {"label":"+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"PgUp", "x":17.25, "y":1.25},
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"{", "x":11.5, "y":2.25},
+ {"label":"}", "x":12.5, "y":2.25},
+ {"label":"|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "x":17.25, "y":2.25},
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":":", "x":10.75, "y":3.25},
+ {"label":"\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":"<", "x":9.25, "y":4.25},
+ {"label":">", "x":10.25, "y":4.25},
+ {"label":"?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"Up", "x":16.25, "y":4.25},
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"Win", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"Left", "x":15.25, "y":5.25},
+ {"label":"Down", "x":16.25, "y":5.25},
+ {"label":"Right", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_iso": {
+ "key_count": 88,
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+ {"label":"\u00ac", "x":0, "y":1.25},
+ {"label":"!", "x":1, "y":1.25},
+ {"label":"\"", "x":2, "y":1.25},
+ {"label":"\u00a3", "x":3, "y":1.25},
+ {"label":"$", "x":4, "y":1.25},
+ {"label":"%", "x":5, "y":1.25},
+ {"label":"^", "x":6, "y":1.25},
+ {"label":"&", "x":7, "y":1.25},
+ {"label":"*", "x":8, "y":1.25},
+ {"label":"(", "x":9, "y":1.25},
+ {"label":")", "x":10, "y":1.25},
+ {"label":"_", "x":11, "y":1.25},
+ {"label":"+", "x":12, "y":1.25},
+ {"label":"Backspace", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"PgUp", "x":17.25, "y":1.25},
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"{", "x":11.5, "y":2.25},
+ {"label":"}", "x":12.5, "y":2.25},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "x":17.25, "y":2.25},
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":":", "x":10.75, "y":3.25},
+ {"label":"@", "x":11.75, "y":3.25},
+ {"label":"~", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"|", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":"<", "x":9.25, "y":4.25},
+ {"label":">", "x":10.25, "y":4.25},
+ {"label":"?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"Up", "x":16.25, "y":4.25},
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
+ {"label":"AltGr", "x":10, "y":5.25, "w":1.25},
+ {"label":"Win", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"Left", "x":15.25, "y":5.25},
+ {"label":"Down", "x":16.25, "y":5.25},
+ {"label":"Right", "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/freyr/keymaps/default/config.h b/keyboards/freyr/keymaps/default/config.h
new file mode 100644
index 000000000..348d7c551
--- /dev/null
+++ b/keyboards/freyr/keymaps/default/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2019 HnahKB
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/freyr/keymaps/default/keymap.c b/keyboards/freyr/keymaps/default/keymap.c
new file mode 100644
index 000000000..008ae47d4
--- /dev/null
+++ b/keyboards/freyr/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2019 HnahKB
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum hnah_layers{
+ _QWERTY,
+ _LOWER
+};
+
+#define LOWER MO(_LOWER)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_tkl_iso(
+ 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 , \
+ 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,\
+ 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,\
+ KC_CAPS, 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,\
+ 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,\
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_APP, LOWER, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
+ [_LOWER] = LAYOUT_tkl_iso(
+ RESET, 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, 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, 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, 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,\
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ )
+};
+
diff --git a/keyboards/freyr/keymaps/default/readme.md b/keyboards/freyr/keymaps/default/readme.md
new file mode 100644
index 000000000..7a41bdd76
--- /dev/null
+++ b/keyboards/freyr/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for freyr \ No newline at end of file
diff --git a/keyboards/freyr/readme.md b/keyboards/freyr/readme.md
new file mode 100644
index 000000000..c6ddc3041
--- /dev/null
+++ b/keyboards/freyr/readme.md
@@ -0,0 +1,15 @@
+# freyr
+
+![Freyr](https://i.imgur.com/MeOrzoI.jpg)
+
+Freyr is a tenkeyless keyboard, support ansi and iso layout.
+[Full layout here](http://www.keyboard-layout-editor.com/#/gists/438ef0c58c46ec28c80d9894ffcff177)
+
+Keyboard Maintainer: [HnahKB](https://github.com/vuhopkep)
+Hardware Supported: Freyr.revB PCB
+
+Make example for this keyboard (after setting up your build environment):
+
+ make freyr: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/freyr/rules.mk b/keyboards/freyr/rules.mk
new file mode 100644
index 000000000..1a00e299f
--- /dev/null
+++ b/keyboards/freyr/rules.mk
@@ -0,0 +1,36 @@
+# 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(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+# 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
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+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
+AUDIO_ENABLE = no # Audio output on port C6
+FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)
+
+# Supported layouts
+LAYOUTS = tkl_ansi tkl_iso