]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Merge remote-tracking branch 'upstream/master' into bananasplit
authorBalz Guenat <balz.guenat@gmail.com>
Mon, 7 Aug 2017 19:54:06 +0000 (21:54 +0200)
committerBalz Guenat <balz.guenat@gmail.com>
Mon, 7 Aug 2017 19:54:06 +0000 (21:54 +0200)
# Conflicts:
# keyboards/bananasplit/Makefile
# keyboards/bananasplit/bananasplit.c
# keyboards/bananasplit/bananasplit.h
# keyboards/bananasplit/config.h
# keyboards/bananasplit/keymaps/default/keymap.c
# keyboards/bananasplit/rules.mk

83 files changed:
.gitignore
book.json
docs/basic_keycodes.md
docs/documentation_best_practices.md
docs/faq.md
docs/glossary.md
docs/porting_your_keyboard_to_qmk.md
keyboards/amj40/Makefile [new file with mode: 0755]
keyboards/amj40/amj40.c [new file with mode: 0755]
keyboards/amj40/amj40.h [new file with mode: 0755]
keyboards/amj40/config.h [new file with mode: 0755]
keyboards/amj40/keymaps/default/Makefile [new file with mode: 0755]
keyboards/amj40/keymaps/default/build.sh [new file with mode: 0755]
keyboards/amj40/keymaps/default/keymap.c [new file with mode: 0755]
keyboards/amj40/keymaps/default/readme.md [new file with mode: 0755]
keyboards/amj40/keymaps/default/updatemerge.sh [new file with mode: 0755]
keyboards/amj40/keymaps/fabian/Makefile [new file with mode: 0755]
keyboards/amj40/keymaps/fabian/keymap.c [new file with mode: 0755]
keyboards/amj40/readme.md [new file with mode: 0755]
keyboards/amj40/rules.mk [new file with mode: 0755]
keyboards/bananasplit/Makefile
keyboards/bananasplit/README.md [new file with mode: 0644]
keyboards/bananasplit/bananasplit.c
keyboards/bananasplit/bananasplit.h
keyboards/bananasplit/config.h
keyboards/bananasplit/keymaps/default/keymap.c
keyboards/bananasplit/keymaps/default/readme.md
keyboards/bananasplit/keymaps/hhkbanana/keymap.c [new file with mode: 0644]
keyboards/bananasplit/keymaps/nic/keymap.c [new file with mode: 0644]
keyboards/bananasplit/rules.mk
keyboards/deltasplit75/rules.mk
keyboards/eco/Makefile
keyboards/eco/config.h
keyboards/eco/eco.h
keyboards/eco/readme.md
keyboards/eco/rev2/Makefile [new file with mode: 0644]
keyboards/eco/rev2/config.h [new file with mode: 0644]
keyboards/eco/rev2/rev2.c [new file with mode: 0644]
keyboards/eco/rev2/rev2.h [new file with mode: 0644]
keyboards/eco/rev2/rules.mk [new file with mode: 0644]
keyboards/handwired/atreus50/rules.mk
keyboards/handwired/magicforce61/rules.mk
keyboards/handwired/magicforce68/rules.mk
keyboards/handwired/numpad20/rules.mk
keyboards/handwired/ortho5x13/rules.mk
keyboards/lets_split/keymaps/fabian/Makefile [new file with mode: 0644]
keyboards/lets_split/keymaps/fabian/config.h [new file with mode: 0644]
keyboards/lets_split/keymaps/fabian/keymap.c [new file with mode: 0644]
keyboards/lets_split/readme.md
keyboards/lets_split/rules.mk
keyboards/minidox/eeprom-lefthand.eep [new file with mode: 0644]
keyboards/minidox/eeprom-righthand.eep [new file with mode: 0644]
keyboards/minidox/keymaps/that_canadian/config.h
keyboards/minidox/keymaps/that_canadian/keymap.c
keyboards/minidox/readme.md
keyboards/nyquist/eeprom-lefthand.eep [new file with mode: 0644]
keyboards/nyquist/eeprom-righthand.eep [new file with mode: 0644]
keyboards/nyquist/keymaps/default/Makefile
keyboards/nyquist/keymaps/default/config.h
keyboards/nyquist/keymaps/default/keymap.c
keyboards/nyquist/matrix.c
keyboards/nyquist/readme.md
keyboards/nyquist/rules.mk
keyboards/nyquist/split_util.c
keyboards/orthodox/readme.md
keyboards/orthodox/rules.mk
keyboards/satan/keymaps/poker/keymap.c
keyboards/uk78/Makefile [new file with mode: 0644]
keyboards/uk78/config.h [new file with mode: 0644]
keyboards/uk78/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/uk78/readme.md [new file with mode: 0644]
keyboards/uk78/rules.mk [new file with mode: 0644]
keyboards/uk78/uk78.c [new file with mode: 0644]
keyboards/uk78/uk78.h [new file with mode: 0644]
keyboards/xd60/keymaps/BASE/keymap.c [new file with mode: 0644]
keyboards/xd60/keymaps/BASE/readme.md [new file with mode: 0644]
keyboards/xd60/keymaps/base/keymap.c [new file with mode: 0644]
keyboards/xd60/keymaps/base/readme.md [new file with mode: 0644]
keyboards/xd75/keymaps/fabian/Makefile [new file with mode: 0644]
keyboards/xd75/keymaps/fabian/config.h [new file with mode: 0644]
keyboards/xd75/keymaps/fabian/keymap.c [new file with mode: 0644]
readme.md
tmk_core/avr.mk

index e40308193c88c320c86fc3b1d0af7d70e86a5e0e..a1f3ce4719c2ba75ee9747a935d0f8e82a1be316 100644 (file)
@@ -41,4 +41,7 @@ util/Win_Check_Output.txt
 # ignore image files
 *.png
 *.jpg
