summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore9
-rw-r--r--1-setup-path-win.bat9
-rw-r--r--2-setup-environment-win.bat41
-rw-r--r--BUILD_GUIDE.md55
-rw-r--r--HAND_WIRE.md (renamed from HAND-WIRE.md)0
-rw-r--r--README.md5
-rw-r--r--VAGRANT_GUIDE.md (renamed from QUICK_START.md)1
-rw-r--r--keyboard/atreus/Makefile17
-rw-r--r--keyboard/atreus/README.md10
-rw-r--r--keyboard/atreus/atreus.h19
-rw-r--r--keyboard/atreus/config.h10
-rw-r--r--keyboard/atreus/keymaps/keymap_gerb.c66
-rw-r--r--keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/colemak_osx_pc_no.hex1142
-rw-r--r--keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/keyboard-layout.pngbin0 -> 103158 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/keymap.c264
-rw-r--r--keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/readme.md23
-rw-r--r--keyboard/ergodox_ez/keymaps/emacs_osx_dk/default_highres.pngbin0 -> 142146 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/emacs_osx_dk/emacs_osx_dk.hex1472
-rw-r--r--keyboard/ergodox_ez/keymaps/emacs_osx_dk/keymap.c184
-rw-r--r--keyboard/ergodox_ez/keymaps/emacs_osx_dk/readme.md10
-rw-r--r--keyboard/ergodox_ez/keymaps/erez_experimental/erez_experimental.hex8
-rw-r--r--keyboard/ergodox_ez/keymaps/erez_experimental/keymap.c22
-rw-r--r--keyboard/ergodox_ez/keymaps/erez_experimental/readme.md7
-rw-r--r--keyboard/ergodox_ez/keymaps/mpiechotka/keymap.c25
-rw-r--r--keyboard/ergodox_ez/keymaps/mpiechotka/mpiechotka.hex2975
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/keymap.c190
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex1122
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/ordinary.pngbin0 -> 93556 bytes
-rw-r--r--keyboard/ergodox_ez/keymaps/ordinary/readme.md5
-rw-r--r--keyboard/ergodox_ez/keymaps/tm2030/README.md2
-rw-r--r--keyboard/ergodox_ez/keymaps/tm2030/keymap.c28
-rw-r--r--keyboard/ergodox_ez/keymaps/tm2030/keymap.hex2958
-rw-r--r--keyboard/ergodox_ez/readme.md2
-rwxr-xr-xkeyboard/planck/CYGWIN_GUIDE.md352
-rw-r--r--keyboard/planck/PCB_GUIDE.md30
-rw-r--r--keyboard/planck/common_keymaps/keymap_mitch.c49
-rw-r--r--keyboard/planck/keymaps/brandon.c134
-rw-r--r--keyboard/planck/keymaps/lucas.c163
-rw-r--r--keyboard/planck/keymaps/lukas.c64
-rwxr-xr-xnew_project.sh3
-rw-r--r--quantum/keymap_common.c3
-rw-r--r--quantum/keymap_extras/keymap_bepo.h311
-rw-r--r--quantum/keymap_extras/keymap_dvorak.h4
-rw-r--r--quantum/keymap_extras/keymap_fr_ch.h98
-rw-r--r--quantum/keymap_extras/keymap_french.h2
-rw-r--r--quantum/keymap_extras/keymap_german_osx.h4
-rw-r--r--quantum/keymap_extras/keymap_neo2.h19
-rw-r--r--quantum/keymap_extras/keymap_norwegian.c41
-rw-r--r--quantum/template/template.h2
49 files changed, 8907 insertions, 3053 deletions
diff --git a/.gitignore b/.gitignore
index 1e19ce9a87..8b8c45169d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+keyboard/planck/dfu-programmer.exe
.dep
*.o
*.eep
@@ -13,4 +14,10 @@ tags
build/
*.bak
.vagrant/
-.DS_STORE \ No newline at end of file
+.DS_STORE
+
+# Eclipse Settings
+.cproject
+.project
+.settings/
+
diff --git a/1-setup-path-win.bat b/1-setup-path-win.bat
new file mode 100644
index 0000000000..49fb00e149
--- /dev/null
+++ b/1-setup-path-win.bat
@@ -0,0 +1,9 @@
+@echo off
+setx /M path "%PATH%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul 2>&1
+if NOT ["%errorlevel%"]==["0"] (
+ echo FAILED. Rerun with administrator privileges.
+ pause
+) else (
+ echo Success!
+ pause
+)
diff --git a/2-setup-environment-win.bat b/2-setup-environment-win.bat
new file mode 100644
index 0000000000..91b6c91e39
--- /dev/null
+++ b/2-setup-environment-win.bat
@@ -0,0 +1,41 @@
+@echo off
+setx /M test test > nul 2>&1
+if NOT ["%errorlevel%"]==["0"] (
+ echo FAILED. Rerun with administrator privileges.
+ pause
+ exit
+)
+
+echo ------------------------------------------
+echo Installing wget and unzip
+echo ------------------------------------------
+mingw-get install msys-wget-bin msys-unzip-bin
+cd \MinGW\bin
+
+mkdir temp
+cd temp
+echo ------------------------------------------
+echo Installing dfu-programmer.
+echo ------------------------------------------
+wget http://iweb.dl.sourceforge.net/project/dfu-programmer/dfu-programmer/0.7.2/dfu-programmer-win-0.7.2.zip
+unzip dfu-programmer-win-0.7.2.zip
+copy dfu-programmer.exe ..
+
+echo ------------------------------------------
+echo Downloading driver
+echo ------------------------------------------
+wget http://iweb.dl.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip
+unzip libusb-win32-bin-1.2.6.0.zip
+cp libusb-win32-bin-1.2.6.0\bin\x86\libusb0_x86.dll ../libusb0.dll
+
+echo ------------------------------------------
+echo Installing driver. Accept prompt.
+echo ------------------------------------------
+pnputil -i -a dfu-prog-usb-1.2.2\atmel_usb_dfu.inf
+
+cd ..
+rm -rf temp
+
+echo ------------------------------------------
+echo Finished!
+pause \ No newline at end of file
diff --git a/BUILD_GUIDE.md b/BUILD_GUIDE.md
new file mode 100644
index 0000000000..81c3ec44f2
--- /dev/null
+++ b/BUILD_GUIDE.md
@@ -0,0 +1,55 @@
+# Build Guide
+
+## Build Environment Setup
+
+### Windows
+1. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**.
+2. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location.
+3. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer.
+4. Right-click on the 1-setup-path-win batch script, select "Run as administrator", and accept the User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up.
+5. Right-click on the 2-setup-environment-win batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete!
+
+### Mac
+If you're using [homebrew,](http://brew.sh/) you can use the following commands:
+
+ brew tap osx-cross/avr
+ brew install avr-libc
+ brew install dfu-programmer
+
+This is the recommended method. If you don't have homebrew, [install it!](http://brew.sh/) It's very much worth it for anyone who works in the command line.
+
+You can also try these instructions:
+
+1. Install Xcode from the App Store.
+2. Install the Command Line Tools from `Xcode->Preferences->Downloads`.
+3. Install [DFU-Programmer][dfu-prog].
+
+### Linux
+Install AVR GCC and dfu-progammer with your favorite package manager.
+
+Debian/Ubuntu example:
+
+ sudo apt-get update
+ sudo apt-get install gcc-avr dfu-programmer
+
+### Vagrant
+If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [VAGRANT_GUIDE file](VAGRANT_GUIDE.md).
+
+## Verify Your Installation
+1. If you haven't already, obtain this repository ([https://github.com/jackhumbert/qmk_firmware](https://github.com/jackhumbert/qmk_firmware)). You can either download it as a zip file and extract it, or clone it using the command line tool git or the Github Desktop application.
+2. Open up a terminal or command prompt and navigate to the qmk_firmware folder using the `cd` command. The command prompt will typically open to your home directory. If, for example, you cloned the repository to your Documents folder, then you would type `cd Documents/qmk_firmware`. If you extracted the file from a zip, then it may be named `qmk_firmware-master` instead.
+3. To confirm that you're in the correct location, you can display the contents of your current folder using the `dir` command on Windows, or the `ls` command on Linux or Mac. You should see several files, including `README.md` and a `quantum` folder. From here, you need to navigate to the appropriate folder under `keyboard/`. For example, if you're building for a Planck, run `cd keyboard/planck`.
+4. Once you're in the correct keyboard-specific folder, run the `make` command. This should output a lot of information about the build process.
+
+## Customizing, Building, and Deploying Your Firmware
+1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides.
+2. To build a keymap other than the default, type `KEYMAP=<name>` after `make`. So if I've named my keymap jack.c, the full command would be `make KEYMAP=jack`.
+3. How you deploy the firmware will depend on whether you are using a PCB or a Teensy. In both cases, you'll need to put the keyboard in bootloader mode, either by pressing a button on the PCB/Teensy or pressing the key with the `RESET` keycode. Then, if you're using a PCB, just run `make KEYMAP=<name> dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the <keyboardname>.hex file that make produces in the keyboard's folder, and deploy it using the [Teensy Loader.](https://www.pjrc.com/teensy/loader.html)
+
+## Helpful Tips
+1. On Linux or OS X, you can run `sleep 5; make KEYMAP=<name> dfu` to delay building/deploying the firmware until for 5 seconds, giving you a chance to put the firmware into bootloader mode. You can change the 5 to any number of seconds.
+
+## Troubleshooting
+1. Try running `make clean` if the make command fails.
+
+ WIP \ No newline at end of file
diff --git a/HAND-WIRE.md b/HAND_WIRE.md
index 3f4d75b272..3f4d75b272 100644
--- a/HAND-WIRE.md
+++ b/HAND_WIRE.md
diff --git a/README.md b/README.md
index 6cb73f1804..6a6bbed40b 100644
--- a/README.md
+++ b/README.md
@@ -12,8 +12,8 @@ The documentation below explains QMK customizations and elaborates on some of th
## Getting started
-* **If you're looking to customize a keyboard that currently runs QMK or TMK** , find your keyboard's directory under `/keyboard/` and read the README file. This will get you all set up.
-* Read the [QUICK_START.md](QUICK_START.md) if you want to hit the ground running with minimal fuss or you aren't a technical person and you just want to build the firmware with the least amount of hassle possible.
+* [BUILD_GUIDE.md](BUILD_GUIDE.md) contains instructions to set up a build environment, build the firmware, and deploy it to a keyboard. Once your build environment has been set up, all `make` commands to actually build the firmware must be run from a folder in `keyboard/`.
+* If you're looking to customize a keyboard that currently runs QMK or TMK, find your keyboard's directory under `keyboard/` and run the make commands from there.
* If you're looking to apply this firmware to an entirely new hardware project (a new kind of keyboard), you can create your own Quantum-based project by using `./new_project.sh <project_name>`, which will create `/keyboard/<project_name>` with all the necessary components for a Quantum project.
You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you.
@@ -309,3 +309,4 @@ what things are (and likely aren't) too risky.
- EEPROM has around a 100000 write cycle. You shouldn't rewrite the
firmware repeatedly and continually; that'll burn the EEPROM
eventually.
+ \ No newline at end of file
diff --git a/QUICK_START.md b/VAGRANT_GUIDE.md
index 948308ca11..922848fd75 100644
--- a/QUICK_START.md
+++ b/VAGRANT_GUIDE.md
@@ -23,3 +23,4 @@ See [doc/keymap.md](tmk_core/doc/keymap.md).
The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](keyboard/ergodox_ez/readme.md) gives a great example.
If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version.
+ \ No newline at end of file
diff --git a/keyboard/atreus/Makefile b/keyboard/atreus/Makefile
index e1ebee47bd..2e542d62ed 100644
--- a/keyboard/atreus/Makefile
+++ b/keyboard/atreus/Makefile
@@ -58,6 +58,15 @@ else
SRC := keymaps/keymap_default.c $(SRC)
endif
+ifdef TEENSY2
+ OPT_DEFS += -DATREUS_TEENSY2
+ ATRUES_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex
+else
+ OPT_DEFS += -DATREUS_ASTAR
+ ATRUES_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
+ avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
+endif
+
CONFIG_H = config.h
# MCU name
@@ -114,8 +123,8 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# comment out to disable the options.
#
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-#MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-#EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = yes # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
@@ -137,3 +146,7 @@ VPATH += $(TMK_DIR)
include $(TOP_DIR)/quantum/quantum.mk
+USB ?= /dev/cu.usbmodem1411
+
+upload: build
+ $(ATRUES_UPLOAD_COMMAND)
diff --git a/keyboard/atreus/README.md b/keyboard/atreus/README.md
index 75f198fd1c..4db7ac1203 100644
--- a/keyboard/atreus/README.md
+++ b/keyboard/atreus/README.md
@@ -1,10 +1,6 @@
atreus keyboard firmware
======================
-## Note
-
-This is for the Teensy2 hand wired boards only.
-
## Quantum MK Firmware
You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you.
@@ -14,6 +10,12 @@ You have access to a bunch of goodies! Check out the Makefile to enable/disable
# UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not //
BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+## Atreus specific information
+
+These configuration files are specifically for the Atreus keyboards created by Phil Hagelberg (@technomancy). This keyboard is available in two variants: one powered by a Teensy 2, one powered by an A-Star. This repository currently assumes that you have an A-Star powered Atreus. If you are using a Teensy2, specify that by adding `TEENSY2=yes` to your `make` commands.
+
+If you are coming from the [atreus-firmware](https://github.com/technomancy/atreus-firmware), we've also brought forward the `make upload` command for you to use.
+
## Quick aliases to common actions
Your keymap can include shortcuts to common operations (called "function actions" in tmk).
diff --git a/keyboard/atreus/atreus.h b/keyboard/atreus/atreus.h
index 29d1d18bac..9dd77859f9 100644
--- a/keyboard/atreus/atreus.h
+++ b/keyboard/atreus/atreus.h
@@ -7,21 +7,20 @@
#include <stddef.h>
// This a shortcut to help you visually see your layout.
-// The following is an example using the Planck MIT layout
// The first section contains all of the arguements
// The second converts the arguments into a two-dimensional array
#define KEYMAP( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a \
) \
{ \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
- { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
-}
+ { k00, k01, k02, k03, k04, KC_NO, k05, k06, k07, k08, k09 }, \
+ { k10, k11, k12, k13, k14, KC_NO, k15, k16, k17, k18, k19 }, \
+ { k20, k21, k22, k23, k24, k35, k25, k26, k27, k28, k29 }, \
+ { k2a, k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a } \
+}
void * matrix_init_user(void);
void * matrix_scan_user(void);
diff --git a/keyboard/atreus/config.h b/keyboard/atreus/config.h
index 733f579d43..ca0cd7e47a 100644
--- a/keyboard/atreus/config.h
+++ b/keyboard/atreus/config.h
@@ -33,11 +33,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
-// Planck PCB default pin-out
// Change this to how you wired your keyboard
// COLS: Left to right, ROWS: Top to bottom
-#define COLS (int []){ F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0}
-#define ROWS (int []){ D0, D1, D2, D3 }
+#if defined(ATREUS_ASTAR)
+ #define COLS (int []){ B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 }
+ #define ROWS (int []){ D0, D1, D3, D2 }
+#elif defined(ATREUS_TEENSY2)
+ #define COLS (int []){ F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0}
+ #define ROWS (int []){ D0, D1, D2, D3 }
+#endif
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboard/atreus/keymaps/keymap_gerb.c b/keyboard/atreus/keymaps/keymap_gerb.c
new file mode 100644
index 0000000000..1ba3942e3b
--- /dev/null
+++ b/keyboard/atreus/keymaps/keymap_gerb.c
@@ -0,0 +1,66 @@
+// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks
+// with the Colemak and Dvorak support yet, but everything else works nicely.
+
+#include "atreus.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _L1 3
+#define _L2 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QW] = { /* Qwerty */
+ {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P },
+ {KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN},
+ {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH},
+ {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
+ },
+ [_CM] = { /* Colemak */
+ {KC_Q, KC_W, KC_F, KC_P, KC_G, KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN},
+ {KC_A, KC_R, KC_S, KC_T, KC_D, KC_NO, KC_H, KC_N, KC_E, KC_I, KC_O },
+ {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH},
+ {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
+ },
+ [_DV] = { /* Dvorak */
+ {KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_NO, KC_F, KC_G, KC_C, KC_R, KC_L },
+ {KC_A, KC_O, KC_E, KC_U, KC_I, KC_NO, KC_D, KC_H, KC_T, KC_N, KC_S },
+ {KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LALT, KC_B, KC_M, KC_W, KC_V, KC_Z },
+ {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, MO(_L1), KC_MINS, KC_SLSH, KC_ENT }
+ },
+ [_L1] = { /* LAYER 1 */
+ {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_VOLU, KC_7, KC_8, KC_9, KC_LBRC},
+ {KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_VOLD, KC_4, KC_5, KC_6, KC_RBRC},
+ {KC_GRV, KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1, KC_2, KC_3, KC_BSLS},
+ {TG(_L2), KC_APP, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL }
+ },
+ [_L2] = { /* LAYER 2 */
+ {KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO, DF(_QW), KC_F7, KC_F8, KC_F9, KC_F10 },
+ {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO, DF(_CM), KC_F6, KC_F5, KC_F6, KC_F11 },
+ {KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1, KC_F2, KC_F3, KC_F12 },
+ {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, RESET }
+ }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ } else {
+ unregister_code(KC_RSFT);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
diff --git a/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/colemak_osx_pc_no.hex b/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/colemak_osx_pc_no.hex
new file mode 100644
index 0000000000..ecf97c9f1c
--- /dev/null
+++ b/keyboard/ergodox_ez/keymaps/colemak_osx_pc_no/colemak_osx_pc_no.hex
@@ -0,0 +1,1142 @@
+:100000000C944C030C9490030C9490030C94900368
+:100010000C9490030C9490030C9490030C94900314
+:100020000C9490030C9490030C94BD0C0C948F0DC5
+:100030000C9490030C9490030C9490030C949003F4
+:100040000C9490030C94C4210C9490030C94900392
+:100050000C9490030C94551B0C9490030C949003F7
+:100060000C9490030C9490030C9490030C949003C4
+:100070000C9490030C9490030C9490030C949003B4
+:100080000C9490030C9490030C9490030C949003A4
+:100090000C9490030C9490030C9490030C94900394
+:1000A0000C9490030C9490030C9490039E03A30370
+:1000B000A803AD03B203B703BC03C103C603FC0D21
+:1000C0001E0E0C0F1E0E0C0F630E860E0C0FDB0E99
+:1000D000EE0ED011D011FF11FF11421280129914AF
+:1000E0009914991299149A139A136D1499149914D6
+:1000F0008414012E022E012C022C0001E101350294
+:100100003502E100013502350001E1012E022E0128
+:100110002C022C02E10001E6012E022E02E6012C47
+:10012000022C0001E10130023002E1012C022C001E
+:1001300001E10164026402E100016402640001E67D
+:100140000130023002E6012C022C000000002200E7
+:10015000C001C002C003C004C005C006C007C0087B
+:10016000C02E002D0237021E020452000025141476
+:100170000004001D00F400387426141A0015001B3A
+:1001800000F500377124140900160006002B00C189
+:1001900000271413001700190036782D0031020AC9
+:1001A00000070005000000230201541F0200003672
+:1001B0000200003500C5003200000027020000499F
+:1001C0000021140D000B000E000000240225020F78
+:1001D000001100100050004C002602180008004FCB
+:1001E0000029002C00C3001C000C005100C700288F
+:1001F00000C4002F001200520020022A001F1434F5
+:1002000000330038020252000024160100010001F0
+:1002100000010000000100010001000100010001D7
+:1002200000010001000100010001003778251601DE
+:10023000000100010001000100261601000100017B
+:100240000036710100010001000100010000000101
+:1002500000010001000000010000002414010064FE
+:100260000000000100000001002102010001000166
+:100270000000000100010001000100010001000177
+:1002800000010001000100010001000100C800019F
+:1002900000010001002E140100C90001000100014D
+:1002A00000010001003100010001000100035200C3
+:1002B0000001000100010001000100000001000137
+:1002C000002000010001000100010001001F0001E9
+:1002D0000001000100010001001E000100010001F9
+:1002E000000100220227002100010001000100019D
+:1002F00000010001000000010001000100000001F8
+:1003000000000001000100010000000100000001E8
+:10031000000100010001004A00000001000100C2CC
+:1003200000220026004A0001000100C60023004D03
+:1003300000010001000100010024004E0001000145
+:10034000000100010025004B000100010001000137
+:100350000001000100010000000100010001000196
+:100360000001000000010001002000010001000167
+:1003700000010001001F0001000100010001000157
+:10038000001E0001000100010001002202270021DF
+:100390000001000100010001000100010000000156
+:1003A0000001000100000001000000010001000147
+:1003B0000000000100000001000100010001004AEE
+:1003C00000000001000100C200220026004A0001D6
+:1003D000000100CA0023004D0001000100010001DE
+:1003E0000024004E00010001000100010025004B27
+:1003F00000010001000100010001000100010000F6
+:1004000000220001000100010001000000010001C4
+:10041000003C00010001000100010001003B00015F
+:100420000001000100010001003A0001000100018B
+:10043000000100010001003D000100010001000178
+:1004400000010001000000010001000100000001A6
+:100450000000000100010001000000010000000197
+:100460000001000100010030140000010001000142
+:10047000003E00420001000100010001003F004376
+:1004800000010001000100010040004400010001E2
+:1004900000010001004100450001000100010001D0
+:1004A0000001000100010000001603450072006712
+:1004B000006F0044006F007800200045005A0000E3
+:1004C0000016034500720067006F0044006F00785B
+:1004D00000200045005A0000000403090409026DD1
+:1004E00000040100A0FA0904000001030101000951
+:1004F0002111010001223F000705810308000A09BC
+:100500000401000103010200092111010001224D33
+:10051000000705820308000A090402000103000025
+:10052000000921110100012236000705830308009C
+:100530000A09040300010300000009211101000160
+:100540002239000705840310000112011001000088
+:100550000008EDFE07130100010200010501090674
+:10056000A101050719E029E7150025019508750186
+:10057000810205081901290595057501910295016A
+:100580007503910105071900297715002501957854
+:1005900075018102C005010980A1018502160100D3
+:1005A00026B7001A01002AB700751095018100C016
+:1005B000050C0901A1018503160100269C021A0100
+:1005C000002A9C02751095018100C005010902A155
+:1005D000010901A100050919012905150025019549
+:1005E0000575018102950175038101050109300935
+:1005F000311581257F9502750881060938158125F9
+:100600007F950175088106050C0A38021581257F42
+:10061000950175088106C0C005010906A1010507FD
+:1006200019E029E71500250195087501810295015A
+:1006300075088101050819012905950575019102C3
+:100640009501750391010507190029FF150025FF84
+:10065000950675088100C000000000000000000041
+:100660000000010204060A0F17202C3A4A5D718728
+:100670009DB3C7DAE9F5FCFFFCF5E9DAC7B39D875E
+:10068000715D4A3A2C20170F0A060402010000008F
+:10069000000000000000000011241FBECFEFDAE0D0
+:1006A000DEBFCDBF04B603FE24C08091EE01909161
+:1006B000EF01A091F001B091F1018730904BA7407C
+:1006C000B04BB9F41092EE011092EF011092F001CC
+:1006D0001092F10114BE84B7877F84BF88E10FB602
+:1006E000F89480936000109260000FBEE0E0FFE39A
+:1006F000099511E0A0E0B1E0ECE0F7E402C005905C
+:100700000D92A433B107D9F711E0A4E3B1E001C021
+:100710001D92AE3EB107E1F70E94010A0C948423BA
+:100720000C940000FC018281462F50E049305105B5
+:1007300090F5FA01EA5AFF4F0C943923882359F1B6
+:100740008EE391E00895882331F189E391E00895E3
+:10075000882309F180E391E008958823E1F083E2A2
+:1007600091E008958823B9F086E191E00895882307
+:1007700091F089E091E00895882369F084E091E0A8
+:100780000895882341F08BEF90E00895882319F0B5
+:1007900082EF90E0089580E090E0089580E090E09E
+:1007A000089580E090E0089581ED93E0892B11F0A9
+:1007B0000E94D10380E090E0089556985E982598B5
+:1007C0002D9826982E