~ruther/qmk_firmware

3c84157d83ed18f6c31632a4728d6a0be5b68d59 — Croktopus 5 years ago 4989af3
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>
A keyboards/metamechs/timberwolf/config.h => keyboards/metamechs/timberwolf/config.h +174 -0
@@ 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

A keyboards/metamechs/timberwolf/info.json => keyboards/metamechs/timberwolf/info.json +70 -0
@@ 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}]
        }
    }
}
\ No newline at end of file

A keyboards/metamechs/timberwolf/keymaps/a_ansi/keymap.c => keyboards/metamechs/timberwolf/keymaps/a_ansi/keymap.c +44 -0
@@ 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);
	}
}
\ No newline at end of file

A keyboards/metamechs/timberwolf/keymaps/a_iso/keymap.c => keyboards/metamechs/timberwolf/keymaps/a_iso/keymap.c +44 -0
@@ 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);
	}
}
\ No newline at end of file

A keyboards/metamechs/timberwolf/keymaps/b_ansi/keymap.c => keyboards/metamechs/timberwolf/keymaps/b_ansi/keymap.c +44 -0
@@ 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);
	}
}
\ No newline at end of file

A keyboards/metamechs/timberwolf/keymaps/b_iso/keymap.c => keyboards/metamechs/timberwolf/keymaps/b_iso/keymap.c +44 -0
@@ 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);
	}
}
\ No newline at end of file

A keyboards/metamechs/timberwolf/keymaps/default/keymap.c => keyboards/metamechs/timberwolf/keymaps/default/keymap.c +44 -0
@@ 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);
	}
}
\ No newline at end of file

A keyboards/metamechs/timberwolf/keymaps/prime_ansi/keymap.c => keyboards/metamechs/timberwolf/keymaps/prime_ansi/keymap.c +44 -0
@@ 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);
	}
}
\ No newline at end of file

A keyboards/metamechs/timberwolf/keymaps/prime_iso/keymap.c => keyboards/metamechs/timberwolf/keymaps/prime_iso/keymap.c +44 -0
@@ 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);
	}
}
\ No newline at end of file

A keyboards/metamechs/timberwolf/keymaps/via/keymap.c => keyboards/metamechs/timberwolf/keymaps/via/keymap.c +60 -0
@@ 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);
	}
}
\ No newline at end of file

A keyboards/metamechs/timberwolf/readme.md => keyboards/metamechs/timberwolf/readme.md +21 -0
@@ 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).

A keyboards/metamechs/timberwolf/rules.mk => keyboards/metamechs/timberwolf/rules.mk +35 -0
@@ 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
\ No newline at end of file

A keyboards/metamechs/timberwolf/timberwolf.c => keyboards/metamechs/timberwolf/timberwolf.c +27 -0
@@ 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;
}
\ No newline at end of file

A keyboards/metamechs/timberwolf/timberwolf.h => keyboards/metamechs/timberwolf/timberwolf.h +175 -0
@@ 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 } \
}