-*.gif
\ No newline at end of file
+*.gif
+
+# Do not ignore MiniDox left/right hand eeprom files
+!keyboards/minidox/*.eep 
\ No newline at end of file
index 887d2a6431a3454774c998f5e620194e93c4ff9d..09e1bfd94e2e1cb1db6891013becee31ab40a9d8 100644 (file)
--- a/book.json
+++ b/book.json
@@ -3,12 +3,9 @@
         "summary": "_summary.md"
     },
     "plugins" : [
-      "anchors",
       "edit-link",
       "forkmegithub",
-      "git-author",
       "hints",
-      "numbered-headings",
       "page-toc",
       "terminal",
       "toolbar"
       "page-toc": {
         "selector": ".markdown-section h1, .markdown-section h2"
       },
+      "terminal": {
+        "copyButtons": true,
+        "fade": false,
+        "style": "flat"
+      },
       "toolbar": {
         "buttons": [
           {
index 2be3ada1558a0708025577757a2e42eb2591e086..4f84647a2a2dbfe167d79ffef2692dadd51e86ba 100644 (file)
@@ -51,9 +51,9 @@
 |KC_RSHIFT|KC_RSFT|RightShift|
 |KC_RALT||RightAlt|
 |KC_RGUI||Right GUI(Windows/Apple/Meta key)|
-|KC_LOCKING_CAPS||Locking Caps Lock|
-|KC_LOCKING_NUM||Locking Num Lock|
-|KC_LOCKING_SCROLL||Locking Scroll Lock|
+|KC_LOCKING_CAPS|KC_LCAP|Locking Caps Lock|
+|KC_LOCKING_NUM|KC_LNUM|Locking Num Lock|
+|KC_LOCKING_SCROLL|KC_LSCR|Locking Scroll Lock|
 |KC_INT4|KC_HENK|JIS Henken|
 |KC_INT5|KC_MHEN|JIS Muhenken|
 
@@ -183,4 +183,4 @@ Windows and Mac use different key codes for next track and previous track. Make
 |KC_MS_WH_RIGHT|KC_WH_R|Mouse Wheel Right|
 |KC_MS_ACCEL0|KC_ACL0|Mouse Acceleration 0|
 |KC_MS_ACCEL1|KC_ACL1|Mouse Acceleration 1|
-|KC_MS_ACCEL2|KC_ACL2|Mouse Acceleration 2|
\ No newline at end of file
+|KC_MS_ACCEL2|KC_ACL2|Mouse Acceleration 2|
index 8c5b4795a652d1efcbd8b2eb875bf4a1a94294cd..f30793181c41afd870c755fed6160c13d77e333b 100644 (file)
@@ -22,6 +22,14 @@ Your page should generally have multiple "H1" headings. Only H1 and H2 headings
 
 You can have styled hint blocks drawn around text to draw attention to it.
 
+```
+{% hint style='info' %}
+This uses `hint style='info'`
+{% endhint %}
+```
+
+### Examples:
+
 {% hint style='info' %}
 This uses `hint style='info'`
 {% endhint %}
@@ -37,3 +45,33 @@ This uses `hint style='danger'`
 {% hint style='working' %}
 This uses `hint style='working'`
 {% endhint %}
+
+# Styled Terminal Blocks
+
+You can present styled terminal blocks by including special tokens inside your text block.
+
+```
+\`\`\`
+**[terminal]
+**[prompt foo@joe]**[path ~]**[delimiter  $ ]**[command ./myscript]
+Normal output line. Nothing special here...
+But...
+You can add some colors. What about a warning message?
+**[warning [WARNING] The color depends on the theme. Could look normal too]
+What about an error message?
+**[error [ERROR] This is not the error you are looking for]
+\`\`\`
+```
+
+### Example
+
+```
+**[terminal]
+**[prompt foo@joe]**[path ~]**[delimiter  $ ]**[command ./myscript]
+Normal output line. Nothing special here...
+But...
+You can add some colors. What about a warning message?
+**[warning [WARNING] The color depends on the theme. Could look normal too]
+What about an error message?
+**[error [ERROR] This is not the error you are looking for]
+```
index d7f2a6f4fd60463452060789224516d2d220d843..3287578ac72290d78127232e25c9a0034ef7f281 100644 (file)
@@ -1,10 +1,16 @@
 # Frequently Asked Questions
 
-## What is QMK?
+## General
+
+### What is QMK?
 
 [QMK](https://github.com/qmk), short for Quantum Mechanical Keyboard, is a group of people building tools for custom keyboards. We started with the [QMK firmware](https://github.com/qmk/qmk_firmware), a heavily modified fork of [TMK](https://github.com/tmk/tmk_keyboard).
 
-## What Differences Are There Between QMK and TMK?
+### Why the name Quantum?
+
+<!-- FIXME -->
+
+### What Differences Are There Between QMK and TMK?
 
 TMK was originally designed and implemented by [Jun Wako](https://github.com/tmk). QMK started as [Jack Humbert's](https://github.com/jackhumbert) fork of TMK for the Planck. After a while Jack's fork had diverged quite a bit from TMK, and in 2015 Jack decided to rename his fork to QMK.
 
@@ -14,8 +20,22 @@ From a project and community management standpoint TMK maintains all the officia
 
 Both approaches have their merits and their drawbacks, and code flows freely between TMK and QMK when it makes sense.
 
-# Debug Console
-## hid_listen can't recognize device
+# Building
+
+## Windows
+
+### I'm on Windows Vista, 7, or 8, how do I setup my build environment?
+
+Follow the build instructions to [install MHV AVR Tools](https://docs.qmk.fm/build_environment_setup.html#windows-vista-and-later).
+
+### I'm on Windows 10 without the Creators Update. Do I have to install it?
+
+No, but if you don't install the creators update you will not be able to build and flash with a single command. You will be able to build but to flash you will have to use a separate program, such as [QMK Flasher](https://github.com/qmk/qmk_flasher).
+
+# Troubleshooting
+
+## Debug Console
+### hid_listen can't recognize device
 When debug console of your device is not ready you will see like this:
 
 ```
@@ -34,7 +54,7 @@ If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes
 You may need privilege to access the device on OS like Linux.
 - try `sudo hid_listen`
 
-## Can't get message on console
+### Can't get message on console
 Check:
 - *hid_listen* finds your device. See above.
 - Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
@@ -42,7 +62,7 @@ Check:
 - try using 'print' function instead of debug print. See **common/print.h**.
 - disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
 
-## Linux or UNIX like system requires Super User privilege
+### Linux or UNIX like system requires Super User privilege
 Just use 'sudo' to execute *hid_listen* with privilege.
 ```
 $ sudo hid_listen
@@ -56,10 +76,9 @@ File: /etc/udev/rules.d/52-tmk-keyboard.rules(in case of Ubuntu)
 SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
 ```
 
-***
+## Software Issues
 
-# Miscellaneous
-## NKRO Doesn't work
+### NKRO Doesn't work
 First you have to compile frimware with this build option `NKRO_ENABLE` in **Makefile**.
 
 Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS.
@@ -68,15 +87,7 @@ If your firmeare built with `BOOTMAGIC_ENABLE` you need to turn its switch on by
 
 https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
 
-
-## TrackPoint needs reset circuit(PS/2 mouse support)
-Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.
-
-- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
-- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
-
-
-## Can't read column of matrix beyond 16 
+### Can't read column of matrix beyond 16
 Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16.
 
 In C `1` means one of [int] type which is [16bit] in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use [unsigned long] type with `1UL`.
@@ -84,16 +95,16 @@ In C `1` means one of [int] type which is [16bit] in case of AVR so you can't sh
 http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
 
 
-## Bootloader jump doesn't work
+### Bootloader jump doesn't work
 Properly configure bootloader size in **Makefile**. With wrong section size bootloader won't probably start with **Magic command** and **Boot Magic**.
 ```
 # Size of Bootloaders in bytes:
-#   Atmel DFU loader(ATmega32U4)   4096    
-#   Atmel DFU loader(AT90USB128)   8192    
-#   LUFA bootloader(ATmega32U4)    4096             
-#   Arduino Caterina(ATmega32U4)   4096             
-#   USBaspLoader(ATmega***)        2048             
-#   Teensy   halfKay(ATmega32U4)   512              
+#   Atmel DFU loader(ATmega32U4)   4096
+#   Atmel DFU loader(AT90USB128)   8192
+#   LUFA bootloader(ATmega32U4)    4096
+#   Arduino Caterina(ATmega32U4)   4096
+#   USBaspLoader(ATmega***)        2048
+#   Teensy   halfKay(ATmega32U4)   512
 #   Teensy++ halfKay(AT90USB128)   2048
 OPT_DEFS += -DBOOTLOADER_SIZE=4096
 ```
@@ -107,14 +118,14 @@ byte     Atmel/LUFA(ATMega32u4)          byte     Atmel(AT90SUB1286)
          |               |                        |               |
          |               |                        |               |
          |  Application  |                        |  Application  |
-         |               |                        |               | 
+         |               |                        |               |
          =               =                        =               =
          |               | 32KB-4KB               |               | 128KB-8KB
 0x6000   +---------------+               0x1E000  +---------------+
          |  Bootloader   | 4KB                    |  Bootloader   | 8KB
 0x7FFF   +---------------+               0x1FFFF  +---------------+
 
+
 byte     Teensy(ATMega32u4)              byte     Teensy++(AT90SUB1286)
 0x0000   +---------------+               0x00000  +---------------+
          |               |                        |               |
@@ -132,20 +143,28 @@ And see this discussion for further reference.
 https://github.com/tmk/tmk_keyboard/issues/179
 
 
-## Special Extra key doesn't work(System, Audio control keys)
+### Special Extra key doesn't work(System, Audio control keys)
 You need to define `EXTRAKEY_ENABLE` in `rules.mk` to use them in QMK.
 
 ```
 EXTRAKEY_ENABLE = yes          # Audio control and System control
 ```
 
-## Wakeup from sleep doesn't work
+### Wakeup from sleep doesn't work
 
 In Windows check `Allow this device to wake the computer` setting in Power **Management property** tab of **Device Manager**. Also check BIOS setting.
 
 Pressing any key during sleep should wake host.
 
-## Using Arduino?
+## Hardware Issues
+
+### TrackPoint needs reset circuit(PS/2 mouse support)
+Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.
+
+- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
+- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
+
+### Using Arduino?
 
 **Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.
 
@@ -154,8 +173,7 @@ Pressing any key during sleep should wake host.
 
 Arduino leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
 
-
-## Using PF4-7 pins of USB AVR?
+### Using PF4-7 pins of USB AVR?
 You need to set JTD bit of MCUCR yourself to use PF4-7 as GPIO. Those pins are configured to serve JTAG function by default. MCUs like ATMega*U* or AT90USB* are affeteced with this.
 
 If you are using Teensy this isn't needed. Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function.
@@ -171,12 +189,7 @@ https://github.com/tmk/tmk_keyboard/blob/master/keyboard/hbkb/matrix.c#L67
 And read **26.5.1 MCU Control Register – MCUCR** of ATMega32U4 datasheet.
 
 
-## Adding LED indicators of Lock keys
-You need your own LED indicators for CapsLock, ScrollLock and NumLock? See this post.
-
-http://deskthority.net/workshop-f7/tmk-keyboard-firmware-collection-t4478-120.html#p191560
-
-## Program Arduino Micro/Leonardo
+### Program Arduino Micro/Leonardo
 Push reset button and then run command like this within 8 seconds.
 
 ```
@@ -188,27 +201,16 @@ Device name will vary depending on your system.
 http://arduino.cc/en/Main/ArduinoBoardMicro
 https://geekhack.org/index.php?topic=14290.msg1563867#msg1563867
 
-
-## USB 3 compatibility
-I heard some people have a problem with USB 3 port, try USB 2 port.
-
-
-## Mac compatibility
-### OS X 10.11 and Hub
-https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
-
-
-## Problem on BIOS(UEFI)/Resume(Sleep&Wake)/Power cycles
+### Problem on BIOS(UEFI)/Resume(Sleep&Wake)/Power cycles
 Some people reported their keyboard stops working on BIOS and/or after resume(power cycles).
 
-As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others. 
+As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others.
 
 https://github.com/tmk/tmk_keyboard/issues/266
 https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
 
+## Flashing Problems
 
+### Can't use dfu-programmer or QMK Flasher to flash on Windows
 
-## FLIP doesn't work
-### AtLibUsbDfu.dll not found
-Remove current driver and reinstall one FLIP provides from DeviceManager.
-http://imgur.com/a/bnwzy
+Windows requires a driver to support the keyboard in DFU mode. You can use [QMK Driver Installer](https://github.com/qmk/qmk_driver_installer/releases) to install the necessary drivers.
index fac1952a6dd654d4f141c9bb49220d855d6ff457..2fd53ca9791ba5e920bacffaa0d7247ed71243fc 100644 (file)
 # Glossary of QMK terms
 
+## ARM
+A line of 32-bit MCU's produced by a number of companies, such as Atmel, Cypress, Kinetis, NXP, ST, and TI.
+
+## AVR
+A line of 8-bit MCU's produced by [Atmel](http://atmel.com). AVR was the original platform that TMK supported.
+
+## AZERTY
+The standard Français (French) keyboard layout. Named for the first 6 keys on the keyboard.
+
+## Backlight
+A generic term for lighting on a keyboard. The backlight is typically, but not always, an array of LED's that shine through keycaps and/or switches.
+
+## Bluetooth
+A short range peer to peer wireless protocol. Most common wireless protocol for a keyboard.
+
+## Bootloader
+A special program that is written to a protected area of your MCU that allows the MCU to upgrade its own firmware, typically over USB.
+
+## Bootmagic
+A feature that allows for various keyboard behavior changes to happen on the fly, such as swapping or disabling common keys.
+
+## C
+A low-level programming language suitable for system code. Most QMK code is written in C.
+
+## Colemak
+An alternative keyboard layout that is gaining in popularity.
+
+## Compile
+The process of turning human readable code into machine code your MCU can run.
+
+## Dvorak
+An alternative keyboard layout developed by Dr. August Dvorak in the 1930's. A shortened form of the Dvorak Simplified Keyboard.
+
 ## Dynamic Macro
 A macro which has been recorded on the keyboard and which will be lost when the keyboard is unplugged or the computer rebooted.
 
+* [Dynamic Macro Documentation](dynamic_macros.html)
+
+## Eclipse
+An IDE that is popular with many C developers.
+
+* [Eclipse Setup Instructions](eclipse.html)
+
+## Firmware
+The software that controls your MCU.
+
+## FLIP
+Software provided by Atmel for flashing AVR devices. We generally recommend [QMK Flasher](https://github.com/qmk/qmk_flasher) instead, but for some advanced use cases FLIP is required.
+
 ## git
 Versioning software used at the commandline
 
+## GitHub
+The website that hosts most of the QMK project. It provides integration with git, issue tracking, and other features that help us run QMK.
+
+## ISP
+In-system programming, a method of programming an AVR chip using external hardware and the JTAG pins.
+
+## hid_listen
+An interface for receiving debugging messages from your keyboard. You can view these messages using [QMK Flasher](https://github.com/qmk/qmk_flasher) or [PJRC's hid_listen](https://www.pjrc.com/teensy/hid_listen.html)
+
 ## Keycode
 A 2-byte number that represents a particular key. `0x00`-`0xFF` are used for [Basic Keycodes](keycodes.html) while `0x100`-`0xFFFF` are used for [Quantum Keycodes](quantum_keycodes.html).
 
+## Key Down
+An event that happens when a key is pressed down, but is completed before a key is released.
+
+## Key Up
+An event that happens when a key is released.
+
 ## Keymap
 An array of keycodes mapped to a physical keyboard layout, which are processed on key presses and releases
 
+## Layer
+An abstraction used to allow a key to serve multiple purposes. The highest active layer takes precedence.
+
+## Leader Key
+A feature that allows you to tap the leader key followed by a sequence of 1, 2, or 3 keys to activate key presses or other quantum features.
+
+* [Leader Key Documentation](leader_key.html)
+
+## LED
+Light Emitting Diode, the most common device used for indicators on a keyboard.
+
+## Make
+Software package that is used to compile all the source files. You run `make` with various options to compile your keyboard firmware.
+
 ## Matrix
-A wiring pattern of columns and rows (and usually diodes) that enables the MCU to detect keypresses with a fewer number of pins
+A wiring pattern of columns and rows that enables the MCU to detect keypresses with a fewer number of pins. The matrix often incorporates diodes to allow for NKRO.
 
 ## Macro
 A feature that lets you send muiltple keypress events (hid reports) after having pressed only a single key.
 
+* [Macro Documentation](macros.html)
+
+## MCU
+Microcontrol Unit, the processor that powers your keyboard.
+
+## Modifier
+A key that is held down while typing another key to modify the action of that key. Examples include Ctrl, Alt, and Shift.
+
 ## Mousekeys
 A feature that lets you control your mouse cursor and click from your keyboard.
 
 * [Mousekeys Documentation](mouse_keys.html)
 
+## N-Key Rollover (NKRO)
+A term that applies to keyboards that are capable of reporting any number of key-presses at once.
+
+## Oneshot Modifier
+A modifier that acts as if it is held down until another key is released, so you can press the mod and then press the key, rather than holding the mod while pressing the key.
+
+## ProMicro
+A low cost AVR development board. Clones of this device are often found on ebay very inexpensively (under $5) but people often struggle with flashing their pro micros.
+
+## Pull Request
+A request to submit code to QMK. We encourage all users to submit Pull Requests for their personal keymaps.
+
+## QWERTY
+The standard English keyboard layout, and often a shortcut for other language's standard layouts. Named for the first 6 letters on the keyboard.
+
+## QWERTZ
+The standard Deutsche (German) keyboard layout. Named for the first 6 letters on the keyboard.
+
+## Rollover
+The term for pressing a key while a key is already held down. Variants include 2KRO, 6KRO, and NKRO.
+
+## Scancode
+A 1 byte number that is sent as part of a HID report over USB that represents a single key. These numbers are documented in the [HID Usage Tables](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) published by the [USB-IF](http://www.usb.org/).
+
+## Space Cadet Shift
+A special set of shift keys which allow you to type various types of braces by tapping the left or right shift one or more times.
+
+* [Space Cadet Shift Documentation](space_cadet_shift.html)
+
+## Tap
+Pressing and releasing a key. In some situations you will need to distinguish between a key down and a key up event, and Tap always refers to both at once.
+
 ## Tap Dance
 A feature that lets you assign muiltple keycodes to the same key based on how many times you press it.
 
 * [Tap Dance Documentation](tap_dance.html)
+
+## Teensy
+A low-cost AVR development board that is commonly used for hand-wired builds. A teensy is often chosen despite costing a few dollors more due to its halfkay bootloader, which makes flashing very simple.
+
+## Underlight
+A generic term for LEDs that light the underside of the board. These LED's typically shine away from the bottom of the PCB and towards the surface the keyboard rests on.
+
+## Unicode
+In the larger computer world Unicode is a set of encoding schemes for representing characters in any language. As it relates to QMK it means using various OS schemes to send unicode codepoints instead of scancodes.
+
+* [Unicode Documentation](unicode.html)
+
+## Unit Testing
+A framework for running automated tests against QMK. Unit testing helps us be confident that our changes do not break anything.
+
+* [Unit Testing Documentation](unit_testing.html)
+
+## USB
+Universal Serial Bus, the most common wired interface for a keyboard.
+
+## USB Host (or simply Host)
+The USB Host is your computer, or whatever device your keyboard is plugged into.
+
+# Couldn't find the term you're looking for?
+
+[Open an issue](https://github.com/qmk/qmk_firmware/issues) with your question and the term in question could be added here. Better still, open a pull request with the definition. :)  
index 05787042fd76bb3c8abca1498b687c1948123084..5a5025c3580d0a3a1fbc033d8e45007e5f02909c 100644 (file)
@@ -20,7 +20,7 @@ For the `DIODE_DIRECTION`, most hand-wiring guides will instruct you to wire the
 
 `BACKLIGHT_LEVELS` is how many levels exist for your backlight - max is 15, and they are computed automatically from this number.
 
-## `/keyboards/<keyboard>/Makefile`
+## `/keyboards/<keyboard>/rules.mk`
 
 The values at the top likely won't need to be changed, since most boards use the `atmega32u4` chip. The `BOOTLOADER_SIZE` will need to be adjusted based on your MCU type. It's defaulted to the Teensy, since that's the most common controller. Below is quoted from the `Makefile`.
 
diff --git a/keyboards/amj40/Makefile b/keyboards/amj40/Makefile
new file mode 100755 (executable)
index 0000000..4e2a6f0
--- /dev/null
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+       include ../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/amj40/amj40.c b/keyboards/amj40/amj40.c
new file mode 100755 (executable)
index 0000000..5a23769
--- /dev/null
@@ -0,0 +1,30 @@
+#include "amj40.h"
+#include "led.h"
+
+void matrix_init_kb(void) {
+       // put your keyboard start-up code here
+       // runs once when the firmware starts up
+       matrix_init_user();
+       led_init_ports();
+};
+
+void matrix_scan_kb(void) {
+       // put your looping keyboard code here
+       // runs every cycle (a lot)
+       matrix_scan_user();
+};
+
+void led_init_ports(void) {
+    // * Set our LED pins as output
+    DDRB |= (1<<2);
+}
+
+void led_set_kb(uint8_t usb_led) {
+    if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
+        // Turn capslock on
+        PORTB &= ~(1<<2);
+    } else {
+        // Turn capslock off
+        PORTB |= (1<<2);
+    }
+}
diff --git a/keyboards/amj40/amj40.h b/keyboards/amj40/amj40.h
new file mode 100755 (executable)
index 0000000..ab629cb
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef AMJ40_H
+#define AMJ40_H
+
+#include "quantum.h"
+
+// readability  
+#define XXX KC_NO
+
+/* AMJ40 ver2.0 layout1 配列一
+ * ,-----------------------------------------------------------.
+ * | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B |
+ * |-----------------------------------------------------------|
+ * | 10   | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1B    |
+ * |-----------------------------------------------------------|
+ * | 20     | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |  2A | 2B |
+ * |-----------------------------------------------------------|
+ * | 30  | 31 | 32  |   34      |  35         | 39  | 3A | 3B  |
+ * `-----------------------------------------------------------'
+ */
+#define KEYMAP( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19,      k1b,  \
+    k20,      k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b,  \
+    k30, k31, k32,      k34, k35,                k39, k3a, k3b  \
+) { \
+    {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b}, \
+    {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, XXX, k1b}, \
+    {k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b}, \
+    {k30, k31, k32, XXX, k34, k35, XXX, XXX, XXX, k39, k3a, k3b} \
+}
+
+
+
+
+void matrix_init_user(void);
+void matrix_scan_user(void);
+
+#endif
diff --git a/keyboards/amj40/config.h b/keyboards/amj40/config.h
new file mode 100755 (executable)
index 0000000..4110111
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6072
+#define DEVICE_VER      0x0002
+#define MANUFACTURER    Han Chen
+#define PRODUCT         AMJ40
+#define DESCRIPTION     qmk port of AMJ40 v2 PCB
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+// ROWS: Top to bottom, COLS: Left to right
+
+#define MATRIX_ROW_PINS { F4, F5, F6, F7}
+#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7}
+#define UNUSED_PINS
+
+#define BACKLIGHT_PIN B6
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* Backlight configuration
+ */
+#define BACKLIGHT_LEVELS 4
+
+/* Underlight configuration
+ */
+
+#define RGB_DI_PIN D3
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 4     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+/*
+ * 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
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#endif
diff --git a/keyboards/amj40/keymaps/default/Makefile b/keyboards/amj40/keymaps/default/Makefile
new file mode 100755 (executable)
index 0000000..034e697
--- /dev/null
@@ -0,0 +1,27 @@
+# Build Options
+#   change to "no" to disable the options, or define them in the Makefile in 
+#   the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no  # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE  = no  # Mouse keys(+4700)
+EXTRAKEY_ENABLE  = yes # Audio control and System control(+450)
+CONSOLE_ENABLE   = no  # Console for debug(+400)
+COMMAND_ENABLE   = yes # Commands for debug and configuration
+NKRO_ENABLE      = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes  # Enable keyboard backlight functionality
+MIDI_ENABLE      = no  # MIDI controls
+AUDIO_ENABLE     = no  # Audio output on port C6
+UNICODE_ENABLE   = no  # Unicode
+BLUETOOTH_ENABLE = no  # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE  = yes  # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
+
+#define ws2812_PORTREG  PORTD
+#define ws2812_DDRREG   DDRD
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/amj40/keymaps/default/build.sh b/keyboards/amj40/keymaps/default/build.sh
new file mode 100755 (executable)
index 0000000..6b4b456
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/bash
+# adjust for cpu 
+# -j 16 gave best result on a hyperthreaded quad core core i7
+
+LIMIT=10
+THREADS="-j 16"
+KMAP=iso_split_rshift
+
+echo "We need sudo later"
+sudo ls 2>&1 /dev/null
+
+function wait_bootloader {
+       echo "Waiting for Bootloader..."
+       local STARTTIME=$(date +"%s")
+       local REMIND=0
+    local EXEC=dfu-programmer
+    local TARGET=atmega32u4
+       while true
+       do
+               sudo $EXEC $TARGET get > /dev/null 2>&1
+               [ $? -eq 0 ] && break
+               ENDTIME=$(date +"%s")
+               DURATION=$(($ENDTIME-$STARTTIME))
+               if [ $REMIND -eq 0 -a $DURATION -gt $LIMIT ]
+               then 
+                       echo "Did you forget to press the reset button?"
+                       REMIND=1
+               fi
+        sleep 1
+       done
+}
+make clean
+make KEYMAP=${KMAP} ${THREADS}
+if [[ $? -eq 0 ]]
+then
+    echo "please trigger flashing!"
+    wait_bootloader
+    sudo make KEYMAP=${KMAP} dfu ${THREADS}
+else
+    echo "make failed"
+    exit 77
+fi
diff --git a/keyboards/amj40/keymaps/default/keymap.c b/keyboards/amj40/keymaps/default/keymap.c
new file mode 100755 (executable)
index 0000000..13b48c2
--- /dev/null
@@ -0,0 +1,173 @@
+
+
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "amj40.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 _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _ADJUST 3
+
+
+
+enum custom_keycodes {
+  QWERTY = SAFE_RANGE,
+  LOWER,
+  RAISE,
+  ADJUST,
+};
+
+
+
+
+
+// increase readability 
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+        /* Default Layer
+     * ,-----------------------------------------------------------.
+     * | Esc|  Q |  W |  E |  R |  T |  Y |  U |  I |  O |  P | BS |
+     * |-----------------------------------------------------------|
+     * | Tab |  A |  S |  D |  F |  G |  H |  J |  K |  L | Ent    |
+     * |-----------------------------------------------------------|
+     * | LSft   |  Z |  X |  C |  V |  B |  N |  M |  ,  |  . | /? |
+     * |-----------------------------------------------------------|
+     * | LCtl | LGui| LAlt|  spc fn0  |  spc fn1    |fn2|RAlt|RCtl |
+     * `-----------------------------------------------------------'
+     */
+    [_QWERTY] = KEYMAP( \
+        KC_ESC,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,    KC_P,   KC_BSPC,\
+        KC_TAB,  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,    KC_ENT,\
+        KC_LSFT, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_SLSH,\
+        KC_LCTL, KC_LGUI, KC_LALT,          F(0),           F(1),        F(2), KC_RALT, KC_RCTL \
+               ),
+
+    /* Function Layer 1 HHKB style
+     * ,-----------------------------------------------------------.
+     * |   ~  |   !   |  @  | # | $ | % | ^ | & | * | ( | ) | Bkspc|
+     * |-----------------------------------------------------------|
+     * |   F1   | F2 | F3 | F4 | F5 |  F6 | _ | + | [ | ] |  Pipe  |
+     * |-----------------------------------------------------------|
+     * |    F7    | F8 | F9 |  F10  |  F11 |  F12 | End|PgDn| ↓ |     |    |
+     * |-----------------------------------------------------------|
+     * |     |    |     |           |             | Stop| App|     |
+     * `-----------------------------------------------------------'
+     */
+    [_LOWER] = KEYMAP( \
+        KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
+               KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+               KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),BL_TOGG, BL_INC, BL_DEC, \
+               _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+               ),
+       
+       /* Function Layer 1 HHKB style
+     * ,-----------------------------------------------------------.
+     * |Caps|    |MSel| ⏮ | ⏯ | ⏭ |PSCR|SkLk|Paus|  ↑ | Ins| Del|
+     * |-----------------------------------------------------------|
+     * |      | 🔇 | ⏏ |    |  * |  / |Hone|PgUp|  ← |  → |       |
+     * |-----------------------------------------------------------|
+     * |        | 🔉 | 🔊 |    |  + |  - | End|PgDn| ↓ |     |    |
+     * |-----------------------------------------------------------|
+     * |     |    |     |           |             | Stop| App|     |
+     * `-----------------------------------------------------------'
+     */
+    [_RAISE] = KEYMAP( \
+        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
+               KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \
+               KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, _______, _______, KC_DEL, \
+               _______, KC_TRNS, _______, KC_TRNS, KC_TRNS, _______, _______, RGB_TOG \
+               ),
+       
+       /* Function Layer 1 HHKB style
+     * ,-----------------------------------------------------------.
+     * |Caps|    |MSel| ⏮ | ⏯ | ⏭ |PSCR|SkLk|Paus|  ↑ | Ins| Del|
+     * |-----------------------------------------------------------|
+     * |      | 🔇 | ⏏ |    |  * |  / |Hone|PgUp|  ← |  → |       |
+     * |-----------------------------------------------------------|
+     * |        | 🔉 | 🔊 |    |  + |  - | End|PgDn| ↓ |     |    |
+     * |-----------------------------------------------------------|
+     * |     |    |     |           |             | Stop| App|     |
+     * `-----------------------------------------------------------'
+     */
+    [_ADJUST] = KEYMAP( \
+        _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+               _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, _______, _______, _______,  _______,  \
+               _______, _______, _______, RGB_TOG,  RGB_MOD,  RGB_HUI,  RGB_HUD,  RGB_SAI,  RGB_SAD,  RGB_VAI,  RGB_VAD, \
+               KC_SYSTEM_SLEEP, _______, _______, _______, _______, _______, _______, _______ \
+               ),
+
+    
+
+};
+
+
+               
+
+enum function_id {
+    LAUNCH,
+    RGBLED_TOGGLE,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+       [0]  = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC),
+       [1]  = ACTION_LAYER_TAP_KEY(_RAISE, KC_SPC),
+       [2]  = ACTION_LAYER_TAP_KEY(_ADJUST, KC_LGUI),
+
+};
+
+
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    // MACRODOWN only works in this function
+   
+    return MACRO_NONE;
+};
+
+
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    
+    case LOWER:
+      if (record->event.pressed) {
+        layer_on(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case RAISE:
+      if (record->event.pressed) {
+        layer_on(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case ADJUST:
+      if (record->event.pressed) {
+        layer_on(_ADJUST);
+      } else {
+        layer_off(_ADJUST);
+      }
+      return false;
+      break;
+  }
+  return true;
+}
diff --git a/keyboards/amj40/keymaps/default/readme.md b/keyboards/amj40/keymaps/default/readme.md
new file mode 100755 (executable)
index 0000000..2659292
--- /dev/null
@@ -0,0 +1,11 @@
+AMJ40 Default Layout
+=====================
+
+##Quantum MK Firmware
+For the full Quantum feature list, see the parent readme.md.
+
+# Features
+* Based on a combination of the original AMJ40 keymap from the TMK firmware as well as the Planck Ortholinear keyboard's "Lower," "Raise," and "Adjust" layers.
+* View the keymap.c file to understand they layout of the keymap.
+* Has keys to toggle both the switch LEDs and underglow LEDs.
+
diff --git a/keyboards/amj40/keymaps/default/updatemerge.sh b/keyboards/amj40/keymaps/default/updatemerge.sh
new file mode 100755 (executable)
index 0000000..da5457e
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/bash
+git checkout amj60      # gets you on branch amj60
+git fetch origin        # gets you up to date with origin
+git merge origin/master
diff --git a/keyboards/amj40/keymaps/fabian/Makefile b/keyboards/amj40/keymaps/fabian/Makefile
new file mode 100755 (executable)
index 0000000..a914e4c
--- /dev/null
@@ -0,0 +1,27 @@
+# Build Options
+#   change to "no" to disable the options, or define them in the Makefile in 
+#   the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no  # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE  = yes  # Mouse keys(+4700)
+EXTRAKEY_ENABLE  = yes # Audio control and System control(+450)
+CONSOLE_ENABLE   = no  # Console for debug(+400)
+COMMAND_ENABLE   = yes # Commands for debug and configuration
+NKRO_ENABLE      = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes  # Enable keyboard backlight functionality
+MIDI_ENABLE      = no  # MIDI controls
+AUDIO_ENABLE     = no  # Audio output on port C6
+UNICODE_ENABLE   = no  # Unicode
+BLUETOOTH_ENABLE = no  # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE  = yes  # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
+
+#define ws2812_PORTREG  PORTD
+#define ws2812_DDRREG   DDRD
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/amj40/keymaps/fabian/keymap.c b/keyboards/amj40/keymaps/fabian/keymap.c
new file mode 100755 (executable)
index 0000000..aef5141
--- /dev/null
@@ -0,0 +1,236 @@
+#include "amj40.h"
+
+// Set the custom keymap
+#undef KEYMAP
+#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,                k39, k3a, k3b  \
+) { \
+    {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, XXX, XXX, XXX, k39, k3a, k3b} \
+}
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// Custom
+#define CTL_ESC CTL_T(KC_ESC)  // Tap for Escape, hold for Control
+#define SFT_ENT SFT_T(KC_ENT)  // Tap for Enter, hold for Shift
+#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
+#define HPR_TAB ALL_T(KC_TAB)  // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
+// #define MEH_GRV MEH_T(KC_GRV)  // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift)
+
+#define _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _ADJUST 16
+
+enum custom_keycodes {
+  QWERTY = SAFE_RANGE,
+  COLEMAK,
+  DVORAK,
+  LOWER,
+  RAISE,
+  ADJUST,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  | Lower and Space | Raise and Bksp | GUI  |AltGr | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = KEYMAP( \
+  HPR_TAB, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
+  CTL_ESC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
+  SFT_BSP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT , \
+  F(2),    KC_LCTL, KC_LALT, KC_LGUI,          F(0),             F(1),             KC_RGUI, KC_RALT, KC_RCTL \
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  | Lower and Space | Raise and Bksp | GUI  |AltGr | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = KEYMAP( \
+  HPR_TAB, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \
+  CTL_ESC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
+  SFT_BSP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT , \
+  F(2),    KC_LCTL, KC_LALT, KC_LGUI,          F(0),             F(1),             KC_RGUI, KC_RALT, KC_RCTL \
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  | Lower and Space | Raise and Bksp | GUI  |AltGr | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = KEYMAP( \
+  HPR_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \
+  CTL_ESC, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \
+  SFT_BSP, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    SFT_ENT , \
+  F(2),    KC_LCTL, KC_LALT, KC_LGUI,          F(0),             F(1),             KC_RGUI, KC_RALT, KC_RCTL \
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | MS L | MS D |MS U  | MS R |MS Btn|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = KEYMAP( \
+  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, \
+  _______, _______, _______, _______,          _______,          _______,          KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | Left | Down |  Up  | Rght |MS_BN2|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = KEYMAP( \
+  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_BTN2, \
+  _______, _______, _______, _______,          _______,          _______,          KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |Reset |Colemk|Qwerty|Dvorak|      |      |      |      |  MU  |      |      |Reset |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |AGNorm|AGSwap|      |      |      |      |  ML  |  MD  |  MR  |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |AudOn |AudOff|      |      |      |      |MBtn1 |MBtn2 |MBtn3 |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = KEYMAP( \
+  RESET,   COLEMAK, QWERTY,  DVORAK,  _______, _______, _______, _______, KC_MS_U, _______, _______, RESET, \
+  _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, \
+  _______, AU_ON,   AU_OFF,  _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, \
+  _______, _______, _______, _______,          _______,          _______,          _______, _______, _______ \
+)
+
+};
+
+#ifdef AUDIO_ENABLE
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+#endif
+
+void persistent_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+const uint16_t PROGMEM fn_actions[] = {
+        [0]  = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC),
+        [1]  = ACTION_LAYER_TAP_KEY(_RAISE, KC_BSPC),
+        [2]  = ACTION_LAYER_TAP_KEY(_ADJUST, KC_LGUI),
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    return MACRO_NONE;
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case QWERTY:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+        #endif
+        persistent_default_layer_set(1UL<<_QWERTY);
+      }
+      return false;
+      break;
+    case COLEMAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+        #endif
+        persistent_default_layer_set(1UL<<_COLEMAK);
+      }
+      return false;
+      break;
+    case DVORAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
+        #endif
+        persistent_default_layer_set(1UL<<_DVORAK);
+      }
+      return false;
+      break;
+    case LOWER:
+      if (record->event.pressed) {
+        layer_on(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case RAISE:
+      if (record->event.pressed) {
+        layer_on(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case ADJUST:
+      if (record->event.pressed) {
+        layer_on(_ADJUST);
+      } else {
+        layer_off(_ADJUST);
+      }
+      return false;
+      break;
+  }
+  return true;
+}
diff --git a/keyboards/amj40/readme.md b/keyboards/amj40/readme.md
new file mode 100755 (executable)
index 0000000..e705f20
--- /dev/null
@@ -0,0 +1,35 @@
+AMJ40 keyboard firmware
+======================
+DIY/Assembled compact 40% keyboard.
+
+Ported by N.Hou from the original TMK firmware.
+
+*Supports both backlight LEDs as well as RGB underglow. 
+
+*For reference, the AMJ40 uses pin D3 for underglow lighting.
+
+## Quantum MK Firmware
+
+For the full Quantum feature list, see [the parent readme.md](/readme.md).
+
+## Building
+
+Download or clone the whole firmware and navigate to the keyboards/amj40
+folder. Once your dev env is setup, you'll be able to type `make` to generate
+your .hex - you can then use `make dfu` to program your PCB once you hit the
+reset button. 
+
+Depending on which keymap you would like to use, you will have to compile
+slightly differently.
+
+### Default
+To build with the default keymap, simply run `sudo make all`.
+The .hex file will appear in the root of the qmk firmware folder.
+
+
+
+
+### Original tmk firmware
+The original firmware that was used to port to qmk can be found [here](https://github.com/AMJKeyboard/AMJ40).
+
+
diff --git a/keyboards/amj40/rules.mk b/keyboards/amj40/rules.mk
new file mode 100755 (executable)
index 0000000..18403ac
--- /dev/null
@@ -0,0 +1,66 @@
+
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u4
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+#   Teensy halfKay   512
+#   Teensy++ halfKay 1024
+#   Atmel DFU loader 4096
+#   LUFA bootloader  4096
+#   USBaspLoader     2048
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+
+# Build Options
+#   comment out to disable the options.
+#
+BOOTMAGIC_ENABLE ?= no  # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE  ?= no  # Mouse keys(+4700)
+EXTRAKEY_ENABLE  ?= yes # Audio control and System control(+450)
+CONSOLE_ENABLE   ?= yes # Console for debug(+400)
+COMMAND_ENABLE   ?= yes # Commands for debug and configuration
+NKRO_ENABLE      ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+RGBLIGHT_ENABLE  ?= yes # Enable keyboard underlight functionality (+4870)
+BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150)
+MIDI_ENABLE      ?= no  # MIDI controls
+AUDIO_ENABLE     ?= no
+UNICODE_ENABLE   ?= no  # Unicode
+BLUETOOTH_ENABLE ?= no  # Enable Bluetooth with the Adafruit EZ-Key HID
index 687afba30b4178602782a60b0026c6f083dac0cc..57b2ef62e5f3a43b7338f789a5d4800c577b763d 100644 (file)
@@ -1,18 +1,3 @@
-# Copyright 2017 Balz Guenat
-#
-# 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/>.
-
 ifndef MAKEFILE_INCLUDED
        include ../../Makefile
 endif
diff --git a/keyboards/bananasplit/README.md b/keyboards/bananasplit/README.md
new file mode 100644 (file)
index 0000000..b059a08
--- /dev/null
@@ -0,0 +1,29 @@
+# BananaSplit60 keyboard firmware
+
+Ported from evangs/tmk_keyboard
+
+## Quantum MK Firmware
+
+For the full Quantum feature list, see [the parent readme](/).
+
+## Building
+
+Download or clone the whole firmware and navigate to the keyboards/bananasplit folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
+
+Depending on which keymap you would like to use, you will have to compile slightly differently.
+
+### Default
+
+To build with the default keymap, simply run `make default`.
+
+### Other Keymaps
+
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
+
+To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
+
+```
+$ make [default|jack|<name>]
+```
+
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
index 766e662db2b82abeb5d7bd95b8a4658cf8494347..1aa8fb1745bd0470e392e1b8e93eed686741f1b3 100644 (file)
@@ -1,18 +1,3 @@
-/* Copyright 2017 Balz Guenat
- *
- * 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 "bananasplit.h"
 
 void matrix_init_kb(void) {
index aeb27da1005f9b1073971d88d8d02df383c32fb0..fa4c13258bfe7f5df6f99aff2d337733f905fade 100644 (file)
@@ -1,18 +1,19 @@
-/* Copyright 2017 Balz Guenat
- *
- * 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/>.
- */
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+
+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/>.
+*/
 #ifndef BANANASPLIT_H
 #define BANANASPLIT_H
 
 |  K40  |  K41  |  K42  |     K44     |  K45  |     K46     | K48 | K49 | K4A | K4B | K4C |
 -------------------------------------------------------------------------------------------
 */
-#define KEYMAP( \
-    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
-    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
-    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
-    K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\
-    K40, K41, K42,      K44, K45, K46,      K48, K49, K4A, K4B, K4C  \
-) { \
-    { K00, K01,   K02, K03,   K04, K05, K06, K07,   K08, K09, K0A, K0B, K0C, K0D   }, \
-    { K10, K11,   K12, K13,   K14, K15, K16, K17,   K18, K19, K1A, K1B, K1C, K1D   }, \
-    { K20, K21,   K22, K23,   K24, K25, K26, K27,   K28, K29, K2A, K2B, K2C, KC_NO }, \
-    { K30, KC_NO, K32, K33,   K34, K35, K36, K37,   K38, K39, K3A, K3B, K3C, K3D   }, \
-    { K40, K41,   K42, KC_NO, K44, K45, K46, KC_NO, K48, K49, K4A, K4B, K4C, KC_NO }  \
+#define KEYMAP(                                                                     \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D,           \
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,           \
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,                \
+    K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,           \
+    K40, K41, K42,      K44, K45, K46,      K48, K49, K4A, K4B, K4C                 \
+) {                                                                                 \
+    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D },       \
+    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D },       \
+    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO },     \
+    { K30, KC_NO,    K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D },  \
+    { K40, K41, K42, KC_NO,    K44, K45, K46, KC_NO,    K48, K49, K4A, K4B, K4C, KC_NO }   \
 }
 /* Here is the above keymap filled with KC_TRNS. It's a useful starting point when defining layers.
 KEYMAP( \
@@ -54,6 +55,48 @@ KEYMAP( \
 )
 */
 
+#define KEYMAP_HHKBANANA(                                                           \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D,      \
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,           \
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,                \
+    K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C,                \
+    K40, K41, K42,      K44, K45, K46,      K48, K49, K4A, K4B, K4C                 \
+) { \
+    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D },       \
+    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D },       \
+    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D },       \
+    { K30, KC_NO,   K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO }, \
+    { K40, K41, K42, KC_NO,    K44, K45, K46, KC_NO,    K48, K49, K4A, K4B, K4C, KC_NO }   \
+}
+
+#define KEYMAP_ANSI( \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D,           \
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,           \
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,                \
+    K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C,                \
+    K40, K41, K42,           K45,           K48, K49,      K4B, K4C                 \
+) {                                                                                 \
+    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D },       \
+    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D },       \
+    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO },     \
+    { K30, KC_NO,   K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO }, \
+    { K40, K41, K42, KC_NO,    KC_NO,    K45, KC_NO,    KC_NO,    K48, K49, KC_NO,  K4B, K4C, KC_NO }  \
+}
+
+#define KEYMAP_ISO( \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+    K40, K41, K42,           K45,           K48, K49,      K4B, K4C  \
+) { \
+    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO }, \
+    { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO }, \
+    { K40, K41, K42, KC_NO,    KC_NO,    K45, KC_NO,    KC_NO,    K48, K49, KC_NO,    K4B, K4C, KC_NO }  \
+}
+
 /*
 -------------------------------------------------------------------------------------------
 | K00 | K01 | K02 | K03 | K04 | K05 | K06 | K07 | K08 | K09 | K0A | K0B | K0C | K0D | K2D |
@@ -69,16 +112,31 @@ KEYMAP( \
 */
 #define KEYMAP_ALL( \
     K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
