浏览代码

Add timber wolf keyboard (#9353)

* added timber wolf keyboard

* removed subfolders

* fixed keymap names

* fixed layout macro references

* swapped c6 and c7 functions

* Update keyboards/metamechs/timberwolf/config.h

Co-authored-by: Erovia <Erovia@users.noreply.github.com>

* Update readme.md

* re-updating readme

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
Croktopus 4 年之前
父节点
当前提交
3c84157d83

+ 174 - 0
keyboards/metamechs/timberwolf/config.h

@@ -0,0 +1,174 @@
+/*
+Copyright 2020 Croktopus
+
+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 0x6D6D // MetaMechs
+#define PRODUCT_ID 0x5754 // TW
+#define DEVICE_VER 0x0001
+#define MANUFACTURER MetaMechs
+#define PRODUCT Timber Wolf
+#define DESCRIPTION Timber Wolf
+
+/* key matrix size */
+#define MATRIX_COLS 9
+#define MATRIX_ROWS 12
+
+/*
+ * 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_COL_PINS { B2, D1, D2, C7, F5, F6, F7, F0, E6 }
+#define MATRIX_ROW_PINS { B6, B5, B4, D7, D6, D4, D5, D3, F4, F1, B1, B0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Wncoswe pins */
+#define ENCODERS_PAD_A { B7 }
+#define ENCODERS_PAD_B { B3 }
+
+/* Encoder resolution, lower number = more sensitive */
+#define ENCODER_RESOLUTION 2
+
+/* Reverse encoder direction */
+// #define ENCODER_DIRECTION_FLIP
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Backlighting code used for caps lock indicator */
+#define BACKLIGHT_PIN C6
+#define BACKLIGHT_LEVELS 9
+
+/* 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
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+/* defined by default; to change, uncomment and set to the combination you want */
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP           H
+//#define MAGIC_KEY_HELP_ALT       SLASH
+//#define MAGIC_KEY_DEBUG          D
+//#define MAGIC_KEY_DEBUG_MATRIX   X
+//#define MAGIC_KEY_DEBUG_KBD      K
+//#define MAGIC_KEY_DEBUG_MOUSE    M
+//#define MAGIC_KEY_VERSION        V
+//#define MAGIC_KEY_STATUS         S
+//#define MAGIC_KEY_CONSOLE        C
+//#define MAGIC_KEY_LAYER0         0
+//#define MAGIC_KEY_LAYER0_ALT     GRAVE
+//#define MAGIC_KEY_LAYER1         1
+//#define MAGIC_KEY_LAYER2         2
+//#define MAGIC_KEY_LAYER3         3
+//#define MAGIC_KEY_LAYER4         4
+//#define MAGIC_KEY_LAYER5         5
+//#define MAGIC_KEY_LAYER6         6
+//#define MAGIC_KEY_LAYER7         7
+//#define MAGIC_KEY_LAYER8         8
+//#define MAGIC_KEY_LAYER9         9
+//#define MAGIC_KEY_BOOTLOADER     B
+//#define MAGIC_KEY_BOOTLOADER_ALT ESC
+//#define MAGIC_KEY_LOCK           CAPS
+//#define MAGIC_KEY_EEPROM         E
+//#define MAGIC_KEY_EEPROM_CLEAR   BSPACE
+//#define MAGIC_KEY_NKRO           N
+//#define MAGIC_KEY_SLEEP_LED      Z
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/*
+ * MIDI options
+ */
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0

+ 70 - 0
keyboards/metamechs/timberwolf/info.json

@@ -0,0 +1,70 @@
+{
+    "keyboard_name": "Timber Wolf", 
+    "url": "https://geekhack.org/index.php?topic=102520.0", 
+    "maintainer": "Croktopus", 
+    "width": 18.75, 
+    "height": 6.5, 
+    "layouts": {
+        "LAYOUT_all": {
+            "layout": [
+				{"label":"Mute", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"F1", "x":2.5, "y":0}, {"label":"F2", "x":3.5, "y":0}, {"label":"F3", "x":4.5, "y":0}, {"label":"F4", "x":5.5, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":9, "y":0}, {"label":"F8", "x":10, "y":0}, {"label":"F9", "x":11.5, "y":0}, {"label":"F10", "x":12.5, "y":0}, {"label":"F11", "x":13.5, "y":0}, {"label":"F12", "x":14.5, "y":0}, {"label":"Insert", "x":15.75, "y":0}, {"label":"Home", "x":16.75, "y":0}, {"label":"PgUp", "x":17.75, "y":0}, {"label":"End", "x":16.75, "y":1}, {"label":"PgDn", "x":17.75, "y":1},
+				{"label":"Fn", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, 
+				{"label":"Fn", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"|", "x":14.75, "y":2.25, "w":1.5}, {"label":"Insert", "x":16.5, "y":2.25}, {"label":"PrtSc", "x":17.75, "y":2.25}, 
+				{"label":"Fn", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"x":14, "y":3.25}, {"label":"Enter", "x":15, "y":3.25, "w":1.25}, {"label":"Delete", "x":16.5, "y":3.25}, {"label":"Enter", "x":17.75, "y":3.25}, 
+				{"label":"Fn", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Fn", "x":15.25, "y":4.25}, {"label":"Enter", "x":17.75, "y":4.25}, {"label":"\u2191", "x":16.5, "y":4.5}, 
+				{"label":"Fn", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, {"label":"Win", "x":2.75, "y":5.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, {"x":5.25, "y":5.25, "w":6}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Win", "x":12.75, "y":5.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.5, "y":5.5}, {"label":"\u2193", "x":16.5, "y":5.5}, {"label":"\u2192", "x":17.5, "y":5.5}]
+        },
+        "LAYOUT_prime_ansi": {
+            "layout": [
+				{"label":"Mute", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"F1", "x":2.5, "y":0}, {"label":"F2", "x":3.5, "y":0}, {"label":"F3", "x":4.5, "y":0}, {"label":"F4", "x":5.5, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":9, "y":0}, {"label":"F8", "x":10, "y":0}, {"label":"F9", "x":11.5, "y":0}, {"label":"F10", "x":12.5, "y":0}, {"label":"F11", "x":13.5, "y":0}, {"label":"F12", "x":14.5, "y":0}, {"label":"Insert", "x":15.75, "y":0}, {"label":"Home", "x":16.75, "y":0}, {"label":"PgUp", "x":17.75, "y":0}, {"label":"End", "x":16.75, "y":1}, {"label":"PgDn", "x":17.75, "y":1}, 
+				{"label":"Fn", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, 
+				{"label":"Fn", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"|", "x":14.75, "y":2.25, "w":1.5}, {"label":"Insert", "x":16.5, "y":2.25}, {"label":"PrtSc", "x":17.75, "y":2.25}, 
+				{"label":"Fn", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"label":"Enter", "x":14, "y":3.25, "w":2.25}, {"label":"Delete", "x":16.5, "y":3.25}, {"label":"Enter", "x":17.75, "y":3.25}, 
+				{"label":"Fn", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":2.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Fn", "x":15.25, "y":4.25}, {"label":"Enter", "x":17.75, "y":4.25}, {"label":"\u2191", "x":16.5, "y":4.5}, 
+				{"label":"Fn", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, {"label":"Win", "x":2.75, "y":5.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, {"x":5.25, "y":5.25, "w":6}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Win", "x":12.75, "y":5.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.5, "y":5.5}, {"label":"\u2193", "x":16.5, "y":5.5}, {"label":"\u2192", "x":17.5, "y":5.5}]
+        },
+        "LAYOUT_prime_iso": {
+            "layout": [
+				{"label":"Mute", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"F1", "x":2.5, "y":0}, {"label":"F2", "x":3.5, "y":0}, {"label":"F3", "x":4.5, "y":0}, {"label":"F4", "x":5.5, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":9, "y":0}, {"label":"F8", "x":10, "y":0}, {"label":"F9", "x":11.5, "y":0}, {"label":"F10", "x":12.5, "y":0}, {"label":"F11", "x":13.5, "y":0}, {"label":"F12", "x":14.5, "y":0}, {"label":"Insert", "x":15.75, "y":0}, {"label":"Home", "x":16.75, "y":0}, {"label":"PgUp", "x":17.75, "y":0}, {"label":"End", "x":16.75, "y":1}, {"label":"PgDn", "x":17.75, "y":1}, 
+				{"label":"Fn", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, 
+				{"label":"Fn", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"Enter", "x":15, "y":2.25, "w":1.25, "h":2}, {"label":"Insert", "x":16.5, "y":2.25}, {"label":"PrtSc", "x":17.75, "y":2.25}, 
+				{"label":"Fn", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"x":14, "y":3.25}, {"label":"Delete", "x":16.5, "y":3.25}, {"label":"Enter", "x":17.75, "y":3.25}, 
+				{"label":"Fn", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Fn", "x":15.25, "y":4.25}, {"label":"Enter", "x":17.75, "y":4.25}, {"label":"\u2191", "x":16.5, "y":4.5}, 
+				{"label":"Fn", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, {"label":"Win", "x":2.75, "y":5.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, {"x":5.25, "y":5.25, "w":6}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Win", "x":12.75, "y":5.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.5, "y":5.5}, {"label":"\u2193", "x":16.5, "y":5.5}, {"label":"\u2192", "x":17.5, "y":5.5}]
+        },
+		"LAYOUT_b_ansi": {
+            "layout": [
+				{"label":"Mute", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"F1", "x":2.5, "y":0}, {"label":"F2", "x":3.5, "y":0}, {"label":"F3", "x":4.5, "y":0}, {"label":"F4", "x":5.5, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":9, "y":0}, {"label":"F8", "x":10, "y":0}, {"label":"F9", "x":11.5, "y":0}, {"label":"F10", "x":12.5, "y":0}, {"label":"F11", "x":13.5, "y":0}, {"label":"F12", "x":14.5, "y":0}, {"label":"PrtSc", "x":15.75, "y":0}, {"label":"Scroll Lock", "x":16.75, "y":0}, {"label":"Pause", "x":17.75, "y":0}, 
+				{"label":"Fn", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, {"label":"Home", "x":16.75, "y":1.25}, {"label":"PgUp", "x":17.75, "y":1.25}, 
+				{"label":"Fn", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"|", "x":14.75, "y":2.25, "w":1.5}, {"label":"End", "x":16.75, "y":2.25}, {"label":"PgDn", "x":17.75, "y":2.25}, 
+				{"label":"Fn", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"label":"Enter", "x":14, "y":3.25, "w":2.25}, {"label":"Delete", "x":16.75, "y":3.25}, {"label":"Insert", "x":17.75, "y":3.25}, 
+				{"label":"Fn", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":2.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Fn", "x":15.25, "y":4.25}, {"label":"Enter", "x":17.75, "y":4.25}, {"label":"\u2191", "x":16.5, "y":4.5}, 
+				{"label":"Fn", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, {"label":"Win", "x":2.75, "y":5.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, {"x":5.25, "y":5.25, "w":6}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Win", "x":12.75, "y":5.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.5, "y":5.5}, {"label":"\u2193", "x":16.5, "y":5.5}, {"label":"\u2192", "x":17.5, "y":5.5}]
+        },
+        "LAYOUT_b_iso": {
+            "layout": [
+				{"label":"Mute", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"F1", "x":2.5, "y":0}, {"label":"F2", "x":3.5, "y":0}, {"label":"F3", "x":4.5, "y":0}, {"label":"F4", "x":5.5, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":9, "y":0}, {"label":"F8", "x":10, "y":0}, {"label":"F9", "x":11.5, "y":0}, {"label":"F10", "x":12.5, "y":0}, {"label":"F11", "x":13.5, "y":0}, {"label":"F12", "x":14.5, "y":0}, {"label":"PrtSc", "x":15.75, "y":0}, {"label":"Scroll Lock", "x":16.75, "y":0}, {"label":"Pause", "x":17.75, "y":0}, 
+				{"label":"Fn", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, {"label":"Home", "x":16.75, "y":1.25}, {"label":"PgUp", "x":17.75, "y":1.25}, 
+				{"label":"Fn", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"Enter", "x":15, "y":2.25, "w":1.25, "h":2}, {"label":"End", "x":16.75, "y":2.25}, {"label":"PgDn", "x":17.75, "y":2.25}, 
+				{"label":"Fn", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"x":14, "y":3.25}, {"label":"Delete", "x":16.75, "y":3.25}, {"label":"Insert", "x":17.75, "y":3.25}, 
+				{"label":"Fn", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Fn", "x":15.25, "y":4.25}, {"label":"Enter", "x":17.75, "y":4.25}, {"label":"\u2191", "x":16.5, "y":4.5}, 
+				{"label":"Fn", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.5}, {"label":"Win", "x":2.75, "y":5.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.5}, {"x":5.25, "y":5.25, "w":6}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Win", "x":12.75, "y":5.25}, {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.5, "y":5.5}, {"label":"\u2193", "x":16.5, "y":5.5}, {"label":"\u2192", "x":17.5, "y":5.5}]
+        },
+        "LAYOUT_a_ansi": {
+            "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.75, "y":0}, {"label":"F6", "x":6.75, "y":0}, {"label":"F7", "x":7.75, "y":0}, {"label":"F8", "x":8.75, "y":0}, {"label":"F9", "x":10.25, "y":0}, {"label":"F10", "x":11.25, "y":0}, {"label":"F11", "x":12.25, "y":0}, {"label":"F12", "x":13.25, "y":0}, {"label":"PrtSc", "x":14.5, "y":0}, {"label":"Insert", "x":15.75, "y":0}, {"label":"Home", "x":16.75, "y":0}, {"label":"PgUp", "x":17.75, "y":0}, {"label":"End", "x":16.75, "y":1}, {"label":"PgDn", "x":17.75, "y":1}, 
+			{"label":"Fn", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, 
+			{"label":"Fn", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"|", "x":14.75, "y":2.25, "w":1.5}, {"label":"Insert", "x":16.5, "y":2.25}, {"label":"Mute", "x":17.75, "y":2.625}, 
+			{"label":"Fn", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"label":"Enter", "x":14, "y":3.25, "w":2.25}, {"label":"Delete", "x":16.5, "y":3.25}, 
+			{"label":"Fn", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":2.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Enter", "x":17.75, "y":4.25}, {"label":"\u2191", "x":15.5, "y":4.5}, 
+			{"label":"Fn", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.25}, {"label":"Win", "x":2.5, "y":5.25, "w":1.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.25}, {"x":5, "y":5.25, "w":6.25}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":12.75, "y":5.25, "w":1.5}, {"label":"Enter", "x":17.75, "y":5.25}, {"label":"\u2190", "x":14.5, "y":5.5}, {"label":"\u2193", "x":15.5, "y":5.5}, {"label":"\u2192", "x":16.5, "y":5.5}]
+        },
+        "LAYOUT_a_iso": {
+            "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.75, "y":0}, {"label":"F6", "x":6.75, "y":0}, {"label":"F7", "x":7.75, "y":0}, {"label":"F8", "x":8.75, "y":0}, {"label":"F9", "x":10.25, "y":0}, {"label":"F10", "x":11.25, "y":0}, {"label":"F11", "x":12.25, "y":0}, {"label":"F12", "x":13.25, "y":0}, {"label":"PrtSc", "x":14.5, "y":0}, {"label":"Insert", "x":15.75, "y":0}, {"label":"Home", "x":16.75, "y":0}, {"label":"PgUp", "x":17.75, "y":0}, {"label":"End", "x":16.75, "y":1}, {"label":"PgDn", "x":17.75, "y":1}, 
+			{"label":"Fn", "x":0, "y":1.25}, {"label":"~", "x":1.25, "y":1.25}, {"label":"!", "x":2.25, "y":1.25}, {"label":"@", "x":3.25, "y":1.25}, {"label":"#", "x":4.25, "y":1.25}, {"label":"$", "x":5.25, "y":1.25}, {"label":"%", "x":6.25, "y":1.25}, {"label":"^", "x":7.25, "y":1.25}, {"label":"&", "x":8.25, "y":1.25}, {"label":"*", "x":9.25, "y":1.25}, {"label":"(", "x":10.25, "y":1.25}, {"label":")", "x":11.25, "y":1.25}, {"label":"_", "x":12.25, "y":1.25}, {"label":"+", "x":13.25, "y":1.25}, {"x":14.25, "y":1.25}, {"label":"Backspace", "x":15.25, "y":1.25}, 
+			{"label":"Fn", "x":0, "y":2.25}, {"label":"Tab", "x":1.25, "y":2.25, "w":1.5}, {"label":"Q", "x":2.75, "y":2.25}, {"label":"W", "x":3.75, "y":2.25}, {"label":"E", "x":4.75, "y":2.25}, {"label":"R", "x":5.75, "y":2.25}, {"label":"T", "x":6.75, "y":2.25}, {"label":"Y", "x":7.75, "y":2.25}, {"label":"U", "x":8.75, "y":2.25}, {"label":"I", "x":9.75, "y":2.25}, {"label":"O", "x":10.75, "y":2.25}, {"label":"P", "x":11.75, "y":2.25}, {"label":"{", "x":12.75, "y":2.25}, {"label":"}", "x":13.75, "y":2.25}, {"label":"Enter", "x":15, "y":2.25, "w":1.25, "h":2}, {"label":"Insert", "x":16.5, "y":2.25}, {"label":"Mute", "x":17.75, "y":2.625}, 
+			{"label":"Fn", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.25, "y":3.25, "w":1.75}, {"label":"A", "x":3, "y":3.25}, {"label":"S", "x":4, "y":3.25}, {"label":"D", "x":5, "y":3.25}, {"label":"F", "x":6, "y":3.25}, {"label":"G", "x":7, "y":3.25}, {"label":"H", "x":8, "y":3.25}, {"label":"J", "x":9, "y":3.25}, {"label":"K", "x":10, "y":3.25}, {"label":"L", "x":11, "y":3.25}, {"label":":", "x":12, "y":3.25}, {"label":"\"", "x":13, "y":3.25}, {"x":14, "y":3.25}, {"label":"Delete", "x":16.5, "y":3.25}, 
+			{"label":"Fn", "x":0, "y":4.25}, {"label":"Shift", "x":1.25, "y":4.25, "w":1.25}, {"x":2.5, "y":4.25}, {"label":"Z", "x":3.5, "y":4.25}, {"label":"X", "x":4.5, "y":4.25}, {"label":"C", "x":5.5, "y":4.25}, {"label":"V", "x":6.5, "y":4.25}, {"label":"B", "x":7.5, "y":4.25}, {"label":"N", "x":8.5, "y":4.25}, {"label":"M", "x":9.5, "y":4.25}, {"label":"<", "x":10.5, "y":4.25}, {"label":">", "x":11.5, "y":4.25}, {"label":"?", "x":12.5, "y":4.25}, {"label":"Shift", "x":13.5, "y":4.25, "w":1.75}, {"label":"Enter", "x":17.75, "y":4.25}, {"label":"\u2191", "x":15.5, "y":4.5}, 
+			{"label":"Fn", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.25, "y":5.25, "w":1.25}, {"label":"Win", "x":2.5, "y":5.25, "w":1.25}, {"label":"Alt", "x":3.75, "y":5.25, "w":1.25}, {"x":5, "y":5.25, "w":6.25}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":12.75, "y":5.25, "w":1.5}, {"label":"Enter", "x":17.75, "y":5.25}, {"label":"\u2190", "x":14.5, "y":5.5}, {"label":"\u2193", "x":15.5, "y":5.5}, {"label":"\u2192", "x":16.5, "y":5.5}]
+        }
+    }
+}

+ 44 - 0
keyboards/metamechs/timberwolf/keymaps/a_ansi/keymap.c

@@ -0,0 +1,44 @@
+/* Copyright 2020 Croktopus
+ *
+ * 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Base */
+    [0] = LAYOUT_a_ansi(
+		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_INS ,KC_HOME,KC_PGUP, 
+		RESET  ,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_DEL ,KC_END ,KC_PGDN, 
+		BL_STEP,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_BSLS        ,KC_INS ,KC_MUTE, 
+		MO(1)  ,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_ENT         ,KC_DEL         , 
+		MO(1)  ,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_UP          ,KC_PENT, 
+		MO(1)  ,KC_LCTL,KC_LGUI,KC_LALT                        ,KC_SPC                 ,KC_RALT,KC_RCTL                ,KC_LEFT,KC_DOWN,KC_RGHT,KC_PENT 
+    ),
+    [1] = LAYOUT_a_ansi(
+		RESET  ,RESET  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______        ,_______        , 
+		MO(1)  ,_______        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,        _______, 
+		MO(1)  ,_______,_______,_______                        ,_______                ,_______,_______,                _______,_______,_______,_______ 
+    )
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+	if (clockwise) {
+		tap_code(KC_VOLU);
+	} else {
+		tap_code(KC_VOLD);
+	}
+}

+ 44 - 0
keyboards/metamechs/timberwolf/keymaps/a_iso/keymap.c

@@ -0,0 +1,44 @@
+/* Copyright 2020 Croktopus
+ *
+ * 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Base */
+    [0] = LAYOUT_a_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_INS ,KC_HOME,KC_PGUP, 
+		RESET  ,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_DEL ,KC_END ,KC_PGDN, 
+		BL_STEP,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_INS ,KC_MUTE, 
+		MO(1)  ,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_DEL         , 
+		MO(1)  ,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_PENT, 
+		MO(1)  ,KC_LCTL,KC_LGUI,KC_LALT                        ,KC_SPC                 ,KC_RALT,KC_RCTL                ,KC_LEFT,KC_DOWN,KC_RGHT,KC_PENT 
+    ),
+    [1] = LAYOUT_a_iso(
+		RESET  ,RESET  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______                ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______        , 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,        _______, 
+		MO(1)  ,_______,_______,_______                        ,_______                ,_______,_______,                _______,_______,_______,_______ 
+    )
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+	if (clockwise) {
+		tap_code(KC_VOLU);
+	} else {
+		tap_code(KC_VOLD);
+	}
+}

+ 44 - 0
keyboards/metamechs/timberwolf/keymaps/b_ansi/keymap.c

@@ -0,0 +1,44 @@
+/* Copyright 2020 Croktopus
+ *
+ * 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Base */
+    [0] = LAYOUT_b_ansi(
+		KC_MUTE,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, 
+		RESET  ,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_DEL ,KC_HOME,KC_PGUP, 
+		BL_STEP,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_BSLS        ,KC_END ,KC_PGDN, 
+		MO(1)  ,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_ENT         ,KC_DEL ,KC_INS , 
+		MO(1)  ,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(1)  ,KC_UP          ,KC_PENT, 
+		MO(1)  ,KC_LCTL,KC_LGUI,KC_LALT                        ,KC_SPC                 ,KC_RALT,KC_RGUI,KC_RCTL        ,KC_LEFT,KC_DOWN,KC_RGHT 
+    ),
+    [1] = LAYOUT_b_ansi(
+		RESET  ,RESET  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______        ,_______,_______, 
+		MO(1)  ,_______        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______, 
+		MO(1)  ,_______,_______,_______                        ,_______                ,_______,_______,_______        ,_______,_______,_______ 
+    )
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+	if (clockwise) {
+		tap_code(KC_VOLU);
+	} else {
+		tap_code(KC_VOLD);
+	}
+}

+ 44 - 0
keyboards/metamechs/timberwolf/keymaps/b_iso/keymap.c

@@ -0,0 +1,44 @@
+/* Copyright 2020 Croktopus
+ *
+ * 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Base */
+    [0] = LAYOUT_b_iso(
+		KC_MUTE,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, 
+		RESET  ,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_DEL ,KC_HOME,KC_PGUP, 
+		BL_STEP,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_END ,KC_PGDN, 
+		MO(1)  ,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_DEL ,KC_INS , 
+		MO(1)  ,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,MO(1)  ,KC_UP          ,KC_PENT, 
+		MO(1)  ,KC_LCTL,KC_LGUI,KC_LALT                        ,KC_SPC                 ,KC_RALT,KC_RGUI,KC_RCTL        ,KC_LEFT,KC_DOWN,KC_RGHT 
+    ),
+    [1] = LAYOUT_b_iso(
+		RESET  ,RESET  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______                ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______, 
+		MO(1)  ,_______,_______,_______                        ,_______                ,_______,_______,_______        ,_______,_______,_______ 
+    )
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+	if (clockwise) {
+		tap_code(KC_VOLU);
+	} else {
+		tap_code(KC_VOLD);
+	}
+}

+ 44 - 0
keyboards/metamechs/timberwolf/keymaps/default/keymap.c

@@ -0,0 +1,44 @@
+/* Copyright 2020 Croktopus
+ *
+ * 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Base */
+    [0] = LAYOUT_all(
+		KC_MUTE,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_INS ,KC_HOME,KC_PGUP, 
+		RESET  ,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_DEL ,KC_END ,KC_PGDN, 
+		BL_STEP,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_BSLS        ,KC_PSCR,KC_SLCK, 
+		MO(1)  ,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_DEL ,KC_INS , 
+		MO(1)  ,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,MO(1)  ,KC_NO  ,KC_UP  ,KC_PENT, 
+		MO(1)  ,KC_LCTL,KC_LGUI,KC_LALT                        ,KC_SPC                 ,KC_RALT,KC_RGUI,KC_RCTL,KC_LEFT,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO 
+    ),
+    [1] = LAYOUT_all(
+		RESET  ,RESET  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______                        ,_______                ,_______,_______,_______,_______,_______,_______,_______,_______ 
+    )
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+	if (clockwise) {
+		tap_code(KC_VOLU);
+	} else {
+		tap_code(KC_VOLD);
+	}
+}

+ 44 - 0
keyboards/metamechs/timberwolf/keymaps/prime_ansi/keymap.c

@@ -0,0 +1,44 @@
+/* Copyright 2020 Croktopus
+ *
+ * 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Base */
+    [0] = LAYOUT_prime_ansi(
+		KC_MUTE,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_INS ,KC_HOME,KC_PGUP, 
+		RESET  ,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_DEL ,KC_END ,KC_PGDN, 
+		BL_STEP,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_BSLS        ,KC_PSCR,KC_SLCK, 
+		MO(1)  ,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_ENT         ,KC_DEL ,KC_INS , 
+		MO(1)  ,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(1)  ,KC_UP          ,KC_PENT, 
+		MO(1)  ,KC_LCTL,KC_LGUI,KC_LALT                        ,KC_SPC                 ,KC_RALT,KC_RGUI,KC_RCTL        ,KC_LEFT,KC_DOWN,KC_RGHT 
+    ),
+    [1] = LAYOUT_prime_ansi(
+		RESET  ,RESET  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______        ,_______,_______, 
+		MO(1)  ,_______        ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______, 
+		MO(1)  ,_______,_______,_______                        ,_______                ,_______,_______,_______        ,_______,_______,_______ 
+    )
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+	if (clockwise) {
+		tap_code(KC_VOLU);
+	} else {
+		tap_code(KC_VOLD);
+	}
+}

+ 44 - 0
keyboards/metamechs/timberwolf/keymaps/prime_iso/keymap.c

@@ -0,0 +1,44 @@
+/* Copyright 2020 Croktopus
+ *
+ * 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Base */
+    [0] = LAYOUT_prime_iso(
+		KC_MUTE,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_INS ,KC_HOME,KC_PGUP, 
+		RESET  ,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_DEL ,KC_END ,KC_PGDN, 
+		BL_STEP,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_PSCR,KC_SLCK, 
+		MO(1)  ,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_DEL ,KC_INS , 
+		MO(1)  ,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,MO(1)  ,KC_UP          ,KC_PENT, 
+		MO(1)  ,KC_LCTL,KC_LGUI,KC_LALT                        ,KC_SPC                 ,KC_RALT,KC_RGUI,KC_RCTL        ,KC_LEFT,KC_DOWN,KC_RGHT 
+    ),
+    [1] = LAYOUT_prime_iso(
+		RESET  ,RESET  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______                ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______, 
+		MO(1)  ,_______,_______,_______                        ,_______                ,_______,_______,_______        ,_______,_______,_______ 
+    )
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+	if (clockwise) {
+		tap_code(KC_VOLU);
+	} else {
+		tap_code(KC_VOLD);
+	}
+}

+ 60 - 0
keyboards/metamechs/timberwolf/keymaps/via/keymap.c

@@ -0,0 +1,60 @@
+/* Copyright 2020 Croktopus
+ *
+ * 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Base */
+    [0] = LAYOUT_all(
+		KC_MUTE,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_INS ,KC_HOME,KC_PGUP, 
+		RESET  ,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_DEL ,KC_END ,KC_PGDN, 
+		BL_STEP,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_BSLS        ,KC_PSCR,KC_SLCK, 
+		MO(1)  ,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_DEL ,KC_INS , 
+		MO(1)  ,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,MO(1)  ,KC_UP  ,KC_NO  ,KC_PENT, 
+		MO(1)  ,KC_LCTL,KC_LGUI,KC_LALT                        ,KC_SPC                 ,KC_RALT,KC_RGUI,KC_RCTL,KC_LEFT,KC_LEFT,KC_DOWN,KC_RGHT,KC_NO 
+    ),
+    [1] = LAYOUT_all(
+		RESET  ,RESET  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		MO(1)  ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		MO(1)  ,_______,_______,_______                        ,_______                ,_______,_______,_______,_______,_______,_______,_______,_______ 
+    ),
+    [2] = LAYOUT_all(
+		_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______,_______, 
+		_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		_______,_______,_______,_______                        ,_______                ,_______,_______,_______,_______,_______,_______,_______,_______ 
+    ),
+    [3] = LAYOUT_all(
+		_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______,_______, 
+		_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______        ,_______,_______, 
+		_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, 
+		_______,_______,_______,_______                        ,_______                ,_______,_______,_______,_______,_______,_______,_______,_______ 
+    )
+};
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+	if (clockwise) {
+		tap_code(KC_VOLU);
+	} else {
+		tap_code(KC_VOLD);
+	}
+}

+ 21 - 0
keyboards/metamechs/timberwolf/readme.md

@@ -0,0 +1,21 @@
+# Timber Wolf
+
+![Timber Wolf](https://i.imgur.com/Kz9fV6t.jpg)
+
+A compact TKL/XL 75% with rotary encoder and macro column.
+
+* Keyboard Maintainer: [Croktopus](https://github.com/Croktopus)
+* Hardware Supported: Timber Wolf PCB using ATmega32u4
+* Hardware Availability: [GB ended October 2019](https://geekhack.org/index.php?topic=102520.0)
+
+Make command depends on the physical layout you purchased - for example, if you purchased a TBR-Prime and want to use an ANSI layout, you would use:
+
+    make metamechs/timberwolf:prime_ansi
+
+or for a TBR-B with ISO you would use:
+
+    make metamechs/timberwolf:b_iso
+
+etc.
+
+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).

+ 35 - 0
keyboards/metamechs/timberwolf/rules.mk

@@ -0,0 +1,35 @@
+# 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
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = no         # 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
+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
+ENCODER_ENABLE = yes        # Enable encoder support
+
+BACKLIGHT_DRIVER = software

+ 27 - 0
keyboards/metamechs/timberwolf/timberwolf.c

@@ -0,0 +1,27 @@
+/* Copyright 2020 Croktopus
+ *
+ * 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 "timberwolf.h"
+
+bool led_update_kb(led_t led_state) {
+    bool runDefault = led_update_user(led_state);
+    if (led_state.caps_lock) {
+      backlight_enable();
+    } else {
+		backlight_disable();
+	}
+    return runDefault;
+}

+ 175 - 0
keyboards/metamechs/timberwolf/timberwolf.h

@@ -0,0 +1,175 @@
+/* Copyright 2020 Croktopus
+ *
+ * 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 ____ KC_NO
+
+#define LAYOUT_all( \
+    K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016,       K017, K008, K018, \
+    K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \
+    K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047,       K048, K058, \
+    K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, K067,       K068, K078, \
+    K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K087, K097, K088, K098, \
+    K100, K110, K101, K111,                   K113,             K105, K115, K106, K116, K107, K117, K108, K118  \
+) { \
+    { K000, K001, K002, K003, K004, K005, K006, ____, K008 }, \
+    { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+    { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+    { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
+    { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+    { K050, K051, K052, K053, K054, K055, K056, ____, K058 }, \
+    { K060, K061, K062, K063, K064, K065, K066, K067, K068 }, \
+    { K070, K071, K072, K073, K074, K075, K076, ____, K078 }, \
+    { K080, K081, K082, K083, K084, K085, K086, K087, K088 }, \
+    { K090, K091, K092, K093, K094, K095, K096, K097, K098 }, \
+    { K100, K101, ____, ____, ____, K105, K106, K107, K108 }, \
+    { K110, K111, ____, K113, ____, K115, K116, K117, K118 } \
+}
+
+#define LAYOUT_prime_ansi( \
+    K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016,       K017, K008, K018, \
+    K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \
+    K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047,       K048, K058, \
+    K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066,       K067,       K068, K078, \
+    K080, K090,       K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K087, K088,       K098, \
+    K100, K110, K101, K111,                   K113,             K105, K115, K106,       K107, K117, K108        \
+) { \
+    { K000, K001, K002, K003, K004, K005, K006, ____, K008 }, \
+    { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+    { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+    { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
+    { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+    { K050, K051, K052, K053, K054, K055, K056, ____, K058 }, \
+    { K060, K061, K062, K063, K064, K065, K066, K067, K068 }, \
+    { K070, K071, K072, K073, K074, K075, ____, ____, K078 }, \
+    { K080, ____, K082, K083, K084, K085, K086, K087, K088 }, \
+    { K090, K091, K092, K093, K094, K095, K096, ____, K098 }, \
+    { K100, K101, ____, ____, ____, K105, K106, K107, K108 }, \
+    { K110, K111, ____, K113, ____, K115, ____, K117, ____ } \
+}
+
+#define LAYOUT_prime_iso( \
+    K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016,       K017, K008, K018, \
+    K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \
+    K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056,             K048, K058, \
+    K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, K067,       K068, K078, \
+    K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K087, K097,       K098, \
+    K100, K110, K101, K111,                   K113,             K105, K115, K106,       K107, K117, K108        \
+) { \
+    { K000, K001, K002, K003, K004, K005, K006, ____, K008 }, \
+    { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+    { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+    { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
+    { K040, K041, K042, K043, K044, K045, K046, ____, K048 }, \
+    { K050, K051, K052, K053, K054, K055, K056, ____, K058 }, \
+    { K060, K061, K062, K063, K064, K065, K066, K067, K068 }, \
+    { K070, K071, K072, K073, K074, K075, K076, ____, K078 }, \
+    { K080, K081, K082, K083, K084, K085, K086, K087, ____ }, \
+    { K090, K091, K092, K093, K094, K095, K096, K097, K098 }, \
+    { K100, K101, ____, ____, ____, K105, K106, K107, K108 }, \
+    { K110, K111, ____, K113, ____, K115, ____, K117, ____ } \
+}
+
+#define LAYOUT_b_ansi( \
+    K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016,       K017, K008, K018, \
+    K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \
+    K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047,       K048, K058, \
+    K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066,       K067,       K068, K078, \
+    K080, K090,       K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K087, K088,       K098, \
+    K100, K110, K101, K111,                   K113,             K105, K115, K106,       K107, K117, K108        \
+) { \
+    { K000, K001, K002, K003, K004, K005, K006, ____, K008 }, \
+    { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+    { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+    { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
+    { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+    { K050, K051, K052, K053, K054, K055, K056, ____, K058 }, \
+    { K060, K061, K062, K063, K064, K065, K066, K067, K068 }, \
+    { K070, K071, K072, K073, K074, K075, ____, ____, K078 }, \
+    { K080, ____, K082, K083, K084, K085, K086, K087, K088 }, \
+    { K090, K091, K092, K093, K094, K095, K096, ____, K098 }, \
+    { K100, K101, ____, ____, ____, K105, K106, K107, K108 }, \
+    { K110, K111, ____, K113, ____, K115, ____, K117, ____ } \
+}
+
+#define LAYOUT_b_iso( \
+    K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016,       K017, K008, K018, \
+    K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \
+    K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056,             K048, K058, \
+    K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, K067,       K068, K078, \
+    K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K087, K097,       K098, \
+    K100, K110, K101, K111,                   K113,             K105, K115, K106,       K107, K117, K108        \
+) { \
+    { K000, K001, K002, K003, K004, K005, K006, ____, K008 }, \
+    { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+    { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+    { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
+    { K040, K041, K042, K043, K044, K045, K046, ____, K048 }, \
+    { K050, K051, K052, K053, K054, K055, K056, ____, K058 }, \
+    { K060, K061, K062, K063, K064, K065, K066, K067, K068 }, \
+    { K070, K071, K072, K073, K074, K075, K076, ____, K078 }, \
+    { K080, K081, K082, K083, K084, K085, K086, K087, ____ }, \
+    { K090, K091, K092, K093, K094, K095, K096, K097, K098 }, \
+    { K100, K101, ____, ____, ____, K105, K106, K107, K108 }, \
+    { K110, K111, ____, K113, ____, K115, ____, K117, ____ } \
+}
+
+#define LAYOUT_a_ansi( \
+    K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006,       K016, K017, K008, K018, \
+    K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \
+    K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047,       K048, K058, \
+    K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066,       K067,       K068,       \
+    K080, K090,       K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096,      K097,        K098, \
+    K100, K110, K101, K111,                   K113,             K105, K115,            K116, K107, K117,  K118  \
+) { \
+    { K000, K001, K002, K003, K004, K005, K006, ____, K008 }, \
+    { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+    { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+    { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
+    { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+    { K050, K051, K052, K053, K054, K055, K056, ____, K058 }, \
+    { K060, K061, K062, K063, K064, K065, K066, K067, K068 }, \
+    { K070, K071, K072, K073, K074, K075, ____, ____, ____ }, \
+    { K080, ____, K082, K083, K084, K085, K086, ____, ____ }, \
+    { K090, K091, K092, K093, K094, K095, K096, K097, K098 }, \
+    { K100, K101, ____, ____, ____, K105, ____, K107, ____ }, \
+    { K110, K111, ____, K113, ____, K115, K116, K117, K118 } \
+}
+
+#define LAYOUT_a_iso( \
+    K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006,       K016, K017, K008, K018, \
+    K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, K038, \
+    K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056,             K048, K058, \
+    K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, K067,       K068,       \
+    K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096,       K097,       K098, \
+    K100, K110, K101, K111,                   K113,             K105, K115,             K116, K107, K117, K118  \
+) { \
+    { K000, K001, K002, K003, K004, K005, K006, ____, K008 }, \
+    { K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+    { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+    { K030, K031, K032, K033, K034, K035, K036, K037, K038 }, \
+    { K040, K041, K042, K043, K044, K045, K046, ____, K048 }, \
+    { K050, K051, K052, K053, K054, K055, K056, ____, K058 }, \
+    { K060, K061, K062, K063, K064, K065, K066, K067, K068 }, \
+    { K070, K071, K072, K073, K074, K075, K076, ____, ____ }, \
+    { K080, K081, K082, K083, K084, K085, K086, ____, ____ }, \
+    { K090, K091, K092, K093, K094, K095, K096, K097, K098 }, \
+    { K100, K101, ____, ____, ____, K105, ____, K107, ____ }, \
+    { K110, K111, ____, K113, ____, K115, K116, K117, K118 } \
+}