-    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,      \
-    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,           \
-    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,      \
-    K40, K41, K42,      K44, K45, K46,      K48, K49, K4A, K4B, K4C            \
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+    K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+    K40, K41, K42,      K44, K45, K46,      K48, K49, K4A, K4B, K4C  \
 ) { \
-    { K00, K01, K02, K03,   K04, K05, K06, K07,   K08, K09, K0A, K0B, K0C, K0D   }, \
-    { K10, K11, K12, K13,   K14, K15, K16, K17,   K18, K19, K1A, K1B, K1C, K1D   }, \
-    { K20, K21, K22, K23,   K24, K25, K26, K27,   K28, K29, K2A, K2B, K2C, K2D   }, \
-    { K30, K31, K32, K33,   K34, K35, K36, K37,   K38, K39, K3A, K3B, K3C, K3D   }, \
-    { K40, K41, K42, KC_NO, K44, K45, K46, KC_NO, K48, K49, K4A, K4B, K4C, KC_NO }  \
+    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+    { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+    { K40, K41, K42, KC_NO,    K44, K45, K46, KC_NO,    K48, K49, K4A, K4B, K4C, KC_NO }  \
 }
 
+#define KEYMAP_HHKB_ARROW( \
+    K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+    K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+    K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+    K30,      K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D,\
+    K40, K41, K42,      K44, K45, K46,      K48, K49, K4A, K4B, K4C  \
+) { \
+    { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+    { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+    { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+    { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+    { K40, K41, K42, KC_NO,    K44, K45, K46, KC_NO,    K48, K49, K4A, K4B, K4C, KC_NO }  \
+}
+
+
 #endif
index 6d92deb0c0c516e664f0679a9c0e637d82bd9f24..bf8d9377c245a333ebad33b5cb85ee0ea09bc281 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright 2017 Balz Guenat
+Copyright 2012 Jun Wako <wakojun@gmail.com>
 
 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
@@ -32,114 +32,33 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROWS 5
 #define MATRIX_COLS 14
 
-/*
- * Keyboard Matrix Assignments
- *
- * Change this to how you wired your keyboard
- * COLS: AVR pins used for columns, left to right
- * ROWS: AVR pins used for rows, top to bottom
- * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
- *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
- *
-*/
 #define MATRIX_ROW_PINS { B0, B2, B4, B5, B6 }
 #define MATRIX_COL_PINS { F5, B1, F0, F1, F4, B3, D7, D6, D4, D5, D3, D2, D1, D0 }
 #define UNUSED_PINS
 
-/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
-#define DIODE_DIRECTION COL2ROW
-// #define BACKLIGHT_PIN B7
-// #define BACKLIGHT_BREATHING
-#define BACKLIGHT_LEVELS 1
-
+#define DIODE_DIRECTION ROW2COL
 
-/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCING_DELAY 5
-
-/* define if matrix has ghost (lacks anti-ghosting diodes) */
+/* define if matrix has ghost */
 //#define MATRIX_HAS_GHOST
 
 /* number of backlight levels */
+#define BACKLIGHT_LEVELS  1
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY  5
+#define TAPPING_TERM      175
 
 /* 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
 
-/*
- * 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 */
+/* key combination for command */
 #define IS_COMMAND() ( \
     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 )
 
-/* 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_HELP1          H
-//#define MAGIC_KEY_HELP2          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_ALT1    ESC
-//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
-//#define MAGIC_KEY_LAYER0         0
-//#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     PAUSE
-//#define MAGIC_KEY_LOCK           CAPS
-//#define MAGIC_KEY_EEPROM         E
-//#define MAGIC_KEY_NKRO           N
-//#define MAGIC_KEY_SLEEP_LED      Z
+
 
 /*
  * Feature disable options
@@ -159,27 +78,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 //#define NO_ACTION_MACRO
 //#define NO_ACTION_FUNCTION
 
-/*
- * MIDI options
- */
-
-/* Prevent use of disabled MIDI features in the keymap */
-//#define MIDI_ENABLE_STRICT 1
-
-/* enable basic MIDI features:
-   - MIDI notes can be sent when in Music mode is on
-*/
-//#define MIDI_BASIC
-
-/* enable advanced MIDI features:
-   - MIDI notes can be added to the keymap
-   - Octave shift and transpose
-   - Virtual sustain, portamento, and modulation wheel
-   - etc.
-*/
-//#define MIDI_ADVANCED
-
-/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
-//#define MIDI_TONE_KEYCODE_OCTAVES 1
-
 #endif
index 9aa65fb7ea925efb0ce2d263792124a691e8331c..f07278df9b051c19e6f62cad25acceaf7148a434 100644 (file)
@@ -1,75 +1,25 @@
-/* Copyright 2017 Balz Guenat
- *
- * 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 "bananasplit.h"
 
+#define DEFAULT_LAYER 0
+#define LAYER_1       1
+
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/*
--------------------------------------------------------------------------------------------
-| Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  | Backspace |
--------------------------------------------------------------------------------------------
-|  Tab   |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |   \    |
--------------------------------------------------------------------------------------------
-| CapsLck |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    |
--------------------------------------------------------------------------------------------
-|    Shift    |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |RSFT_T(/)| Up  |Light|
--------------------------------------------------------------------------------------------
-| Ctrl  |  GUI  |  Alt  |    Enter    |  App  |    Space    | Alt |Ctrl |Left |Down |Right|
--------------------------------------------------------------------------------------------
-*/
-[0] = KEYMAP( \
-    KC_ESC,  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_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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), KC_UP, BL_STEP,\
-    KC_LCTL, KC_LGUI, KC_LALT, KC_ENT, KC_APP, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
-),
+  [DEFAULT_LAYER] = KEYMAP(
+    KC_ESC, 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_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_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_LSFT,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  RSFT_T(KC_SLSH),  KC_UP, _______, \
+    KC_LCTL,  KC_LGUI,  KC_LALT, KC_ENT,      MO(LAYER_1),      KC_SPC,  KC_RALT, KC_RCTL,  KC_LEFT, KC_DOWN, KC_RIGHT
+  ),
+
+  [LAYER_1] = KEYMAP( \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+    _______, _______, _______,          _______, _______, _______,          _______, _______, _______, _______, _______ \
+  ),
 };
 
 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;
 };
-
-
-void matrix_init_user(void) {
-
-}
-
-void matrix_scan_user(void) {
-
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  return true;
-}
-
-void led_set_user(uint8_t usb_led) {
-
-}
index 9e8eeb5bdd3198e7e7667adf091e3d90db200b4c..aaf6daa08c5336ce6ae49d5a93a01127cf9e672b 100644 (file)
@@ -1,17 +1 @@
 # The default keymap for the Bananasplit
-
-```
--------------------------------------------------------------------------------------------
-| Esc |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  |  0  |  -  |  =  | Backspace |
--------------------------------------------------------------------------------------------
-|  Tab   |  Q  |  W  |  E  |  R  |  T  |  Y  |  U  |  I  |  O  |  P  |  [  |  ]  |   \    |
--------------------------------------------------------------------------------------------
-| CapsLck |  A  |  S  |  D  |  F  |  G  |  H  |  J  |  K  |  L  |  ;  |  '  |    Enter    |
--------------------------------------------------------------------------------------------
-|    Shift    |  Z  |  X  |  C  |  V  |  B  |  N  |  M  |  ,  |  .  |RSFT_T(/)| Up  |Light|
--------------------------------------------------------------------------------------------
-| Ctrl  |  GUI  |  Alt  |    Enter    |  App  |    Space    | Alt |Ctrl |Left |Down |Right|
--------------------------------------------------------------------------------------------
-```
-
-The `RSFT_T(/)` key works as `/` when tapped and as right shift when held.
diff --git a/keyboards/bananasplit/keymaps/hhkbanana/keymap.c b/keyboards/bananasplit/keymaps/hhkbanana/keymap.c
new file mode 100644 (file)
index 0000000..10593de
--- /dev/null
@@ -0,0 +1,25 @@
+#include "bananasplit.h"
+
+#define DEFAULT_LAYER 0
+#define LAYER_1       1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [DEFAULT_LAYER] = KEYMAP_HHKBANANA( \
+    KC_ESC, 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_BSLS,   KC_PSCR, \
+    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_BSPC, \
+    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_LSFT,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,  KC_DOT,  KC_SLSH,  KC_RSFT, \
+    KC_LCTL,  KC_LGUI,  KC_LALT, KC_ENT,      MO(LAYER_1),      KC_SPC,  KC_RALT, KC_RCTL,  KC_LEFT, KC_DOWN, KC_RIGHT \
+  ),
+
+  [LAYER_1] = KEYMAP_HHKBANANA( \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+    _______, _______, _______,          _______, _______, _______,          _______, _______, _______, _______, _______ \
+  ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
diff --git a/keyboards/bananasplit/keymaps/nic/keymap.c b/keyboards/bananasplit/keymaps/nic/keymap.c
new file mode 100644 (file)
index 0000000..f9794b5
--- /dev/null
@@ -0,0 +1,45 @@
+#include "bananasplit.h"
+
+#define DEFAULT_LAYER 0
+#define THUMB_LAYER   1
+#define NORMAN_LAYER  2
+#define MOD_LAYER     3
+
+#define HYPER_TAB ALL_T(KC_TAB)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [DEFAULT_LAYER] = KEYMAP_HHKB_ARROW( \
+    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_BSLS, KC_DEL, \
+    HYPER_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_BSPC, \
+    CTL_T(KC_ESC),   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_LSFT,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,  KC_DOT,  RSFT_T(KC_SLSH),  KC_UP, TG(NORMAN_LAYER), \
+    KC_CAPS,  KC_LALT,  KC_LGUI,  KC_SPC,      MO(THUMB_LAYER),      KC_SPC,  KC_LGUI, KC_LALT,  KC_LEFT, KC_DOWN, KC_RIGHT \
+  ),
+
+  [THUMB_LAYER] = KEYMAP_HHKB_ARROW( \
+    MO(MOD_LAYER), 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_UNDS,   KC_PLUS,   KC_LCBR,   KC_RCBR,   _______, _______, _______, \
+    _______,   _______,   _______,   _______,   _______,   _______,   _______,   KC_MINS,   KC_EQL,   KC_LBRC, KC_RBRC,  _______, _______, \
+    _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,  _______,  _______,  _______, _______, \
+    _______,  _______,  _______, _______,      _______,      _______,  _______, _______,  _______, _______, _______ \
+  ),
+
+  [NORMAN_LAYER] = KEYMAP_HHKB_ARROW( \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+    _______,  _______,   _______,   KC_D,   KC_F,   KC_K,   KC_J,   KC_U,   KC_R,   KC_L,   KC_SCLN,   _______, _______, _______, \
+    _______,   _______,   _______,   KC_E,   KC_T,  _______,   KC_Y,   KC_N,   KC_I,   KC_O,   KC_H,  _______, _______, \
+    _______,   _______,   _______,   _______,   _______,   _______,   KC_P,   _______,   _______,  _______,  _______,  _______, _______, \
+    _______,  _______,  _______, _______,      _______,      _______,  _______, _______,  _______, _______, _______ \
+  ),
+
+  [MOD_LAYER] = KEYMAP_HHKB_ARROW( \
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+    _______,  _______,   _______,   _______,  RESET,  _______,   _______,   _______,   _______,   _______,   _______,   _______, _______, _______, \
+    _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,  _______, _______, \
+    _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,  _______,  _______,  _______, _______, \
+    _______,  _______,  _______, _______,      _______,      _______,  _______, _______,  _______, _______, _______ \
+  ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
index 00c144bc0644f961219f91f2cc9fcfe75e25ca31..04579d4ce614205e3510e041e34e10edf5a36585 100644 (file)
@@ -1,4 +1,5 @@
 # MCU name
+#MCU = at90usb1287
 MCU = atmega32u4
 
 # Processor frequency.
@@ -48,20 +49,17 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
 
 
 # Build Options
-#   change yes to no to disable
+#   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)
-CONSOLE_ENABLE ?= yes        # Console for debug(+400)
-COMMAND_ENABLE ?= yes        # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE ?= no       # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE ?= no            # USB Nkey Rollover
-BACKLIGHT_ENABLE ?= yes      # Enable keyboard backlight functionality on B7 by default
-MIDI_ENABLE ?= no            # MIDI support (+2400 to 4200, depending on config)
-UNICODE_ENABLE ?= no         # Unicode
-BLUETOOTH_ENABLE ?= no       # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE ?= no           # Audio output on port C6
-FAUXCLICKY_ENABLE ?= no      # Use buzzer to emulate clicky switches
+BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
+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
+#SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes      # USB Nkey Rollover - not yet supported in LUFA
+BACKLIGHT_ENABLE = yes
+
+
+# Optimize size but this may cause error "relocation truncated to fit"
+#EXTRALDFLAGS = -Wl,--relax
index 0efa785505a707c0a5138b13e8ef653034ddf7b8..1aee5313c1ee122fb0feebc44dc52caef52651b0 100644 (file)
@@ -73,15 +73,3 @@ USE_I2C ?= yes
 SLEEP_LED_ENABLE ?= no    # Breathing sleep LED during USB suspend
 
 CUSTOM_MATRIX = yes
-
-avrdude: build
-       ls /dev/tty* > /tmp/1; \
-       echo "Reset your Pro Micro now"; \
-       while [[ -z $$USB ]]; do \
-         sleep 1; \
-         ls /dev/tty* > /tmp/2; \
-         USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
-       done; \
-       avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
-
-.PHONY: avrdude
index 30b43c4eaa842fc5e6de21d939595f53dab8dcd7..b9bada8f8d73aa3a06f9f27ca37f0129e4c19728 100644 (file)
@@ -1,4 +1,4 @@
-SUBPROJECT_DEFAULT = rev1
+SUBPROJECT_DEFAULT = rev2
 
 ifndef MAKEFILE_INCLUDED
        include ../../Makefile
index af7e1822c8da610df9bf295afe640ef3ed948bd6..99b057496fcbcf063756b206b4b8c2dbaef0b994 100644 (file)
@@ -73,5 +73,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifdef SUBPROJECT_rev1
     #include "rev1/config.h"
 #endif
+#ifdef SUBPROJECT_rev2
+    #include "rev2/config.h"
+#endif
 
 #endif
index 9da33b9b8d41a73a433fc198a746672ddf8ff930..2cfb8df26bdcc191fd108a761853e4e9be659496 100644 (file)
@@ -4,6 +4,10 @@
 #ifdef SUBPROJECT_rev1
     #include "rev1.h"
 #endif
+#ifdef SUBPROJECT_rev2
+    #include "rev2.h"
+#endif
+
 
 #include "quantum.h"
 
index 8fef3a1ce5ef7f15d657d9573db79bf7a98d442a..d29aa8ece703966325a7253b3b648e2e0ad1def1 100644 (file)
@@ -10,6 +10,6 @@ Hardware Supported: ECO PCB rev1 Pro Micro
 
 Make example for this keyboard (after setting up your build environment):
 
-    make eco-rev1-that_canadian
+    make eco-rev2-that_canadian
 
 See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
\ No newline at end of file
diff --git a/keyboards/eco/rev2/Makefile b/keyboards/eco/rev2/Makefile
new file mode 100644 (file)
index 0000000..4e2a6f0
--- /dev/null
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+       include ../../Makefile
+endif
\ No newline at end of file
diff --git a/keyboards/eco/rev2/config.h b/keyboards/eco/rev2/config.h
new file mode 100644 (file)
index 0000000..83f2def
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+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/>.
+*/
+
+#ifndef REV2_CONFIG_H
+#define REV2_CONFIG_H
+
+#include "../config.h"
+
+#define DEVICE_VER      0x0002
+
+/* ECO V2.1 pin-out */
+#define MATRIX_ROW_PINS { D7, B5, B4, E6 }
+#define MATRIX_COL_PINS { D1, D0, D4, C6, B6, B2, B3, B1, F7, F6, F5, F4, D2, D3 }
+#define UNUSED_PINS
+
+#endif
diff --git a/keyboards/eco/rev2/rev2.c b/keyboards/eco/rev2/rev2.c
new file mode 100644 (file)
index 0000000..8409765
--- /dev/null
@@ -0,0 +1 @@
+#include "eco.h"
diff --git a/keyboards/eco/rev2/rev2.h b/keyboards/eco/rev2/rev2.h
new file mode 100644 (file)
index 0000000..5b377f2
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef REV2_H
+#define REV2_H
+
+#include "../eco.h"
+
+//void promicro_bootloader_jmp(bool program);
+#include "quantum.h"
+
+//void promicro_bootloader_jmp(bool program);
+
+#define KEYMAP( \
+       k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014, \
+       k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114, \
+       k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214, \
+       k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314  \
+       ) \
+       { \
+               { k01, k02, k03, k04, k05, k06, k07, k08, k09, k010, k011, k012, k013, k014 }, \
+               { k11, k12, k13, k14, k15, k16, k17, k18, k19, k110, k111, k112, k113, k114 }, \
+               { k21, k22, k23, k24, k25, k26, k27, k28, k29, k210, k211, k212, k213, k214 }, \
+               { k31, k32, k33, k34, k35, k36, k37, k38, k39, k310, k311, k312, k313, k314 }  \
+       }
+
+#endif
\ No newline at end of file
diff --git a/keyboards/eco/rev2/rules.mk b/keyboards/eco/rev2/rules.mk
new file mode 100644 (file)
index 0000000..a0825b4
--- /dev/null
@@ -0,0 +1,5 @@
+BACKLIGHT_ENABLE = no
+
+ifndef QUANTUM_DIR
+       include ../../../Makefile
+endif
\ No newline at end of file
index 5e808dfa7f7ee0d8da79d4250a8e09b1d957ca89..2e2d48f6ab58efbe580d1705a7295238f785126e 100644 (file)
@@ -67,15 +67,3 @@ RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this
 
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
-
-avrdude: build
-       ls /dev/tty* > /tmp/1; \
-       echo "Reset your Pro Micro now"; \
-       while [[ -z $$USB ]]; do \
-         sleep 1; \
-         ls /dev/tty* > /tmp/2; \
-         USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
-       done; \
-       avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
-
-.PHONY: avrdude
index 913bcb93e2fcb6576bb89f9bdd253d3b6f588709..a3fdd3d707f0811af8458af9903310d48d71d33d 100644 (file)
@@ -69,15 +69,3 @@ AUDIO_ENABLE ?= no           # Audio output on port C6
 ifndef QUANTUM_DIR
        include ../../../Makefile
 endif
-
-avrdude: build
-       ls /dev/tty* > /tmp/1; \
-       echo "Reset your Pro Micro now"; \
-       while [[ -z $$USB ]]; do \
-         sleep 1; \
-         ls /dev/tty* > /tmp/2; \
-         USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
-       done; \
-       avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
-
-.PHONY: avrdude
index 0e07bde403abe3d9f1f5075ea9bb82a5c2576be1..0d21623cedae67b7cfb23f6f5aafc91d56246779 100644 (file)
@@ -69,15 +69,3 @@ AUDIO_ENABLE = no           # Audio output on port C6
 ifndef QUANTUM_DIR
        include ../../../Makefile
 endif
-
-avrdude: build
-       ls /dev/tty* > /tmp/1; \
-       echo "Reset your Pro Micro now"; \
-       while [[ -z $$USB ]]; do \
-         sleep 1; \
-         ls /dev/tty* > /tmp/2; \
-         USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
-       done; \
-       avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
-
-.PHONY: avrdude
index 0e07bde403abe3d9f1f5075ea9bb82a5c2576be1..0d21623cedae67b7cfb23f6f5aafc91d56246779 100644 (file)
@@ -69,15 +69,3 @@ AUDIO_ENABLE = no           # Audio output on port C6
 ifndef QUANTUM_DIR
        include ../../../Makefile
 endif
-
-avrdude: build
-       ls /dev/tty* > /tmp/1; \
-       echo "Reset your Pro Micro now"; \
-       while [[ -z $$USB ]]; do \
-         sleep 1; \
-         ls /dev/tty* > /tmp/2; \
-         USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
-       done; \
-       avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
-
-.PHONY: avrdude
index 0e07bde403abe3d9f1f5075ea9bb82a5c2576be1..0d21623cedae67b7cfb23f6f5aafc91d56246779 100644 (file)
@@ -69,15 +69,3 @@ AUDIO_ENABLE = no           # Audio output on port C6
 ifndef QUANTUM_DIR
        include ../../../Makefile
 endif
-
-avrdude: build
-       ls /dev/tty* > /tmp/1; \
-       echo "Reset your Pro Micro now"; \
-       while [[ -z $$USB ]]; do \
-         sleep 1; \
-         ls /dev/tty* > /tmp/2; \
-         USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
-       done; \
-       avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
-
-.PHONY: avrdude
diff --git a/keyboards/lets_split/keymaps/fabian/Makefile b/keyboards/lets_split/keymaps/fabian/Makefile
new file mode 100644 (file)
index 0000000..b8c82cb
--- /dev/null
@@ -0,0 +1,9 @@
+# Build Options
+#   change to "no" to disable the options, or define them in the Makefile in 
+#   the appropriate keymap folder that will get included automatically
+#
+# UNICODE_ENABLE = yes
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/lets_split/keymaps/fabian/config.h b/keyboards/lets_split/keymaps/fabian/config.h
new file mode 100644 (file)
index 0000000..ba271d1
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+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/>.
+*/
+
+
+#define USE_SERIAL
+
+#define MASTER_LEFT
+// #define _MASTER_RIGHT
+// #define EE_HANDS
+
+
+#ifdef SUBPROJECT_rev1
+    #include "../../rev1/config.h"
+#endif
+#ifdef SUBPROJECT_rev2
+    #include "../../rev2/config.h"
+#endif
+#ifdef SUBPROJECT_rev2fliphalf
+       #include "../../rev2fliphalf/config.h"
+#endif
diff --git a/keyboards/lets_split/keymaps/fabian/keymap.c b/keyboards/lets_split/keymaps/fabian/keymap.c
new file mode 100644 (file)
index 0000000..0af505b
--- /dev/null
@@ -0,0 +1,221 @@
+#include "lets_split.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// 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 _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _ADJUST 16
+
+enum custom_keycodes {
+  QWERTY = SAFE_RANGE,
+  COLEMAK,
+  DVORAK,
+  LOWER,
+  RAISE,
+  ADJUST,
+};
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// Custom
+#define CTL_ESC CTL_T(KC_ESC)  // Tap for Escape, hold for Control
+#define SFT_ENT SFT_T(KC_ENT)  // Tap for Enter, hold for Shift
+#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
+#define HPR_TAB ALL_T(KC_TAB)  // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
+// #define MEH_GRV MEH_T(KC_GRV)  // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space | Bksp |Raise | GUI  |AltGr | Ctrl |Adjust|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = KEYMAP( \
+  HPR_TAB, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
+  CTL_ESC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
+  SFT_BSP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT , \
+  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  SFT_BSP, RAISE,   KC_RGUI, KC_RALT, KC_RCTL, ADJUST \
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space | Bksp |Raise | GUI  |AltGr | Ctrl |Adjust|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = KEYMAP( \
+  HPR_TAB, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \
+  CTL_ESC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
+  SFT_BSP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT , \
+  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  SFT_BSP, RAISE,   KC_RGUI, KC_RALT, KC_RCTL, ADJUST \
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space | Bksp |Raise | GUI  |AltGr | Ctrl |Adjust|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = KEYMAP( \
+  HPR_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \
+  CTL_ESC, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \
+  SFT_BSP, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    SFT_ENT , \
+  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  SFT_BSP, RAISE,   KC_RGUI, KC_RALT, KC_RCTL, ADJUST \
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | MS L | MS D |MS U  | MS R |MS Btn|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = KEYMAP( \
+  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, \
+  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | Left | Down |  Up  | Rght |MS_BN2|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = KEYMAP( \
+  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \
+  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \
+  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_BTN2, \
+  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |      |Reset |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Reset | Del  |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] =  KEYMAP( \
+  _______, RESET,   _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  RESET,   KC_DEL, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+)
+
+
+};
+
+#ifdef AUDIO_ENABLE
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+#endif
+
+void persistent_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case QWERTY:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+        #endif
+        persistent_default_layer_set(1UL<<_QWERTY);
+      }
+      return false;
+      break;
+    case COLEMAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+        #endif
+        persistent_default_layer_set(1UL<<_COLEMAK);
+      }
+      return false;
+      break;
+    case DVORAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
+        #endif
+        persistent_default_layer_set(1UL<<_DVORAK);
+      }
+      return false;
+      break;
+    case LOWER:
+      if (record->event.pressed) {
+        layer_on(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case RAISE:
+      if (record->event.pressed) {
+        layer_on(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case ADJUST:
+      if (record->event.pressed) {
+        layer_on(_ADJUST);
+      } else {
+        layer_off(_ADJUST);
+      }
+      return false;
+      break;
+  }
+  return true;
+}
index 610b776ee14d8e07079ba589425ead61f04c4d97..0ef7ff59d7ede4e164dfc7d5bcecb4cd2602aa89 100644 (file)
@@ -106,7 +106,7 @@ Notes on Software Configuration
 -------------------------------
 
 Configuring the firmware is similar to any other QMK project. One thing
-to note is that `MATIX_ROWS` in `config.h` is the total number of rows between
+to note is that `MATRIX_ROWS` in `config.h` is the total number of rows between
 the two halves, i.e. if your split keyboard has 4 rows in each half, then
 `MATRIX_ROWS=8`.
 
@@ -115,7 +115,7 @@ not be very difficult to adapt it to support more if required.
 
 Flashing
 -------
-From the keymap directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
+From the `lets_split` directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
 Example: `make rev2-default-avrdude`
 
 
index cc87ee31c602a11bb59bf5d1b36d4bf354aa7ff1..c2b7d556ebd48f36e0dc9862360b82ccffe8a75b 100644 (file)
@@ -74,15 +74,3 @@ USE_I2C = yes
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
 
 CUSTOM_MATRIX = yes
-
-avrdude: build
-       ls /dev/tty* > /tmp/1; \
-       echo "Reset your Pro Micro now"; \
-       while [ -z $$USB ]; do \
-         sleep 1; \
-         ls /dev/tty* > /tmp/2; \
-         USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
-       done; \
-       avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
-
-.PHONY: avrdude
diff --git a/keyboards/minidox/eeprom-lefthand.eep b/keyboards/minidox/eeprom-lefthand.eep
new file mode 100644 (file)
index 0000000..b9666a7
--- /dev/null
@@ -0,0 +1,2 @@
+:0B0000000000000000000000000001F4\r
+:00000001FF\r
diff --git a/keyboards/minidox/eeprom-righthand.eep b/keyboards/minidox/eeprom-righthand.eep
new file mode 100644 (file)
index 0000000..94cc5be
--- /dev/null
@@ -0,0 +1,2 @@
+:0B0000000000000000000000000000F5\r
+:00000001FF\r
index aad7ed1e66aa21729bff35bcf6eac9df9514001e..5832d1866ed7ef7f5393a26eabf182e016a9dc64 100644 (file)
@@ -30,7 +30,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* ws2812 RGB LED */
 #define RGB_DI_PIN D7
 #define RGBLIGHT_TIMER
-#define RGBLED_NUM 4   // Number of LEDs
+#define RGBLED_NUM 8   // Number of LEDs
 #define RGBLIGHT_ANIMATIONS
 #define RGBLIGHT_HUE_STEP 10
 #define RGBLIGHT_SAT_STEP 17
index 5d55d182513a31a071a144a63042e50acf183c59..b1ca139b7bb49a93e29317228c57dc18a1183b89 100644 (file)
@@ -40,11 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * |   Z  |   X  |   C  |   V  |   B  |           |   N  |   M  |   ,  |   .  |   /  |
  * `----------------------------------'           `----------------------------------'
  *                  ,--------------------.    ,------,-------------.
-<<<<<<< HEAD
  *                  | Shift| LOWER|      |    |      | RAISE| Ctrl |
-=======
- *                  | Ctrl | LOWER|      |    |      | RAISE| Shift|
->>>>>>> a4958a532da154b9dd6f6144836a73f9de641f74
  *                  `-------------| Space|    |BckSpc|------+------.
  *                                |      |    |      |
  *                                `------'    `------'
@@ -105,9 +101,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,----------------------------------.           ,----------------------------------.
  * |  F1  |  F2  |  F3  |  F4  |  F5  |           |   F6 |  F7  |  Up  |  F9  |  F10 |
  * |------+------+------+------+------|           |------+------+------+------+------|
- * |  F11 |  F12 |      |      |      |           |      | Left | Down |Right |caltde|
+ * |  F11 |  F12 |      |RGBSAI|RGBSAD|           |      | Left | Down |Right |caltde|
  * |------+------+------+------+------|           |------+------+------+------+------|
- * | Reset|      |      |      |      |           |      |      |   F8 |Taskmg|      |
+ * | Reset|RGBTOG|RGBMOD|RGBHUI|RGBHUD|           |RGBVAI|RGBVAD|  F8  |Taskmg|      |
  * `----------------------------------'           `----------------------------------'
  *                  ,--------------------.    ,------,-------------.
  *                  |      | LOWER|      |    |      | RAISE|      |
@@ -123,10 +119,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 )
 };
 
-#ifdef AUDIO_ENABLE
-float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
-#endif
-
 void persistant_default_layer_set(uint16_t default_layer) {
   eeconfig_update_default_layer(default_layer);
   default_layer_set(default_layer);
@@ -136,9 +128,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   switch (keycode) {
     case QWERTY:
       if (record->event.pressed) {
-        #ifdef AUDIO_ENABLE
-          PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
-        #endif
         persistant_default_layer_set(1UL<<_QWERTY);
       }
       return false;
index da89714867e964e021881f42591273f55fb275d5..c15fd244a4e24248db263c72b8b723b785e9436c 100644 (file)
@@ -1,7 +1,7 @@
 MiniDox
 =====
 
-![MimiDox](http://i.imgur.com/iWb3yO0.jpg)
+![MiniDox](http://i.imgur.com/iWb3yO0.jpg)
 
 A compact version of the ErgoDox
 
@@ -22,7 +22,7 @@ Flashing
 -------
 Note: Most of this is copied from the Let's Split readme, because it is awesome
 
-From the keymap directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
+From the `minidox` directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
 Example: `make rev1-default-avrdude`
 
 Choosing which board to plug the USB cable into (choosing Master)
diff --git a/keyboards/nyquist/eeprom-lefthand.eep b/keyboards/nyquist/eeprom-lefthand.eep
new file mode 100644 (file)
index 0000000..b9666a7
--- /dev/null
@@ -0,0 +1,2 @@
+:0B0000000000000000000000000001F4\r
+:00000001FF\r
diff --git a/keyboards/nyquist/eeprom-righthand.eep b/keyboards/nyquist/eeprom-righthand.eep
new file mode 100644 (file)
index 0000000..94cc5be
--- /dev/null
@@ -0,0 +1,2 @@
+:0B0000000000000000000000000000F5\r
+:00000001FF\r
index 457a3d01d4a4f6d3a66baaac45d37543aacf7888..1e57612788015dbec7a61d74d25242658d4ad3aa 100644 (file)
@@ -1,3 +1,5 @@
+RGBLIGHT_ENABLE = yes
+
 ifndef QUANTUM_DIR
        include ../../../../Makefile
 endif
index 624d284cac4038af14ec312eafdc352797fe6309..072d4a7ce21152424d1b69db722cdddb056afc02 100644 (file)
@@ -31,4 +31,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // #define _MASTER_RIGHT
 // #define EE_HANDS
 
+#undef RGBLED_NUM
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 12
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
 #endif
\ No newline at end of file
index dcb68a6e069fff62d6660a6a6d8704a3b19c4d34..97fee4e1e26813f065a4ee85dd16e71613c3a866 100644 (file)
@@ -139,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,-----------------------------------------------------------------------------------.
  * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
- * |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
+ * |      | Reset|RGB Tg|RGB Md|Hue Up|Hue Dn|Sat Up|Sat Dn|Val Up|Val Dn|      |  Del |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * |      |      |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|      |      |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
@@ -150,7 +150,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 [_ADJUST] =  KEYMAP( \
   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12, \
-  _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+  _______, RESET  , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_DEL, \
   _______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  _______, _______, \
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
index dcb94c67c8af2c6e4726e4e7d69c03adb923028a..21eef94564e3ae75b9d94fbb0eed614a0c4a1337 100644 (file)
@@ -21,9 +21,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include <stdint.h>
 #include <stdbool.h>
 #include <avr/io.h>
-#include <avr/wdt.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
+#include "wait.h"
 #include "print.h"
 #include "debug.h"
 #include "util.h"
@@ -31,6 +29,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "split_util.h"
 #include "pro_micro.h"
 #include "config.h"
+#include "timer.h"
 
 #ifdef USE_I2C
 #  include "i2c.h"
@@ -38,14 +37,29 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #  include "serial.h"
 #endif
 
-#ifndef DEBOUNCE
-#  define DEBOUNCE     5
+#ifndef DEBOUNCING_DELAY
+#   define DEBOUNCING_DELAY 5
 #endif
 
+#if (DEBOUNCING_DELAY > 0)
+    static uint16_t debouncing_time;
+    static bool debouncing = false;
+#endif
+
+#if (MATRIX_COLS <= 8)
+#    define print_matrix_header()  print("\nr/c 01234567\n")
+#    define print_matrix_row(row)  print_bin_reverse8(matrix_get_row(row))
+#    define matrix_bitpop(i)       bitpop(matrix[i])
+#    define ROW_SHIFTER ((uint8_t)1)
+#else
+#    error "Currently only supports 8 COLS"
+#endif
+static matrix_row_t matrix_debouncing[MATRIX_ROWS];
+
 #define ERROR_DISCONNECT_COUNT 5
 
-static uint8_t debouncing = DEBOUNCE;
-static const int ROWS_PER_HAND = MATRIX_ROWS/2;
+#define ROWS_PER_HAND (MATRIX_ROWS/2)
+
 static uint8_t error_count = 0;
 
 static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
@@ -55,11 +69,19 @@ static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
 static matrix_row_t matrix[MATRIX_ROWS];
 static matrix_row_t matrix_debouncing[MATRIX_ROWS];
 
-static matrix_row_t read_cols(void);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
-
+#if (DIODE_DIRECTION == COL2ROW)
+    static void init_cols(void);
+    static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row);
+    static void unselect_rows(void);
+    static void select_row(uint8_t row);
+    static void unselect_row(uint8_t row);
+#elif (DIODE_DIRECTION == ROW2COL)
+    static void init_rows(void);
+    static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col);
+    static void unselect_cols(void);
+    static void unselect_col(uint8_t col);
+    static void select_col(uint8_t col);
+#endif
 __attribute__ ((weak))
 void matrix_init_quantum(void) {
     matrix_init_kb();
@@ -118,33 +140,54 @@ void matrix_init(void)
     }
 
     matrix_init_quantum();
+
 }
 
 uint8_t _matrix_scan(void)
 {
-    // Right hand is stored after the left in the matirx so, we need to offset it
     int offset = isLeftHand ? 0 : (ROWS_PER_HAND);
+#if (DIODE_DIRECTION == COL2ROW)
+    // Set row, read cols
+    for (uint8_t current_row = 0; current_row < ROWS_PER_HAND; current_row++) {
+#       if (DEBOUNCING_DELAY > 0)
+            bool matrix_changed = read_cols_on_row(matrix_debouncing+offset, current_row);
+
+            if (matrix_changed) {
+                debouncing = true;
+                debouncing_time = timer_read();
+                PORTD ^= (1 << 2);
+            }
+
+#       else
+            read_cols_on_row(matrix+offset, current_row);
+#       endif
+
+    }
+
+#elif (DIODE_DIRECTION == ROW2COL)
+    // Set col, read rows
+    for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
+#       if (DEBOUNCING_DELAY > 0)
+            bool matrix_changed = read_rows_on_col(matrix_debouncing+offset, current_col);
+            if (matrix_changed) {
+                debouncing = true;
+                debouncing_time = timer_read();
+            }
+#       else
+             read_rows_on_col(matrix+offset, current_col);
+#       endif
 
-    for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
-        select_row(i);
-        _delay_us(30);  // without this wait read unstable value.
-        matrix_row_t cols = read_cols();
-        if (matrix_debouncing[i+offset] != cols) {
-            matrix_debouncing[i+offset] = cols;
-            debouncing = DEBOUNCE;
-        }
-        unselect_rows();
     }
+#endif
 
-    if (debouncing) {
-        if (--debouncing) {
-            _delay_ms(1);
-        } else {
+#   if (DEBOUNCING_DELAY > 0)
+        if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) {
             for (uint8_t i = 0; i < ROWS_PER_HAND; i++) {
                 matrix[i+offset] = matrix_debouncing[i+offset];
             }
+            debouncing = false;
         }
-    }
+#   endif
 
     return 1;
 }
@@ -200,9 +243,7 @@ int serial_transaction(void) {
 
 uint8_t matrix_scan(void)
 {
-    int ret = _matrix_scan();
-
-
+    uint8_t ret = _matrix_scan();
 
 #ifdef USE_I2C
     if( i2c_transaction() ) {
@@ -233,11 +274,10 @@ uint8_t matrix_scan(void)
 void matrix_slave_scan(void) {
     _matrix_scan();
 
-    int offset = (isLeftHand) ? 0 : (MATRIX_ROWS / 2);
+    int offset = (isLeftHand) ? 0 : ROWS_PER_HAND;
 
 #ifdef USE_I2C
     for (int i = 0; i < ROWS_PER_HAND; ++i) {
-        /* i2c_slave_buffer[i] = matrix[offset+i]; */
         i2c_slave_buffer[i] = matrix[offset+i];
     }
 #else // USE_SERIAL
@@ -284,33 +324,141 @@ uint8_t matrix_key_count(void)
     return count;
 }
 
-static void  init_cols(void)
+#if (DIODE_DIRECTION == COL2ROW)
+
+static void init_cols(void)
 {
-    for(int x = 0; x < MATRIX_COLS; x++) {
-        _SFR_IO8((col_pins[x] >> 4) + 1) &=  ~_BV(col_pins[x] & 0xF);
-        _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF);
+    for(uint8_t x = 0; x < MATRIX_COLS; x++) {
+        uint8_t pin = col_pins[x];
+        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
+        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
     }
 }
 
-static matrix_row_t read_cols(void)
+static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
 {
-    matrix_row_t result = 0;
-    for(int x = 0; x < MATRIX_COLS; x++) {
-        result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x);
+    // Store last value of row prior to reading
+    matrix_row_t last_row_value = current_matrix[current_row];
+
+    // Clear data in matrix row
+    current_matrix[current_row] = 0;
+
+    // Select row and wait for row selecton to stabilize
+    select_row(current_row);
+    wait_us(30);
+
+    // For each col...
+    for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
+
+        // Select the col pin to read (active low)
+        uint8_t pin = col_pins[col_index];
+        uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF));
+
+        // Populate the matrix row with the state of the col pin
+        current_matrix[current_row] |=  pin_state ? 0 : (ROW_SHIFTER << col_index);
     }
-    return result;
+
+    // Unselect row
+    unselect_row(current_row);
+
+    return (last_row_value != current_matrix[current_row]);
+}
+
+static void select_row(uint8_t row)
+{
+    uint8_t pin = row_pins[row];
+    _SFR_IO8((pin >> 4) + 1) |=  _BV(pin & 0xF); // OUT
+    _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
+}
+
+static void unselect_row(uint8_t row)
+{
+    uint8_t pin = row_pins[row];
+    _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
+    _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
 }
 
 static void unselect_rows(void)
 {
-    for(int x = 0; x < ROWS_PER_HAND; x++) {
-        _SFR_IO8((row_pins[x] >> 4) + 1) &=  ~_BV(row_pins[x] & 0xF);
-        _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF);
+    for(uint8_t x = 0; x < ROWS_PER_HAND; x++) {
+        uint8_t pin = row_pins[x];
+        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
+        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
     }
 }
 
-static void select_row(uint8_t row)
+#elif (DIODE_DIRECTION == ROW2COL)
+
+static void init_rows(void)
+{
+    for(uint8_t x = 0; x < ROWS_PER_HAND; x++) {
+        uint8_t pin = row_pins[x];
+        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
+        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
+    }
+}
+
+static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
+{
+    bool matrix_changed = false;
+
+    // Select col and wait for col selecton to stabilize
+    select_col(current_col);
+    wait_us(30);
+
+    // For each row...
+    for(uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++)
+    {
+
+        // Store last value of row prior to reading
+        matrix_row_t last_row_value = current_matrix[row_index];
+
+        // Check row pin state
+        if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0)
+        {
+            // Pin LO, set col bit
+            current_matrix[row_index] |= (ROW_SHIFTER << current_col);
+        }
+        else
+        {
+            // Pin HI, clear col bit
+            current_matrix[row_index] &= ~(ROW_SHIFTER << current_col);
+        }
+
+        // Determine if the matrix changed state
+        if ((last_row_value != current_matrix[row_index]) && !(matrix_changed))
+        {
+            matrix_changed = true;
+        }
+    }
+
+    // Unselect col
+    unselect_col(current_col);
+
+    return matrix_changed;
+}
+
+static void select_col(uint8_t col)
+{
+    uint8_t pin = col_pins[col];
+    _SFR_IO8((pin >> 4) + 1) |=  _BV(pin & 0xF); // OUT
+    _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW
+}
+
+static void unselect_col(uint8_t col)
+{
+    uint8_t pin = col_pins[col];
+    _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
+    _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
+}
+
+static void unselect_cols(void)
 {
-    _SFR_IO8((row_pins[row] >> 4) + 1) |=  _BV(row_pins[row] & 0xF);
-    _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF);
+    for(uint8_t x = 0; x < MATRIX_COLS; x++) {
+        uint8_t pin = col_pins[x];
+        _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN
+        _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF); // HI
+    }
 }
+
+#endif
index c70bf02576566b7670b7069e45860ee8c39989ba..61b9317d5239574953d14866da1717459f122f29 100644 (file)
@@ -6,6 +6,8 @@ The Nyquist is a 60% split ortholinear board by [Keebio](https://keeb.io). It ha
 
 ## Build Guide
 
+A build log of the Nyquist can be found here: [Nyquist Build Log](http://imgur.com/a/dD4sX).
+
 Since the design is very similar to the Let's Split v2, the build guide for that can be used while the build guide for the Nyquist is being fully developed. A build guide for putting together the Let's Split v2 can be found here: [An Overly Verbose Guide to Building a Let's Split Keyboard](https://github.com/nicinabox/lets-split-guide)
 
 There is additional information there about flashing and adding RGB underglow.
@@ -98,7 +100,7 @@ unnecessary in simple use cases.
 
 Flashing
 -------
-From the keymap directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
+From the `nyquist` directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
 Example: `make rev1-serial-avrdude`
 
 
index dfcff1d9026e2de91cbd1cadb1bea691c1052b3a..3f40ff2f827e14980f1e72f34ddad9ba43a94ea8 100644 (file)
@@ -73,15 +73,3 @@ USE_I2C = yes
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
 
 CUSTOM_MATRIX = yes
-
-avrdude: build
-       ls /dev/tty* > /tmp/1; \
-       echo "Reset your Pro Micro now"; \
-       while [[ -z $$USB ]]; do \
-         sleep 1; \
-         ls /dev/tty* > /tmp/2; \
-         USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
-       done; \
-       avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
-
-.PHONY: avrdude
index 39639c3b4bd885bdc38bc570f342b65e5d08877e..346cbc908949f8ec09f077b9249f9826fa75b620 100644 (file)
@@ -8,6 +8,7 @@
 #include "matrix.h"
 #include "keyboard.h"
 #include "config.h"
+#include "timer.h"
 
 #ifdef USE_I2C
 #  include "i2c.h"
@@ -42,6 +43,7 @@ static void keyboard_master_setup(void) {
 }
 
 static void keyboard_slave_setup(void) {
+  timer_init();
 #ifdef USE_I2C
     i2c_slave_init(SLAVE_I2C_ADDRESS);
 #else
index 57e940b0f43db3f6bbe0e550882565469202aa8e..e1fbf94baf300768fed0cf913d4ce8805137bb3b 100644 (file)
@@ -96,7 +96,7 @@ the two halves, i.e. if your split keyboard has 3 rows in each half, then
 
 Flashing
 -------
-From the keymap directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
+From the `orthodox` directory run `make SUBPROJECT-KEYMAP-avrdude` for automatic serial port resolution and flashing.
 Example: `make rev2-default-avrdude`
 
 
index dfcff1d9026e2de91cbd1cadb1bea691c1052b3a..3f40ff2f827e14980f1e72f34ddad9ba43a94ea8 100644 (file)
@@ -73,15 +73,3 @@ USE_I2C = yes
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
 
 CUSTOM_MATRIX = yes
-
-avrdude: build
-       ls /dev/tty* > /tmp/1; \
-       echo "Reset your Pro Micro now"; \
-       while [[ -z $$USB ]]; do \
-         sleep 1; \
-         ls /dev/tty* > /tmp/2; \
-         USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
-       done; \
-       avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
-
-.PHONY: avrdude
index 9da7d29b78ca1cdd987d55b6bdf2348e1cea7958..b7e6fac2193628480a32ee70154d02e29a675e61 100644 (file)
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * ,-----------------------------------------------------------.
    * | ~ | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|  DEL  |
    * |-----------------------------------------------------------|
-   * |     | Up|  |  |  |  |Cal|   |Ins|   |PrSc|Sclk|Paus|      |
+   * |     |   |Up|  |  |  |Cal|   |Ins|   |PrSc|Sclk|Paus|      |
    * |-----------------------------------------------------------|
    * |      |Left|Down|Rig|  |  |  |  |   |   |Home|PgUp|        |
    * |-----------------------------------------------------------|
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP,          KC_TRNS, \
   KC_TRNS, KC_TRNS, KC_APP,  KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU,  KC_MUTE, KC_END,  KC_PGDN,                   KC_TRNS, \
   KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-  
+
   /* Keymap _RL: Function Layer
    * ,-----------------------------------------------------------.
    * |   |   |   |   |   |   |   |   |   |   |   |   |   |  RESET|
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * |        | F1|F2 | F3|F4 | F5| F6| F7| F8|   |   |          |
    * |-----------------------------------------------------------|
    * |    |    |    |                        |    |    |    |    |
-   * `-----------------------------------------------------------'   
+   * `-----------------------------------------------------------'
    */
 [_RL] = KEYMAP_ANSI(
   #ifdef RGBLIGHT_ENABLE
diff --git a/keyboards/uk78/Makefile b/keyboards/uk78/Makefile
new file mode 100644 (file)
index 0000000..57b2ef6
--- /dev/null
@@ -0,0 +1,3 @@
+ifndef MAKEFILE_INCLUDED
+       include ../../Makefile
+endif
diff --git a/keyboards/uk78/config.h b/keyboards/uk78/config.h
new file mode 100644 (file)
index 0000000..859fbf9
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+Copyright 2012 Jun Wako <ukkeyboards@gmail.com>
+
+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/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0x554B /* Ascii */
+#define PRODUCT_ID      0x004E
+#define DEVICE_VER      0x0002
+#define MANUFACTURER    UK Keyboards
+#define PRODUCT         UK78
+#define DESCRIPTION     QMK keyboard firmware for UK78
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 19
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F3, F2, F1, F0, A0 }
+#define MATRIX_COL_PINS { A2, A1, F5, F4, E6, E7, E5, E4, B7, D0, D1, D2, D3, D4, D5, D6, D7, B5, E0 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+#define BACKLIGHT_PIN B6
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 3
+#endif
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCING_DELAY 5
+
+/* 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* prevent stuck modifiers */
+#define PREVENT_STUCK_MODIFIERS
+
+/* ws2812b options */
+#define RGB_DI_PIN F6
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 20
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
+
+#endif
\ No newline at end of file
diff --git a/keyboards/uk78/keymaps/default/keymap.c b/keyboards/uk78/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..b01beae
--- /dev/null
@@ -0,0 +1,119 @@
+#include "uk78.h"
+
+// Helpful defines
+#define _______ KC_TRNS
+
+// 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 _BL 0
+#define _FL1 1
+#define _FL2 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* _BL: Base Layer(Default) - For ISO enter use ANSI \
+    * ,-------------------------------------------------------------------------------.
+    * |Esc | 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =| /|BSpc| Del|  P/|  P*|  P-|
+    * |-------------------------------------------------------------------------------|
+    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  |  P7|  P8|  P9|  P=|
+    * |-------------------------------------------------------------------------------|
+    * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '| #| Ent|  P4|  P5|  P6|  P+|
+    * |-------------------------------------------------------------------------------|
+    * |Shift| \|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up|  P1|  P2|  P3|SLck|
+    * |-------------------------------------------------------------------------------|
+    * |Ctrl|Win |Alt |        Space        |Alt|Mo(1)|Ctrl|Lef|Dow| Rig|  P0|  P.|PEnt|
+    * `-------------------------------------------------------------------------------'
+    */
+    [_BL] = KEYMAP(
+        KC_ESC,  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_BSLS, KC_BSPC, KC_DEL,  KC_PSLS, KC_PAST, KC_PMNS,
+        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_P7,   KC_P8,   KC_P9,   KC_PEQL,
+        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_P4,   KC_P5,   KC_P6,   KC_PPLS,
+        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_RSFT, KC_UP,   KC_P1,   KC_P2,   KC_P3,   KC_SLCK,
+        KC_LCTL, KC_LGUI, KC_LALT,                         KC_SPC,                             KC_RALT, MO(_FL1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0,   KC_PDOT, KC_PENT),
+    /* _FL1: Function Layer 1 - For ISO enter use ANSI \
+    * ,-------------------------------------------------------------------------------.
+    * |  `|F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|PScr|Ins|NLck|    |    |    |
+    * |-------------------------------------------------------------------------------|
+    * |     |   |   |   |RST|   |   |   |   |   |   |   |   |     |    |    |    |    |
+    * |-------------------------------------------------------------------------------|
+    * |       |   |   |   |   |   |Hu+|Va+|Sa+|   |   |   |  |    |    |    |    |    |
+    * |-------------------------------------------------------------------------------|
+    * |     |   |   |   |   |RGB|Hu-|Va-|Sa-|Bl-|Bl+|   |Mute|Vol+|    |    |    |    |
+    * |-------------------------------------------------------------------------------|
+    * |    |    |    |      BL_Toggle       |   |   |   |    |Vol-|    |    |    |    |
+    * `-------------------------------------------------------------------------------'
+    */
+    [_FL1] = KEYMAP(
+        KC_GRV,  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_NLCK, KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, BL_DEC,  BL_INC,  KC_TRNS, KC_MUTE, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS,                            BL_TOGG,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+    /* _FL2: Function Layer 2 - For ISO enter use ANSI \
+    * ,-------------------------------------------------------------------------------.
+    * |   |  |   |   |   |   |   |   |   |   |   |   |   |    |   |    |    |    |    |
+    * |-------------------------------------------------------------------------------|
+    * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |    |    |    |    |
+    * |-------------------------------------------------------------------------------|
+    * |       |   |   |   |   |   |   |   |   |   |   |   |  |    |    |    |    |    |
+    * |-------------------------------------------------------------------------------|
+    * |     |   |   |   |   |   |   |   |   |   |   |   |    |    |    |    |    |    |
+    * |-------------------------------------------------------------------------------|
+    * |    |    |    |                      |   |   |   |    |    |    |    |    |    |
+    * `-------------------------------------------------------------------------------'
+    */
+    [_FL2] = KEYMAP(
+               KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+               KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+               KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+               KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
+               KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+
+};
+
+
+void matrix_init_user(void) {
+}
+
+void matrix_scan_user(void) {
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+       return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+       if (usb_led & (1 << USB_LED_NUM_LOCK)) {
+               
+       } else {
+               
+       }
+
+       if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+               DDRA |= (1 << 3); PORTA |= (1 << 3);
+       } else {
+               DDRA &= ~(1 << 3); PORTA &= ~(1 << 3);
+       }
+
+       if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
+               
+       } else {
+               
+       }
+
+       if (usb_led & (1 << USB_LED_COMPOSE)) {
+               
+       } else {
+               
+       }
+
+       if (usb_led & (1 << USB_LED_KANA)) {
+               
+       } else {
+               
+       }
+
+}
\ No newline at end of file
diff --git a/keyboards/uk78/readme.md b/keyboards/uk78/readme.md
new file mode 100644 (file)
index 0000000..46f2936
--- /dev/null
@@ -0,0 +1,16 @@
+# UK78
+
+![UK78](http://i.imgur.com/42pg6RS.png)
+
+A fully customizable 60%+numpad keyboard.
+
+* Keyboard Maintainer: [Rozakiin](https://github.com/rozakiin)
+* Hardware Supported: UK78 PCB
+  * rev2 
+* Hardware Availability: [ukkeyboards.](http://ukkeyboards.bigcartel.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+    make uk78-default
+
+See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
diff --git a/keyboards/uk78/rules.mk b/keyboards/uk78/rules.mk
new file mode 100644 (file)
index 0000000..4e8d148
--- /dev/null
@@ -0,0 +1,56 @@
+# MCU name
+MCU = at90usb1286
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+
+# Boot Section Size in *bytes*
+OPT_DEFS += -DBOOTLOADER_SIZE=8192
+
+
+# Build Options
+#   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)
+CONSOLE_ENABLE ?= no   # Console for debug(+400)
+COMMAND_ENABLE ?= no    # Commands for debug and configuration
+SLEEP_LED_ENABLE ?= no  # Breathing sleep LED during USB suspend
+NKRO_ENABLE ?= yes             # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE ?= yes  # Enable keyboard backlight functionality
+AUDIO_ENABLE ?= no
+RGBLIGHT_ENABLE ?= yes
\ No newline at end of file
diff --git a/keyboards/uk78/uk78.c b/keyboards/uk78/uk78.c
new file mode 100644 (file)
index 0000000..3611427
--- /dev/null
@@ -0,0 +1 @@
+#include "uk78.h"
diff --git a/keyboards/uk78/uk78.h b/keyboards/uk78/uk78.h
new file mode 100644 (file)
index 0000000..6cc5eee
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef UK78_H
+#define UK78_H
+
+#include "quantum.h"
+
+#define KEYMAP( \
+       K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018, \
+       K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112,       K114, K115, K116, K117, K118, \
+       K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212,       K214, K215, K216, K217, K218, \
+       K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, K317, K318, \
+       K400, K401, K402,                   K406,                   K410, K411, K412, K413, K414, K415, K416, K417, K418  \
+) { \
+       { K000,  K001,  K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  K013,  K014,  K015,  K016,  K017,  K018 }, \
+       { K100,  K101,  K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  KC_NO, K114,  K115,  K116,  K117,  K118 }, \
+       { K200,  K201,  K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  KC_NO, K214,  K215,  K216,  K217,  K218 }, \
+       { K300,  K301,  K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  K311,  K312,  K313,  K314,  K315,  K316,  K317,  K318 }, \
+       { K400,  K401,  K402,  KC_NO, KC_NO, KC_NO, K406,  KC_NO, KC_NO, KC_NO, K410,  K411,  K412,  K413,  K414,  K415,  K416,  K417,  K418 }  \
+}
+
+#endif
\ No newline at end of file
diff --git a/keyboards/xd60/keymaps/BASE/keymap.c b/keyboards/xd60/keymaps/BASE/keymap.c
new file mode 100644 (file)
index 0000000..b3ccd5e
--- /dev/null
@@ -0,0 +1,46 @@
+#include "xd60.h"
+#include "action_layer.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  // 0: Base Layer
+  KEYMAP(
+      KC_ESC,  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_NO,    \
+      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_CAPS, KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,    KC_SCLN, KC_QUOT,  KC_NO,             KC_ENT,    \
+      KC_LSFT, KC_NO,   KC_Z,    KC_X,    KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_NO,  KC_RSFT  ,KC_UP,    KC_DEL,      \
+      KC_LCTL, KC_LGUI, KC_LALT,                          KC_SPC,                          KC_RGUI, F(0),     KC_LEFT, KC_DOWN,  KC_RIGHT),
+
+  // 1: Function Layer
+  KEYMAP(
+      RESET,   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_NO,   KC_NO,    \
+      KC_NO,   KC_WH_U, KC_UP,   KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO,  KC_INS, KC_NO,   KC_PSCR, KC_SLCK,  KC_PAUS,           KC_DEL,    \
+      KC_NO,   KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO,  KC_NO,  KC_NO,   KC_HOME, KC_PGUP,  KC_NO,             KC_ENT,    \
+      KC_LSFT, KC_NO,   KC_NO,   KC_APP,  BL_STEP,KC_NO,  KC_NO,  KC_VOLD,KC_VOLU,KC_MUTE, KC_END,  KC_RSFT,  KC_NO  ,KC_PGUP,  KC_INS,      \
+      KC_LCTL, KC_LGUI, KC_LALT,                          KC_SPC,                          KC_RGUI, F(0),     KC_HOME, KC_PGDOWN,KC_END),
+
+};
+
+// Custom Actions
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(1),  // to Fn overlay
+};
+
+// Macros
+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;
+};
+
+// Loop
+void matrix_scan_user(void) {
+  // Empty
+};
diff --git a/keyboards/xd60/keymaps/BASE/readme.md b/keyboards/xd60/keymaps/BASE/readme.md
new file mode 100644 (file)
index 0000000..89f9aca
--- /dev/null
@@ -0,0 +1,5 @@
+![Uses this layout](https://i.redd.it/v64eqwsrk8jx.jpg)
+
+All of the keys which CAN have a function should be assigned one.
+
+The keys with KC_NO cannot be assigned a value
diff --git a/keyboards/xd60/keymaps/base/keymap.c b/keyboards/xd60/keymaps/base/keymap.c
new file mode 100644 (file)
index 0000000..b3ccd5e
--- /dev/null
@@ -0,0 +1,46 @@
+#include "xd60.h"
+#include "action_layer.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  // 0: Base Layer
+  KEYMAP(
+      KC_ESC,  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_NO,    \
+      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_CAPS, KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,    KC_SCLN, KC_QUOT,  KC_NO,             KC_ENT,    \
+      KC_LSFT, KC_NO,   KC_Z,    KC_X,    KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_NO,  KC_RSFT  ,KC_UP,    KC_DEL,      \
+      KC_LCTL, KC_LGUI, KC_LALT,                          KC_SPC,                          KC_RGUI, F(0),     KC_LEFT, KC_DOWN,  KC_RIGHT),
+
+  // 1: Function Layer
+  KEYMAP(
+      RESET,   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_NO,   KC_NO,    \
+      KC_NO,   KC_WH_U, KC_UP,   KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO,  KC_INS, KC_NO,   KC_PSCR, KC_SLCK,  KC_PAUS,           KC_DEL,    \
+      KC_NO,   KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO,  KC_NO,  KC_NO,   KC_HOME, KC_PGUP,  KC_NO,             KC_ENT,    \
+      KC_LSFT, KC_NO,   KC_NO,   KC_APP,  BL_STEP,KC_NO,  KC_NO,  KC_VOLD,KC_VOLU,KC_MUTE, KC_END,  KC_RSFT,  KC_NO  ,KC_PGUP,  KC_INS,      \
+      KC_LCTL, KC_LGUI, KC_LALT,                          KC_SPC,                          KC_RGUI, F(0),     KC_HOME, KC_PGDOWN,KC_END),
+
+};
+
+// Custom Actions
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(1),  // to Fn overlay
+};
+
+// Macros
+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;
+};
+
+// Loop
+void matrix_scan_user(void) {
+  // Empty
+};
diff --git a/keyboards/xd60/keymaps/base/readme.md b/keyboards/xd60/keymaps/base/readme.md
new file mode 100644 (file)
index 0000000..89f9aca
--- /dev/null
@@ -0,0 +1,5 @@
+![Uses this layout](https://i.redd.it/v64eqwsrk8jx.jpg)
+
+All of the keys which CAN have a function should be assigned one.
+
+The keys with KC_NO cannot be assigned a value
diff --git a/keyboards/xd75/keymaps/fabian/Makefile b/keyboards/xd75/keymaps/fabian/Makefile
new file mode 100644 (file)
index 0000000..6e8941f
--- /dev/null
@@ -0,0 +1,37 @@
+# Copyright 2013 Jun Wako <wakojun@gmail.com>
+#
+# 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/>.
+
+
+# QMK Build Options
+#   change to "no" to disable the options, or define them in the Makefile in 
+#   the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = yes       # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
+CONSOLE_ENABLE = no         # Console for debug(+400)
+COMMAND_ENABLE = yes        # Commands for debug and configuration
+NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+MIDI_ENABLE = no            # MIDI support (+2400 to 4200, depending on config)
+AUDIO_ENABLE = no           # Audio output on port C6
+UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/xd75/keymaps/fabian/config.h b/keyboards/xd75/keymaps/fabian/config.h
new file mode 100644 (file)
index 0000000..f52a97b
--- /dev/null
@@ -0,0 +1,24 @@
+/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+ *
+ * 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/>.
+ */
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/xd75/keymaps/fabian/keymap.c b/keyboards/xd75/keymaps/fabian/keymap.c
new file mode 100644 (file)
index 0000000..f6cc95b
--- /dev/null
@@ -0,0 +1,237 @@
+#include "xd75.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+// 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 _QWERTY 0
+#define _COLEMAK 1
+#define _DVORAK 2
+#define _LOWER 3
+#define _RAISE 4
+#define _ADJUST 16
+
+enum custom_keycodes {
+  QWERTY = SAFE_RANGE,
+  COLEMAK,
+  DVORAK,
+  LOWER,
+  RAISE,
+  ADJUST,
+};
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// Custom
+#define CTL_ESC CTL_T(KC_ESC)  // Tap for Escape, hold for Control
+#define SFT_ENT SFT_T(KC_ENT)  // Tap for Enter, hold for Shift
+#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
+#define HPR_TAB ALL_T(KC_TAB)  // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
+// #define MEH_GRV MEH_T(KC_GRV)  // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,--------------------------------------------------------------------------------------------------------.
+ * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab  |   Q  |   W  |   E  |   R  |   T  |      |      |      |   Y  |   U  |   I  |   O  |   P  | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |      |      |      |   H  |   J  |   K  |   L  |   ;  |  "   |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |      |      |      |   N  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |      |      |      | Bksp |Raise | GUI  |AltGr | Ctrl |Adjust|
+ * `--------------------------------------------------------------------------------------------------------'
+ */
+[_QWERTY] = {
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+  { HPR_TAB, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    _______, _______, _______, KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC },
+  { CTL_ESC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    _______, _______, _______, KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT },
+  { SFT_BSP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    _______, _______, _______, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT },
+  { ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  _______, _______, _______, SFT_BSP, RAISE,   KC_RGUI, KC_RALT, KC_RCTL, ADJUST  },
+},
+
+/* Colemak
+ * ,--------------------------------------------------------------------------------------------------------.
+ * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |      |      |      |   J  |   L  |   U  |   Y  |   ;  | Bksp |
+ * |------+------+------+------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |      |      |      |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |      |      |      |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |      |      |      | Bksp |Raise | GUI  |AltGr | Ctrl |Adjust|
+ * `--------------------------------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = {
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+  { HPR_TAB, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    _______, _______, _______, KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC },
+  { CTL_ESC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    _______, _______, _______, KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT },
+  { SFT_BSP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    _______, _______, _______, KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT },
+  { ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  _______, _______, _______, SFT_BSP, RAISE,   KC_RGUI, KC_RALT, KC_RCTL, ADJUST  },
+},
+
+/* Dvorak
+ * ,--------------------------------------------------------------------------------------------------------.
+ * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab  |   "  |   ,  |   .  |   P  |   Y  |      |      |      |   F  |   G  |   C  |   R  |   L  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------|
+ * | Esc  |   A  |   O  |   E  |   U  |   I  |      |      |      |   D  |   H  |   T  |   N  |   S  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
+ * | Shift|   ;  |   Q  |   J  |   K  |   X  |      |      |      |   B  |   M  |   W  |   V  |   Z  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Adjust| Ctrl | Alt  | GUI  |Lower |Space |      |      |      | Bksp |Raise | GUI  |AltGr | Ctrl |Adjust|
+ * `--------------------------------------------------------------------------------------------------------'
+ */
+[_DVORAK] = {
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },  
+  { HPR_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    _______, _______, _______, KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC },
+  { CTL_ESC, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    _______, _______, _______, KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH },
+  { SFT_BSP, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    _______, _______, _______, KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    SFT_ENT },
+  { ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  _______, _______, _______, SFT_BSP, RAISE,   KC_RGUI, KC_RALT, KC_RCTL, ADJUST  },
+},
+
+/* Lower
+ * ,--------------------------------------------------------------------------------------------------------.
+ * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |      |      |      |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |      |      |      |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |      |      |      |  F12 | MS L | MS D |MS U  | MS R |MS Btn|
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play |
+ * `--------------------------------------------------------------------------------------------------------'
+  */
+[_LOWER] = {
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+  { KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC },
+  { KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______, _______, _______, KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE },
+  { _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  _______, _______, _______, KC_F12,  KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1 },
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY },
+},
+
+/* Raise
+ * ,--------------------------------------------------------------------------------------------------------.
+ * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |   `  |   1  |   2  |   3  |   4  |   5  |      |      |      |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------|
+ * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |      |      |      |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
+ * |      |  F7  |  F8  |  F9  |  F10 |  F11 |      |      |      |  F12 | Left | Down |  Up  | Rght |MS_BN2|
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play |
+ * `--------------------------------------------------------------------------------------------------------'
+ */
+[_RAISE] = {
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+  { KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    _______, _______, _______, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC },
+  { KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______, _______, _______, KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS },
+  { _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  _______, _______, _______, KC_F12,  KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_BTN2 },
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY },
+},
+
+/* Adjust (Lower + Raise)
+ * ,--------------------------------------------------------------------------------------------------------.
+ * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |Reset |      |Aud on|Audoff|AGnorm|      |      |      |AGswap|Qwerty|Colemk|Dvorak|Reset | Del  |
+ * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
+ * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
+ * `--------------------------------------------------------------------------------------------------------'
+ */
+[_ADJUST] =  {
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+  { _______, RESET,   _______, AU_ON,   AU_OFF,  AG_NORM, _______, _______, _______, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  RESET,   KC_DEL  },
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
+},
+};
+
+#ifdef AUDIO_ENABLE
+float tone_qwerty[][2]     = SONG(QWERTY_SOUND);
+float tone_dvorak[][2]     = SONG(DVORAK_SOUND);
+float tone_colemak[][2]    = SONG(COLEMAK_SOUND);
+#endif
+
+void persistent_default_layer_set(uint16_t default_layer) {
+  eeconfig_update_default_layer(default_layer);
+  default_layer_set(default_layer);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case QWERTY:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
+        #endif
+        persistent_default_layer_set(1UL<<_QWERTY);
+      }
+      return false;
+      break;
+    case COLEMAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_colemak, false, 0);
+        #endif
+        persistent_default_layer_set(1UL<<_COLEMAK);
+      }
+      return false;
+      break;
+    case DVORAK:
+      if (record->event.pressed) {
+        #ifdef AUDIO_ENABLE
+          PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
+        #endif
+        persistent_default_layer_set(1UL<<_DVORAK);
+      }
+      return false;
+      break;
+    case LOWER:
+      if (record->event.pressed) {
+        layer_on(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_LOWER);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case RAISE:
+      if (record->event.pressed) {
+        layer_on(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      } else {
+        layer_off(_RAISE);
+        update_tri_layer(_LOWER, _RAISE, _ADJUST);
+      }
+      return false;
+      break;
+    case ADJUST:
+      if (record->event.pressed) {
+        layer_on(_ADJUST);
+      } else {
+        layer_off(_ADJUST);
+      }
+      return false;
+      break;
+  }
+  return true;
+}
index 6cdce72400ccdabdb78a33a8131d46e89a9a138d..781b9f615dd73c115b193fd0329733ffed8706a1 100644 (file)
--- a/readme.md
+++ b/readme.md
@@ -1,5 +1,6 @@
 # Quantum Mechanical Keyboard Firmware
 
+[![Current Version](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
 [![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/qmk/qmk_firmware)
 [![Gitter](https://img.shields.io/gitter/room/qmk/qmk_firmware.js.svg)](https://gitter.im/qmk/qmk_firmware)
 [![Docs Status](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
index 4af34ba57419604e9af8a786768122df31d80838..0d0eec3bf34e85d557ee2a90931ce8af2568ea80 100644 (file)
@@ -144,6 +144,20 @@ dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep
        fi
        $(DFU_PROGRAMMER) $(MCU) reset
 
+avrdude: $(BUILD_DIR)/$(TARGET).hex
+       ls /dev/tty* > /tmp/1; \
+       echo "Detecting Pro Micro port, reset your Pro Micro now.\c"; \
+       while [ -z $$USB ]; do \
+         sleep 1; \
+         echo ".\c"; \
+         ls /dev/tty* > /tmp/2; \
+         USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \
+       done; \
+       echo ""; \
+       echo "Detected Pro Micro port at $$USB"; \
+       sleep 1; \
+       avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex
+
 # Convert hex to bin.
 flashbin: $(BUILD_DIR)/$(TARGET).hex
        $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin