Merge branch 'master' of http://github.com/jackhumbert/qmk_firmware
@ -0,0 +1,28 @@
|
||||
FROM debian:jessie
|
||||
MAINTAINER Erik Dasque <erik@frenchguys.com>
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get install --no-install-recommends -y build-essential \
|
||||
gcc \
|
||||
unzip \
|
||||
wget \
|
||||
zip \
|
||||
gcc-avr \
|
||||
binutils-avr \
|
||||
avr-libc \
|
||||
dfu-programmer \
|
||||
dfu-util \
|
||||
gcc-arm-none-eabi \
|
||||
binutils-arm-none-eabi \
|
||||
libnewlib-arm-none-eabi \
|
||||
git
|
||||
|
||||
RUN apt-get clean
|
||||
RUN rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENV keyboard=ergodox
|
||||
ENV keymap=default
|
||||
|
||||
VOLUME /qmk
|
||||
WORKDIR /qmk
|
||||
CMD make clean ; make keyboard=${keyboard} keymap=${keymap}
|
@ -0,0 +1,96 @@
|
||||
# How keys are registered, and interpreted by computers
|
||||
|
||||
In this file, you can will learn the concepts of how keyboards work over USB,
|
||||
and you'll be able to better understand what you can expect from changing your
|
||||
firmware directly.
|
||||
|
||||
## Schematic view
|
||||
|
||||
Whenever you type on 1 particular key, here is the chain of actions taking
|
||||
place:
|
||||
|
||||
``` text
|
||||
+------+ +-----+ +----------+ +----------+ +----+
|
||||
| User |-------->| Key |------>| Firmware |----->| USB wire |---->| OS |
|
||||
+------+ +-----+ +----------+ +----------+ |----+
|
||||
```
|
||||
|
||||
This scheme is a very simple view of what's going on, and more details follow
|
||||
in the next sections.
|
||||
|
||||
## 1. You Press a Key
|
||||
|
||||
Whenever you press a key, the firmware of your keyboard can register this event.
|
||||
It can register when the key is pressed, held and released.
|
||||
|
||||
This usually happens with a [periodic scan of key presses with a frequency around 100 hz](https://github.com/benblazak/ergodox-firmware/blob/master/references.md#typical-keyboard-information).
|
||||
This speed often is limited by the mechanical key response time, the protocol
|
||||
to transfer those key presses (here USB HID), and by the software it is used in.
|
||||
|
||||
## 2. What the Firmware Sends
|
||||
|
||||
The [HID specification](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf)
|
||||
tells what a keyboard can actually send through USB to have a chance to be
|
||||
properly recognised. This includes a pre-defined list of keycodes which are
|
||||
simple numbers from `0x00` to `0xE7`. The firmware assigns a keycode to each
|
||||
key of the keyboard.
|
||||
|
||||
The firmware does not send actually letters or characters, but only keycodes.
|
||||
Thus, by modifying the firmware, you only can modify what keycode is sent over
|
||||
USB for a given key.
|
||||
|
||||
## 3. What the Operating System Does
|
||||
|
||||
Once the keycode reaches the operating system, a piece of software has to have
|
||||
it match an actual character thanks to a keyboard layout. For example, if your
|
||||
layout is set to QWERTY, a sample of the matching table is as follow:
|
||||
|
||||
``` text
|
||||
| keycode | character |
|
||||
|---------+-----------|
|
||||
| 0x04 | a/A |
|
||||
| 0x05 | b/B |
|
||||
| 0x06 | c/C |
|
||||
| ... | ... |
|
||||
| 0x1C | y/Y |
|
||||
| 0x1D | z/Z |
|
||||
| ... | ... |
|
||||
|---------+-----------|
|
||||
```
|
||||
|
||||
## Back to the firmware
|
||||
|
||||
As the layout is generally fixed (unless you create your own), the firmware can
|
||||
actually call a keycode by its layout name directly to ease things for you.
|
||||
|
||||
This is exactly what is done here with `KC_A` actually representing `0x04` in
|
||||
QWERTY. The full list can be found in `keycode.txt`.
|
||||
|
||||
## List of Characters You Can Send
|
||||
|
||||
Putting aside shortcuts, having a limited set of keycodes mapped to a limited
|
||||
layout means that **the list of characters you can assign to a given key only
|
||||
is the ones present in the layout**.
|
||||
|
||||
For example, this means that if you have a QWERTY US layout, and you want to
|
||||
assign 1 key to produce `€` (euro currency symbol), you are unable to do so,
|
||||
because the QWERTY US layout does not have such mapping. You could fix that by
|
||||
using a QWERTY UK layout, or a QWERTY US International.
|
||||
|
||||
You may wonder why a keyboard layout containing all of Unicode is not devised
|
||||
then? The limited number of keycode available through USB simply disallow such
|
||||
a thing.
|
||||
|
||||
## How to (Maybe) Enter Unicode Characters
|
||||
|
||||
You can have the firmware send *sequences of keys* to use the [software Unicode
|
||||
Input
|
||||
Method](https://en.wikipedia.org/wiki/Unicode_input#Hexadecimal_code_input) of
|
||||
the target operating system, thus effectively entering characters independently
|
||||
of the layout defined in the OS.
|
||||
|
||||
Yet, it does come with multiple disadvantages:
|
||||
|
||||
- Tied to a specific OS a a time (need recompilation when changing OS);
|
||||
- Within a given OS, does not work in all software;
|
||||
- Limited to a subset of Unicode on some systems.
|
@ -0,0 +1,4 @@
|
||||
Alps64 keyboard firmware
|
||||
======================
|
||||
|
||||
TODO: to be updated.
|
@ -0,0 +1,4 @@
|
||||
Clueboard keyboard firmware
|
||||
======================
|
||||
|
||||
TODO: to be updated.
|
@ -0,0 +1,4 @@
|
||||
Cluepad number pad firmware
|
||||
======================
|
||||
|
||||
TODO: to be updated.
|
@ -0,0 +1,34 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# On command line:
|
||||
#
|
||||
# make = Make software.
|
||||
#
|
||||
# make clean = Clean out built project files.
|
||||
#
|
||||
# That's pretty much all you need. To compile, always go make clean,
|
||||
# followed by make.
|
||||
#
|
||||
# For advanced users only:
|
||||
# make teensy = Download the hex file to the device, using teensy_loader_cli.
|
||||
# (must have teensy_loader_cli installed).
|
||||
#
|
||||
#----------------------------------------------------------------------------
|
||||
SUBPROJECT_DEFAULT = ez
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
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
|
||||
CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ
|
||||
SLEEP_LED_ENABLE ?= yes # 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
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
UNICODE_ENABLE ?= yes # Unicode
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../Makefile
|
||||
endif
|
@ -0,0 +1,36 @@
|
||||
#ifndef KEYBOARDS_ERGODOX_CONFIG_H_
|
||||
#define KEYBOARDS_ERGODOX_CONFIG_H_
|
||||
|
||||
#define MOUSEKEY_DELAY 100
|
||||
#define MOUSEKEY_INTERVAL 20
|
||||
#define MOUSEKEY_MAX_SPEED 3
|
||||
#define MOUSEKEY_TIME_TO_MAX 10
|
||||
|
||||
#define TAPPING_TOGGLE 1
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
#define TAPPING_TERM 200
|
||||
#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
|
||||
|
||||
/* 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_LCTL) | MOD_BIT(KC_RCTL)) || \
|
||||
keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
|
||||
)
|
||||
|
||||
#ifdef SUBPROJECT_ez
|
||||
#include "ez/config.h"
|
||||
#endif
|
||||
#ifdef SUBPROJECT_infinity
|
||||
#include "infinity/config.h"
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
|
@ -0,0 +1,10 @@
|
||||
#ifndef KEYBOARDS_ERGODOX_ERGODOX_H_
|
||||
#define KEYBOARDS_ERGODOX_ERGODOX_H_
|
||||
#ifdef SUBPROJECT_ez
|
||||
#include "ez.h"
|
||||
#endif
|
||||
#ifdef SUBPROJECT_infinity
|
||||
#include "infinity.h"
|
||||
#endif
|
||||
|
||||
#endif /* KEYBOARDS_ERGODOX_ERGODOX_H_ */
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ez.h"
|
||||
#include "i2cmaster.h"
|
||||
|
||||
bool i2c_initialized = 0;
|
@ -0,0 +1,110 @@
|
||||
#ifndef KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_
|
||||
#define KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
void ergodox_board_led_on(void);
|
||||
void ergodox_right_led_1_on(void);
|
||||
void ergodox_right_led_2_on(void);
|
||||
void ergodox_right_led_3_on(void);
|
||||
void ergodox_right_led_on(uint8_t led);
|
||||
|
||||
void ergodox_board_led_off(void);
|
||||
void ergodox_right_led_1_off(void);
|
||||
void ergodox_right_led_2_off(void);
|
||||
void ergodox_right_led_3_off(void);
|
||||
void ergodox_right_led_off(uint8_t led);
|
||||
|
||||
inline void ergodox_led_all_on(void)
|
||||
{
|
||||
ergodox_board_led_on();
|
||||
ergodox_right_led_1_on();
|
||||
ergodox_right_led_2_on();
|
||||
ergodox_right_led_3_on();
|
||||
}
|
||||
|
||||
inline void ergodox_led_all_off(void)
|
||||
{
|
||||
ergodox_board_led_off();
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
}
|
||||
|
||||
inline void ergodox_right_led_1_set(uint8_t n){
|
||||
if (n) {
|
||||
ergodox_right_led_1_on();
|
||||
} else {
|
||||
ergodox_right_led_1_off();
|
||||
}
|
||||
}
|
||||
|
||||
inline void ergodox_right_led_2_set(uint8_t n){
|
||||
if (n) {
|
||||
ergodox_right_led_2_on();
|
||||
} else {
|
||||
ergodox_right_led_2_off();
|
||||
}
|
||||
}
|
||||
|
||||
inline void ergodox_right_led_3_set(uint8_t n){
|
||||
if (n) {
|
||||
ergodox_right_led_3_on();
|
||||
} else {
|
||||
ergodox_right_led_3_off();
|
||||
}
|
||||
}
|
||||
|
||||
inline void ergodox_right_led_set(uint8_t led, uint8_t n){
|
||||
if (n) {
|
||||
ergodox_right_led_on(led);
|
||||
} else {
|
||||
ergodox_right_led_off(led);
|
||||
}
|
||||
}
|
||||
|
||||
inline void ergodox_led_all_set(uint8_t n) {
|
||||
ergodox_right_led_1_set(n);
|
||||
ergodox_right_led_2_set(n);
|
||||
ergodox_right_led_3_set(n);
|
||||
}
|
||||
|
||||
#define KEYMAP( \
|
||||
A80, A70, A60, A50, A40, A30, A20, \
|
||||
A81, A71, A61, A51, A41, A31, A21, \
|
||||
A82, A72, A62, A52, A42, A32, \
|
||||
A83, A73, A63, A53, A43, A33, A23, \
|
||||
A84, A74, A64, A54, A44, \
|
||||
A13, A03, \
|
||||
A04, \
|
||||
A34, A24, A14, \
|
||||
B20, B30, B40, B50, B60, B70, B80, \
|
||||
B21, B31, B41, B51, B61, B71, B81, \
|
||||
B32, B42, B52, B62, B72, B82, \
|
||||
B23, B33, B43, B53, B63, B73, B83, \
|
||||
B44, B54, B64, B74, B84, \
|
||||
B03, B13, \
|
||||
B04, \
|
||||
B14, B24, B34 \
|
||||
) { \
|
||||
{ KC_NO, KC_NO, KC_NO, A03, A04 }, \
|
||||
{ KC_NO, KC_NO, KC_NO, A13, A14 }, \
|
||||
{ A20, A21, KC_NO, A23, A24 }, \
|
||||
{ A30, A31, A32, A33, A34 }, \
|
||||
{ A40, A41, A42, A43, A44 }, \
|
||||
{ A50, A51, A52, A53, A54 }, \
|
||||
{ A60, A61, A62, A63, A64 }, \
|
||||
{ A70, A71, A72, A73, A74 }, \
|
||||
{ A80, A81, A82, A83, A84 }, \
|
||||
{ KC_NO, KC_NO, KC_NO, B03, B04 }, \
|
||||
{ KC_NO, KC_NO, KC_NO, B13, B14 }, \
|
||||
{ B20, B21, KC_NO, B23, B24 }, \
|
||||
{ B30, B31, B32, B33, B34 }, \
|
||||
{ B40, B41, B42, B43, B44 }, \
|
||||
{ B50, B51, B52, B53, B54 }, \
|
||||
{ B60, B61, B62, B63, B64 }, \
|
||||
{ B70, B71, B72, B73, B74 }, \
|
||||
{ B80, B81, B82, B83, B84 } \
|
||||
}
|
||||
|
||||
#endif /* KEYBOARDS_ERGODOX_INFINITY_INFINITY_H_ */
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap_german.h"
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 814 KiB After Width: | Height: | Size: 814 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 135 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
@ -0,0 +1,198 @@
|
||||
<!-- -*- mode: markdown; fill-column: 8192 -*- -->
|
||||
|
||||
algernon's layout
|
||||
=======================
|
||||
|
||||
This is an unconventional layout for the ErgoDox EZ. For more details about the history of the layout, see my [blog posts about my ErgoDox journey][blog-ergodox].
|
||||
|
||||
[blog-ergodox]: https://asylum.madhouse-project.org/blog/tags/ergodox/
|
||||
|
||||
Some of the things in the layout only work when one uses Spacemacs and GNOME under Linux. Your mileage may vary.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
* [Layouts](#layouts)
|
||||
- [Base layer](#base-layer)
|
||||
- [ADORE layer](#adore-layer)
|
||||
- [Hungarian layer](#hungarian-layer)
|
||||
- [Navigation and media layer](#navigation-and-media-layer)
|
||||
- [One-handed layer](#one-handed-layer)
|
||||
- [Steno layer](#steno-layer)
|
||||
- [LED states](#led-states)
|
||||
* [Tools](#tools)
|
||||
- [Heatmap](#heatmap)
|
||||
* [Building](#building)
|
||||
- [Using on Windows](#using-on-windows)
|
||||
* [Changelog](#changelog)
|
||||
* [License](#license)
|
||||
|
||||
# Layouts
|
||||
|
||||
## Base layer
|
||||
|
||||
[![Base layer](images/base-layer.png)](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b)
|
||||
|
||||
At its core, this is a Dvorak layout, with some minor changes. The more interesting parts are how certain keys behave:
|
||||
|
||||
* The keys on the number row double as function keys, when held for a bit longer than an usual tap. This allows me to use the function keys without having to switch layers.
|
||||
* The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they are considered active for the next key press only. When double tapped, they toggle on, until a third, single tap sometime later. When held, they act as expected. My usual pattern is that I use these for the next keypress only, so this behaviour is perfect. If I need them held, I'll just double-tap.
|
||||
* The `GUI` key is special, because when I double-tap it, it sends `GUI + w`, which pops up an application selector. It also switches to a one-shot layer, where the number row on the left half turns into app selector macros, for the most common things I usually want to switch to. Otherwise it behaves as on a normal layout.
|
||||
* The `ESC` key also doubles as a one-shot cancel key: if tapped while any of the one-shot modifiers are in-flight (as in, single-tapped, and not expired yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if active. Otherwise it sends the usual keycode.
|
||||
* The **Media** and **Hun** layer keys are one-shot, the **1Hand** and **STENO** keys are toggles.
|
||||
* When holding any of the **Arrow** layer keys, the arrow layer activates while the layer key is held. Tapping the key produces the normal key.
|
||||
* Tapping the `:` key once yields `:`, tapping it twice yields `;`.
|
||||
* The **Lead** key allows me to type in a sequence of keys, and trigger some actions:
|
||||
- `LEAD u` enters unicode input mode, by sending the GTK+ key sequence that does this.
|
||||
- `LEAD l` uses the unicode input method to enter a `λ`.
|
||||
- `LEAD s` does a lot of magic to type in a shruggie: `¯\_(ツ)_/¯`
|
||||
- `LEAD y` types `\o/`.
|
||||
- `LEAD w m` maximises the currently focused window.
|
||||
- `LEAD a` makes the [ADORE layer](#adore-layer) the default.
|
||||
- `LEAD v` prints the firmware version, the keyboard and the keymap.
|
||||
- `LEAD d` toggles logging keypress positions to the HID console.
|
||||
- `LEAD t` toggles time travel. Figuring out the current `date` is left as an exercise to the reader.
|
||||
|
||||
## ADORE layer
|
||||
|
||||
[![ADORE layer](images/adore-layer.png)](http://www.keyboard-layout-editor.com/#/gists/45681a17453d235925b6028dd83bf12a)
|
||||
|
||||
While using the standard Dvorak layout, I encountered a number of inconveniences, and on this layer, I am playing with ideas to make the layout feel better. Initially, it was based on [Capewell-Dvorak][cpd], but that too, had shortcomings I was not happy with. So now this is something inbetween, with own observations thrown in. How it works out in the long run remains to be seen.
|
||||
|
||||
[cpd]: http://www.michaelcapewell.com/projects/keyboard/layout_capewell-dvorak.htm
|
||||
|
||||
Based on a week and a half of typing, the keys were rearranged, and the home row neatly spelled out **ADORE**, that gave the layout its name.
|
||||
|
||||
## Hungarian layer
|
||||
|
||||
[![Hungarian layer](images/hun-layer.png)](http://www.keyboard-layout-editor.com/#/gists/b160f6ec90d58c127c114c89f66e9dc9)
|
||||
|
||||
On this layer, the accented characters are at the same position as their base variant. For some, which can have other diatribes, the long one is on top, short's on bottom. Tapping any of the accented characters takes us back to the base layer.
|
||||
|
||||
## Navigation and media layer
|
||||
|
||||
[![Navigation and media layer](images/nav-n-media-layer.png)](http://www.keyboard-layout-editor.com/#/gists/c59c453f9fe1a3238ba1494e7e5c6892)
|
||||
|
||||
This layer is primarily for navigating with the cursor or the mouse, and some media things.
|
||||
|
||||
## One-handed layer
|
||||
|
||||
[![One-handed layer](images/one-handed-layer.png)](http://www.keyboard-layout-editor.com/#/gists/edff2495135955b8963198dace7f7ece)
|
||||
|
||||
The one-handed layer is used in situations where the right hand is occupied, by mousing around, for example. Tapping the `OTHER` key switches which side is active. For the most part, keys remain in their usual position. When the right half is active, keys are mirrored to the left half.
|
||||
|
||||
The differences are as follows:
|
||||
|
||||
* The `ESC` key has been moved to the bottom row, so the `OTHER` key is easier to tap.
|
||||
* Most keys on the thumb cluster now have dual uses, and these do not change when switching sides:
|
||||
- The `Space`/`Backspace` key sends `Space` on tap, `Backspace` when held for longer than a normal tap.
|
||||
- The `Enter`/`Shift` key sends `Enter` on short-tap, `Shift` on long-tap.
|
||||
* The `Apps`/`BASE` key can be used to go back to the base layer, by long-tapping it. A short-tap will send the `App` key, as usual.
|
||||
|
||||
## Steno layer
|
||||
|
||||
[![Steno layer for Plover](images/steno-layer.png)](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667)
|
||||
|
||||
This is to be used with [Plover](http://www.openstenoproject.org/plover/), nothing really fancy here. The **STENO** key toggles the layer on and off, and sends the toggle command to Plover too.
|
||||
|
||||
## LED states
|
||||
|
||||
The primary purpose of the LEDs is to show the modifier status, a secondary, to show which layer is active. Each modifier, `Shift`, `Alt` and `Control` each have their designated LEDs: the *red*, *green* and *blue*, respectively. When a modifier is in a one-shot state, the respective LED will turn on with a dimmer light. If the modifier is toggled on, the brightness of the LED turns full.
|
||||
|
||||
For the layers, the following rules apply:
|
||||
|
||||
* When the [ADORE layer](#adore-layer) is toggled on, LEDs will light up from left to right in a sequence, then turn off. When the layer is toggled off, the LEDs light up and turn off in the other direction. No LEDs are on while the layer is active.
|
||||
* When the [Hungarian layer](#hungarian-layer) is active, the *green* and *blue* LEDs are on.
|
||||
* When the [Navigation and media layer](#navigation-and-media-layer) is active, the *red* and *green* ones are on.
|
||||
* When the [One-handed layer](#one-handed-layer) is active, the *green* LED is on and bright, and either the *red* or the *blue* one is going to slowly blink, depending on the currently active side.
|
||||
* For the [Steno layer](#steno-layer), all LEDs will be turned on.
|
||||
|
||||
Unless noted otherwise, the layers use a dim light for the LEDs, while modifiers use a stronger one, and modifiers override any layer preferences. For example, when on the one-handed layer, with the left side active (*red* light blinking), if `Shift` is on, the *red* light will be constantly on.
|
||||
|
||||
# Tools
|
||||
|
||||
## Heatmap
|
||||
|
||||
When the keypress logging functionality is enabled (by `LEAD d`), the keyboard will output a line every time a key is pressed, containing the position of the key in the matrix. This allows one to collect this information, and build analytics over it, such as a heat map, including dead keys too.
|
||||
|
||||
Included with the firmware is a small tool that can parse these logs, and create a heatmap that one can import into [KLE][kle]. To use it, simply point `tools/log-to-heatmap.py` to a base layout file (one is included in the `tools/` directory), and the key position log. The latter one can create by running `hid-listen`, and redirecting its output to a file.
|
||||
|
||||
[kle]: http://www.keyboard-layout-editor.com/
|
||||
|
||||
The generated heatmap looks somewhat like this:
|
||||
|
||||
![Heatmap](images/heatmap.png)
|
||||
|
||||
# Building
|
||||
|
||||
To make my workflow easier, this layout is maintained in [its own repository][algernon:ez-layout]. To build it, you will need the [QMK][qmk] firmware checked out, and this repo either checked out to something like `keyboards/ergodox_ez/algernon-master`. One way to achieve that is this:
|
||||
|
||||
[algernon:ez-layout]: https://github.com/algernon/ergodox-layout
|
||||
[qmk]: https://github.com/jackhumbert/qmk_firmware
|
||||
|
||||
```
|
||||
$ git clone https://github.com/jackhumbert/qmk_firmware.git
|
||||
$ cd qmk_firmware
|
||||
$ git clone https://github.com/algernon/ergodox-layout.git \
|
||||
keyboards/ergodox_ez/keymaps/algernon-master
|
||||
$ make KEYBOARD=ergodox_ez KEYMAP=algernon-master
|
||||
```
|
||||
|
||||
From time to time, updates may be submitted back to the QMK repository. If you are reading it there, you can build the firmware like any other firmware included with it (assuming you are in the root directory of the firmware):
|
||||
|
||||
```
|
||||
$ make KEYBOARD=ergodox_ez KEYMAP=algernon
|
||||
```
|
||||
|
||||
## Using on Windows
|
||||
|
||||
The keymap default to forcing NKRO, which seems to upset Windows, and except the modifiers, none of them work. If you experience this problem, recompile the firmware with `FORCE_NKRO=no` added to the `make` command line.
|
||||
|
||||
# Changelog
|
||||
|
||||
## v1.4 - 2016-07-29
|
||||
|
||||
* When toggling the key logging on or off, the LEDs will do a little dance.
|
||||
* The keylogger is now optional, but enabled by default. Use `KEYLOGGER_ENABLE=no` on the `make` command line to disable it.
|
||||
* The `TAB`/`ARRW` key was turned into a tap-dance key, allowing one to toggle the **ARROW** layer on by double-tapping, and as such, avoid the need to hold the key.
|
||||
* The `-`/`_` key was turned into a tap-dance key too.
|
||||
* There is now a way to travel time with the keyboard, toggle the feature on by hitting `LEAD t`.
|
||||
|
||||
## v1.3 - 2016-07-06
|
||||
|
||||
* Added support for logging keys, by pressing `LEAD d`. Also included is a tool to generate a [heatmap](#heatmap) out of the logs.
|
||||
* The arrow and navigation keys were rearranged again, and now require an additional key being held to activate. See the [base layer](#base-layer) for an image that shows where arrows are.
|
||||
* The **experimental** layer has been redone, and is now called [ADORE](#adore-layer), and as such, can be enabled by `LEAD a` now.
|
||||
* Switching between Dvorak and ADORE is now persisted into EEPROM, and survives a reboot.
|
||||
|
||||
## v1.2 - 2016-06-22
|
||||
|
||||
* The forced NKRO mode can be easily toggled off at compile-time, to make the firmware compatible with [certain operating systems](#using-on-windows).
|
||||
* The `:;` key has changed behaviour: to access the `;` symbol, the key needs to be double-tapped, instead of shifted.
|
||||
* The `=` and `\` keys were swapped, `=` moved to the home row, on both the [base](#base-layer) and the **experimental** layers.
|
||||
* The arrow and navigation keys were redone, they are now more accessible, but the navigation keys require an extra tap to access.
|
||||
* The **Emacs** layer is gone, replaced by a simplified [navigation and media](#navigation-and-media-layer) layer.
|
||||
* `LEAD v` types the firmware version, and the keymap version.
|
||||
* On the **experimental** layer, the `L` and `Q`, and the `K` and `G` keys were swapped.
|
||||
* The [Steno](#steno-layer) layer gained a few more `#` and `*` keys, to make it easier on my fingers.
|
||||
|
||||
## v1.1 - 2016-06-14
|
||||
|
||||
* The keyboard starts in NKRO mode, bootmagic and other things are disabled.
|
||||
* A [Steno](#steno-layer) layer was added, to be used with Plover.
|
||||
* An **experimental** layer was added, something halfway between Dvorak and Capewell-Dvorak. A work in progress.
|
||||
* `LEAD y` types `\o/`.
|
||||
* Some keys on the [Base](#base-layer) layer have been moved around:
|
||||
- `?` moved to the left pinky, left of `Q`.
|
||||
- `=` shifted one row down, but `F11` stayed where it was.
|
||||
- `-` on the left half was replaced by `Tab`.
|
||||
- `Tab`'s original position is taken by a `Media Next`/`Media Prev` key.
|
||||
- `:` now inputs `;` when shifted.
|
||||
* `ESC` cancels the [Hungarian](#hungarian-layer) layer too, not just modifiers.
|
||||
|
||||
## v1.0 - 2016-05-26
|
||||
|
||||
Initial version.
|
||||
|
||||
# License
|
||||
|
||||
The layout, being a derivative of the original TMK firmware which is under the GPL-2+, this layout is under the GPL as well, but GPL-3+, rather than the older version.
|
@ -0,0 +1,533 @@
|
||||
[
|
||||
{
|
||||
"backcolor": "#ffffff",
|
||||
"name": "ErgoDox - algernon's layout: Heatmap",
|
||||
"author": "Gergely Nagy <kbd@gergo.csillger.hu>",
|
||||
"notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.",
|
||||
"switchMount": "cherry",
|
||||
"switchBrand": "gateron",
|
||||
"switchType": "KS-3-Tea",
|
||||
"pcb": true,
|
||||
"css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }"
|
||||
},
|
||||
[
|
||||
{
|
||||
"x": 3.5,
|
||||
"c": "#a7d0db",
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
2
|
||||
]
|
||||
},
|
||||
"#\n3\nF3",
|
||||
{
|
||||
"x": 10.5,
|
||||
"c": "#a7d0db",
|
||||
"t": "#000000",
|
||||
"a": 4,
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
2
|
||||
]
|
||||
},
|
||||
"*\n8\nF8"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"@\n2\nF2",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"$\n4\nF4",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"&\n7\nF7",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"(\n9\nF9"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"%\n5\nF5",
|
||||
{
|
||||
"c": "#f9cd31",
|
||||
"a": 7,
|
||||
"f": 2
|
||||
},
|
||||
"STENO",
|
||||
{
|
||||
"x": 4.5,
|
||||
"f": 6
|
||||
},
|
||||
"<i class='mss mss-Unicode-Option-3'></i>",
|
||||
{
|
||||
"c": "#7adabd",
|
||||
"a": 4,
|
||||
"f": 3,
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
2
|
||||
]
|
||||
},
|
||||
"^\n6\nF6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#ffb2d2",
|
||||
"f": 3,
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\n~\n`",
|
||||
{
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"!\n1\nF1",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
")\n0\nF10",
|
||||
{
|
||||
"a": 7,
|
||||
"w": 1.5
|
||||
},
|
||||
"F11"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#a7d0db",
|
||||
"t": "#000000",
|
||||
"a": 6
|
||||
},
|
||||
"L",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"C"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b",
|
||||
"a": 4
|
||||
},
|
||||
">\n.",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000",
|
||||
"a": 6
|
||||
},
|
||||
"W",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"H",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"P"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"M",
|
||||
{
|
||||
"c": "#93c9b7",
|
||||
"a": 4,
|
||||
"h": 1.5
|
||||
},
|
||||
"{\n[",
|
||||
{
|
||||
"x": 4.5,
|
||||
"h": 1.5
|
||||
},
|
||||
"}\n]",
|
||||
{
|
||||
"c": "#7adabd",
|
||||
"a": 6
|
||||
},
|
||||
"F"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#ffb07b",
|
||||
"t": "#0d0d0b",
|
||||
"f": 6,
|
||||
"w": 1.5
|
||||
},
|
||||
"<i class='fa fa-fast-backward'></i>\n\n<i class='fa fa-fast-forward'></i>",
|
||||
{
|
||||
"c": "#ffb2d2",
|
||||
"a": 4,
|
||||
"f": 3
|
||||
},
|
||||
"<\n,",
|
||||
{
|
||||
"x": 14.5,
|
||||
"a": 6
|
||||
},
|
||||
"Y",
|
||||
{
|
||||
"a": 4,
|
||||
"w": 1.5
|
||||
},
|
||||
"|\n\\"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#a7d0db",
|
||||
"t": "#000000",
|
||||
"a": 6
|
||||
},
|
||||
"E",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"T"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"O",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000",
|
||||
"n": true
|
||||
},
|
||||
"I",
|
||||
{
|
||||
"x": 8.5,
|
||||
"n": true
|
||||
},
|
||||
"R",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"N"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"U",
|
||||
{
|
||||
"x": 6.5
|
||||
},
|
||||
"D"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#ffb2d2",
|
||||
"t": "#0d0d0b",
|
||||
"fa": [
|
||||
6
|
||||
],
|
||||
"w": 1.5
|
||||
},
|
||||
"<i class='fa fa-arrows'></i>\n\nTab",
|
||||
{
|
||||
"f": 3
|
||||
},
|
||||
"A",
|
||||
{
|
||||
"x": 14.5,
|
||||
"f": 3
|
||||
},
|
||||
"S",
|
||||
{
|
||||
"a": 4,
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
6
|
||||
],
|
||||
"w": 1.5
|
||||
},
|
||||
"+\n="
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.625,
|
||||
"x": 6.5,
|
||||
"c": "#93c9b7",
|
||||
"t": "#000000",
|
||||
"a": 7,
|
||||
"h": 1.5
|
||||
},
|
||||
"(",
|
||||
{
|
||||
"x": 4.5,
|
||||
"h": 1.5
|
||||
},
|
||||
")"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.75,
|
||||
"x": 3.5,
|
||||
"c": "#a7d0db",
|
||||
"a": 4,
|
||||
"f": 3
|
||||
},
|
||||
"\"\n'",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"V"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"Z",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"K",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"G",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"J"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"X",
|
||||
{
|
||||
"x": 6.5
|
||||
},
|
||||
"B"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#ffb07b",
|
||||
"f": 9,
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\n<i class='kb kb-Multimedia-Play-Pause'></i>",
|
||||
{
|
||||
"c": "#ffb2d2",
|
||||
"t": "#0d0d0b",
|
||||
"a": 4,
|
||||
"f": 3
|
||||
},
|
||||
"?\n/",
|
||||
{
|
||||
"x": 14.5,
|
||||
"a": 6
|
||||
},
|
||||
"Q",
|
||||
{
|
||||
"c": "#ffb07b",
|
||||
"t": "#000000",
|
||||
"f": 9,
|
||||
"w": 1.5
|
||||
},
|
||||
"<i class='kb kb-Multimedia-Stop'></i>"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#d9dae0",
|
||||
"g": true,
|
||||
"a": 7,
|
||||
"f": 3
|
||||
},
|
||||
"",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
""
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#d4872a",
|
||||
"g": false,
|
||||
"a": 5
|
||||
},
|
||||
";\n:",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"_\n-",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#d9dae0",
|
||||
"g": true,
|
||||
"a": 7
|
||||
},
|
||||
""
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.75,
|
||||
"x": 0.5
|
||||
},
|
||||
"",
|
||||
{},
|
||||
"",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
"",
|
||||
{},
|
||||
""
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": 30,
|
||||
"rx": 6.5,
|
||||
"ry": 4.25,
|
||||
"y": -1,
|
||||
"x": 1,
|
||||
"c": "#f9cd31",
|
||||
"g": false
|
||||
},
|
||||
"Alt",
|
||||
{
|
||||
"a": 4,
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
9
|
||||
]
|
||||
},
|
||||
"\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>"
|
||||
],
|
||||
[
|
||||
{
|
||||
"c": "#d4872a",
|
||||
"a": 7,
|
||||
"f": 9,
|
||||
"h": 2
|
||||
},
|
||||
"<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"<i class='fa fa-angle-double-up'></i>",
|
||||
{
|
||||
"c": "#f9cd31",
|
||||
"f": 3
|
||||
},
|
||||
"Ctrl"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2,
|
||||
"c": "#e26757"
|
||||
},
|
||||
"ESC"
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": -30,
|
||||
"rx": 13,
|
||||
"y": -1,
|
||||
"x": -3,
|
||||
"c": "#f9cd31",
|
||||
"f": 2
|
||||
},
|
||||
"MEDIA",
|
||||
{},
|
||||
"1HAND"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -3
|
||||
},
|
||||
"LEAD",
|
||||
{
|
||||
"c": "#d4872a",
|
||||
"f": 9,
|
||||
"h": 2
|
||||
},
|
||||
"<i class='kb kb-Return-2'></i>",
|
||||
{
|
||||
"f": 3,
|
||||
"h": 2
|
||||
},
|
||||
"SPC"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -3,
|
||||
"c": "#f9cd31",
|
||||
"f": 2
|
||||
},
|
||||
"HUN"
|
||||
]
|
||||
]
|
@ -0,0 +1,533 @@
|
||||
[
|
||||
{
|
||||
"backcolor": "#ffffff",
|
||||
"name": "ErgoDox - algernon's layout: Heatmap",
|
||||
"author": "Gergely Nagy <kbd@gergo.csillger.hu>",
|
||||
"notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.",
|
||||
"switchMount": "cherry",
|
||||
"switchBrand": "gateron",
|
||||
"switchType": "KS-3-Tea",
|
||||
"pcb": true,
|
||||
"css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }"
|
||||
},
|
||||
[
|
||||
{
|
||||
"x": 3.5,
|
||||
"c": "#a7d0db",
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
2
|
||||
]
|
||||
},
|
||||
"#\n3\nF3",
|
||||
{
|
||||
"x": 10.5,
|
||||
"c": "#a7d0db",
|
||||
"t": "#000000",
|
||||
"a": 4,
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
2
|
||||
]
|
||||
},
|
||||
"*\n8\nF8"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"@\n2\nF2",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"$\n4\nF4",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"&\n7\nF7",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"(\n9\nF9"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"%\n5\nF5",
|
||||
{
|
||||
"c": "#f9cd31",
|
||||
"a": 7,
|
||||
"f": 2
|
||||
},
|
||||
"STENO",
|
||||
{
|
||||
"x": 4.5,
|
||||
"f": 6
|
||||
},
|
||||
"<i class='mss mss-Unicode-Option-3'></i>",
|
||||
{
|
||||
"c": "#7adabd",
|
||||
"a": 4,
|
||||
"f": 3,
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
2
|
||||
]
|
||||
},
|
||||
"^\n6\nF6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#ffb2d2",
|
||||
"f": 3,
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\n~\n`",
|
||||
{
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"!\n1\nF1",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
")\n0\nF10",
|
||||
{
|
||||
"a": 7,
|
||||
"w": 1.5
|
||||
},
|
||||
"F11"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#a7d0db",
|
||||
"t": "#000000",
|
||||
"a": 4
|
||||
},
|
||||
">\n.",
|
||||
{
|
||||
"x": 10.5,
|
||||
"a": 6
|
||||
},
|
||||
"C"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b",
|
||||
"a": 4
|
||||
},
|
||||
"<\n,",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000",
|
||||
"a": 6
|
||||
},
|
||||
"P",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"G",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"R"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"Y",
|
||||
{
|
||||
"c": "#93c9b7",
|
||||
"a": 4,
|
||||
"h": 1.5
|
||||
},
|
||||
"{\n[",
|
||||
{
|
||||
"x": 4.5,
|
||||
"h": 1.5
|
||||
},
|
||||
"}\n]",
|
||||
{
|
||||
"c": "#7adabd",
|
||||
"a": 6
|
||||
},
|
||||
"F"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#ffb07b",
|
||||
"t": "#0d0d0b",
|
||||
"f": 6,
|
||||
"w": 1.5
|
||||
},
|
||||
"<i class='fa fa-fast-backward'></i>\n\n<i class='fa fa-fast-forward'></i>",
|
||||
{
|
||||
"c": "#ffb2d2",
|
||||
"a": 4,
|
||||
"f": 3
|
||||
},
|
||||
"\"\n'",
|
||||
{
|
||||
"x": 14.5,
|
||||
"a": 6
|
||||
},
|
||||
"L",
|
||||
{
|
||||
"a": 4,
|
||||
"w": 1.5
|
||||
},
|
||||
"|\n\\"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#a7d0db",
|
||||
"t": "#000000",
|
||||
"a": 6
|
||||
},
|
||||
"E",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"T"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"O",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000",
|
||||
"n": true
|
||||
},
|
||||
"U",
|
||||
{
|
||||
"x": 8.5,
|
||||
"n": true
|
||||
},
|
||||
"H",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"N"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"I",
|
||||
{
|
||||
"x": 6.5
|
||||
},
|
||||
"D"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#ffb2d2",
|
||||
"t": "#0d0d0b",
|
||||
"fa": [
|
||||
6
|
||||
],
|
||||
"w": 1.5
|
||||
},
|
||||
"<i class='fa fa-arrows'></i>\n\nTab",
|
||||
{
|
||||
"f": 3
|
||||
},
|
||||
"A",
|
||||
{
|
||||
"x": 14.5,
|
||||
"f": 3
|
||||
},
|
||||
"S",
|
||||
{
|
||||
"a": 4,
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
6
|
||||
],
|
||||
"w": 1.5
|
||||
},
|
||||
"+\n="
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.625,
|
||||
"x": 6.5,
|
||||
"c": "#93c9b7",
|
||||
"t": "#000000",
|
||||
"a": 7,
|
||||
"h": 1.5
|
||||
},
|
||||
"(",
|
||||
{
|
||||
"x": 4.5,
|
||||
"h": 1.5
|
||||
},
|
||||
")"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.75,
|
||||
"x": 3.5,
|
||||
"c": "#a7d0db",
|
||||
"a": 6
|
||||
},
|
||||
"J",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"W"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"Q",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"K",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"M",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#bfbad1",
|
||||
"t": "#0d0d0b"
|
||||
},
|
||||
"V"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#7adabd",
|
||||
"t": "#000000"
|
||||
},
|
||||
"X",
|
||||
{
|
||||
"x": 6.5
|
||||
},
|
||||
"B"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#ffb07b",
|
||||
"f": 9,
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\n<i class='kb kb-Multimedia-Play-Pause'></i>",
|
||||
{
|
||||
"c": "#ffb2d2",
|
||||
"t": "#0d0d0b",
|
||||
"a": 4,
|
||||
"f": 3
|
||||
},
|
||||
"?\n/",
|
||||
{
|
||||
"x": 14.5,
|
||||
"a": 6
|
||||
},
|
||||
"Z",
|
||||
{
|
||||
"c": "#ffb07b",
|
||||
"t": "#000000",
|
||||
"f": 9,
|
||||
"w": 1.5
|
||||
},
|
||||
"<i class='kb kb-Multimedia-Stop'></i>"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#d9dae0",
|
||||
"g": true,
|
||||
"a": 7,
|
||||
"f": 3
|
||||
},
|
||||
"",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
""
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#d4872a",
|
||||
"g": false,
|
||||
"a": 5
|
||||
},
|
||||
";\n:",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"_\n-",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#d9dae0",
|
||||
"g": true,
|
||||
"a": 7
|
||||
},
|
||||
""
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.75,
|
||||
"x": 0.5
|
||||
},
|
||||
"",
|
||||
{},
|
||||
"",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
"",
|
||||
{},
|
||||
""
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": 30,
|
||||
"rx": 6.5,
|
||||
"ry": 4.25,
|
||||
"y": -1,
|
||||
"x": 1,
|
||||
"c": "#f9cd31",
|
||||
"g": false
|
||||
},
|
||||
"Alt",
|
||||
{
|
||||
"a": 4,
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
9
|
||||
]
|
||||
},
|
||||
"\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>"
|
||||
],
|
||||
[
|
||||
{
|
||||
"c": "#d4872a",
|
||||
"a": 7,
|
||||
"f": 9,
|
||||
"h": 2
|
||||
},
|
||||
"<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"<i class='fa fa-angle-double-up'></i>",
|
||||
{
|
||||
"c": "#f9cd31",
|
||||
"f": 3
|
||||
},
|
||||
"Ctrl"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2,
|
||||
"c": "#e26757"
|
||||
},
|
||||
"ESC"
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": -30,
|
||||
"rx": 13,
|
||||
"y": -1,
|
||||
"x": -3,
|
||||
"c": "#f9cd31",
|
||||
"f": 2
|
||||
},
|
||||
"MEDIA",
|
||||
{},
|
||||
"1HAND"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -3
|
||||
},
|
||||
"LEAD",
|
||||
{
|
||||
"c": "#d4872a",
|
||||
"f": 9,
|
||||
"h": 2
|
||||
},
|
||||
"<i class='kb kb-Return-2'></i>",
|
||||
{
|
||||
"f": 3,
|
||||
"h": 2
|
||||
},
|
||||
"SPC"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -3,
|
||||
"c": "#f9cd31",
|
||||
"f": 2
|
||||
},
|
||||
"HUN"
|
||||
]
|
||||
]
|
@ -0,0 +1,145 @@
|
||||
#! /usr/bin/env python
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
|
||||
from math import floor
|
||||
|
||||
cr_coord_map = [
|
||||
[
|
||||
# Row 0
|
||||
[ 4, 0], [ 4, 2], [ 2, 0], [ 1, 0], [ 2, 2], [ 3, 0], [ 3, 2],
|
||||
[ 3, 4], [ 3, 6], [ 2, 4], [ 1, 2], [ 2, 6], [ 4, 4], [ 4, 6],
|
||||
],
|
||||
[
|
||||
# Row 1
|
||||
[ 8, 0], [ 8, 2], [ 6, 0], [ 5, 0], [ 6, 2], [ 7, 0], [ 7, 2],
|
||||
[ 7, 4], [ 7, 6], [ 6, 4], [ 5, 2], [ 6, 6], [ 8, 4], [ 8, 6],
|
||||
],
|
||||
[
|
||||
# Row 2
|
||||
[12, 0], [12, 2], [10, 0], [ 9, 0], [10, 2], [11, 0], [ ],
|
||||
[ ], [11, 2], [10, 4], [ 9, 2], [10, 6], [12, 4], [12, 6],
|
||||
],
|
||||
[
|
||||
# Row 3
|
||||
[17, 0], [17, 2], [15, 0], [14, 0], [15, 2], [16, 0], [13, 0],
|
||||
[13, 2], [16, 2], [15, 4], [14, 2], [15, 6], [17, 4], [17, 6],
|
||||
],
|
||||
[
|
||||
# Row 4
|
||||
[20, 0], [20, 2], [19, 0], [18, 0], [19, 2], [], [], [], [],
|
||||
[19, 4], [18, 2], [19, 6], [20, 4], [20, 6],
|
||||
],
|
||||
[
|
||||
# Row 5
|
||||
[ ], [23, 0], [22, 2], [22, 0], [22, 4], [21, 0], [21, 2],
|
||||
[24, 0], [24, 2], [25, 0], [25, 4], [25, 2], [26, 0], [ ],
|
||||
],
|
||||
]
|
||||
|
||||
def set_attr_at(j, b, n, attr, fn, val):
|
||||
blk = j[b][n]
|
||||
if attr in blk:
|
||||
blk[attr] = fn(blk[attr], val)
|
||||
else:
|
||||
blk[attr] = fn(None, val)
|
||||
|
||||
def coord(col, row):
|
||||
return cr_coord_map[row][col]
|
||||
|
||||
def set_attr(orig, new):
|
||||
return new
|
||||
|
||||
def set_bg(j, (b, n), color):
|
||||
set_attr_at(j, b, n, "c", set_attr, color)
|
||||
#set_attr_at(j, b, n, "g", set_attr, False)
|
||||
|
||||
def _set_tap_info(o, count, cap):
|
||||
ns = 4 - o.count ("\n")
|
||||
return o + "\n" * ns + "%.02f%%" % (float(count) / float(cap) * 100)
|
||||
|
||||
def set_tap_info(j, (b, n), count, cap):
|
||||
j[b][n + 1] = _set_tap_info (j[b][n + 1], count, cap)
|
||||
|
||||
def heatmap_color (v):
|
||||
colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]]
|
||||
fb = 0
|
||||
if v <= 0:
|
||||
idx1, idx2 = 0, 0
|
||||
elif v >= 1:
|
||||
idx1, idx2 = len(colors) - 1, len(colors) - 1
|
||||
else:
|
||||
val = v * (len(colors) - 1)
|
||||
idx1 = int(floor(val))
|
||||
idx2 = idx1 + 1
|
||||
fb = val - float(idx1)
|
||||
|
||||
r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0]
|
||||
g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1]
|
||||
b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2]
|
||||
|
||||
r, g, b = [x * 255 for x in r, g, b]
|
||||
return "#%02x%02x%02x" % (r, g, b)
|
||||
|
||||
# Load the keylog
|
||||
def load_keylog(fname, restrict_row):
|
||||
keylog = {}
|
||||
total = 0
|
||||
with open(fname, "r") as f:
|
||||
lines = f.readlines()
|
||||
for line in lines:
|
||||
m = re.search ('KL: col=(\d+), row=(\d+)', line)
|
||||
if not m:
|
||||
continue
|
||||
(c, r) = (int(m.group (2)), int(m.group (1)))
|
||||
if restrict_row != None and r != int(restrict_row):
|
||||
continue
|
||||
if (c, r) in keylog:
|
||||
keylog[(c, r)] = keylog[(c, r)] + 1
|
||||
else:
|
||||
keylog[(c, r)] = 1
|
||||
total = total + 1
|
||||
return total / 2, keylog
|
||||
|
||||
def l_flat(s):
|
||||
f = s.split("\n")
|
||||
return ", ".join (f)
|
||||
|
||||
def main(base_fn, log_fn, restrict_row = None):
|
||||
|
||||
with open(base_fn, "r") as f:
|
||||
layout = json.load (f)
|
||||
|
||||
## Reset colors
|
||||
for row in cr_coord_map:
|
||||
for col in row:
|
||||
if col != []:
|
||||
set_bg (layout, col, "#d9dae0")
|
||||
#set_attr_at (layout, col[0], col[1], "g", set_attr, True)
|
||||
|
||||
total, log = load_keylog (log_fn, restrict_row)
|
||||
max_cnt = 0
|
||||
for (c, r) in log:
|
||||
max_cnt = max(max_cnt, log[(c, r)])
|
||||
|
||||
# Create the heatmap
|
||||
for (c, r) in log:
|
||||
coords = coord(c, r)
|
||||
b, n = coords
|
||||
cap = max_cnt
|
||||
v = float(log[(c, r)]) / cap
|
||||
print >> sys.stderr, "%s => %d/%d => %f = %s" % (l_flat(layout[b][n+1]), log[(c,r)], cap, v, heatmap_color(v))
|
||||
set_bg (layout, coord(c, r), heatmap_color (v))
|
||||
set_tap_info (layout, coord (c, r), log[(c, r)], total)
|
||||
|
||||
print json.dumps(layout)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 3:
|
||||
print """Log to Heatmap -- creates a heatmap out of keyboard logs
|
||||
|
||||
Usage: log-to-heatmap.py base-layout.json logfile [row] >layout.json"""
|
||||
sys.exit (1)
|
||||
main(*sys.argv[1:])
|
@ -1,7 +1,7 @@
|
||||
// Netable differences vs. the default firmware for the ErgoDox EZ:
|
||||
// 1. The Cmd key is now on the right side, making Cmd+Space easier.
|
||||
// 2. The media keys work on OSX (But not on Windows).
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap_bepo.h"
|
@ -0,0 +1,2 @@
|
||||
SLEEP_LED_ENABLE = no
|
||||
UNICODE_ENABLE = yes
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 379 KiB After Width: | Height: | Size: 379 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 189 KiB After Width: | Height: | Size: 189 KiB |
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
@ -1,6 +1,7 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "version.h"
|
||||
|
||||
#define BASE 0 // default layer
|
||||
#define SYMB 1 // symbols
|
Before Width: | Height: | Size: 754 KiB After Width: | Height: | Size: 754 KiB |
@ -1,7 +1,7 @@
|
||||
// Netable differences vs. the default firmware for the ErgoDox EZ:
|
||||
// 1. The Cmd key is now on the right side, making Cmd+Space easier.
|
||||
// 2. The media keys work on OSX (But not on Windows).
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 139 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include <keymap_extras/keymap_colemak.h>
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,7 +1,7 @@
|
||||
// German keymap derived from "german", but more closely resembling the German layout of the Kinesis Ergo Elan.
|
||||
//
|
||||
// chschmitz, 2016-01-27
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap_german.h"
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap.h"
|
||||
#include "keymap_german.h"
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap_german.h"
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "version.h"
|
||||
|
||||
#define BASE 0 // default layer
|
||||
#define SYMB 1 // symbols
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -0,0 +1,229 @@
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
||||
#define BASE 0 // default layer
|
||||
#define SYMB 1 // symbols
|
||||
#define ARRW 2 // arrow keys
|
||||
#define MDIA 3 // media keys, including mouse
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Keymap 0: Basic layer
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | = | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | - |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | Tab | Q | W | E | R | T | L1 | | CAPS | Y | U | I | O | P | \ |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | ESC | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
||||
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
||||
* | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | Grv | |*SYMB*|*ARRW*| |*MDIA*|*SYMB*| [ | ] | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+--------+------.
|
||||
* | | | | | | | |
|
||||
* | Space| Bksp |------| |------| Tab |Enter |
|
||||
* | ctrl | gui | Alt | | Alt | gui | ctrl |
|
||||
* `--------------------' `----------------------'
|
||||
*/
|
||||
// TODO: maybe look into changing the delay or whatever for the holding macros... not sure which way you would go with this. if the macro automatically kicks in if you hold it and press another button (no matter how long you held it for), then it wouldn't hurt to have a longer period i think... although if you hold a button and then decide not to, then you;ll register a space/bksp/etc. on accident. on the other hand, if it's too short of a delay, then you might be able to register spc/bksp/etc quickly enough, although i don't see this as big of an issue
|
||||
// not sure if gui is meta key or super... it says meta on the basic keycodes page, and i think that's consitent with other shit, but you should really figure out how to program the keyboard to have meta and super separately instead of hacking your init.el to recognize alt as meta... because shit will get fucked up beteween awesome and emacs and other shit i'm guessing
|
||||
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
||||
// Otherwise, it needs KC_*
|
||||
[BASE] = KEYMAP( // layer 0 : default
|
||||
// left hand
|
||||
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
|
||||
KC_TRNS, KC_GRV, KC_TRNS,MO(SYMB),MO(ARRW),
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
CTL_T(KC_SPC),GUI_T(KC_BSPC),KC_LALT,
|
||||
// right hand
|
||||
KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
KC_CAPSLOCK, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
MO(MDIA), MO(SYMB), KC_LBRC,KC_RBRC, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_RALT,GUI_T(KC_TAB), CTL_T(KC_ENT)
|
||||
),
|
||||
/* Keymap 1: Symbol Layer
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | . |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | | | 0 | = | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
// SYMBOLS
|
||||
[SYMB] = KEYMAP(
|
||||
// left hand
|
||||
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
||||
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
||||
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
||||
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||
KC_TRNS,KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS,KC_TRNS,KC_TRNS,
|
||||
// right hand
|
||||
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
||||
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_DOT,
|
||||
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
||||
KC_TRNS,KC_TRNS, KC_0, KC_EQL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
/* Keymap 2: Arrow keys
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | | | | | | | | | | |PGDOWN| PGUP | | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | | | | |------| |------| LEFT | DOWN | UP |RIGHT | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | | | | | | | | | | HOME | END | | | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
// MEDIA AND MOUSE
|
||||
[ARRW] = KEYMAP(
|
||||
// left hand
|
||||
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,
|
||||
// right hand
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_PGDOWN, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_HOME, KC_END, 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
|
||||
),
|
||||
/* Keymap 3: Media and mouse keys
|
||||
*
|
||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
* | | | | MsUp | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | |MsLeft|MsDown|MsRght| |------| |------| | Lclk | Rclk | | | |
|
||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
* | | |Mute |VolDn | VolUp| | | | | | | | | | |
|
||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
* | | | Prev | Play | Next | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* |Brwser| | | | | | |
|
||||
* |Back | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
// MEDIA AND MOUSE
|
||||
[MDIA] = KEYMAP(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_WBAK, KC_TRNS, KC_TRNS,
|
||||
// right hand
|
||||
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_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPLY,
|
||||
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
|
||||
),
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
|
||||
uint8_t layer = biton32(layer_state);
|
||||
|
||||
ergodox_board_led_off();
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
switch (layer) {
|
||||
// TODO: Make this relevant to the ErgoDox EZ.
|
||||
case 1:
|
||||
ergodox_right_led_1_on();
|
||||
break;
|
||||
case 2:
|
||||
ergodox_right_led_2_on();
|
||||
break;
|
||||
default:
|
||||
// none
|
||||
break;
|
||||
}
|
||||
|
||||
};
|
@ -0,0 +1,121 @@
|
||||
# Introduction
|
||||
|
||||
## Motivation
|
||||
I created this keymap in an attempt to optimize my typing experience in text editors (vim and emacs) and the command-line.
|
||||
|
||||
More specifically, I wanted to have each modifier key controlled by the thumbs, the most powerful of the digits (I think). This cured me of emacs pinky, which had surprisingly grown quite quickly over the first two weeks of using emacs & emacs-like commands on the command-line.
|
||||
|
||||
## Changes
|
||||
There are some miscellaneous changes that I kind of forgot I made, such as moving the tilde key, but you can check out the visual layouts below, which I **have** kept up to date.
|
||||
### Modifier Keys
|
||||
The biggest changes from the ergodox ez default keymap are the modifiers on the thumb cluster. You must hold each key down for a certain amount of time (forgot where this is specified) in order for the modifier key to activate.
|
||||
|
||||
### Layers
|
||||
* an arrow layer (ARRW) has been created because the default arrow keys suck. Beware, these do use vim bindings because they're the best.
|
||||
* the keys in the media layer have been moved around for a better experience (imo), especially with respect to the mouse
|
||||
* the three layers (SYMB, MDIA, and ARRW) now have their own dedicated keys accessible by the thumbs in the basic layer
|
||||
* caps lock has been put in place of the right-side `L1` toggle key because there was really no need to have two keys to toggle one layer, and caps lock is useful when writing queries
|
||||
** unfortunatley, caps lock is not indicated by an LED, so be careful. I use caps lock just like I do insert in vim; for a short burst of text. I always turn off caps lock when I change my focus
|
||||
|
||||
### Removal Of Keys
|
||||
I also removed a bunch of unnecessary keys that I wasn't going to use anyway. You'll see such keys are blank in the basic layer. I will probably add some more keys in place of these, but I'm fine for now; I just didn't want the distraction of extra keys I barely use.
|
||||
|
||||
## Caveats
|
||||
### Thumb Cluster Range
|
||||
I've heard many complaints about the thumb clusters. I agree that the three outter keys are almost impossible to reach. I am going to try to build [Matt Adereth's keyboard](https://github.com/adereth/dactyl-keyboard), which looks to have a better layout. However, I am able to comfortably use the three modifier keys mainly because:
|
||||
* I use DCS keycaps with SA Row 3 keycaps where the Alt keys are
|
||||
* I have relatively large hands (I guarantee you there's no problem - I guarantee you)
|
||||
|
||||
### Dangerous positioning
|
||||
I think it's quite dangerous to put something like control on the same key as enter. Alas, this is a risk I'm willing to accept, and so should you if you decide to use this keymap. I tend to avoid putting myself in situtations in which disaster could occur with one fell swoop of a keypress.
|
||||
|
||||
# Keymap
|
||||
## Keymap 0: Basic layer
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| = | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | - |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| Tab | Q | W | E | R | T | L1 | | CAPS | Y | U | I | O | P | \ |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| ESC | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
||||
|--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
||||
| LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | Grv | |*SYMB*|*ARRW*| |*MDIA*|*SYMB*| [ | ] | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+--------+------.
|
||||
| | | | | | | |
|
||||
| Space| Bksp |------| |------| Tab |Enter |
|
||||
| ctrl | gui | Alt | | Alt | gui | ctrl |
|
||||
`--------------------' `----------------------'
|
||||
|
||||
```
|
||||
|
||||
## Keymap 1: Symbol Layer
|
||||
The only change here is the *dot* (`.`) character moving from next to `0` next to `+` in order to move the layer keys in the correct position
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | . |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | | 0 | = | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Keymap 2: Arrow Layer
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| | | | | | | | | | | | | | | |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| | | | | | | | | | |PGDOWN| PGUP | | | |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | | | | | |------| |------| LEFT | DOWN | UP |RIGHT | | |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | | | | | | | | | | HOME | END | | | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
| | | | | | | |
|
||||
| | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
||||
|
||||
## Keymap 3: Media and mouse keys
|
||||
```
|
||||
,--------------------------------------------------. ,--------------------------------------------------.
|
||||
| | | | | | | | | | | | | | | |
|
||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||
| | | | MsUp | | | | | | | | | | | |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | |MsLeft|MsDown|MsRght| |------| |------| | Lclk | Rclk | | | |
|
||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||
| | |Mute |VolDn | VolUp| | | | | | | | | | |
|
||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||
| | | Prev | Play | Next | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
,-------------. ,-------------.
|
||||
| | | | | |
|
||||
,------|------|------| |------+------+------.
|
||||
|Brwser| | | | | | |
|
||||
|Back | |------| |------| | |
|
||||
| | | | | | | |
|
||||
`--------------------' `--------------------'
|
||||
```
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap_colemak.h"
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "led.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap_german_osx.h"
|
Before Width: | Height: | Size: 292 KiB After Width: | Height: | Size: 292 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 180 KiB After Width: | Height: | Size: 180 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap_neo2.h"
|
Before Width: | Height: | Size: 297 KiB After Width: | Height: | Size: 297 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 218 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 127 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
@ -0,0 +1,14 @@
|
||||
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 = no # Commands for debug and configuration
|
||||
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ
|
||||
SLEEP_LED_ENABLE = yes # 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
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
UNICODE_ENABLE = yes # Unicode
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
@ -0,0 +1,102 @@
|
||||
#include "ergodox.h"
|
||||
#include "action_layer.h"
|
||||
|
||||
#define BASE 0 // default layer
|
||||
#define FN1 1 // symbols
|
||||
#define FN2 2 // media keys
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[BASE] = KEYMAP( // layer 0 : default
|
||||
// left hand
|
||||
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
|
||||
KC_BSLS, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(FN2),
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(FN1),
|
||||
KC_LGUI, KC_GRV, KC_BSLS, KC_LEFT, KC_RGHT,
|
||||
KC_LCTL, KC_LALT,
|
||||
KC_HOME,
|
||||
KC_SPC, KC_BSPC, KC_END,
|
||||
// right hand
|
||||
MO(FN2), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
KC_LBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC,
|
||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
MO(FN1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RGUI,
|
||||
KC_RALT, KC_RCTL,
|
||||
KC_PGUP,
|
||||
KC_PGDN, KC_ENT, KC_SPC
|
||||
),
|
||||
// FN1
|
||||
[FN1] = KEYMAP(
|
||||
// left hand
|
||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
|
||||
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,
|
||||
// right hand
|
||||
KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, 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
|
||||
),
|
||||
// FN2
|
||||
[FN2] = KEYMAP(
|
||||
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
// right hand
|
||||
KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PAST, KC_PMNS, KC_BSPC,
|
||||
KC_TRNS, KC_NO, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_BSPC,
|
||||
KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_PENT,
|
||||
KC_TRNS, KC_NO, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PENT,
|
||||
KC_P0, KC_PDOT, KC_SLSH, KC_PENT, KC_PENT,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
|
||||
uint8_t layer = biton32(layer_state);
|
||||
|
||||
ergodox_board_led_off();
|
||||
ergodox_right_led_1_off();
|
||||
ergodox_right_led_2_off();
|
||||
ergodox_right_led_3_off();
|
||||
switch (layer) {
|
||||
// TODO: Make this relevant to the ErgoDox EZ.
|
||||
case 1:
|
||||
ergodox_right_led_1_on();
|
||||
break;
|
||||
case 2:
|
||||
ergodox_right_led_2_on();
|
||||
break;
|
||||
default:
|
||||
// none
|
||||
break;
|
||||
}
|
||||
|
||||
};
|
@ -0,0 +1,3 @@
|
||||
# sethbc's Ergodox EZ keymap
|
||||
|
||||
Largely based on the Ergodox Infinity default keymap
|
@ -1,7 +1,7 @@
|
||||
// Based on `default_osx`
|
||||
// Replace left Bksp with Ctrl/Esc
|
||||
// Remove the Ctrl from Z and /
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap_neo2.h"
|
@ -1,7 +1,7 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H 1
|
||||
|
||||
#include "config.h"
|
||||
#include "../../config.h"
|
||||
|
||||
#undef LOCKING_SUPPORT_ENABLE
|
||||
#undef LOCKING_RESYNC_ENABLE
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -0,0 +1,455 @@
|
||||
#include "ergodox.h"
|
||||
#include "led.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "action_util.h"
|
||||
#include "mousekey.h"
|
||||
|
||||
#define BASE 0 // default layer
|
||||
#define SYMB 1 // symbols layer
|
||||
#define MDIA 2 // media layer
|
||||
#define SPEC 3 // special layer
|
||||
|
||||
#define LCaps 10 // left caps-shift key
|
||||
#define LSymb 11 // left symbol-shift key
|
||||
#define LMdia 12 // left media-shift key
|
||||
#define LSpec 13 // left special-shift key
|
||||
#define RCaps 14 // right caps-shift key
|
||||
#define RSymb 15 // right symbol-shift key
|
||||
#define RMdia 16 // right media-shift key
|
||||
#define RSpec 17 // right special-shift key
|
||||
|
||||
#define MUL 20 // mouse up left
|
||||
#define MUR 21 // mouse up right
|
||||
#define MDL 22 // mouse down left
|
||||
#define MDR 23 // mouse down right
|
||||
|
||||
/*
|
||||
* teckinesis layout for ErgoDox (EZ)
|
||||
*
|
||||
* Modifications from The Ordinary Layout v4 by Will Wolff-Myren willwm@gmail.com
|
||||
* Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
|
||||
*
|
||||
* No rights reserved. This software is in the public domain.
|
||||
* Credit me if you are friendly but if you're a jerk don't bother.
|
||||
*
|
||||
* Details: readme.md
|
||||
* https://github.com/willwm/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/teckinesis
|
||||
*/
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/******* Base Layer ********************************************************************************************************
|
||||
*
|
||||
* ,------------------------------------------------------. ,------------------------------------------------------.
|
||||
* | Special =+ | 1 | 2 | 3 | 4 | 5 | ESC | | ` | 6 | 7 | 8 | 9 | 0 | -_ Special |
|
||||
* |------------+------+------+------+------+-------------| |------+------+------+------+------+------+------------|
|
||||
* | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \| Media |
|
||||
* |------------+------+------+------+------+------| | | |------+------+------+------+------+------------|
|
||||
* | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol |
|
||||
* |------------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+------------|
|
||||
* | Capitals | Z | X | C | V | B | -Tab | | | N | M | , | . | / | Capitals |
|
||||
* `------------+------+------+------+------+-------------' `-------------+------+------+------+------+------------'
|
||||
* | LCtrl |Meh/\ |Hypr//| LAlt | LGui | | RGui | RAlt |Hypr/[|Meh/] | RCtrl |
|
||||
* `-----------------------------------' `-----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | Home | End | | Left | Right|
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | PgUp | | Up | | |
|
||||
* |Backsp| Del |------| |------| Enter| Space|
|
||||
* | | | PgDn | | Down | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[BASE] = KEYMAP(
|
||||
// left hand
|
||||
F(LSpec),KC_1,KC_2,KC_3 ,KC_4 ,KC_5 ,KC_ESC
|
||||
,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC
|
||||
,M(LSymb) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G
|
||||
,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB)
|
||||
,KC_LCTL,MEH_T(KC_BSLS),ALL_T(KC_SLSH),KC_LALT,KC_LGUI
|
||||
,KC_HOME,KC_END
|
||||
,KC_PGUP
|
||||
,KC_BSPC,KC_DEL ,KC_PGDN
|
||||
// right hand
|
||||
,KC_GRV ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RSpec)
|
||||
,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia)
|
||||
,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb)
|
||||
,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,M(RCaps)
|
||||
,KC_RGUI,KC_RALT,ALL_T(KC_LBRC),MEH_T(KC_RBRC),KC_RCTL
|
||||
,KC_LEFT ,KC_RGHT
|
||||
,KC_UP
|
||||
,KC_DOWN ,KC_ENT ,KC_SPC
|
||||
),
|
||||
|
||||
/******* Symbols Layer *****************************************************************************************************
|
||||
*
|
||||
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
* | | F1 | F2 | F3 | F4 | F5 | Esc | | - | F6 | F7 | F8 | F9 | F10 | |
|
||||
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||
* | | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | |
|
||||
* |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------|
|
||||
* | | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | |
|
||||
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||
* | LCtrl | Meh |Hyper | LAlt | LGui | |RGui/0|RAlt/.|Hypr/=|Meh/+ |RCtrl/Ent|
|
||||
* `-----------------------------------' `-------------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | Left | Right| | Home | End |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | Up | | PgUp | | |
|
||||
* |Space |Enter |------| |------|BackSp| Del |
|
||||
* | | | Down | | PgDn | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[SYMB] = KEYMAP(
|
||||
// left hand
|
||||
KC_TRNS ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_ESC
|
||||
,KC_TRNS ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM)
|
||||
,KC_TRNS ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV
|
||||
,KC_TRNS ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB
|
||||
,KC_LCTL ,KC_MEH ,KC_HYPR ,KC_LALT ,KC_LGUI
|
||||
,KC_LEFT ,KC_RGHT
|
||||
,KC_UP
|
||||
,KC_SPC ,KC_ENT ,KC_DOWN
|
||||
// right hand
|
||||
,KC_MINS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS
|
||||
,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,KC_TRNS
|
||||
,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,KC_TRNS
|
||||
,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_TRNS
|
||||
,GUI_T(KC_0),ALT_T(KC_DOT),ALL_T(KC_EQL),MEH_T(KC_PLUS),CTL_T(KC_ENT)
|
||||
,KC_HOME ,KC_END
|
||||
,KC_PGUP
|
||||
,KC_PGDN ,KC_BSPC ,KC_DEL
|
||||
),
|
||||
|
||||
/******* Media Layer *******************************************************************************************************
|
||||
*
|
||||
* ,---------------------------------------------------------------. ,---------------------------------------------------------------.
|
||||
* | | F11 | F12 | F13 | F14 | F15 | Esc | | | F16 | F17 | F18 | F19 | F20 | |
|
||||
* |------+---------+---------+---------+---------+----------------| |------+---------+---------+---------+---------+---------+------|
|
||||
* | | |MouseUpLf|Mouse Up |MouseUpRg|Volume Up|Scroll| |Scroll|PrintScrn| Home | Up | PgUp | | |
|
||||
* |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------|
|
||||
* | | |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | | |
|
||||
* |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------|
|
||||
* | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | |
|
||||
* `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------'
|
||||
* |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl|
|
||||
* `---------------------------------------------' `---------------------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | Stop |Refrsh| | Prev | Next |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* |Brwser|Brwser|Search| |VolUp | | |
|
||||
* |Back | Fwd |------| |------| Stop | Play-|
|
||||
* | | | Home | |VolDn | | Pause|
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[MDIA] = KEYMAP(
|
||||
// left hand
|
||||
KC_TRNS ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_ESC
|
||||
,KC_TRNS ,KC_NO ,M(MUL) ,KC_MS_U ,M(MUR) ,KC_VOLU ,KC_WH_U
|
||||
,KC_TRNS ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_VOLD
|
||||
,KC_TRNS ,KC_NO ,M(MDL) ,KC_MS_D ,M(MDR) ,KC_MUTE ,KC_WH_D
|
||||
,KC_LCTL ,KC_MEH ,KC_BTN3 ,KC_BTN1 ,KC_BTN2
|
||||
,KC_WSTP ,KC_WREF
|
||||
,KC_WSCH
|
||||
,KC_WBAK ,KC_NO ,KC_WHOM
|
||||
// right hand
|
||||
,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS
|
||||
,KC_WH_U ,KC_PSCR ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_TRNS
|
||||
,KC_NLCK ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO ,KC_TRNS
|
||||
,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_TRNS
|
||||
,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH ,KC_RCTL
|
||||
,KC_MPRV ,KC_MNXT
|
||||
,KC_VOLU
|
||||
,KC_VOLD ,KC_MSTP ,KC_MPLY
|
||||
),
|
||||
|
||||
/******* Special Layer *****************************************************************************************************
|
||||
*
|
||||
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
* | | Esc | | | | | | | | | | | | Bspc | |
|
||||
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | | | | | | |------| |------| | | | | | |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | | | | | | | | | | | | | | | RShift |
|
||||
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[SPEC] = KEYMAP(
|
||||
// left hand
|
||||
KC_TRNS ,KC_ESC ,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
|
||||
// right hand
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,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_RSFT
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
|
||||
,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
)
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
// the faux shift keys are implemented as macro taps
|
||||
[LCaps] = ACTION_MACRO_TAP(LCaps)
|
||||
,[LSymb] = ACTION_MACRO_TAP(LSymb)
|
||||
,[LMdia] = ACTION_MACRO_TAP(LMdia)
|
||||
,[LSpec] = ACTION_MACRO_TAP(LSpec)
|
||||
,[RCaps] = ACTION_MACRO_TAP(RCaps)
|
||||
,[RSymb] = ACTION_MACRO_TAP(RSymb)
|
||||
,[RMdia] = ACTION_MACRO_TAP(RMdia)
|
||||
,[RSpec] = ACTION_MACRO_TAP(RSpec)
|
||||
};
|
||||
|
||||
uint16_t caps_shift = 0;
|
||||
uint16_t symb_shift = 0;
|
||||
uint16_t mdia_shift = 0;
|
||||
|
||||
bool symb_lock = false;
|
||||
bool mdia_lock = false;
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
switch(id) {
|
||||
// There are two shift keys for each layer so we increment a layer_shift var when one
|
||||
// is pressed and decrement when one is released. If both are pressed at the same time
|
||||
// then the layer is locked (or unlocked). The shift counts are bound between 0 and 2
|
||||
// only because sometimes rapid pressing led to irregular events; this way the states
|
||||
// are self healing during use.
|
||||
|
||||
case LCaps: // both caps-shift keys trigger Left Shift
|
||||
case RCaps: // so they don't interfere with the magic combo
|
||||
if (record->event.pressed && !record->tap.count) {
|
||||
if(++caps_shift > 2) caps_shift = 2;
|
||||
if(caps_shift == 2) {
|
||||
register_code(KC_CAPS);
|
||||
unregister_code(KC_CAPS);
|
||||
} else if(caps_shift == 1) {
|
||||
register_code(KC_LSFT);
|
||||
}
|
||||
} else {
|
||||
if(--caps_shift < 0) caps_shift = 0;
|
||||
if(caps_shift == 0) unregister_code(KC_LSFT);
|
||||
}
|
||||
break;
|
||||
|
||||
case LSymb:
|
||||
if (record->event.pressed) {
|
||||
if(++symb_shift > 2) symb_shift = 2;
|
||||
if(symb_shift == 2) {
|
||||
symb_lock = !symb_lock;
|
||||
} else if(symb_shift == 1) {
|
||||
layer_on(SYMB);
|
||||
}
|
||||
} else {
|
||||
if(--symb_shift < 0) symb_shift = 0;
|
||||
if((symb_shift == 0) && (!symb_lock)) layer_off(SYMB);
|
||||
}
|
||||
break;
|
||||
|
||||
case LMdia:
|
||||
if (record->event.pressed) {
|
||||
if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
|
||||
register_code(KC_TAB);
|
||||
} else {
|
||||
if(++mdia_shift > 2) mdia_shift = 2;
|
||||
if(mdia_shift == 2) {
|
||||
mdia_lock = !mdia_lock;
|
||||
} else if(mdia_shift == 1) {
|
||||
layer_on(MDIA);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
|
||||
unregister_code(KC_TAB);
|
||||
} else {
|
||||
if(--mdia_shift < 0) mdia_shift = 0;
|
||||
if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case LSpec:
|
||||
if (record->event.pressed) {
|
||||
if (record->tap.count && !record->tap.interrupted) {
|
||||
register_code(KC_EQL);
|
||||
} else {
|
||||
layer_on(SPEC);
|
||||
}
|
||||
} else {
|
||||
if(record->tap.count && !record->tap.interrupted) {
|
||||
unregister_code(KC_EQL);
|
||||
} else {
|
||||
layer_off(SPEC);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case RSymb:
|
||||
if (record->event.pressed) {
|
||||
if (record->tap.count && (!symb_shift) && (!symb_lock)) {
|
||||
register_code(KC_QUOT);
|
||||
} else {
|
||||
if(++symb_shift > 2) symb_shift = 2;
|
||||
if(symb_shift == 2) {
|
||||
symb_lock = !symb_lock;
|
||||
} else if(symb_shift == 1) {
|
||||
layer_on(SYMB);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(record->tap.count && symb_shift == 0) {
|
||||
unregister_code(KC_QUOT);
|
||||
} else {
|
||||
if(--symb_shift < 0) symb_shift = 0;
|
||||
if((!symb_shift) && (!symb_lock)) layer_off(SYMB);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case RMdia:
|
||||
if (record->event.pressed) {
|
||||
if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
|
||||
register_code(KC_BSLS);
|
||||
} else {
|
||||
if(++mdia_shift > 2) mdia_shift = 2;
|
||||
if(mdia_shift == 2) {
|
||||
mdia_lock = !mdia_lock;
|
||||
} else if(mdia_shift == 1) {
|
||||
layer_on(MDIA);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
|
||||
unregister_code(KC_BSLS);
|
||||
} else {
|
||||
if(--mdia_shift < 0) mdia_shift = 0;
|
||||
if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case RSpec:
|
||||
if (record->event.pressed) {
|
||||
if (record->tap.count && !record->tap.interrupted) {
|
||||
register_code(KC_MINS);
|
||||
} else {
|
||||
layer_on(SPEC);
|
||||
}
|
||||
} else {
|
||||
if(record->tap.count && !record->tap.interrupted) {
|
||||
unregister_code(KC_MINS);
|
||||
} else {
|
||||
layer_off(SPEC);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// mouse diagonals
|
||||
|
||||
case MUL: // mouse up left
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_UP);
|
||||
mousekey_on(KC_MS_LEFT);
|
||||
mousekey_send();
|
||||
} else {
|
||||
mousekey_off(KC_MS_UP);
|
||||
mousekey_off(KC_MS_LEFT);
|
||||
mousekey_send();
|
||||
}
|
||||
break;
|
||||
|
||||
case MUR: // mouse up right
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_UP);
|
||||
mousekey_on(KC_MS_RIGHT);
|
||||
mousekey_send();
|
||||
} else {
|
||||
mousekey_off(KC_MS_UP);
|
||||
mousekey_off(KC_MS_RIGHT);
|
||||
mousekey_send();
|
||||
}
|
||||
break;
|
||||
|
||||
case MDL: // mouse down left
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_DOWN);
|
||||
mousekey_on(KC_MS_LEFT);
|
||||
mousekey_send();
|
||||
} else {
|
||||
mousekey_off(KC_MS_DOWN);
|
||||
mousekey_off(KC_MS_LEFT);
|
||||
mousekey_send();
|
||||
}
|
||||
break;
|
||||
|
||||
case MDR: // mouse down right
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_DOWN);
|
||||
mousekey_on(KC_MS_RIGHT);
|
||||
mousekey_send();
|
||||
} else {
|
||||
mousekey_off(KC_MS_DOWN);
|
||||
mousekey_off(KC_MS_RIGHT);
|
||||
mousekey_send();
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// none
|
||||
break;
|
||||
}
|
||||
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
|
||||
};
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
// shift or caps lock turns on red light
|
||||
if(caps_shift || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) {
|
||||
ergodox_right_led_1_on();
|
||||
} else {
|
||||
ergodox_right_led_1_off();
|
||||
}
|
||||
|
||||
// Symbol layer turns on green light
|
||||
if(layer_state & (1UL<<SYMB)) {
|
||||
ergodox_right_led_2_on();
|
||||
} else {
|
||||
ergodox_right_led_2_off();
|
||||
}
|
||||
|
||||
// Media layer turns on blue light
|
||||
if(layer_state & (1UL<<MDIA)) {
|
||||
ergodox_right_led_3_on();
|
||||
} else {
|
||||
ergodox_right_led_3_off();
|
||||
}
|
||||
};
|
||||
|
After Width: | Height: | Size: 62 KiB |
@ -0,0 +1,27 @@
|
||||
[{x:3.5,a:7},"",{x:10.5},""],
|
||||
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
|
||||
[{y:-0.875,x:5.5},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""],
|
||||
[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#54d6de"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"],
|
||||
[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
|
||||
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
|
||||
[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
|
||||
[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
|
||||
[{y:-0.375,x:3.5},"",{x:10.5},""],
|
||||
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
|
||||
[{y:-0.875,x:5.5},"",{x:6.5},""],
|
||||
[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
|
||||
[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
|
||||
[{y:-0.75,x:3.5},"",{x:10.5},""],
|
||||
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
|
||||
[{y:-0.875,x:5.5},"",{x:6.5},""],
|
||||
[{y:-0.875,w:1.5},"","",{x:14.5},"",{c:"#2277ff",w:1.5},"RShift"],
|
||||
[{y:-0.375,x:3.5,c:"#cccccc"},"",{x:10.5},""],
|
||||
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
|
||||
[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
|
||||
[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
|
||||
[{h:2},"",{h:2},"",""],
|
||||
[{x:2},""],
|
||||
[{r:-30,rx:13,y:-1,x:-3},"",""],
|
||||
[{x:-3},"",{h:2},"",{h:2},""],
|
||||
[{x:-3},""]
|
||||
|
@ -0,0 +1,45 @@
|
||||
# teckinesis Layout
|
||||
|
||||
*A blend of TECK and Kinesis layouts, based on ["The Ordinary Layout" by Nicholas Keene](http://qmk.fm/keyboards/ergodox_ez/keymaps/ordinary/#the-ordinary-layout-a-familiar-and-powerful-layout)*
|
||||
|
||||
I love "The Ordinary Layout", but I still use a [TECK](https://www.trulyergonomic.com/store/index.php)
|
||||
at the office, and I found the transition back and forth to be a bit more difficult than I expected.
|
||||
|
||||
This layout consists of only slight changes to "The Ordinary Layout" based on the layouts of the
|
||||
[(original) TECK Model 209](https://www.trulyergonomic.com/store/layout-designer--configurator--reprogrammable--truly-ergonomic-mechanical-keyboard/#KTo7PD0+P0BBQkNERUw5394rNR4fICEi4yMkJSYnLS4xOBQaCBUXTBwYDBITLzDhBBYHCQorCw0ODzPl4B0bBhkFKhEQNjc05OPiSktOTSwoLFBSUU/mZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX2BhAFZXAAAAAAAAAAAAXF1eVAAAAAAAAAAAAABZWltVAAAAAAAAAAAAYgBjAAAAAAAAAAAAWFcAAAAAAACTAQAMAiMBAAwBigEADAIhAQAMAZQBAAwBkgEADAGDAQAMALYBAAwAzQEADAC1AQAMAOIBAAwA6gEADADpAQAMALhJAEYAAAAAAEitR64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACk6Ozw9Pj9AQUJDREVMOd/eKzUeHyAhIuMjJCUmJy0uMTgUGggVF0wcGAwSEy8w4QQWBwkKKwsNDg8z5eMdGwYZBSoREDY3NOfg4kpLTk0sKCxQUlFP5uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF9gYQBWVwAAAAAAAAAAAFxdXlQAAAAAAAAAAAAAWVpbVQAAAAAAAAAAAGIAYwAAAAAAAAAAAFhXAAAAAAAAkwEADAIjAQAMAYoBAAwCIQEADAGUAQAMAZIBAAwBgwEADAC2AQAMAM0BAAwAtQEADADiAQAMAOoBAAwA6QEADAC4SQBGAAAAAABIrUeuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) and
|
||||
the [Kinesis Advantage](http://www.kinesis-ergo.com/wp-content/uploads/2013/06/advantage_layout_win.pdf)
|
||||
|
||||
## The Base Layout ##
|
||||
|
||||
[teckinesis (Base Layer)](http://www.keyboard-layout-editor.com/#/gists/befd4c5800d92114aa9e50d4f7c0dfb0)
|
||||
![teckinesis base layout](teckinesis-base.png)
|
||||
|
||||
### Changes from The Ordinary Layout ###
|
||||
|
||||
* Moved KC_MINS from the key left of the 6 to the RSpec key.
|
||||
* Moved KC_EQL from RSpec to LSpec.
|
||||
* Moved KC_GRV from LSpec to the key left of the 6.
|
||||
* Mdded KC_BSLS to the left Meh key.
|
||||
* Added KC_SLSH to the left Hyper key.
|
||||
* Added KC_LBRC to the right Hyper key.
|
||||
* Added KC_RBRC to the right Meh key.
|
||||
|
||||
## The Symbols Layer ##
|
||||
|
||||
[teckinesis (Symbols Layer)](http://www.keyboard-layout-editor.com/#/gists/e6ddc4e9e0d194b3e52ac0616238ab61)
|
||||
![teckinesis symbols layout](teckinesis-symbol.png)
|
||||
|
||||
### Changes from The Ordinary Layout ###
|
||||
|
||||
* None.
|
||||
|
||||
## The Media Layer ##
|
||||
|
||||
[teckinesis (Media Layer)](http://www.keyboard-layout-editor.com/#/gists/41ff65e6a7c490211fd6702fb34d9908)
|
||||
![teckinesis media layout](teckinesis-media.png)
|
||||
|
||||
### Changes from The Ordinary Layout ###
|
||||
|
||||
* Removed Power, Sleep, Mail, My Computer keys.
|
||||
(I kept hitting these while using the mouse/cursor. =P)
|
||||
|
@ -0,0 +1,434 @@
|
||||
[
|
||||
{
|
||||
"name": "teckinesis (Base Layer)",
|
||||
"author": "Will Wolff-Myren",
|
||||
"notes": "# teckinesis Layout # \r\n\r\n*A blend of TECK and Kinesis layouts, based on [\"The Ordinary Layout\" by Nicholas Keene](http://qmk.fm/keyboards/ergodox_ez/keymaps/ordinary/#the-ordinary-layout-a-familiar-and-powerful-layout)*\r\n\r\n## The Base Layout ##\r\n\r\n![teckinesis base layout](teckinesis-base.png)\r\n\r\n## The Symbols Layer ##\r\n\r\n![teckinesis symbols layout](teckinesis-symbol.png)\r\n\r\n## The Media Layer ##\r\n\r\n(placeholder)\r\n",
|
||||
"switchMount": "cherry",
|
||||
"switchBrand": "gateron",
|
||||
"switchType": "KS-3-Tea"
|
||||
},
|
||||
[
|
||||
{
|
||||
"x": 3.5
|
||||
},
|
||||
"#\n3",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"*\n8"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"@\n2",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"$\n4",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"&\n7",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"(\n9"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5
|
||||
},
|
||||
"%\n5",
|
||||
{
|
||||
"c": "#ff4444"
|
||||
},
|
||||
"Esc",
|
||||
{
|
||||
"x": 4.5,
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"~\n`",
|
||||
"^\n6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#2277ff",
|
||||
"w": 1.5
|
||||
},
|
||||
"Special\n\n+\n\n\n\nShift\n=",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"!\n1",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
")\n0",
|
||||
{
|
||||
"c": "#2277ff",
|
||||
"w": 1.5
|
||||
},
|
||||
"_\n\nSpecial\n\n\n\n-\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"E",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"I"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"W",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"R",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"U",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"O"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5
|
||||
},
|
||||
"T",
|
||||
{
|
||||
"h": 1.5
|
||||
},
|
||||
"{\n\n\n\n\n\n[",
|
||||
{
|
||||
"x": 4.5,
|
||||
"h": 1.5
|
||||
},
|
||||
"}\n\n\n\n\n\n]",
|
||||
"Y"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#2277ff",
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
4
|
||||
],
|
||||
"w": 1.5
|
||||
},
|
||||
"Media\n\n<i class='kb kb-Line-Start-End'></i>\n\n\n\nShift",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"Q",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
"P",
|
||||
{
|
||||
"c": "#2277ff",
|
||||
"f": 3,
|
||||
"w": 1.5
|
||||
},
|
||||
"|\n\\\nMedia\n\n\n\n\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"D",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"K"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"S",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"F",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"J",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"L"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5
|
||||
},
|
||||
"G",
|
||||
{
|
||||
"x": 6.5
|
||||
},
|
||||
"H"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#2277ff",
|
||||
"w": 1.5
|
||||
},
|
||||
"Symbols\n\n\n\n\n\nShift",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"A",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
":\n;",
|
||||
{
|
||||
"c": "#2277ff",
|
||||
"f": 3,
|
||||
"w": 1.5
|
||||
},
|
||||
"\"\n'\nSymbols\n\n\n\n\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.625,
|
||||
"x": 6.5,
|
||||
"c": "#54d6de",
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
4,
|
||||
1
|
||||
],
|
||||
"h": 1.5
|
||||
},
|
||||
"< Tab\n\n\nShift Tab",
|
||||
{
|
||||
"x": 4.5,
|
||||
"h": 1.5
|
||||
},
|
||||
"Tab >\n\n\nTab"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.75,
|
||||
"x": 3.5,
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"C",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"<\n,"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"X",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"V",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"M",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
">\n."
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5
|
||||
},
|
||||
"B",
|
||||
{
|
||||
"x": 6.5
|
||||
},
|
||||
"N"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#2277ff",
|
||||
"w": 1.5
|
||||
},
|
||||
"Capitals\n\n\n\n\n\nShift",
|
||||
{
|
||||
"c": "#cccccc"
|
||||
},
|
||||
"Z",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
"?\n/",
|
||||
{
|
||||
"c": "#2277ff",
|
||||
"f": 3,
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\nCapitals\n\n\n\n\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#77aaff",
|
||||
"fa": [
|
||||
5,
|
||||
0,
|
||||
4,
|
||||
1
|
||||
]
|
||||
},
|
||||
"<i class='mss mss-Unicode-Option-3'></i>\n\n\nLAlt",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"<i class='mss mss-Unicode-Option-3'></i>\n\n\nRAlt"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"fa": [
|
||||
5,
|
||||
1
|
||||
]
|
||||
},
|
||||
"\nHyper\n?\n/",
|
||||
{
|
||||
"x": 1,
|
||||
"fa": [
|
||||
5,
|
||||
1,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
|
||||
{
|
||||
"x": 1,
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"{\n[\n\nHyper"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.75,
|
||||
"x": 0.5
|
||||
},
|
||||
"Ctrl\n\n\nLCtrl",
|
||||
{
|
||||
"f2": 1
|
||||
},
|
||||
"\nMeh\n|\n\\",
|
||||
{
|
||||
"x": 14.5,
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1
|
||||
]
|
||||
},
|
||||
"}\n]\n\nMeh",
|
||||
"Ctrl\n\n\nRCtrl"
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": 30,
|
||||
"rx": 6.5,
|
||||
"ry": 4.25,
|
||||
"y": -1,
|
||||
"x": 1,
|
||||
"c": "#54d6de"
|
||||
},
|
||||
"Home",
|
||||
"End"
|
||||
],
|
||||
[
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"< Del\n\n\nBackspace",
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"Del >\n\n\nDelete",
|
||||
"Page\n\n\n\n\n\nUp"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2
|
||||
},
|
||||
"Page\n\n\n\n\n\nDown"
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": -30,
|
||||
"rx": 13,
|
||||
"y": -1,
|
||||
"x": -3
|
||||
},
|
||||
"Left",
|
||||
"Right"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -3
|
||||
},
|
||||
"Up",
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"Enter",
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"Space"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -3
|
||||
},
|
||||
"Down"
|
||||
]
|
||||
]
|
After Width: | Height: | Size: 92 KiB |
@ -0,0 +1,436 @@
|
||||
[
|
||||
{
|
||||
"name": "teckinesis (MediaLayer)",
|
||||
"author": "Will Wolff-Myren",
|
||||
"switchMount": "cherry",
|
||||
"switchBrand": "gateron",
|
||||
"switchType": "KS-3-Tea"
|
||||
},
|
||||
[
|
||||
{
|
||||
"x": 3.5,
|
||||
"c": "#99de2a"
|
||||
},
|
||||
"F13",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"F18"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"F12",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"F14",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"F17",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"F19"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5
|
||||
},
|
||||
"F15",
|
||||
{
|
||||
"c": "#ff4444"
|
||||
},
|
||||
"Esc",
|
||||
{
|
||||
"x": 4.5
|
||||
},
|
||||
"Esc",
|
||||
{
|
||||
"c": "#99de2a"
|
||||
},
|
||||
"F16"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 1.5
|
||||
},
|
||||
"F11",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
"F20"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.995,
|
||||
"c": "#000000",
|
||||
"t": "#ff0000",
|
||||
"w": 1.5
|
||||
},
|
||||
"Media\n\n\n\n\n\nShift",
|
||||
{
|
||||
"x": 16.5,
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\nMedia\n\n\n\n\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.3799999999999999,
|
||||
"x": 3.5,
|
||||
"c": "#ff8500",
|
||||
"t": "#000000"
|
||||
},
|
||||
"Mouse\n\n\n\n\n\nUp",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"Cursor\n\n\n\n\n\nUp"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"Mouse\n\n\n\n\n\nUpLeft",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"Mouse\n\n\n\n\n\nUpRgt",
|
||||
{
|
||||
"x": 8.5,
|
||||
"c": "#ffb063"
|
||||
},
|
||||
"Home",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"Page\n\n\n\n\n\nUp"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#e6e067"
|
||||
},
|
||||
"Vol\n\n\n\n\n\nUp",
|
||||
{
|
||||
"c": "#ffb063",
|
||||
"h": 1.5
|
||||
},
|
||||
"Scroll\n\n\n\n\n\nUp",
|
||||
{
|
||||
"x": 4.5,
|
||||
"h": 1.5
|
||||
},
|
||||
"Scroll\n\n\n\n\n\nUp",
|
||||
{
|
||||
"c": "#e6e067"
|
||||
},
|
||||
"Print\n\n\n\n\n\nScreen"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 1.5,
|
||||
"c": "#737373",
|
||||
"a": 7
|
||||
},
|
||||
"",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
""
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.9950000000000001,
|
||||
"c": "#2277ff",
|
||||
"a": 4,
|
||||
"w": 1.5
|
||||
},
|
||||
"Symbols\n\n\n\n\n\nShift",
|
||||
{
|
||||
"x": 16.5,
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\nSymbols\n\n\n\n\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.3799999999999999,
|
||||
"x": 3.5,
|
||||
"c": "#ff8500"
|
||||
},
|
||||
"Mouse\n\n\n\n\n\nDown",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"Cursor\n\n\n\n\n\nDown"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"Mouse\n\n\n\n\n\nLeft",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"Mouse\n\n\n\n\n\nRight",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"Cursor\n\n\n\n\n\nLeft",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"Cursor\n\n\n\n\n\nRight"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#e6e067"
|
||||
},
|
||||
"Vol\n\n\n\n\n\nDown",
|
||||
{
|
||||
"x": 6.5
|
||||
},
|
||||
"Num\n\n\n\n\n\nLock"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 1.5,
|
||||
"c": "#737373",
|
||||
"a": 7
|
||||
},
|
||||
"",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
""
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.9950000000000001,
|
||||
"c": "#2277ff",
|
||||
"a": 4,
|
||||
"w": 1.5
|
||||
},
|
||||
"Capitals\n\n\n\n\n\nShift",
|
||||
{
|
||||
"x": 16.5,
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\nCapitals\n\n\n\n\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.6299999999999999,
|
||||
"x": 6.5,
|
||||
"c": "#ffb063",
|
||||
"h": 1.5
|
||||
},
|
||||
"Scroll\n\n\n\n\n\nDown",
|
||||
{
|
||||
"x": 4.5,
|
||||
"h": 1.5
|
||||
},
|
||||
"Scroll\n\n\n\n\n\nDown"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.75,
|
||||
"x": 3.5,
|
||||
"c": "#ff8500"
|
||||
},
|
||||
"Mouse\n\n\n\n\n\nDown",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"Cursor\n\n\n\n\n\nDown"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"Mouse\n\n\n\n\n\nDnLeft",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"Mouse\n\n\n\n\n\nDnRgt",
|
||||
{
|
||||
"x": 8.5,
|
||||
"c": "#ffb063"
|
||||
},
|
||||
"End",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"Page\n\n\n\n\n\nDown"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#e6e067"
|
||||
},
|
||||
"Mute",
|
||||
{
|
||||
"x": 6.5,
|
||||
"c": "#737373",
|
||||
"a": 7
|
||||
},
|
||||
""
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 1.5
|
||||
},
|
||||
"",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
""
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.9950000000000001,
|
||||
"c": "#2277ff",
|
||||
"a": 4,
|
||||
"w": 1.5
|
||||
},
|
||||
"Ctrl",
|
||||
{
|
||||
"x": 16.5,
|
||||
"w": 1.5
|
||||
},
|
||||
"Ctrl"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.3799999999999999,
|
||||
"x": 3.5,
|
||||
"c": "#ff8500"
|
||||
},
|
||||
"Middle\n\n\n\n\n\nClick",
|
||||
{
|
||||
"x": 10.5,
|
||||
"c": "#ffb063",
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"Delete\n\n\nOption"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#ff8500"
|
||||
},
|
||||
"Left\n\n\n\n\n\nClick",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"Right\n\n\n\n\n\nClick",
|
||||
{
|
||||
"x": 8.5,
|
||||
"c": "#ffb063"
|
||||
},
|
||||
"Insert\n\n\nCmd",
|
||||
{
|
||||
"x": 1,
|
||||
"c": "#77aaff"
|
||||
},
|
||||
"Hyper"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.75,
|
||||
"x": 0.5
|
||||
},
|
||||
"Alt\n\n\nLAlt",
|
||||
"Meh",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
"Meh",
|
||||
"Alt\n\n\nRAlt"
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": 30,
|
||||
"rx": 6.5,
|
||||
"ry": 4.25,
|
||||
"y": -1,
|
||||
"x": 1,
|
||||
"c": "#ccbb00"
|
||||
},
|
||||
"Stop\n\n\nBrowser",
|
||||
"Reload\n\n\nBrowser"
|
||||
],
|
||||
[
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"< Web\n\n\nBrowser",
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"Web >\n\n\nBrowser",
|
||||
"Search\n\n\nBrowser"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2
|
||||
},
|
||||
"Home\n\n\nBrowser"
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": -30,
|
||||
"rx": 13,
|
||||
"y": -1,
|
||||
"x": -3
|
||||
},
|
||||
"Prev\n\n\nAudio\n\n\nTrack",
|
||||
"Next\n\n\nAudio\n\n\nTrack"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -3,
|
||||
"c": "#e6e067"
|
||||
},
|
||||
"Vol\n\n\n\n\n\nUp",
|
||||
{
|
||||
"c": "#ccbb00",
|
||||
"h": 2
|
||||
},
|
||||
"Stop\n\n\nAudio",
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"Play\n\n\nAudio\n\n\nPause"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -3,
|
||||
"c": "#e6e067"
|
||||
},
|
||||
"Vol\n\n\n\n\n\nDown"
|
||||
]
|
||||
]
|
After Width: | Height: | Size: 110 KiB |
@ -0,0 +1,422 @@
|
||||
[
|
||||
{
|
||||
"name": "teckinesis (Symbol Layer)",
|
||||
"author": "Will Wolff-Myren",
|
||||
"switchMount": "cherry",
|
||||
"switchBrand": "gateron",
|
||||
"switchType": "KS-3-Tea"
|
||||
},
|
||||
[
|
||||
{
|
||||
"x": 3.5,
|
||||
"c": "#99de2a"
|
||||
},
|
||||
"F3",
|
||||
{
|
||||
"x": 10.5
|
||||
},
|
||||
"F8"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5
|
||||
},
|
||||
"F2",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"F4",
|
||||
{
|
||||
"x": 8.5
|
||||
},
|
||||
"F7",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"F9"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5
|
||||
},
|
||||
"F5",
|
||||
{
|
||||
"c": "#ff4444"
|
||||
},
|
||||
"Esc",
|
||||
{
|
||||
"x": 4.5,
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"_\n\n\n\n\n\n-",
|
||||
{
|
||||
"c": "#99de2a"
|
||||
},
|
||||
"F6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#2277ff",
|
||||
"w": 1.5
|
||||
},
|
||||
"Special\n\n\n\n\n\nShift",
|
||||
{
|
||||
"c": "#99de2a"
|
||||
},
|
||||
"F1",
|
||||
{
|
||||
"x": 14.5
|
||||
},
|
||||
"F10",
|
||||
{
|
||||
"c": "#2277ff",
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\nSpecial\n\n\n\n\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"{",
|
||||
{
|
||||
"x": 10.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"8"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"@",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"}",
|
||||
{
|
||||
"x": 8.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"7",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"9"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"&",
|
||||
{
|
||||
"h": 1.5
|
||||
},
|
||||
"<",
|
||||
{
|
||||
"x": 4.5,
|
||||
"h": 1.5
|
||||
},
|
||||
">",
|
||||
"|"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#2277ff",
|
||||
"w": 1.5
|
||||
},
|
||||
"Media\n\n\n\n\n\nShift",
|
||||
{
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"!",
|
||||
{
|
||||
"x": 14.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"/",
|
||||
{
|
||||
"c": "#2277ff",
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\nMedia\n\n\n\n\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"(",
|
||||
{
|
||||
"x": 10.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"5"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"$",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
")",
|
||||
{
|
||||
"x": 8.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"4",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"6"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"`",
|
||||
{
|
||||
"x": 6.5
|
||||
},
|
||||
"/"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#000000",
|
||||
"t": "#ff0000",
|
||||
"w": 1.5
|
||||
},
|
||||
"Symbols\n\n\n\n\n\nShift",
|
||||
{
|
||||
"c": "#bbddbb",
|
||||
"t": "#000000"
|
||||
},
|
||||
"#",
|
||||
{
|
||||
"x": 14.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"*",
|
||||
{
|
||||
"c": "#000000",
|
||||
"t": "#ff0000",
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\nSymbols\n\n\n\n\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.625,
|
||||
"x": 6.5,
|
||||
"c": "#54d6de",
|
||||
"t": "#000000",
|
||||
"fa": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"h": 1.5
|
||||
},
|
||||
"Tab >\n\n\nTab",
|
||||
{
|
||||
"x": 4.5,
|
||||
"h": 1.5
|
||||
},
|
||||
"< Tab\n\n\nShift Tab"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.75,
|
||||
"x": 3.5,
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"[",
|
||||
{
|
||||
"x": 10.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"2"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"^",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"]",
|
||||
{
|
||||
"x": 8.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"1",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"3"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 5.5,
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"~",
|
||||
{
|
||||
"x": 6.5
|
||||
},
|
||||
"\\"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"c": "#2277ff",
|
||||
"w": 1.5
|
||||
},
|
||||
"Capitals\n\n\n\n\n\nShift",
|
||||
{
|
||||
"c": "#bbddbb"
|
||||
},
|
||||
"%",
|
||||
{
|
||||
"x": 14.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"-",
|
||||
{
|
||||
"c": "#2277ff",
|
||||
"w": 1.5
|
||||
},
|
||||
"\n\nCapitals\n\n\n\n\nShift"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.375,
|
||||
"x": 3.5,
|
||||
"c": "#77aaff"
|
||||
},
|
||||
"<i class='mss mss-Unicode-Option-3'></i>\n\n\nLAlt",
|
||||
{
|
||||
"x": 10.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
".\n\n\nOption"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.875,
|
||||
"x": 2.5,
|
||||
"c": "#77aaff"
|
||||
},
|
||||
"Hyper",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
|
||||
{
|
||||
"x": 8.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"0\n\n\nCmd",
|
||||
{
|
||||
"x": 1
|
||||
},
|
||||
"=\n\n\nHyper"
|
||||
],
|
||||
[
|
||||
{
|
||||
"y": -0.75,
|
||||
"x": 0.5,
|
||||
"c": "#77aaff"
|
||||
},
|
||||
"Ctrl\n\n\nLCtrl",
|
||||
"Meh",
|
||||
{
|
||||
"x": 14.5,
|
||||
"c": "#89b087"
|
||||
},
|
||||
"+\n\n\nMeh",
|
||||
"Enter\n\n\nCtrl"
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": 30,
|
||||
"rx": 6.5,
|
||||
"ry": 4.25,
|
||||
"y": -1,
|
||||
"x": 1,
|
||||
"c": "#54d6de"
|
||||
},
|
||||
"Left",
|
||||
"Right"
|
||||
],
|
||||
[
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"Space",
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"Enter",
|
||||
"Up"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": 2
|
||||
},
|
||||
"Down"
|
||||
],
|
||||
[
|
||||
{
|
||||
"r": -30,
|
||||
"rx": 13,
|
||||
"y": -1,
|
||||
"x": -3
|
||||
},
|
||||
"Home",
|
||||
"End"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -3
|
||||
},
|
||||
"Page\n\n\n\n\n\nUp",
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"< Del\n\n\nBackspace",
|
||||
{
|
||||
"h": 2
|
||||
},
|
||||
"Del >\n\n\nDelete"
|
||||
],
|
||||
[
|
||||
{
|
||||
"x": -3
|
||||
},
|
||||
"Page\n\n\n\n\n\nDown"
|
||||
]
|
||||
]
|
After Width: | Height: | Size: 95 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* TypeMatrix-2030-like keymap */
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "led.h"
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
|
@ -0,0 +1,44 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2013 Oleg Kostyuk <cub.uanic@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.h"
|
||||
/*
|
||||
* 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
|
||||
//#define DEBUG_MATRIX_SCAN_RATE
|
||||
#define ONESHOT_TAP_TOGGLE 2
|
||||
#define ONESHOT_TIMEOUT 3000
|
||||
|
||||
#endif
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "action_util.h"
|
@ -1,4 +1,2 @@
|
||||
# I don't want my keyboard blinking lights when is suppose to be asleep.
|
||||
SLEEP_LED_ENABLE = no
|
||||
|
||||
CONFIG_H = keymaps/$(KEYMAP)/config.h
|
||||
SLEEP_LED_ENABLE = no
|
Before Width: | Height: | Size: 767 KiB After Width: | Height: | Size: 767 KiB |
Before Width: | Height: | Size: 381 KiB After Width: | Height: | Size: 381 KiB |
Before Width: | Height: | Size: 414 KiB After Width: | Height: | Size: 414 KiB |
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "keymap_plover.h"
|
@ -1,4 +1,4 @@
|
||||
#include "ergodox_ez.h"
|
||||
#include "ergodox.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
// readme
|
@ -0,0 +1,1151 @@
|
||||
:100000000C94D3020C941A030C941A030C941A0344
|
||||
:100010000C941A030C941A030C941A030C941A03EC
|
||||
:100020000C941A030C941A030C94B71F0C94892097
|
||||
:100030000C941A030C941A030C941A030C941A03CC
|
||||
:100040000C941A030C94FC1A0C941A030C941A03C3
|
||||
:100050000C941A030C9414160C941A030C941A039F
|
||||
:100060000C941A030C941A030C941A030C941A039C
|
||||
:100070000C941A030C941A030C941A030C941A038C
|
||||
:100080000C941A030C941A030C941A030C941A037C
|
||||
:100090000C941A030C941A030C941A030C941A036C
|
||||
:1000A0000C941A030C941A030C941A03730C730C1B
|
||||
:1000B000A20CA20CD80CF80C290E290E030D290E47
|
||||
:1000C000B30DB30D1A0E290E290E230EC00DC00D4F
|
||||
:1000D000C00DC00DC00DC00DC00DC00DC00DC00DB8
|
||||
:1000E000C00DC00DC00DC00DC00DC00DD20DDF0D77
|
||||
:1000F000E60DED0DF70DF620182106221821062237
|
||||
:100100005D2180210622D521E821750A01E2012C1A
|
||||
:10011000022C02E274FA011602160104020401091B
|
||||
:1001200002090104020401150215010C020C012848
|
||||
:10013000022800750A01E2012C022C02E274FA0185
|
||||
:10014000170217010802080115021501100210011B
|
||||
:100150000C020C0111021101040204010F020F0133
|
||||
:1001600028022800750A01E2012C022C02E274FA2E
|
||||
:100170000105020501050205010802080107020741
|
||||
:10018000010C020C011702170128022800750A0150
|
||||
:10019000E30116021602E301E3012B022B02E30145
|
||||
:1001A000E30115021502E300750A01E301160216C8
|
||||
:1001B00002E301E3012B022B02E3000000F0A12E79
|
||||
:1001C000004C002A00E100E00000001E00140004C2
|
||||
:1001D000001D00E200E2001F001A0016001B00E3F1
|
||||
:1001E000002B00200008000700060050002C002112
|
||||
:1001F000001500090019004F004B00220017000AEB
|
||||
:1002000000050000003500015301510000E300002B
|
||||
:10021000003400015301510000E3000000290023D5
|
||||
:10022000001C000B00110000002A00240018000D23
|
||||
:1002300000100052004E0025000C000E0036005148
|
||||
:10024000002800260012000F0037002F002B002787
|
||||
:10025000001300334238613000E0002D00310034DB
|
||||
:1002600068E5002C00000001000100010001000110
|
||||
:100270000000003A002F0036020100010001003B9F
|
||||
:1002800000300037020100010001003C002F02266F
|
||||
:10029000020100010001003D0030022702010001BF
|
||||
:1002A0000001003E00340234002E00000001000175
|
||||
:1002B0000001000000010000000100010001000039
|
||||
:1002C000000100000001003F0038002D0033020053
|
||||
:1002D0000001004000240021001E00270001004111
|
||||
:1002E00000250022001F00370001004200260023E5
|
||||
:1002F00000200050000100430025022E022E004F76
|
||||
:10030000000100440045000100010001000000015F
|
||||
:10031000000100010001000100000069000100016E
|
||||
:10032000000100010001006A000100043001000129
|
||||
:1003300000010001004B004E00010001000100011E
|
||||
:100340000001300100010001004A000100033001FA
|
||||
:100350000002300000010001000100000001000067
|
||||
:100360000001001408010000000100000001001A53
|
||||
:100370000830082F082C0200000100350A520C50EA
|
||||
:10038000002C00A9004D00350852005100AC00AA15
|
||||
:100390000019080100510C4F00AB00A8000608012D
|
||||
:1003A0000001000100010001001B08A5000100AED2
|
||||
:1003B000000100010000000000000000000000003B
|
||||
:1003C0000000010204060A0F17202C3A4A5D7187CB
|
||||
:1003D0009DB3C7DAE9F5FCFFFCF5E9DAC7B39D8701
|
||||
:1003E000715D4A3A2C20170F0A0604020100000032
|
||||
:1003F0000000000000000016034500720067006F57
|
||||
:100400000044006F007800200045005A00000016EC
|
||||
:10041000034500720067006F0044006F0078002001
|
||||
:100420000045005A0000000403090409026D00049D
|
||||
:100430000100A0FA090400000103010100092111D3
|
||||
:100440000100012240000705810308000A09040198
|
||||
:10045000000103010200092111010001224D0007E2
|
||||
:1004600005820308000A09040200010300000009D4
|
||||
:1004700021110100012236000705830308000A0943
|
||||
:1004800004030001030000000921110100012239C9
|
||||
:10049000000705840310000112011001000000088C
|
||||
:1004A000EDFE071301000102000105010906A1018B
|
||||
:1004B000050719E029E71500250195087501810256
|
||||
:1004C0000508190129059505750191029501750326
|
||||
:1004D0009101050719002977150025019578750107
|
||||
:1004E0008102C005010980A101850216810026B79D
|
||||
:1004F000001A81002AB700751095018100C0050C13
|
||||
:100500000901A1018503160100269C021A01002A97
|
||||
:100510009C02751095018100C005010902A1010925
|
||||
:1005200001A1000509190129051500250195057589
|
||||
:100530000181029501750381010501093009311519
|
||||
:1005400081257F95027508810609381581257F95DB
|
||||
:100550000175088106050C0A38021581257F950171
|
||||
:1005600075088106C0C005010906A101050719E04B
|
||||
:1005700029E7150025019508750181029501750887
|
||||
:10058000810105081901290595057501910295015B
|
||||
:10059000750391010507190029FF150026FF009535
|
||||
:1005A0000675088100C011241FBECFEFDAE0DEBF60
|
||||
:1005B000CDBF04B603FE27C08091010290910202D4
|
||||
:1005C000A0910302B09104028730904BA740B04B3A
|
||||
:1005D000D1F41092010210920202109203021092C2
|
||||
:1005E000040214BE84B7877F84BF0FB6F894A89521
|
||||
:1005F00080916000886180936000109260000FBE5F
|
||||
:10060000E0E0FFE3099511E0A0E0B1E0E0EAF7E403
|
||||
:1006100002C005900D92A433B107D9F712E0A4E30C
|
||||
:10062000B1E001C01D92A130B107E1F70E94FC1CAE
|
||||
:100630000C94CE230C9400001092B9008AE08093B1
|
||||
:10064000B800089594EA9093BC009091BC0097FF85
|
||||
:10065000FCCF9091B900987F983021F0903111F043
|
||||
:1006600081E008958093BB0084E88093BC00809172
|
||||
:10067000BC0087FFFCCF8091B900887F883111F0E2
|
||||
:10068000803471F780E0089584E98093BC00809104
|
||||
:10069000BC0084FDFCCF08958093BB0084E8809368
|
||||
:1006A000BC008091BC0087FFFCCF9091B900987F7F
|
||||
:1006B00081E0983209F480E0089584E88093BC00DA
|
||||
:1006C0008091BC0087FFFCCF8091BB00089580B370
|
||||
:1006D0008C7080BB81B3836F81BB089580910101D1
|
||||
:1006E000811115C080E40E942203809301018111D1
|
||||
:1006F0000CC082E10E944C0380930101811105C06E
|
||||
:100700008FEF0E944C03809301010E94440384B147
|
||||
:10071000807F84B985B1807F85B98AB1837F8AB9AA
|
||||
:100720008BB1837F8BB93E98469808950C94E4046E
|
||||
:100730000E942509809301010E946E030E946703B5
|
||||
:10074000A5E3B1E0E3E4F1E08EE08E0F11921D929B
|
||||
:100750008E13FCCF0C940F090E9425098093010190
|
||||
:100760000E946E030E946703A5E3B1E0E3E4F1E0B9
|
||||
:100770008EE08E0F11921D928E13FCCF0895BF92C2
|
||||
:10078000CF92DF92EF92FF920F931F93CF93DF935D
|
||||
:1007900080910101882379F0809134018F5F8093EB
|
||||
:1007A0003401811108C00E94250980930101811143
|
||||
:1007B00002C00E94B70805E311E0C0E0D0E0EE24DB
|
||||
:1007C000E394F12CDD24D39495E0C92EC730D105F4
|
||||
:1007D00000F58091010181113CC080E40E94220358
|
||||
:1007E00080930101811112C082E10E944C03809329
|
||||
:1007F000010181110BC0C7010C2E01C0880F0A94A2
|
||||
:10080000EAF780950E944C03809301010E94440303
|
||||
:1008100020C0CA30A1F028F4C83059F0C93061F0C6
|
||||
:1008200005C0CC3089F070F0CD3089F0209A28983E
|
||||
:1008300010C0219A29980DC0229A2A980AC0239A9A
|
||||
:100840002B9807C0529A01C0539A5B9802C03E9AF7
|
||||
:10085000469880EA8A95F1F7C730D10518F580915E
|
||||
:100860000101811144C080E40E94220380930101B0
|
||||
:10087000882311F0B12C12C083E10E944C038093B5
|
||||
:1008800001018111F7CF81E40E94220380930101CD
|
||||
:100890008111F0CF0E945D03B82EB0940E944403F2
|
||||
:1008A0008B2D26C08FB181708D25799902C092E081
|
||||
:1008B00001C090E0892B7C9902C024E001C020E0B7
|
||||
:1008C000822B7D9902C028E001C020E0822B7E9916
|
||||
:1008D00002C090E101C090E0892B9FB19095991FD3
|
||||
:1008E0009927991F9295990F907E892B01C080E0DE
|
||||
:1008F000F8019081981719F08083C09200010E943E
|
||||
:100900006E0321960F5F1F4FCE30D10509F05ECFE9
|
||||
:10091000809100018823A1F08150809300018823F9
|
||||
:1009200029F0F5E0FA95F1F700000AC0A3E4B1E080
|
||||
:10093000E5E3F1E0CF01825F91919D938E13FCCFAF
|
||||
:100940000E94410681E0DF91CF911F910F91FF90AE
|
||||
:10095000EF90DF90CF90BF900895E82FF0E0ED5B2F
|
||||
:10096000FE4F808108950895FC016230B9F028F4AB
|
||||
:10097000662341F0613061F023C06330A9F0643038
|
||||
:10098000C9F01EC082818823D9F088EA91E00895D9
|
||||
:1009900082818823A9F08DE891E0089582818823DF
|
||||
:1009A00079F084E691E008958281882349F083E319
|
||||
:1009B00091E008958281882319F08AE091E00895FA
|
||||
:1009C00080E090E0089508956091B0017091B101C8
|
||||
:1009D0008091B2019091B3010E94081556985E98DB
|
||||
:1009E00025982D9826982E9827982F98813019F0C1
|
||||
:1009F000823021F00895259A2D9A0895269A2E9AEC
|
||||
:100A0000089581E0089581E008950C9403050E9403
|
||||
:100A1000940E2FEF84E39CE0215080409040E1F75A
|
||||
:100A200000C000000C9439160F931F93CF93DF93EF
|
||||
:100A30008C01FC01C081D181CE010E948D13BE01C9
|
||||
:100A40000E94D807EC01B8010E940505882309F42B
|
||||
:100A500012C1B801CE010E946808882309F40BC1B5
|
||||
:100A6000B801CE010E948109882309F404C1C43170
|
||||
:100A7000F0E7DF0708F0CDC0C23080E7D80708F400
|
||||
:100A8000A3C0F8018281882309F4AAC00E947215CC
|
||||
:100A9000811102C00E9458150E94851590E0909324
|
||||
:100AA000F3018093F201C230F0E7DF0721F4809177
|
||||
:100AB000F201816082C0C33080E7D80721F48091C1
|
||||
:100AC000F20182607AC0C430E0E7DE0721F4809151
|
||||
:100AD000F201846072C0C530F0E7DF0719F480913D
|
||||
:100AE000F20127C0C63080E7D80721F48091F201D7
|
||||
:100AF000806163C0C730E0E7DE0721F48091F20136
|
||||
:100B000080625BC0C830F0E7DF0721F48091F2011A
|
||||
:100B1000806453C0C93080E7D80721F48091F20186
|
||||
:100B200080684BC0CA30E0E7DE0729F48091F2010B
|
||||
:100B30008460886042C0CB30F0E7DF0721F4809109
|
||||
:100B4000F2018E7F3AC0CC3080E7D80721F4809143
|
||||
:100B5000F2018D7F32C0CD30E0E7DE0721F48091D5
|
||||
:100B6000F2018B7F2AC0CE30F0E7DF0719F48091C5
|
||||
:100B7000F20122C0CF3080E7D80721F48091F20142
|
||||
:100B80008F7E1BC0C031E0E7DE0721F48091F201C7
|
||||
:100B90008F7D13C0C131F0E7DF0721F48091F201AE
|
||||
:100BA0008F7B0BC0C231D04721F48091F2018F7747
|
||||
:100BB00004C08091F2018B7F877F8093F201809146
|
||||
:100BC000F2010E94891557C0C115E0E7DE0779F0F0
|
||||
:100BD000C130D047A1F081E0809351018093520150
|
||||
:100BE000C801DF91CF911F910F910C940105F8017D
|
||||
:100BF0008281882309F43FC00E9407053CC0F801A8
|
||||
:100C000082818823C1F18091CD0181608093CD01E3
|
||||
:100C100032C0CB3380E7D807A1F4F8018281882362
|
||||
:100C200021F01092510182E016C080915101811192
|
||||
:100C300006C086E20E940C0B86E20E94DF0B82E077
|
||||
:100C400018C0CC33D04739F6F8018281882331F0BF
|
||||
:100C50001092520180E20E942E0C0DC08091520130
|
||||
:100C6000811106C087E20E940C0B87E20E94DF0B15
|
||||
:100C700080E20E94350C80E0DF91CF911F910F91AF
|
||||
:100C800008950C94960308950C9443060C9444061E
|
||||
:100C900026E0729FF001112444E5849FE00DF11DD0
|
||||
:100CA0001124E60FF11DEE0FFF1FE154FE4F859159
|
||||
:100CB00094910E94EA07811560E49607B0F58115CA
|
||||
:100CC00070E3970708F0E6C0803E9105D8F4803CB9
|
||||
:100CD000910508F06CC0883A910578F4853A910541
|
||||
:100CE00008F06BC08130910509F460C108F417C1A8
|
||||
:100CF0008430910508F05AC112C18D3B910508F46A
|
||||
:100D000067C00DC18F3F910509F048F4803F910500
|
||||
:100D100008F0B5C0883E910508F448C100C18115AE
|
||||
:100D200020E2920708F0ADC00895811543E59407CD
|
||||
:100D300090F4811562E5960708F0D0C0811571E541
|
||||
:100D4000970708F0C6C0811520E5920708F0A5C0F6
|
||||
:100D50009F70906A0895811545E59407D8F4811530
|
||||
:100D600064E5960708F0D0C0482F4695469570E296
|
||||
:100D7000479FA00111248370992721E030E0B90139
|
||||
:100D800002C0660F771F8A95E2F7CB01842B952B63
|
||||
:100D90009A680895811576E5970708F4BAC09C0112
|
||||
:100DA00030562115304108F0BAC09F70B6C0FC0122
|
||||
:100DB000EE0FFF1FE55CFF4F6AC0853A910509F40D
|
||||
:100DC000B1C0863A910509F0B0C082E890E4089578
|
||||
:100DD000883A910509F4ACC0893A910509F4ABC091
|
||||
:100DE0008A3A910509F4AAC08B3A910509F4A9C081
|
||||
:100DF0008C3A910509F4A8C08B3B910509F4A7C072
|
||||
:100E00008C3B910509F4A6C08D3A910509F4A5C063
|
||||
:100E1000803B910509F4A4C08E3A910509F4A3C062
|
||||
:100E20008F3A910509F4A2C0813B910509F4A1C054
|
||||
:100E3000823B910509F4A0C0833B910509F49FC052
|
||||
:100E4000843B910509F49EC0853B910509F49DC042
|
||||
:100E5000863B910509F49CC0873B910509F49BC032
|
||||
:100E6000883B910509F49AC0893B910509F499C022
|
||||
:100E70008A3B910509F498C080E094E40895906558
|
||||
:100E80000895FC01FF70EE0FFF1FE554FE4F8591A2
|
||||
:100E9000949108959927906C0895482F437021E00C
|
||||
:100EA00030E002C0220F331F4A95E2F73C68AC01E4
|
||||
:100EB00064E0569547956A95E1F74370342B8F703F
|
||||
:100EC0008695869560E2869FC0011124822B932B24
|
||||
:100ED0000895982F8827816F906A0895482F469526
|
||||
:100EE000469570E2479FA00111248370992721E065
|
||||
:100EF00030E0B90102C0660F771F8A95E2F7CB0197
|
||||
:100F0000842B952B9C680895982F8827846F906A6E
|
||||
:100F100008958F719927982F88279062089580E00F
|
||||
:100F200090E0089581E890E4089583E890E40895BE
|
||||
:100F300082EE94E4089589EE94E408958AEE94E4B0
|
||||
:100F4000089585EB94E4089586EB94E4089583EB8B
|
||||
:100F500094E4089584EB94E4089587EB94E4089571
|
||||
:100F60008CEC94E408958DEC94E4089583E895E482
|
||||
:100F700008958AE895E4089582E995E4089584E95E
|
||||
:100F800095E4089581E296E4089583E296E4089555
|
||||
:100F900084E296E4089585E296E4089586E296E474
|
||||
:100FA000089587E296E408958AE296E40895089504
|
||||
:100FB00096E0799FF001112494E5899FE00DF11DE1
|
||||
:100FC0001124E60FF11DEE0FFF1FE154FE4F859136
|
||||
:100FD000949108958238910549F1B0F481339105D7
|
||||
:100FE00009F458C048F48932910509F44EC08A3298
|
||||
:100FF000910509F454C008958533910509F440C062
|
||||
:101000008933910599F00895833E910529F138F4CB
|
||||
:10101000803E910591F0823E9105A1F00895863EB3
|
||||
:101020009105F9F0873E910531F108952091F20183
|
||||
:1010300020FD3AC021FD38C008958091F20180FD65
|
||||
:1010400035C032C08091F20182FF32C08091F2013E
|
||||
:1010500084FD30C083EE39C08091F20182FD28C04A
|
||||
:10106000F5CF8091F20183FF27C08091F20184FDCA
|
||||
:1010700021C087EE2AC08091F20183FD1DC0F5CF0B
|
||||
:101080008091F20185FD1AC01BC08091F20185FD9F
|
||||
:1010900017C014C08091F20186FD14C015C0809164
|
||||
:1010A000F20186FD11C00EC080EE0FC089E30DC0B5
|
||||
:1010B00082EE0BC080E009C086EE07C089E205C061
|
||||
:1010C00085E303C08AE201C081E390E008950895BA
|
||||
:1010D0000F931F93CF93FB012281211102C0C1E026
|
||||
:1010E00041C08C01C0916001C11125C0843190477D
|
||||
:1010F000B1F70E94670881E0809360010E94DE15CD
|
||||
:1011000090935F0180935E011092530110925501FC
|
||||
:1011100010925401109257011092560110925901E9
|
||||
:101120001092580110925B0110925A0110925D01C9
|
||||
:1011300010925C0117C080915E0190915F010E9446
|
||||
:10114000EA15883C910558F690915301E92FF0E09B
|
||||
:10115000EE0FFF1FEC5AFE4F118300839F5F9093A9
|
||||
:101160005301C0E08C2FCF911F910F910895569895
|
||||
:101170005E9825982D9826982E9827982F988FEF6F
|
||||
:1011800090E0909389008093880090938B008093E7
|
||||
:101190008A0090938D0080938C00259A2D9A2FEFD2
|
||||
:1011A00080E792E0215080409040E1F700C00000CD
|
||||
:1011B000269A2E9A2FEF80E792E0215080409040AF
|
||||
:1011C000E1F700C00000279A2F9A2FEF80E792E006
|
||||
:1011D000215080409040E1F700C0000025982D98F4
|
||||
:1011E0002FEF80E792E0215080409040E1F700C06F
|
||||
:1011F000000026982E982FEF80E792E02150804043
|
||||
:101200009040E1F700C0000027982F9856985E980C
|
||||
:1012100025982D9826982E9827982F98089589EA32
|
||||
:101220008093800089E08093810024982C983F98D7
|
||||
:101230008AB18F748AB96E98479A8BB1806B8BB9DB
|
||||
:10124000769A0E94B7080C94E30480E2809301012F
|
||||
:101250008091610181110EC00E941C0381E0809386
|
||||
:1012600061012FEF83ED90E3215080409040E1F742
|
||||
:1012700000C0000080E40E942203809301018111DC
|
||||
:101280002EC00E944C0380930101811128C00E944E
|
||||
:101290004C0380930101811122C08FE30E944C0313
|
||||
:1012A0008093010181111BC00E94440380E40E94CD
|
||||
:1012B000220380930101811112C08CE00E944C0333
|
||||
:1012C0008093010181110BC00E944C0380930101A6
|
||||
:1012D000811105C08FE30E944C03809301010E949D
|
||||
:1012E0004403809101010895282F882339F090E06C
|
||||
:1012F0002A3010F44D9608950697089587E290E0FD
|
||||
:101300000895FF920F931F93CF93DF93813020E8CE
|
||||
:10131000920708F44DC0FB012281222309F448C042
|
||||
:10132000EC01DF7780916201813079F050F08230FA
|
||||
:10133000C1F482EE0E940C0B87E50E940C0B87E53E
|
||||
:101340000EC082EE0E940C0B0CC080EE0E940C0BB3
|
||||
:1013500081EE0E940C0B88E10E940C0B88E10E9438
|
||||
:10136000DF0B0CE010E0CE01002E02C096958795B1
|
||||
:101370000A94E2F78F700E947409F82E0E940C0BF9
|
||||
:101380008F2D0E94DF0B045011090C3FFFEF1F0748
|
||||
:1013900051F780916201813029F010F0823041F4E0
|
||||
:1013A00082EE04C080EE0E94DF0B81EE0E94DF0B14
|
||||
:1013B00081E0DF91CF911F910F91FF90089590935D
|
||||
:1013C0006801809367010895E0916701F0916801D9
|
||||
:1013D000309721F00190F081E02D099480E008958C
|
||||
:1013E000E0916701F0916801309721F00280F3816C
|
||||
:1013F000E02D09940895E0916701F091680130971C
|
||||
:1014000021F00480F581E02D099408952091650173
|
||||
:10141000309166018217930771F090936601809373
|
||||
:101420006501E0916701F0916801309721F0068035
|
||||
:10143000F781E02D099408952091630130916401B2
|
||||
:101440008217930771F09093640180936301E09198
|
||||
:101450006701F0916801309721F00084F185E02D5B
|
||||
:101460000994089508950C94320A0E94D5150E949B
|
||||
:1014700098030C945B16CF92DF92EF92FF920F933A
|
||||
:101480001F93CF93DF93CDB7DEB72B970FB6F894AA
|
||||
:10149000DEBF0FBECDBF0E94BF038AE6C82E81E02B
|
||||
:1014A000D82E00E010E0E02E802F0E94AD04F6015F
|
||||
:1014B00041916F01F42EF826B1F40F5F1F4F0E30EB
|
||||
:1014C000110589F78FEF89838A831B820E94DE15BD
|
||||
:1014D0008160782F9D838C8349815A816B818D81B6
|
||||
:1014E0000E94DE0A40C09091CD0191FF04C08B871D
|
||||
:1014F0000E94B3048B8520E030E04F2D50E0922F06
|
||||
:10150000BA01022E02C0759567950A94E2F760FF52
|
||||
:1015100024C02E83EF8221E030E0690102C0CC0CB0
|
||||
:10152000DD1C9A95E2F790E08C219D21892B09F42E
|
||||
:1015300020E028870E94DE158160782F9A878987AE
|
||||
:101540004E815F8168858A850E94DE0AF801E6592E
|
||||
:10155000FE4F8081C826C08206C02F5F3F4F2630D5
|
||||
:10156000310569F6AACF0E94F317109169010E9414
|
||||
:10157000E4091817A1F00E94E409809369012B96F1
|
||||
:101580000FB6F894DEBF0FBECDBFDF91CF911F9194
|
||||
:101590000F91FF90EF90DF90CF900C9446062B9622
|
||||
:1015A0000FB6F894DEBF0FBECDBFDF91CF911F9174
|
||||
:1015B0000F91FF90EF90DF90CF900895CF93DF933E
|
||||
:1015C000CDB7DEB72B970FB6F894DEBF0FBECDBFF9
|
||||
:1015D0004F83588769877A878B87DE01119686E06B
|
||||
:1015E000FD0111928A95E9F785E0FE013796019099
|
||||
:1015F0000D928A95E1F749815A816B817C818D81B9
|
||||
:101600009E810E9432112B960FB6F894DEBF0FBE5A
|
||||
:10161000CDBFDF91CF910895CF93882309F4CDC03A
|
||||
:10162000C82F823859F40E94E40981FDC6C089E3BD
|
||||
:101630000E940C140E94D91489E30CC0833879F4F9
|
||||
:101640000E94E40980FDB9C083E50E940C140E9449
|
||||
:10165000D91483E50E944E14CF910C94D914843888
|
||||
:1016600059F40E94E40982FDA8C087E40E940C148A
|
||||
:101670000E94D91487E4EECF8CEF8C0F813A48F4A6
|
||||
:101680008C2F0E943D1A811198C08C2F0E940C143F
|
||||
:10169000E3CF80E28C0F883048F4C77081E001C04E
|
||||
:1016A000880FCA95EAF70E949214D6CF8BE58C0F6B
|
||||
:1016B000833078F4C53A29F0C63A31F083E890E0F7
|
||||
:1016C00005C081E890E002C082E890E0CF910C94E0
|
||||
:1016D000060A88E58C0F853108F06FC0C83A61F1C1
|
||||
:1016E000C93A69F1CA3A71F1CB3A79F1CC3A81F150
|
||||
:1016F000CB3B89F1CC3B91F1CD3A99F1C03BA1F1C3
|
||||
:10170000CE3AA9F1CF3AB1F1C13BB9F1C23BC1F137
|
||||
:10171000C33BC9F1C43BD1F1C53BD9F1C63BE1F1B3
|
||||
:10172000C73BE9F1C83BF1F1C93BF9F1CA3B09F408
|
||||
:101730003FC080E090E03EC082EE90E03BC089EE8A
|
||||
:1017400090E038C08AEE90E035C085EB90E032C082
|
||||
:1017500086EB90E02FC083EB90E02CC084EB90E010
|
||||
:1017600029C087EB90E026C08CEC90E023C08DEC84
|
||||
:1017700090E020C083E891E01DC08AE891E01AC0A3
|
||||
:1017800082E991E017C084E991E014C081E292E01F
|
||||
:1017900011C083E292E00EC084E292E00BC085E2C9
|
||||
:1017A00092E008C086E292E005C087E292E002C0C3
|
||||
:1017B0008AE292E0CF910C941C0ACF91089588237D
|
||||
:1017C00009F44BC0823859F40E94E40981FF45C0F6
|
||||
:1017D00089E30E940C140E94D91489E30CC0833859
|
||||
:1017E00071F40E94E40980FF38C083E50E940C1464
|
||||
:1017F0000E94D91483E50E944E140C94D9148438A5
|
||||
:1018000059F40E94E40982FF28C087E40E940C1466
|
||||
:101810000E94D91487E4EFCF9CEF980F913A58F3C8
|
||||
:1018200090E2980F983050F4877091E001C0990FC2
|
||||
:101830008A95EAF7892F0E949814DFCF9BE5980FCD
|
||||
:10184000933020F480E090E00C94060A885A8531A9
|
||||
:1018500020F480E090E00C941C0A0895882321F085
|
||||
:101860000E9492140C94D9140895882321F00E94A8
|
||||
:1018700098140C94D91408957F928F929F92AF92EE
|
||||
:10188000BF92CF92DF92EF92FF920F931F93CF936D
|
||||
:10189000DF931F92CDB7DEB77C01C62E772EFC01F9
|
||||
:1018A000058102950F70128111110E94AF140E94E0
|
||||
:1018B0000514882379F0112369F080E28C0D8830BB
|
||||
:1018C00048F082E00E94EE130E94051491E0D82EA9
|
||||
:1018D000D92601C0D12CE72DE295EF70F0E0EA5A4D
|
||||
:1018E000FF4F0C947F23872D807F072D0F70882357
|
||||
:1018F00011F00295007F112389F0002309F490C1B3
|
||||
:1019000080E28C0D883020F4802F0E94921403C056
|
||||
:10191000802F0E94A2140E94D91482C18C2D0E9493
|
||||
:10192000DF0B002309F495C180E28C0D883020F490
|
||||
:10193000802F0E94981403C0802F0E94A8140E9438
|
||||
:10194000D91487C1972D907F872D8F70903211F019
|
||||
:101950008295807FCC2021F0F1E0CF16B1F01EC03F
|
||||
:10196000112349F0002309F414C1013009F011C119
|
||||
:101970000E94C2146EC1002319F0013009F469C13C
|
||||
:1019800089830E94C51489810AC1112321F0023084
|
||||
:1019900008F05FC1FEC001115CC101C1112321F03B
|
||||
:1019A000002309F4F6C03CC1002309F4F8C03EC18D
|
||||
:1019B000872D86958695837090E0009719F00197A2
|
||||
:1019C00061F047C1112321F08C2D972D937002C037
|
||||
:1019D00080E090E00E94060A3CC1112321F08C2D8A
|
||||
:1019E000972D937002C080E090E00E941C0A31C1E4
|
||||
:1019F0008C2D112319F00E94FB1602C00E94631760
|
||||
:101A00000E94E81726C1872D837009F052C011117A
|
||||
:101A100020C18C2D829586958770880F880F9C2D0C
|
||||
:101A20009F70892E912CA12CB12C082E04C0880CFB
|
||||
:101A3000991CAA1CBB1C0A94D2F7C4FE14C00FE068
|
||||
:101A400010E020E030E0B901A80104C0440F551FA8
|
||||
:101A5000661F771F8A95D2F7CB01BA016095709502
|
||||
:101A60008095909503C060E070E0CB01272D26950E
|
||||
:101A70002695237030E02230310569F0233031059E
|
||||
:101A800089F0682979298A299B292130310571F04B
|
||||
:101A90000E947A12DEC0682979298A299B290E942E
|
||||
:101AA0009612D7C00E947A12C501B4010E945E123C
|
||||
:101AB000D0C0112319F0872D817001C0869588232D
|
||||
:101AC00009F4C7C08C2D829586958770880F880F82
|
||||
:101AD0009C2D9F70892E912CA12CB12C082E04C016
|
||||
:101AE000880C991CAA1CBB1C0A94D2F7C4FE14C013
|
||||
:101AF0000FE010E020E030E0B901A80104C0440F7D
|
||||
:101B0000551F661F771F8A95D2F7CB01BA016095E2
|
||||
:101B100070958095909503C060E070E0CB01272D13
|
||||
:101B2000269526952370422F50E04230510569F0EA
|
||||
:101B30004330510589F0682979298A299B29413048
|
||||
:101B4000510571F00E94541384C0682979298A29AB
|
||||
:101B50009B290E9470137DC00E945413C501B401DB
|
||||
:101B60000E94381376C08C2D90E0FC01E05EF109F4
|
||||
:101B7000E531F10508F050C0EA59FF4F0C947F237E
|
||||
:101B80000C2D0F70872D8F71112331F00E94D1120F
|
||||
:101B9000802F0E942E0C5DC00E94F212802F0E94A6
|
||||
:101BA000350C57C0112339F0011153C0872D8F71A7
|
||||
:101BB0000E9417134EC0023008F04BC0F7CF11231C
|
||||
:101BC00039F0872D8F710E94D11243C01123C9F3C0
|
||||
:101BD000872D8F710E94F2123CC0112329F0872DAE
|
||||
:101BE0008F710E94BC1235C00E94B21232C0112304
|
||||
:101BF00051F0172D1F71812F0E94D11263E0812FA8
|
||||
:101C00000E94E51326C081E00E94EE13023008F125
|
||||
:101C100082E00E94EE131DC0112331F0002389F2EF
|
||||
:101C20008C2D0E940C0B15C0002391F28C2D0E946C
|
||||
:101C3000DF0B0FC0472D4F706C2DC7010E94B404FD
|
||||
:101C40000E94D61106C0472D4F706C2DC7010E940F
|
||||
:101C5000D707DD20F9F00E94E11380FD1BC0F701DA
|
||||
:101C600012820E94DB130E94D112C7010E94590EFA
|
||||
:101C70000E94DB130F90DF91CF911F910F91FF9086
|
||||
:101C8000EF90DF90CF90BF90AF909F908F907F901C
|
||||
:101C90000C94F2120F90DF91CF911F910F91FF9052
|
||||
:101CA000EF90DF90CF90BF90AF909F908F907F90FC
|
||||
:101CB00008950F931F93CF93DF93EC01888199814F
|
||||
:101CC0002B813C81232BB9F09F3F11F48F3F99F07A
|
||||
:101CD000CE010E941405882371F0688179818A8180
|
||||
:101CE0000E94D7138C010E948C130E945312B801DA
|
||||
:101CF000CE010E943C0CDF91CF911F910F9108956E
|
||||
:101D00000E94AF140E94BF140E9484140E94D91430
|
||||
:101D10000E9499180E94E81780E090E00E94060A4D
|
||||
:101D200080E090E00C941C0A0E949F140C94800E9A
|
||||
:101D30000E94CC13292F22952F7030E02C303105D2
|
||||
:101D40004CF42A3031056CF422503109223031052F
|
||||
:101D5000A8F407C02C30310569F02F30310551F05F
|
||||
:101D60000DC0803F69F018F4803E40F409C0843F04
|
||||
:101D700029F406C093FB882780F9089580E0089530
|
||||
:101D800081E00895CF93DF9300D000D01F92CDB7AC
|
||||
:101D9000DEB70F900F900F900F900F90DF91CF91C3
|
||||
:101DA0000895CF93DF9300D000D000D0CDB7DEB739
|
||||
:101DB00026960FB6F894DEBF0FBECDBFDF91CF9150
|
||||
:101DC00008951F93CF93DF93C091780116E080911F
|
||||
:101DD0007901C81799F0D0E01C9FF0011D9FF00D0C
|
||||
:101DE0001124E658FE4F40815181628173818481C4
|
||||
:101DF00095810E94D10E2196C770E9CFDF91CF91D6
|
||||
:101E00001F9108954091AA015091AB016091AC01DE
|
||||
:101E10007091AD018091AE019091AF010C94D10E03
|
||||
:101E20008091AF0182958F7009F054C08091AC0110
|
||||
:101E3000882309F44FC080917801A09179016091C5
|
||||
:101E4000AA017091AB014091AD015091AE01B6E095
|
||||
:101E50008A1709F43FC090E041155105C1F17F3F59
|
||||
:101E600011F46F3FA1F1B89FF001B99FF00D11245B
|
||||
:101E7000E658FE4F218172132AC02081621327C0C9
|
||||
:101E80002281211124C0238134812417350710F4C5
|
||||
:101E900021503109241B350B283C3105C0F4209119
|
||||
:101EA000AF012F7020612093AF0126E0289FF00141
|
||||
:101EB000299FF00D1124E158FE4F80818F708061C1
|
||||
:101EC00080838AEA91E00E94590E0C94E10E0196FB
|
||||
:101ED0008770BECF0895CF92DF92EF92FF920F935B
|
||||
:101EE0001F93CF93DF93CDB7DEB762970FB6F89409
|
||||
:101EF000DEBF0FBECDBF8C0185E0F801DE011D966F
|
||||
:101F000001900D928A95E1F7D8014C9111965C9160
|
||||
:101F1000119712966C9112971396CD90DC901497AE
|
||||
:101F20003091AA017091AB018091AD019091AE0109
|
||||
:101F3000009709F46BC17F3F19F43F3F09F466C174
|
||||
:101F4000E090AC01EE2009F4C0C02091AF01C816AA
|
||||
:101F5000D90628F0F601E81BF90BCF0104C08095E3
|
||||
:101F600090958C0D9D1DFF24F394883C910578F08D
|
||||
:101F7000F12C207F09F0C6C07C2DD98AC88A8989B6
|
||||
:101F80000E94C20E8AEA91E00E94590EB1C0822FCF
|
||||
:101F9000807F09F046C0751314C0341312C061115C
|
||||
:101FA00010C02F7020612093AF010E94020F8AEAB7
|
||||
:101FB00091E00E94590E8091AF01D80115968C9343
|
||||
:101FC0002EC0CD2819F15F3F11F44F3FF9F0F62EE6
|
||||
:101FD00061111CC0809178012091790136E082174F
|
||||
:101FE00009F45AC090E0389FF001399FF00D112498
|
||||
:101FF000E658FE4F7181571306C07081471303C026
|
||||
:102000007281711103C001968770E9CFF62E6623A5
|
||||
:1020100009F418C18091AF0181608093AF01F12C68
|
||||
:1020200011C1751308C0341306C0611104C080913A
|
||||
:10203000AF01D801C3C04D875E878D859E856A8BB1
|
||||
:102040000E94980E6A898823E1F16623D1F12091DC
|
||||
:10205000AF01822F82958F7090E0029774F080918B
|
||||
:10206000AA019091AB0198878F831986DB86CA8677
|
||||
:102070002C87CE0107960E94590E86E0F801AAEA45
|
||||
:10208000B1E001900D928A95E1F70E94100F0E9435
|
||||
:10209000020FFF24F394D6C04D875E878D859E8501
|
||||
:1020A0000E94CC13292F22952F7030E02230310569
|
||||
:1020B0000CF0BCC09F7009F0B6C0805E883008F498
|
||||
:1020C000C1C0C8010E94590EE4CFC816D90608F451
|
||||
:1020D00053C0F601E81BF90BCF01883C910508F4C9
|
||||
:1020E00050C0F12C7C2DD98AC88A89890E94C20EE1
|
||||
:1020F000EAEAF1E086E0DF011D928A95E9F70E94A5
|
||||
:10210000020FA0C0751314C0341312C0611110C0A7
|
||||
:102110008091AF01F8018583C8010E94590E86E0C5
|
||||
:10212000EAEAF1E0DF011D928A95E9F7FE2C8AC008
|
||||
:102130004D875E878D859E856A8B0E94980E6A8981
|
||||
:10214000882309F4BECF662309F4BBCF2091AF01E9
|
||||
:10215000822F82958F7090E002970CF48ECF809141
|
||||
:10216000AA019091AB019A8389831B82DD82CC8284
|
||||
:102170002E83CE0101967FCF809590958C0D9D1D6D
|
||||
:10218000ACCFF62E662309F49CCF75132EC0341302
|
||||
:102190002CC02091AF0120FD1FC0822F82958F702F
|
||||
:1021A000D9F0D80115962C9315978F3049F08F5F91
|
||||
:1021B000982F9295907F822F8F70892B15968C93F4
|
||||
:1021C000C8010E94590E86E0F801AAEAB1E0019028
|
||||
:1021D0000D928A95E1F793CF86E0F801AAEAB1E083
|
||||
:1021E00001900D928A95E1F72DC04D875E878D8510
|
||||
:1021F0009E850E94980E811140CF8091AF01816031
|
||||
:102200008093AF01C8010E94590E1CC0662309F4D7
|
||||
:1022100058CF4D875E878D859E850E94980E8823B6
|
||||
:1022200009F44FCF2ACF811148CF0CC0243031059B
|
||||
:102230000CF047CF9F7009F440CFF8019581907F53
|
||||
:1022400009F03BCF8F2D62960FB6F894DEBF0FBE1C
|
||||
:10225000CDBFDF91CF911F910F91FF90EF90DF9055
|
||||
:10226000CF9008951F93CF93DF93CDB7DEB72C9710
|
||||
:102270000FB6F894DEBF0FBECDBF4F835887698776
|
||||
:102280007A878B879C87CE0107960E946B0F8823E5
|
||||
:1022900069F08F8198852A853B85232BF1F19F3F3B
|
||||
:1022A00009F063C08F3F09F060C037C086E0FE01CF
|
||||
:1022B0003796DE01119601900D928A95E1F76F81B4
|
||||
:1022C0007885EA85FB85309741F17F3F11F46F3FB8
|
||||
:1022D00021F12091790130E0C90101968770992799
|
||||
:1022E0004091780150E08417950709F447C069834D
|
||||
:1022F0007A83FD83EC8396E0929FD001939FB00D8B
|
||||
:102300001124A658BE4FFE01319601900D929A9568
|
||||
:10231000E1F7809379010E94E10E16E08091780147
|
||||
:10232000909179018917C1F1189FC0011124865835
|
||||
:102330009E4F0E946B0F882379F1E09178011E9FD8
|
||||
:10234000F0011124E658FE4F408151816281738172
|
||||
:10235000848195810E94D10E8091780190E0019650
|
||||
:102360008770992780937801D9CF4F8158856985E7
|
||||
:102370007A858B859C850E94D10ECFCF0E94940ECA
|
||||
:102380001092790110927801EAEAF1E086E0DF012B
|
||||
:102390001D928A95E9F7C1CF2C960FB6F894DEBF4F
|
||||
:1023A0000FBECDBFDF91CF911F910895EF92FF92A5
|
||||
:1023B0000F931F93CF93DF938C01892B09F46CC08B
|
||||
:1023C000F12CEE24E394E8012196F80184918437FE
|
||||
:1023D00040F4843008F051C0813081F0823019F12E
|
||||
:1023E0005BC0853709F444C0A8F19CE7980F90378B
|
||||
:1023F00008F052C08F770E94DF0B41C00E5F1F4F65
|
||||
:10240000FE01C49180E28C0F883048F4C7708E2D95
|
||||
:1024100001C0880FCA95EAF70E94B21414C08C2F2D
|
||||
:102420000E940C0B2DC00E5F1F4FFE01C49180E275
|
||||
:102430008C0F883058F4C7708E2D01C0880FCA9554
|
||||
:10244000EAF70E94B8140E94D9141AC08C2F0E9477
|
||||
:10245000DF0B16C00E5F1F4FFE01C491CC2381F02D
|
||||
:102460008FE99FE00197F1F700C00000C150F6CF5F
|
||||
:102470000E5F1F4FFE01F49003C00E940C0B8E01F3
|
||||
:102480008F2D882309F49FCFEFE9FFE03197F1F713
|
||||
:1024900000C000008150F5CFDF91CF911F910F91C7
|
||||
:1024A000FF90EF90089508956093B4017093B50183
|
||||
:1024B0008093B6019093B7010C94800E0F931F93F5
|
||||
:1024C0000091B4011091B5012091B6013091B7018E
|
||||
:1024D000DC01CB01802B912BA22BB32B8093B40179
|
||||
:1024E0009093B501A093B601B093B7011F910F91DE
|
||||
:1024F0000C94800E0F931F930091B4011091B501BD
|
||||
:102500002091B6013091B701DC01CB0180239123EA
|
||||
:10251000A223B3238093B4019093B501A093B60195
|
||||
:10252000B093B7011F910F910C94800E0F931F93DE
|
||||
:102530000091B4011091B5012091B6013091B7011D
|
||||
:10254000DC01CB0180279127A227B3278093B40118
|
||||
:102550009093B501A093B601B093B7011F910F916D
|
||||
:102560000C94800E1092B0011092B1011092B20141
|
||||
:102570001092B3010C94800E41E050E060E070E0F6
|
||||
:1025800004C0440F551F661F771F8A95D2F74093EA
|
||||
:10259000B0015093B1016093B2017093B3010C94F8
|
||||
:1025A000800E41E050E060E070E004C0440F551F31
|
||||
:1025B000661F771F8A95D2F78091B0019091B10183
|
||||
:1025C000A091B201B091B301482B592B6A2B7B2B00
|
||||
:1025D0004093B0015093B1016093B2017093B30185
|
||||
:1025E0000C94800E41E050E060E070E004C0440FC5
|
||||
:1025F000551F661F771F8A95D2F7409550956095B5
|
||||
:1026000070958091B0019091B101A091B201B0910B
|
||||
:10261000B301482359236A237B234093B00150938D
|
||||
:10262000B1016093B2017093B3010C94800E41E04C
|
||||
:1026300050E060E070E004C0440F551F661F771F34
|
||||
:102640008A95D2F78091B0019091B101A091B20129
|
||||
:10265000B091B301482759276A277B274093B001DF
|
||||
:102660005093B1016093B2017093B3010C94800E4A
|
||||
:102670000F931F930091B0011091B1012091B2010D
|
||||
:102680003091B301DC01CB01802B912BA22BB32B1A
|
||||
:102690008093B0019093B101A093B201B093B301C4
|
||||
:1026A0001F910F910C94800E0F931F930091B00116
|
||||
:1026B0001091B1012091B2013091B301DC01CB0145
|
||||
:1026C00080239123A223B3238093B0019093B1017F
|
||||
:1026D000A093B201B093B3011F910F910C94800E9F
|
||||
:1026E0000F931F930091B0011091B1012091B2019D
|
||||
:1026F0003091B301DC01CB0180279127A227B327BA
|
||||
:102700008093B0019093B101A093B201B093B30153
|
||||
:102710001F910F910C94800E0895CF92DF92EF924B
|
||||
:10272000FF920F931F93CF93DF938C01C090B4015E
|
||||
:10273000D090B501E090B601F090B7018091B00162
|
||||
:102740009091B101A091B201B091B301C82AD92AE8
|
||||
:10275000EA2AFB2ACFE1D0E0D701C6010C2E04C043
|
||||
:10276000B695A795979587950A94D2F780FF06C0EE
|
||||
:10277000B8018C2F0E944806019721F4219760F739
|
||||
:1027800080E001C08C2FDF91CF911F910F91FF90BE
|
||||
:10279000EF90DF90CF900895CF93DF93EC010E94EC
|
||||
:1027A0008D13BE010E944806DF91CF910895CB01A1
|
||||
:1027B0000E94CC1308958091B801859585958595E3
|
||||
:1027C00008958091B8018770089598E0899F9001DD
|
||||
:1027D0001124262B2093B8010C94D1122091B8011A
|
||||
:1027E000809582238093B801982F977069F430E028
|
||||
:1027F000482F552747FD50952417350729F0859513
|
||||
:10280000859585950C94F21208959091B801977072
|
||||
:1028100081E009F480E0089590911501992321F059
|
||||
:1028200090910201911109C020910301309104019E
|
||||
:10283000F90132969FEF40E01FC0982F969596952C
|
||||
:1028400096959F3050F5E0910301F0910401E90F56
|
||||
:10285000F11D877021E030E0A90102C0440F551F2F
|
||||
:102860008A95E2F7CA019181892B818308959F3F60
|
||||
:1028700039F04F5F4E3041F051915813F8CF0DC0F1
|
||||
:102880005111F7CF942FF5CF9F3F39F0F901E90FA0
|
||||
:10289000F11D97FDFA958283089508959091150191
|
||||
:1028A000992321F090910201911109C02091030117
|
||||
:1028B00030910401F9013296205F3F4F1FC0982FDD
|
||||
:1028C0009695969596959F30F0F4E0910301F091DE
|
||||
:1028D0000401E90FF11D877021E030E0A90102C079
|
||||
:1028E000440F551F8A95E2F7CA018095918189238B
|
||||
:1028F000818308953196E217F30729F090819813A8
|
||||
:10290000F9CF1082F7CF089581E090E0E0910301C4
|
||||
:10291000F0910401E80FF91F1082019680319105B2
|
||||
:10292000A9F708959091CC01892B8093CC0108954B
|
||||
:1029300080959091CC0189238093CC0108951092C9
|
||||
:10294000CC0108959091CB01892B8093CB01089500
|
||||
:1029500080959091CB0189238093CB0108951092AB
|
||||
:10296000CB0108959091CA01892B8093CA010895E3
|
||||
:1029700080959091CA0189238093CA01089510928D
|
||||
:10298000CA0108958093B90108951092B90108957C
|
||||
:102990008091030190910401FC0131969C01205F1C
|
||||
:1029A0003F4F80E0919191118F5FE217F307D1F7CC
|
||||
:1029B0000895E0910301F09104018091CC0180839E
|
||||
:1029C000E0910301F091040190818091CB01892B6A
|
||||
:1029D0008083E0910301F091040190818091CA010C
|
||||
:1029E000892B80838091B901882361F0E0910301F4
|
||||
:1029F000F09104019081892B80830E94C814811179
|
||||
:102A00001092B90180910301909104010C94F00996
|
||||
:102A1000CF92DF92EF92FF926C01EE24FF24C1145B
|
||||
:102A2000D104E104F10421F0C701B60120E101C0A5
|
||||
:102A300020E0C72ED82EE92EFF24C114D104E104D2
|
||||
:102A4000F10419F0285FC701B6016B017C0154E065
|
||||
:102A5000F694E794D794C7945A95D1F7C114D1044A
|
||||
:102A6000E104F10419F02C5FC701B6016B017C0190
|
||||
:102A700042E0F694E794D794C7944A95D1F7C114ED
|
||||
:102A8000D104E104F10419F02E5FC701B601DC01A5
|
||||
:102A9000CB01B695A79597958795892B8A2B8B2B7C
|
||||
:102AA00009F02F5F822FFF90EF90DF90CF90089575
|
||||
:102AB0006DEE7EEF80E090E00E94B82360E082E05F
|
||||
:102AC00090E00E94A72360E083E090E00E94A723AB
|
||||
:102AD00060E084E090E00E94A72360E085E090E061
|
||||
:102AE0000C94A72380E090E00E94A12321E08D3E7A
|
||||
:102AF0009E4F09F020E0822F089582E090E00C9430
|
||||
:102B0000992383E090E00C94992384E090E00C9466
|
||||
:102B10009923682F84E090E00C94A7238091F8011A
|
||||
:102B2000843039F11092CE0120E488E190E00FB6B4
|
||||
:102B3000F894A895809360000FBE2093600080E019
|
||||
:102B40000E94460683B7817F846083BF83B781601C
|
||||
:102B500083BF7894889583B78E7F83BF0FB6F89430
|
||||
:102B6000A895809160008861809360001092600059
|
||||
:102B70000FBE08950895CF930E94AC030E94BF0337
|
||||
:102B80000E94BA15C0E08C2F0E94AD04811104C0D0
|
||||
:102B9000CF5FCE30C1F701C081E0CF9108950E9490
|
||||
:102BA000940E0E94E4090C94460682E084BD93E0F2
|
||||
:102BB00095BD9AEF97BD80936E0008952FB7F89456
|
||||
:102BC0008091CF019091D001A091D101B091D2011B
|
||||
:102BD0002FBF0895CF92DF92EF92FF920F931F9332
|
||||
:102BE0002FB7F8944091CF015091D0016091D1015D
|
||||
:102BF0007091D2012FBF6A017B01EE24FF248C016A
|
||||
:102C000020E030E0C016D106E206F30610F4415091
|
||||
:102C100051099A01281B390BC9011F910F91FF908F
|
||||
:102C2000EF90DF90CF9008951F920F920FB60F9202
|
||||
:102C300011248F939F93AF93BF938091CF01909175
|
||||
:102C4000D001A091D101B091D2010196A11DB11D79
|
||||
:102C50008093CF019093D001A093D101B093D20182
|
||||
:102C6000BF91AF919F918F910F900FBE0F901F90CA
|
||||
:102C700018950E943C1FF8942FEF87EA91E62150A7
|
||||
:102C800080409040E1F700C0000087E090EBDC015D
|
||||
:102C90008093010290930202A0930302B093040276
|
||||
:102CA0009CE088E10FB6F894A895809360000FBE71
|
||||
:102CB00090936000FFCF0E947215811102C00E94A4
|
||||
:102CC00058150E947D158093CD010E94851590E0D6
|
||||
:102CD0009093F3018093F20187FB882780F980931A
|
||||
:102CE00002010E948115682F70E080E090E00C9452
|
||||
:102CF00054128091D50180FF0BC06091080185E0DE
|
||||
:102D0000689FB001112475956795759567952BC0DF
|
||||
:102D100081FF09C06091080185E0689FB00111241E
|
||||
:102D20007595679520C082FF07C06091080185E016
|
||||
:102D3000689FB001112417C09091D6019923D1F05A
|
||||
:102D400060910701961788F72091080185E0289F78
|
||||
:102D500090011124929FA001939F500D112470E0C7
|
||||
:102D6000CA010E946B236038710540F4611571053A
|
||||
:102D700039F002C065E070E0862F08958FE708956E
|
||||
:102D800081E008958091D50180FF08C0609106011F
|
||||
:102D900070E0759567957595679521C081FF06C0B0
|
||||
:102DA0006091060170E07595679519C082FF04C0B7
|
||||
:102DB0006091060170E010C09091D6019923C1F096
|
||||
:102DC000609105019617A0F780910601899FC001C7
|
||||
:102DD000112470E00E946B236038710528F461159E
|
||||
:102DE000710521F0862F08958FE7089581E00895F9
|
||||
:102DF00061E070E0F4CF803F21F40E947916819564
|
||||
:102E000004C0813F29F40E9479168093D901089566
|
||||
:102E1000823F21F40E947916819504C0833F29F4F2
|
||||
:102E20000E9479168093D8010895893F19F40E9471
|
||||
:102E3000C21605C08A3F31F40E94C2168195809364
|
||||
:102E4000DA0108958B3F21F40E94C216819504C0D7
|
||||
:102E50008C3F29F40E94C2168093DB010895843FC1
|
||||
:102E600021F48091D701816017C0853F21F48091C2
|
||||
:102E7000D701826011C0863F21F48091D701846020
|
||||
:102E80000BC0873F21F48091D701886005C0883F3F
|
||||
:102E900031F48091D70180618093D70108958D3FEF
|
||||
:102EA00021F48091D50181600BC08E3F21F4809187
|
||||
:102EB000D501826005C08F3F29F48091D5018460DF
|
||||
:102EC0008093D5010895803F39F48091D90187FF1F
|
||||
:102ED0006CC01092D90169C0813F29F48091D90159
|
||||
:102EE0001816BCF362C09091D801823F29F497FF75
|
||||
:102EF0005CC01092D80159C0833F19F41916CCF365
|
||||
:102F000054C0893F41F48091DA0118160CF04DC08D
|
||||
:102F10001092DA014AC08A3F29F48091DA0187FFD2
|
||||
:102F200044C0F6CF8B3F39F48091DB0187FF3DC071
|
||||
:102F30001092DB013AC08C3F29F48091DB01181616
|
||||
:102F4000BCF333C0843F21F48091D7018E7F17C03A
|
||||
:102F5000853F21F48091D7018D7F11C0863F21F4F8
|
||||
:102F60008091D7018B7F0BC0873F21F48091D701DF
|
||||
:102F7000877F05C0883F31F48091D7018F7E809391
|
||||
:102F8000D70113C08D3F21F48091D5018E7F0BC0F6
|
||||
:102F90008E3F21F48091D5018D7F05C08F3F29F4AC
|
||||
:102FA0008091D5018B7F8093D5018091D8018111CB
|
||||
:102FB0000EC08091D90181110AC08091DA0181117E
|
||||
:102FC00006C08091DB01811102C01092D6010895E4
|
||||
:102FD00087ED91E00E94FB090E94DE159093D401D9
|
||||
:102FE0008093D30108951F93CF93DF938091D301F2
|
||||
:102FF0009091D4010E94EA15AC019091D6019923D9
|
||||
:1030000021F02091090130E006C020910A018AE0F8
|
||||
:10301000289F900111244217530708F486C080911D
|
||||
:10302000D801C091D901D091DA011091DB01811151
|
||||
:1030300007C0C11176C0D11174C0111172C075C022
|
||||
:103040009F3F19F09F5F9093D601181624F40E94B9
|
||||
:1030500079168093D8018091D80187FF05C00E941E
|
||||
:10306000791681958093D8011C1624F40E94791654
|
||||
:103070008093D9018091D90187FF05C00E947916FC
|
||||
:1030800081958093D9016091D801662339F1C0916F
|
||||
:10309000D901CC2319F1772767FD7095872F972FDA
|
||||
:1030A0000E94722223E333E343E35FE30E94D622CC
|
||||
:1030B0000E943A226093D8016C2F772767FD7095A4
|
||||
:1030C000872F972F0E94722223E333E343E35FE3CA
|
||||
:1030D0000E94D6220E943A226093D9011D1624F440
|
||||
:1030E0000E94C2168093DA018091DA0187FF05C041
|
||||
:1030F0000E94C21681958093DA01111624F40E9471
|
||||
:10310000C2168093DB018091DB0187FF05C00E941E
|
||||
:10311000C21681958093DB01DF91CF911F910C94B2
|
||||
:10312000E8179F3F09F08ECF96CFDF91CF911F9187
|
||||
:103130000895E7EDF1E085E0DF011D928A95E9F75A
|
||||
:103140001092D6011092D5010895833081F128F4B0
|
||||
:10315000813059F08230D1F00895853009F449C0AA
|
||||
:10316000B8F1863009F456C0089580910A01262FDF
|
||||
:1031700030E0280F311D2F3F310524F4680F609394
|
||||
:103180000A0108958FEF80930A0108958091090143
|
||||
:10319000262F30E0280F311D2F3F310524F4680F12
|
||||
:1031A0006093090108958FEF80930901089580913C
|
||||
:1031B0000801262F30E0280F311D2F3F310524F460
|
||||
:1031C000680F6093080108958FEF809308010895B8
|
||||
:1031D00080910701262F30E0280F311D2F3F310548
|
||||
:1031E00024F4680F6093070108958FEF809307011F
|
||||
:1031F000089580910601262F30E0280F311D2F3FC2
|
||||
:10320000310524F4680F6093060108958FEF8093D1
|
||||
:103210000601089580910501262F30E0280F311D09
|
||||
:103220002F3F310524F4680F6093050108958FEF57
|
||||
:10323000809305010895833011F128F4813049F01D
|
||||
:10324000823091F00895853081F120F18630C1F10E
|
||||
:10325000089580910A01681720F4861B80930A0163
|
||||
:10326000089510920A01089580910901681720F4C9
|
||||
:10327000861B809309010895109209010895809199
|
||||
:103280000801681720F4861B8093080108951092A6
|
||||
:103290000801089580910701681720F4861B809328
|
||||
:1032A000070108951092070108958091060168179B
|
||||
:1032B00020F4861B8093060108951092060108955C
|
||||
:1032C00080910501681720F4861B809305010895FD
|
||||
:1032D0001092050108950F931F938D3109F471C069
|
||||
:1032E00008F045C0803109F485C008F5873009F43D
|
||||
:1032F0006FC068F4863009F0ADC08091CD01817F48
|
||||
:103300008E7F8093CD0181E08093DD01A4C08B305E
|
||||
:1033100009F49EC08E3009F09DC08091CD0182FBE2
|
||||
:10332000222720F991E0922790FB82F96CC0863128
|
||||
:1033300009F48EC060F4813109F08CC00E94940EB3
|
||||
:103340009091020181E089278093020181C0893137
|
||||
:1033500009F47EC08B3109F07DC08091CD0181FBE5
|
||||
:10336000222720F991E0922790FB81F94CC0853308
|
||||
:1033700009F466C048F4873209F462C008F44FC00B
|
||||
:10338000893209F45DC066C0833438F48A3308F0AA
|
||||
:1033900044C0883309F45CC05DC0833409F450C074
|
||||
:1033A000883409F057C00E94940E0FEF13ED20E30C
|
||||
:1033B000015010402040E1F700C000000E94391683
|
||||
:1033C00047C00E94F51A0E94E4090E94460640C0C8
|
||||
:1033D0009091CD01892F8095817080FB90F929F023
|
||||
:1033E000966098609093CD0136C0997F977F9093B7
|
||||
:1033F000CD012EC08091CD0183FB222720F991E0E1
|
||||
:10340000922790FB83F98093CD01992309F1809154
|
||||
:10341000CD0181608093CD011BC0895301C08D51C6
|
||||
:1034200041E050E060E070E08A019B0104C0000FC1
|
||||
:10343000111F221F331F8A95D2F7C901B80104C09A
|
||||
:1034400061E070E080E090E00E9454120E94940ECF
|
||||
:1034500081E001C080E01F910F91089580E0089500
|
||||
:1034600080E008958E518A3030F4E82FF0E0EA5E73
|
||||
:10347000FE4F8081089580E00895CF93C82F8091FA
|
||||
:10348000DD01813079F018F08230E9F186C0E091F9
|
||||
:103490000301F09104018081813169F0823209F0E9
|
||||
:1034A0007EC009C0E0910301F09104018081813167
|
||||
:1034B00011F0823261F48C2F0E942E1A811104C007
|
||||
:1034C0008C2F0E946B191DC081E090E01AC08C2FD8
|
||||
:1034D0000E94301A811114C0C43179F048F4CB3005
|
||||
:1034E00079F0C03109F05FC082E08093DD0108C04F
|
||||
:1034F000C93219F0C83321F056C01092DD0153C013
|
||||
:1035000081E0817052C0C93281F110F5C43169F196
|
||||
:10351000A8F4C73009F045C08AE080930A0194E11D
|
||||
:103520009093090193E0909308018093070188E04C
|
||||
:103530008093060188E28093050133C082EE8C0FF0
|
||||
:10354000863078F58C2F0E94321A8093DC0129C0D6
|
||||
:10355000CE34E9F020F4CB3421F56AE013C0C13554
|
||||
:1035600079F0C235F1F461E00DC08091DC0188236F
|
||||
:1035700019F01092DC0115C081E08093DD0115C0C7
|
||||
:1035800061E006C08091DC010E94A5180AC06AE0D3
|
||||
:103590008091DC010E941B1904C01092DD0180E0C3
|
||||
:1035A00004C081E002C080E0ACCFCF910895E1E893
|
||||
:1035B000F0E08081886080838081816080838FB724
|
||||
:1035C000F89493E09093890090ED909388008FBFDA
|
||||
:1035D0000895EFE6F0E08081826080830895EFE651
|
||||
:1035E000F0E080818D7F80830895EFE6F0E09081A8
|
||||
:1035F00082E08927808308951F920F920FB60F9261
|
||||
:1036000011242F933F934F935F936F937F938F93E7
|
||||
:103610009F93AF93BF93EF93FF938091DE019091BF
|
||||
:10362000DF0101969093DF018093DE01811103C0D9
|
||||
:1036300082E00E944606E091DF01E695E695F0E023
|
||||
:10364000E954FC4FE4918091DE018E1303C080E0C9
|
||||
:103650000E944606FF91EF91BF91AF919F918F918C
|
||||
:103660007F916F915F914F913F912F910F900FBE7E
|
||||
:103670000F901F9018958091F0010895CF93DF93DC
|
||||
:1036800000D01F92CDB7DEB79C018091F801843045
|
||||
:1036900019F593E099833B832A839093E9008FEF98
|
||||
:1036A0009091E800815095FD06C095ED9A95F1F74F
|
||||
:1036B00000008111F5CF8091E80085FF0DC040E04A
|
||||
:1036C00050E063E070E0CE0101960E94A71D80915A
|
||||
:1036D000E8008E778093E8000F900F900F90DF91B5
|
||||
:1036E000CF910895CF93DF9300D01F92CDB7DEB76F
|
||||
:1036F0002091F801243021F522E029839B838A83DD
|
||||
:1037000083E08093E9008FEF9091E800815095FD70
|
||||
:1037100006C095ED9A95F1F700008111F5CF8091E3
|
||||
:10372000E80085FF0DC040E050E063E070E0CE01AE
|
||||
:1037300001960E94A71D8091E8008E778093E80093
|
||||
:103740000F900F900F90DF91CF9108952091F80185
|
||||
:103750002430F1F422E02093E9002FEF3091E800CB
|
||||
:10376000215035FD06C035ED3A95F1F700002111E5
|
||||
:10377000F5CF2091E80025FF0BC040E050E065E068
|
||||
:1037800070E00E94A71D8091E8008E778093E8008A
|
||||
:103790000895CF93DF93EC019091F801943009F0F4
|
||||
:1037A00046C0809115018823D9F0809102018823B9
|
||||
:1037B000B9F09093E9008FEF9091E800815095FD6A
|
||||
:1037C00006C095E19A95F1F700008111F5CF80913F
|
||||
:1037D000E80085FF2CC040E050E060E170E017C0D9
|
||||
:1037E00081E08093E9008FEF9091E800815095FD92
|
||||
:1037F00006C095ED9A95F1F700008111F5CF809103
|
||||
:10380000E80085FF14C040E050E068E070E0CE01C1
|
||||
:103810000E94A71D8091E8008E778093E80080E1E8
|
||||
:10382000FE01A0EEB1E001900D928A95E1F7DF91E3
|
||||
:10383000CF9108958091F701811109C00E943C1F2A
|
||||
:103840000E94991F8091E20084608093E2000895B5
|
||||
:103850001092F701089508950C94E91A0E94CF156B
|
||||
:103860000E94EF1A0E94E4090C94460642E061ECC3
|
||||
:1038700081E00E94B61E42E061EC82E00E94B61E2A
|
||||
:1038800042E061EC83E00E94B61E42E161EC84E01C
|
||||
:103890000C94B61E8091FA01833009F455C030F4BF
|
||||
:1038A000813071F0823009F48EC008958A3009F4B5
|
||||
:1038B0007AC08B3009F460C0893009F09CC020C008
|
||||
:1038C0008091F901813A09F096C08091E800877FE4
|
||||
:1038D0008093E8008091FD019091FE01892B21F4F5
|
||||
:1038E00060E180EE91E003C060E080E090E070E095
|
||||
:1038F0000E94F21D8091E8008B778093E800089584
|
||||
:103900008091F901813209F076C08091FD0190919A
|
||||
:10391000FE01009719F0039709F06DC08091E8004F
|
||||
:10392000877F8093E8008091E80082FD05C0809148
|
||||
:10393000F8018111F8CF5FC08091F1008093F00110
|
||||
:103940008091E8008B7753C08091F901813A09F0AA
|
||||
:1039500052C08091FD019091FE01892B09F04BC06E
|
||||
:103960008091E800877F8093E8008091E80080FFE5
|
||||
:10397000FCCF8091150136C08091F9018132D9F5D3
|
||||
:103980008091FD019091FE01892BA9F58091E800BD
|
||||
:10399000877F8093E8000E94EB1E8091FB0180935B
|
||||
:1039A00015010C94940E8091F901813221F58091DA
|
||||
:1039B000E800877F8093E8000E94EB1E8091FC0165
|
||||
:1039C0008093F10108958091F901813AA1F48091E9
|
||||
:1039D000E800877F8093E8008091E80080FFFCCFBB
|
||||
:1039E0008091F1018093F1008091E8008E778093BF
|
||||
:1039F000E8000C94EB1E089584B7877F84BF0FB650
|
||||
:103A0000F894A8958091600088618093600010927E
|
||||
:103A100060000FBE80E880936100109261000E94F8
|
||||
:103A2000330A0E943C1F0E94991F8091E20084602B
|
||||
:103A30008093E20078940E941F220E94350A8BE056
|
||||
:103A400091E00E94DF090E94D71A8091F801853029
|
||||
:103A500069F40E948E158091F6018823B1F30E94CB
|
||||
:103A6000BB15882391F30E94911DEFCF0E943B0A62
|
||||
:103A7000ECCF292F332723303105C9F064F42130EE
|
||||
:103A8000310581F02230310509F043C08DE690E028
|
||||
:103A90002BE234E042C021323105F1F0223231050F
|
||||
:103AA00041F137C082E190E028E934E036C099273F
|
||||
:103AB0008130910541F08230910541F0892B49F523
|
||||
:103AC000E7E2F4E005C0EFE0F4E002C0E7EFF3E086
|
||||
:103AD000849190E09F0121C06430D8F4E62FF0E09B
|
||||
:103AE000EE0FFF1FE45DFE4F2081318189E090E001
|
||||
:103AF00014C0643070F470E0FB01EE0FFF1FEC5D4A
|
||||
:103B0000FE4F20813181FB01E05EFE4F808190E01D
|
||||
:103B100004C080E090E020E030E0FA0131832083AF
|
||||
:103B2000089580E189BD82E189BD09B400FEFDCF21
|
||||
:103B30008091D8008F7D8093D8008091E0008260D2
|
||||
:103B40008093E0008091E00081FDFCCF0895CF924A
|
||||
:103B5000DF92EF92FF920F931F93CF93DF93EC01CD
|
||||
:103B60008B016A010E940A1F811133C0C114D10464
|
||||
:103B700039F0F60180819181081B190BC80FD91FFC
|
||||
:103B8000E12CF12C0115110519F18091E80085FD5A
|
||||
:103B900016C08091E8008E778093E800C114D104AC
|
||||
:103BA00049F0F60180819181E80EF91EF182E082F0
|
||||
:103BB00085E00FC00E940A1F882321F30AC0899163
|
||||
:103BC0008093F10001501109FFEFEF1AFF0ADACFDD
|
||||
:103BD00080E0DF91CF911F910F91FF90EF90DF90E8
|
||||
:103BE000CF9008952091FF013091000226173707EA
|
||||
:103BF00048F06115710539F42091E8002E77209383
|
||||
:103C0000E80001C0B90140E061157105A9F12091FA
|
||||
:103C1000F801222309F443C0253009F442C0209161
|
||||
:103C2000E80023FD40C02091E80022FD32C0209131
|
||||
:103C3000E80020FFE9CF4091F3002091F20030E04E
|
||||
:103C4000342BFC01CF016115710559F02830310585
|
||||
:103C500040F481918093F100615071092F5F3F4FD3
|
||||
:103C6000F1CF41E02830310509F040E02091E80033
|
||||
:103C70002E772093E800C8CF4111C9CF0AC08091A8
|
||||
:103C8000F801882361F0853061F08091E80083FDC0
|
||||
:103C90000AC08091E80082FFF2CF80E0089582E0C0
|
||||
:103CA000089583E0089581E008952091FF01309107
|
||||
:103CB00000022617370748F06115710539F4209185
|
||||
:103CC000E8002E772093E80001C0B901FC0120E054
|
||||
:103CD0006115710591F18091F801882309F440C0C4
|
||||
:103CE000853009F43FC08091E80083FD3DC080919C
|
||||
:103CF000E80082FD2FC08091E80080FFE9CF20918D
|
||||
:103D0000F3008091F20090E0922B6115710559F05B
|
||||
:103D10008830910540F424912093F1003196615050
|
||||
:103D200071090196F2CF21E0089709F020E0809117
|
||||
:103D3000E8008E778093E800CBCF2111CCCF0AC06A
|
||||
:103D40008091F801882361F0853061F08091E8006E
|
||||
:103D500083FD0AC08091E80082FFF2CF80E00895E1
|
||||
:103D600082E0089583E0089581E00895982F9730C8
|
||||
:103D700058F59093E900981739F07091EC00209174
|
||||
:103D8000ED005091F00003C0242F762F50E021FF6A
|
||||
:103D900019C03091EB003E7F3093EB003091ED0085
|
||||
:103DA0003D7F3093ED003091EB0031603093EB00BC
|
||||
:103DB0007093EC002093ED005093F0002091EE0002
|
||||
:103DC00027FF07C09F5FD3CF8F708093E90081E00A
|
||||
:103DD000089580E008958091F90187FF11C08091D6
|
||||
:103DE000E80082FD05C08091F8018111F8CF11C073
|
||||
:103DF0008091E8008B770BC08091F801882349F00F
|
||||
:103E00008091E80080FFF8CF8091E8008E77809362
|
||||
:103E1000E80008952091E4003091E50095E6409196
|
||||
:103E2000EC00842F817040FF22C08091E80080FD6B
|
||||
:103E30001CC08091F801882391F0853091F0809129
|
||||
:103E4000EB0085FD10C04091E4005091E500421761
|
||||
:103E5000530729F39A01915011F784E0089582E005
|
||||
:103E6000089583E0089581E0089580E008954091E9
|
||||
:103E7000E80042FFDECF08950E94AA1F0E94B21FF1
|
||||
:103E8000E0EEF0E0808181608083E8EDF0E0808109
|
||||
:103E90008F77808319BCA7EDB0E08C918E7F8C93D7
|
||||
:103EA00080818F7E80831092F70108950F931F9376
|
||||
:103EB000CF93DF930E94AA1F0E94B21FC8EDD0E0EB
|
||||
:103EC00088818F77888388818068888388818F7DC7
|
||||
:103ED000888319BC1092F8011092F4011092F60137
|
||||
:103EE0001092F50100EE10E0F80180818B7F808355
|
||||
:103EF00088818160888342E060E080E00E94B61E95
|
||||
:103F0000E1EEF0E080818E7F8083E2EEF0E0808160
|
||||
:103F100081608083808188608083F80180818E7FCA
|
||||
:103F20008083888180618883DF91CF911F910F9179
|
||||
:103F30000895E8EDF0E080818F7E8083E7EDF0E08A
|
||||
:103F400080818160808384E082BF81E08093F7017B
|
||||
:103F50000C94561FE8EDF0E080818E7F80831092F4
|
||||
:103F6000E20008951092DA001092E10008951F9285
|
||||
:103F70000F920FB60F9211242F933F934F935F939D
|
||||
:103F80006F937F938F939F93AF93BF93EF93FF9321
|
||||
:103F90008091E10082FF0BC08091E20082FF07C0A8
|
||||
:103FA0008091E1008B7F8093E1000E941E2280912E
|
||||
:103FB000DA0080FF1FC08091D80080FF1BC0809175
|
||||
:103FC000DA008E7F8093DA008091D90080FF0DC0E7
|
||||
:103FD00080E189BD82E189BD09B400FEFDCF81E0A9
|
||||
:103FE0008093F8010E941A1C05C019BC1092F801B8
|
||||
:103FF0000E94281C8091E10080FF19C08091E2009E
|
||||
:1040000080FF15C08091E2008E7F8093E200809156
|
||||
:10401000E20080618093E2008091D800806280930A
|
||||
:10402000D80019BC85E08093F8010E942C1C809177
|
||||
:10403000E10084FF30C08091E20084FF2CC080E169
|
||||
:1040400089BD82E189BD09B400FEFDCF8091D80011
|
||||
:104050008F7D8093D8008091E1008F7E8093E10076
|
||||
:104060008091E2008F7E8093E2008091E200816087
|
||||
:104070008093E2008091F401882311F084E007C06E
|
||||
:104080008091E30087FD02C081E001C083E080935E
|
||||
:10409000F8010E942E1C8091E10083FF29C08091CD
|
||||
:1040A000E20083FF25C08091E100877F8093E100DB
|
||||
:1040B00082E08093F8011092F4018091E1008E7FFC
|
||||
:1040C0008093E1008091E2008E7F8093E2008091F6
|
||||
:1040D000E20080618093E20042E060E080E00E94C4
|
||||
:1040E000B61E8091F00088608093F0000E942B1C27
|
||||
:1040F000FF91EF91BF91AF919F918F917F916F91C0
|
||||
:104100005F914F913F912F910F900FBE0F901F9095
|
||||
:1041100018951F920F920FB60F9211242F933F9371
|
||||
:104120004F935F936F937F938F939F93AF93BF93BF
|
||||
:10413000CF93DF93EF93FF93C091E900CF7080910D
|
||||
:10414000EC00D82FD17080FDD0E81092E90080916A
|
||||
:10415000F000877F8093F00078940E94CD20109229
|
||||
:10416000E9008091F00088608093F000CD2BCF7043
|
||||
:10417000C093E900FF91EF91DF91CF91BF91AF9193
|
||||
:104180009F918F917F916F915F914F913F912F916F
|
||||
:104190000F900FBE0F901F9018951F93CF93DF9332
|
||||
:1041A000CDB7DEB7AA970FB6F894DEBF0FBECDBF6E
|
||||
:1041B000E9EFF1E088E08E0F9091F10091938E137A
|
||||
:1041C000FBCF0E944A1C8091E80083FF1FC18091B1
|
||||
:1041D000F9019091FA01492F50E04A30510508F059
|
||||
:1041E00015C1FA01E558FF4F0C947F23803881F008
|
||||
:1041F000823809F00BC18091FD018F708093E90036
|
||||
:104200008091EB0085FB882780F91092E90006C0B9
|
||||
:104210008091F5019091F601911182609091E800F2
|
||||
:10422000977F9093E8008093F1001092F100C8C04E
|
||||
:10423000282F2D7F09F0EAC0882319F0823061F021
|
||||
:10424000E5C08091FB01813009F0E0C0933009F0B6
|
||||
:1042500080E08093F6012BC08091FB01811127C083
|
||||
:104260008091FD018F7009F4D1C08093E900209105
|
||||
:10427000EB0020FF1CC0933021F48091EB008062A2
|
||||
:1042800014C09091EB0090619093EB0021E030E03E
|
||||
:10429000A90102C0440F551F8A95E2F74093EA0036
|
||||
:1042A0001092EA008091EB0088608093EB001092FE
|
||||
:1042B000E9008091E800877F86C08111A7C0109136
|
||||
:1042C000FB011F778091E3008078812B8093E300CE
|
||||
:1042D0008091E800877F8093E8000E94EB1E809128
|
||||
:1042E000E80080FFFCCF8091E30080688093E300CA
|
||||
:1042F000111102C082E001C083E08093F80186C002
|
||||
:104300008058823008F082C08091FB019091FC01BE
|
||||
:104310008C3D53E0950779F583E08A838AE28983AF
|
||||
:104320004FB7F894DE01139620E03EE051E2E32F10
|
||||
:10433000F0E050935700E49120FF03C0E295EF7046
|
||||
:104340003F5FEF708E2F90E0EA3010F0C79601C00B
|
||||
:10435000C0968D939D932F5F243149F74FBF809175
|
||||
:10436000E800877F8093E8006AE270E0CE01019662
|
||||
:104370000E94F21D14C0AE014F5F5F4F6091FD01BE
|
||||
:104380000E94391DBC01892B09F440C09091E800BE
|
||||
:10439000977F9093E80089819A810E94551E8091B1
|
||||
:1043A000E8008B778093E80031C0803879F5809100
|
||||
:1043B000E800877F8093E8008091F4018093F1000A
|
||||
:1043C0008091E8008E778093E8000E94EB1E1EC06B
|
||||
:1043D00081111CC09091FB019230C0F48091E800E3
|
||||
:1043E000877F8093E8009093F4010E94EB1E8091F8
|
||||
:1043F000F401811106C08091E30087FD02C081E0D5
|
||||
:1044000001C084E08093F8010E94361C8091E8008E
|
||||
:1044100083FF0AC08091E800877F8093E800809145
|
||||
:10442000EB0080628093EB00AA960FB6F894DEBF93
|
||||
:104430000FBECDBFDF91CF911F9108950895CF9307
|
||||
:104440008091F8018823A1F0C091E900CF7090918C
|
||||
:10445000EC00892F817090FD80E8C82B1092E90054
|
||||
:104460008091E80083FD0E94CD20CF70C093E900C9
|
||||
:10447000CF9108950E9441226894B1110C94D022EA
|
||||
:1044800008950E94B52288F09F5798F0B92F992778
|
||||
:10449000B751B0F0E1F0660F771F881F991F1AF02F
|
||||
:1044A000BA95C9F714C0B13091F00E94CF22B1E0A3
|
||||
:1044B00008950C94CF22672F782F8827B85F39F0A2
|
||||
:1044C000B93FCCF3869577956795B395D9F73EF4C8
|
||||
:1044D00090958095709561957F4F8F4F9F4F089570
|
||||
:1044E000E89409C097FB3EF490958095709561958E
|
||||
:1044F0007F4F8F4F9F4F9923A9F0F92F96E9BB2744
|
||||
:104500009395F695879577956795B795F111F8CFBF
|
||||
:10451000FAF4BB0F11F460FF1BC06F5F7F4F8F4F2A
|
||||
:104520009F4F16C0882311F096E911C0772321F020
|
||||
:104530009EE8872F762F05C0662371F096E8862FB8
|
||||
:1045400070E060E02AF09A95660F771F881FDAF70F
|
||||
:10455000880F9695879597F9089557FD9058440FC1
|
||||
:10456000551F59F05F3F71F04795880F97FB991FD2
|
||||
:1045700061F09F3F79F0879508951216130614068F
|
||||
:10458000551FF2CF4695F1DF08C01616170618061C
|
||||
:10459000991FF1CF86957105610508940895E894F7
|
||||
:1045A000BB2766277727CB0197F908950E94E92258
|
||||
:1045B0000C945A230E944C2338F00E94532320F07D
|
||||
:1045C000952311F00C9443230C94492311240C944B
|
||||
:1045D000D0220E94AD2270F3959FC1F3950F50E059
|
||||
:1045E000551F629FF001729FBB27F00DB11D639FA5
|
||||
:1045F000AA27F00DB11DAA1F649F6627B00DA11D4B
|
||||
:10460000661F829F2227B00DA11D621F739FB00DF0
|
||||
:10461000A11D621F839FA00D611D221F749F332760
|
||||
:10462000A00D611D231F849F600D211D822F762FF9
|
||||
:104630006A2F11249F5750409AF0F1F088234AF0D6
|
||||
:10464000EE0FFF1FBB1F661F771F881F9150504042
|
||||
:10465000A9F79E3F510580F00C9443230C94D0227F
|
||||
:104660005F3FE4F3983ED4F3869577956795B795C9
|
||||
:10467000F795E7959F5FC1F7FE2B880F911D9695E3
|
||||
:10468000879597F9089597F99F6780E870E060E053
|
||||
:1046900008959FEF80EC089500240A9416161706DB
|
||||
:1046A00018060906089500240A9412161306140623
|
||||
:1046B00005060895092E0394000C11F4882352F086
|
||||
:1046C000BB0F40F4BF2B11F460FF04C06F5F7F4F3E
|
||||
:1046D0008F4F9F4F089597FB072E16F4009407D035
|
||||
:1046E00077FD09D00E94852307FC05D03EF4909504
|
||||
:1046F00081959F4F0895709561957F4F0895EE0FB6
|
||||
:10470000FF1F0590F491E02D0994AA1BBB1B51E1FA
|
||||
:1047100007C0AA1FBB1FA617B70710F0A61BB70B31
|
||||
:10472000881F991F5A95A9F780959095BC01CD01D6
|
||||
:104730000895F999FECF92BD81BDF89A992780B569
|
||||
:104740000895A8E1B0E042E050E00C94C023262F89
|
||||
:10475000F999FECF92BD81BDF89A019700B4021677
|
||||
:1047600031F020BD0FB6F894FA9AF99A0FBE089569
|
||||
:104770000196272F0E94A8230C94A723DC01CB01CC
|
||||
:10478000FC01F999FECF06C0F2BDE1BDF89A319661
|
||||
:1047900000B40D9241505040B8F70895F894FFCFFF
|
||||
:1047A000052001BA0128080A03140A3B1BC91BA6ED
|
||||
:1047B0001B721B3E1B0101020304050607080900CA
|
||||
:1047C000404D363966051905E304AA043D04560434
|
||||
:0447D0006F048804E6
|
||||
:00000001FF
|
@ -1,38 +1,40 @@
|
||||
# Getting started
|
||||
|
||||
There are two main ways you could customize the ErgoDox EZ.
|
||||
There are two main ways you could customize the ErgoDox (EZ and Infinity)
|
||||
|
||||
## The Easy Way: Use an existing firmware file and just flash it
|
||||
## The Easy Way: Use an existing firmware file and just flash it (ErgoDox EZ only)
|
||||
|
||||
1. Download and install the [Teensy Loader](https://www.pjrc.com/teensy/loader.html). Some Linux distributions already provide a binary (may be called `teensy-loader-cli`), so you may prefer to use this.
|
||||
2. Find a firmware file you like. You can find a few if these in the keymaps subdirectory right here. The file you need ends with .hex, and you can look at its .c counterpart (or its PNG image) to see what you'll be getting. You can also use the [Massdrop configurator](https://keyboard-configurator.massdrop.com/ext/ergodox) to create a firmware Hex file you like.
|
||||
2. Find a firmware file you like. There are [dozens of community-contributed keymaps](http://qmk.fm/keyboards/ergodox/) you can browse and download. You can also use the [Massdrop configurator](https://keyboard-configurator.massdrop.com/ext/ergodox) to create a firmware Hex file you like.
|
||||
3. Download the firmware file
|
||||
4. Connect the keyboard, press its Reset button (gently insert a paperclip into the hole in the top-right corner) and flash it using the Teensy loader you installed on step 1 and the firmware you downloaded.
|
||||
|
||||
## More technical: create your own totally custom firmware by editing the source files.
|
||||
## More technical: compile an existing keymap, or create your own totally custom firmware by editing the source files.
|
||||
|
||||
This requires a little bit of familiarity with coding.
|
||||
If you are just compiling an existing keymap and don't want to create your own, you can skip step 4, 5 and 8.
|
||||
|
||||
1. Go to https://github.com/jackhumbert/qmk_firmware and read the readme at the base of this repository, top to bottom. Then come back here :)
|
||||
2. Clone the repository (download it)
|
||||
3. Set up a build environment as per [the build guide](/doc/BUILD_GUIDE.md)
|
||||
- Using a Mac and have homebrew? just run `brew tap osx-cross/avr && brew install avr-libc`
|
||||
4. Copy `keyboards/ergodox_ez/keymaps/default/keymap.c` into `keymaps/your_name/keymap.c` (for example, `keymaps/german/keymap.c`)
|
||||
3. Set up a build environment as per the readme.
|
||||
4. Copy `keyboards/ergodox/keymaps/default/keymap.c` into `keymaps/your_name/keymap.c` (for example, `keymaps/german/keymap.c`)
|
||||
5. Edit this file, changing keycodes to your liking (see "Finding the keycodes you need" below). Try to edit the comments as well, so the "text graphics" represent your layout correctly. See below for more tips on sharing your work.
|
||||
6. Compile your firmware by running `make keymap=your_name`. For example, `make keymap=german`. This will result in a hex file, which will be called `ergodox_ez_your_name.hex`, e.g. `ergodox_ez_german.hex`.
|
||||
6. Flash this hex file using the [Teensy loader](https://www.pjrc.com/teensy/loader.html) as described in step 4 in the "Easy Way" above. If you prefer you can automatically flash the hex file after successfull build by running `make teensy keymap=your_name`.
|
||||
7. Submit your work as a pull request to this repository, so others can also use it. :) See below on specifics.
|
||||
6. Compile your firmware by running `make keymap=keymap_name`. For example, `make keymap=german`. This will result in a hex file, which will be called `ergodox_ez_keymap_name.hex`, e.g. `ergodox_ez_german.hex`. For **Infinity ErgoDox** you need to add `subproject=infinity` to the make command.
|
||||
7. **ErgoDox EZ** - Flash this hex file using the [Teensy loader](https://www.pjrc.com/teensy/loader.html) as described in step 4 in the "Easy Way" above. If you prefer you can automatically flash the hex file after successful build by running `make teensy keymap=keymap_name`.
|
||||
|
||||
**Infinity ErgoDox** - Flash the firmware by running `make dfu-util keymap=keymap_name subproject=infinity`
|
||||
8. Submit your work as a pull request to this repository, so others can also use it. :) See below on specifics.
|
||||
|
||||
Good luck! :)
|
||||
|
||||
## Contributing your keymap
|
||||
|
||||
The ErgoDox EZ firmware is open-source, so it would be wonderful to have your contribution! Within a very short time after launching we already amassed almost 20 user-contributed keymaps, with all sorts of creative improvements and tweaks. This is very valuable for people who aren't comfortable coding, but do want to customize their ErgoDox EZ. To make it easy for these people to use your layout, I recommend submitting your PR in the following format.
|
||||
The QMK firmware is open-source, so it would be wonderful to have your contribution! Within a very short time after launching we already amassed dozens of user-contributed keymaps, with all sorts of creative improvements and tweaks. This is very valuable for people who aren't comfortable coding, but do want to customize their ErgoDox. To make it easy for these people to use your layout, I recommend submitting your PR in the following format.
|
||||
|
||||
1. All work goes inside your keymap subdirectory (`keymaps/german` in this example).
|
||||
2. `keymap.c` - this is your actual keymap file; please update the ASCII comments in the file so they correspond with what you did.
|
||||
3. `readme.md` - a readme file, which GitHub would display by default when people go to your directory. Explain what's different about your keymap, what you tweaked or how it works. No specific format to follow, just communicate what you did. :)
|
||||
4. Any graphics you wish to add. This is absolutely not a must. If you feel like it, you can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to make something and grab a screenshot, but it's really not a must. If you do have graphics, your readme can just embed the graphic as a link, just like I did with the default layout.
|
||||
4. Any graphics you wish to add. This is absolutely not a must. If you feel like it, you can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to make something and grab a screenshot, but it's really not a must. If you do have graphics, your readme can just embed the graphic as a link, just like I did with the default layout.
|
||||
|
||||
|
||||
## Finding the keycodes you need
|
Before Width: | Height: | Size: 103 KiB |
Before Width: | Height: | Size: 103 KiB |
@ -1,230 +0,0 @@
|
||||
algernon's layout
|
||||
=======================
|
||||
|
||||
This is an unconventional layout for the ErgoDox EZ. For more details about the
|
||||
history of the layout, see my
|
||||
[blog posts about my ErgoDox journey][blog-ergodox].
|
||||
|
||||
[blog-ergodox]: https://asylum.madhouse-project.org/blog/tags/ergodox/
|
||||
|
||||
Some of the things in the layout only work when one uses Spacemacs and GNOME
|
||||
under Linux. Your mileage may vary.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
* [Layouts](#layouts)
|
||||
- [Base layer](#base-layer)
|
||||
- [Experimental layer](#experimental-layer)
|
||||
- [Hungarian layer](#hungarian-layer)
|
||||
- [Navigation and media layer](#navigation-and-media-layer)
|
||||
- [One-handed layer](#one-handed-layer)
|
||||
- [Steno layer](#steno-layer)
|
||||
- [LED states](#led-states)
|
||||
* [Building](#building)
|
||||
- [Using on Windows](#using-on-windows)
|
||||
* [Changelog](#changelog)
|
||||
* [License](#license)
|
||||
|
||||
# Layouts
|
||||
|
||||
## Base layer
|
||||
|
||||
[![Base layer](images/base-layer.png)](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b)
|
||||
|
||||
At its core, this is a Dvorak layout, with some minor changes. The more
|
||||
interesting parts are how certain keys behave:
|
||||
|
||||
* The keys on the number row double as function keys, when held for a bit longer
|
||||
than an usual tap. This allows me to use the function keys without having to
|
||||
switch layers.
|
||||
* The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they
|
||||
are considered active for the next key press only. When double tapped, they
|
||||
toggle on, until a third, single tap sometime later. When held, they act as
|
||||
expected. My usual pattern is that I use these for the next keypress only, so
|
||||
this behaviour is perfect. If I need them held, I'll just double-tap.
|
||||
* The `GUI` key is special, because when I double-tap it, it sends `GUI + w`,
|
||||
which pops up an application selector. It also switches to a one-shot layer,
|
||||
where the number row on the left half turns into app selector macros, for the
|
||||
most common things I usually want to switch to. Otherwise it behaves as on a
|
||||
normal layout.
|
||||
* The `ESC` key also doubles as a one-shot cancel key: if tapped while any of
|
||||
the one-shot modifiers are in-flight (as in, single-tapped, and not expired
|
||||
yet), it cancels all one-shot modifiers. It also cancels the **Hun** layer, if
|
||||
active. Otherwise it sends the usual keycode.
|
||||
* The **Media**, **Arrow**, and **Hun** layer keys are one-shot, the **1Hand**
|
||||
and **STENO** keys are toggles.
|
||||
* Toggling the **Arrow** layer toggles between the cursor arrows and the paging
|
||||
keys on the bottom row.
|
||||
* Tapping the `:` key once yields `:`, tapping it twice yields `;`.
|
||||
* The **Lead** key allows me to type in a sequence of keys, and trigger some
|
||||
actions:
|
||||
- `LEAD u` enters unicode input mode, by sending the GTK+ key sequence that
|
||||
does this.
|
||||
- `LEAD l` uses the unicode input method to enter a `λ`.
|
||||
- `LEAD s` does a lot of magic to type in a shruggie: `¯\_(ツ)_/¯`
|
||||
- `LEAD y` types `\o/`.
|
||||
- `LEAD w m` maximises the currently focused window.
|
||||
- `LEAD e` makes the [experimental layer](#experimental-layer) the default.
|
||||
- `LEAD v` prints the firmware version, the keyboard and the keymap.
|
||||
|
||||
## Experimental layer
|
||||
|
||||
[![Experimental layer](images/experimental-layer.png)](http://www.keyboard-layout-editor.com/#/gists/6ff50bf71248e05aab5b3fec4fae3d08)
|
||||
|
||||
While using the standard Dvorak layout, I encountered a number of
|
||||
inconveniences, and on this layer, I am playing with ideas to make the layout
|
||||
feel better. Initially, it was based on [Capewell-Dvorak][cpd], but that too,
|
||||
had shortcomings I was not happy with. So now this is something inbetween, with
|
||||
own observations thrown in. How it works out in the long run remains to be seen.
|
||||
|
||||
[cpd]: http://www.michaelcapewell.com/projects/keyboard/layout_capewell-dvorak.htm
|
||||
|
||||
## Hungarian layer
|
||||
|
||||
[![Hungarian layer](images/hun-layer.png)](http://www.keyboard-layout-editor.com/#/gists/b160f6ec90d58c127c114c89f66e9dc9)
|
||||
|
||||
On this layer, the accented characters are at the same position as their base
|
||||
variant. For some, which can have other diatribes, the long one is on top,
|
||||
short's on bottom. Tapping any of the accented characters takes us back to the
|
||||
base layer.
|
||||
|
||||
## Navigation and media layer
|
||||
|
||||
[![Navigation and media layer](images/nav-n-media-layer.png)](http://www.keyboard-layout-editor.com/#/gists/c59c453f9fe1a3238ba1494e7e5c6892)
|
||||
|
||||
This layer is primarily for navigating with the cursor or the mouse, and some
|
||||
media things.
|
||||
|
||||
## One-handed layer
|
||||
|
||||
[![One-handed layer](images/one-handed-layer.png)](http://www.keyboard-layout-editor.com/#/gists/edff2495135955b8963198dace7f7ece)
|
||||
|
||||
The one-handed layer is used in situations where the right hand is occupied, by
|
||||
mousing around, for example. Tapping the `OTHER` key switches which side is
|
||||
active. For the most part, keys remain in their usual position. When the right
|
||||
half is active, keys are mirrored to the left half.
|
||||
|
||||
The differences are as follows:
|
||||
|
||||
* The `ESC` key has been moved to the bottom row, so the `OTHER` key is easier
|
||||
to tap.
|
||||
* Most keys on the thumb cluster now have dual uses, and these do not change
|
||||
when switching sides:
|
||||
- The `Space`/`Backspace` key sends `Space` on tap, `Backspace` when held
|
||||
for longer than a normal tap.
|
||||
- The `Enter`/`Shift` key sends `Enter` on short-tap, `Shift` on long-tap.
|
||||
* The `Apps`/`BASE` key can be used to go back to the base layer, by
|
||||
long-tapping it. A short-tap will send the `App` key, as usual.
|
||||
|
||||
## Steno layer
|
||||
|
||||
[![Steno layer for Plover](images/steno-layer.png)](http://www.keyboard-layout-editor.com/#/gists/401ef9a84369e47c57f9aedcf0a0d667)
|
||||
|
||||
This is to be used with [Plover](http://www.openstenoproject.org/plover/),
|
||||
nothing really fancy here. The **STENO** key toggles the layer on and off, and
|
||||
sends the toggle command to Plover too.
|
||||
|
||||
## LED states
|
||||
|
||||
The primary purpose of the LEDs is to show the modifier status, a secondary, to
|
||||
show which layer is active. Each modifier, `Shift`, `Alt` and `Control` each
|
||||
have their designated LEDs: the *red*, *green* and *blue*, respectively. When a
|
||||
modifier is in a one-shot state, the respective LED will turn on with a dimmer
|
||||
light. If the modifier is toggled on, the brightness of the LED turns full.
|
||||
|
||||
For the layers, the following rules apply:
|
||||
|
||||
* When the [Experimental layer](#experimental-layer) is toggled on, LEDs will
|
||||
light up from left to right in a sequence, then turn off. When the layer is
|
||||
toggled off, the LEDs light up and turn off in the other direction. No LEDs
|
||||
are on while the layer is active.
|
||||
* When the [Hungarian layer](#hungarian-layer) is active, the *green* and *blue*
|
||||
LEDs are on.
|
||||
* When the [Navigation and media layer](#navigation-and-media-layer) is active,
|
||||
the *red* and *green* ones are on.
|
||||
* When the [One-handed layer](#one-handed-layer) is active, the *green* LED is
|
||||
on and bright, and either the *red* or the *blue* one is going to slowly
|
||||
blink, depending on the currently active side.
|
||||
* For the [Steno layer](#steno-layer), all LEDs will be turned on.
|
||||
|
||||
Unless noted otherwise, the layers use a dim light for the LEDs, while modifiers
|
||||
use a stronger one, and modifiers override any layer preferences. For example,
|
||||
when on the one-handed layer, with the left side active (*red* light blinking),
|
||||
if `Shift` is on, the *red* light will be constantly on.
|
||||
|
||||
# Building
|
||||
|
||||
To make my workflow easier, this layout is maintained in
|
||||
[its own repository][algernon:ez-layout]. To build it, you will need the
|
||||
[QMK][qmk] firmware checked out, and this repo either checked out to something
|
||||
like `keyboards/ergodox_ez/algernon-master`. One way to achieve that is this:
|
||||
|
||||
[algernon:ez-layout]: https://github.com/algernon/ergodox-layout
|
||||
[qmk]: https://github.com/jackhumbert/qmk_firmware
|
||||
|
||||
```
|
||||
$ git clone https://github.com/jackhumbert/qmk_firmware.git
|
||||
$ cd qmk_firmware
|
||||
$ git clone https://github.com/algernon/ergodox-layout.git \
|
||||
keyboards/ergodox_ez/keymaps/algernon-master
|
||||
$ make KEYBOARD=ergodox_ez KEYMAP=algernon-master
|
||||
```
|
||||
|
||||
From time to time, updates may be submitted back to the QMK repository. If you
|
||||
are reading it there, you can build the firmware like any other firmware
|
||||
included with it (assuming you are in the root directory of the firmware):
|
||||
|
||||
```
|
||||
$ make KEYBOARD=ergodox_ez KEYMAP=algernon
|
||||
```
|
||||
|
||||
## Using on Windows
|
||||
|
||||
The keymap default to forcing NKRO, which seems to upset Windows, and except the
|
||||
modifiers, none of them work. If you experience this problem, recompile the
|
||||
firmware with `FORCE_NKRO=no` added to the `make` command line.
|
||||
|
||||
# Changelog
|
||||
|
||||
## v1.2 - 2016-06-22
|
||||
|
||||
* The forced NKRO mode can be easily toggled off at compile-time, to make the
|
||||
firmware compatible with [certain operating systems](#using-on-windows).
|
||||
* The `:;` key has changed behaviour: to access the `;` symbol, the key needs to
|
||||
be double-tapped, instead of shifted.
|
||||
* The `=` and `\` keys were swapped, `=` moved to the home row, on both the
|
||||
[base](#base-layer) and the [experimental](#experimental-layer) layers.
|
||||
* The arrow and navigation keys were redone, they are now more accessible, but
|
||||
the navigation keys require an extra tap to access.
|
||||
* The **Emacs** layer is gone, replaced by a simplified
|
||||
[navigation and media](#navigation-and-media-layer) layer.
|
||||
* `LEAD v` types the firmware version, and the keymap version.
|
||||
* On the [experimental](#experimental-layer) layer, the `L` and `Q`, and the `K`
|
||||
and `G` keys were swapped.
|
||||
* The [Steno](#steno-layer) layer gained a few more `#` and `*` keys, to make it
|
||||
easier on my fingers.
|
||||
|
||||
## v1.1 - 2016-06-14
|
||||
|
||||
* The keyboard starts in NKRO mode, bootmagic and other things are disabled.
|
||||
* A [Steno](#steno-layer) layer was added, to be used with Plover.
|
||||
* An [experimental](#experimental-layer) layer was added, something halfway
|
||||
between Dvorak and Capewell-Dvorak. A work in progress.
|
||||
* `LEAD y` types `\o/`.
|
||||
* Some keys on the [Base](#base-layer) layer have been moved around:
|
||||
- `?` moved to the left pinky, left of `Q`.
|
||||
- `=` shifted one row down, but `F11` stayed where it was.
|
||||
- `-` on the left half was replaced by `Tab`.
|
||||
- `Tab`'s original position is taken by a `Media Next`/`Media Prev` key.
|
||||
- `:` now inputs `;` when shifted.
|
||||
* `ESC` cancels the [Hungarian](#hungarian-layer) layer too, not just modifiers.
|
||||
|
||||
## v1.0 - 2016-05-26
|
||||
|
||||
Initial version.
|
||||
|
||||
# License
|
||||
|
||||
The layout, being a derivative of the original TMK firmware which is under the
|
||||
GPL-2+, this layout is under the GPL as well, but GPL-3+, rather than the older
|
||||
version.
|
@ -1 +0,0 @@
|
||||
UNICODE_ENABLE = yes
|
@ -1,92 +0,0 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2013 Oleg Kostyuk <cub.uanic@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 0x1307
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER ErgoDox EZ
|
||||
#define PRODUCT ErgoDox EZ
|
||||
#define DESCRIPTION t.m.k. keyboard firmware for Ergodox
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 14
|
||||
#define MATRIX_COLS 6
|
||||
|
||||
#define MOUSEKEY_DELAY 100
|
||||
#define MOUSEKEY_INTERVAL 20
|
||||
#define MOUSEKEY_MAX_SPEED 3
|
||||
#define MOUSEKEY_TIME_TO_MAX 10
|
||||
|
||||
#define TAPPING_TOGGLE 1
|
||||
|
||||
#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
|
||||
#define ROWS (int []){ D0, D5, B5, B6 }
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
#define BACKLIGHT_LEVELS 3
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 2
|
||||
#define TAPPING_TERM 200
|
||||
#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
|
||||
|
||||
/* 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_LCTL) | MOD_BIT(KC_RCTL)) || \
|
||||
keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
|
||||
)
|
||||
|
||||
/*
|
||||
* 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
|
||||
//#define DEBUG_MATRIX_SCAN_RATE
|
||||
#define ONESHOT_TAP_TOGGLE 2
|
||||
#define ONESHOT_TIMEOUT 3000
|
||||
|
||||
#endif
|
@ -0,0 +1,8 @@
|
||||
#include "CMD60.h"
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
|
||||
matrix_init_user();
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
#ifndef CMD60_H
|
||||
#define CMD60_H
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#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, K2D, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||
K40, K41, K42, K45, K4A, K4B, K4C, K4D \
|
||||
) { \
|
||||
{ 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, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO,K4A, K4B, K4C, K4D } \
|
||||
}
|
||||
|
||||
#endif
|
@ -0,0 +1,73 @@
|
||||
|
||||
# MCU name
|
||||
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=512
|
||||
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
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 ?= 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 ?= no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../Makefile
|
||||
endif
|
||||
|
||||
|
@ -0,0 +1,35 @@
|
||||
CMD60 keyboard firmware
|
||||
======================
|
||||
|
||||
##CMD60
|
||||
|
||||
This layout has been designed to optimize use of the left-hand, and it focussed specifically on programmers who work
|
||||
with text editors like SublimeText and Atom. It utilizes the power of Space_fn, and features a caps lock swap for Fn2
|
||||
and enter key on tap. These features allow you to keep your right hand on the mouse more and should enable you to
|
||||
achieve a higher level of productivity if you take the time to learn its function layers.
|
||||
|
||||
## Quantum MK Firmware
|
||||
|
||||
For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
|
||||
|
||||
## Building
|
||||
|
||||
Download or clone the whole firmware and navigate to the keyboards/handwired/CMD60 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`.
|
||||
|
||||
### Other Keymaps
|
||||
|
||||
To build the firmware binary hex file with a keymap just do `make` with `keymap` option like:
|
||||
|
||||
```
|
||||
$ make keymap=[default|jack|<name>]
|
||||
```
|
||||
|
||||
Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
|
@ -0,0 +1,162 @@
|
||||
/*
|
||||
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 0x6060
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER cmd
|
||||
#define PRODUCT CMD60
|
||||
#define DESCRIPTION Advanced Programming Keeb Layout
|
||||
|
||||
/* key matrix size */
|
||||
#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 { F0, F4, F5, F6, F7 }
|
||||
#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3, C6, D7, B4, B5, B6 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
// #define BACKLIGHT_PIN B7
|
||||
// #define BACKLIGHT_BREATHING
|
||||
// #define BACKLIGHT_LEVELS 3
|
||||
|
||||
|
||||
/* 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 MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
|
||||
/* 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 */
|
||||
#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
|
||||
* 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
|
@ -0,0 +1,66 @@
|
||||
#include "CMD60.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = KEYMAP( /* CMD60 - QWERTY */
|
||||
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, \
|
||||
LT(3, KC_ENT), 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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_NO, KC_RSFT, \
|
||||
KC_LCTL, KC_LGUI, KC_LALT, LT(2, KC_SPC), MO(3), MO(4), MO(5), TG(1) \
|
||||
),
|
||||
[1] = KEYMAP( /* CMD60 - GameMode */
|
||||
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_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, \
|
||||
KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_RSFT, \
|
||||
KC_TRNS, KC_NO, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
|
||||
),
|
||||
[2] = KEYMAP( /* CMD60 - Arrows */
|
||||
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_DEL, \
|
||||
KC_TRNS, KC_BSPC, KC_UP, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_UP, KC_DEL, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, \
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
|
||||
),
|
||||
[3] = KEYMAP( /* CMD60 - Functions */
|
||||
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_DEL, \
|
||||
KC_AUDIO_MUTE, KC_BSPC, KC_PGUP, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_TRNS, KC_PAUSE, KC_SLCK, KC_PSCREEN, \
|
||||
KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_INSERT, KC_NO, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
|
||||
),
|
||||
[4] = KEYMAP( /* CMD60 - Mouse */
|
||||
KC_SYSTEM_SLEEP, 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_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_NO, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_WH_UP, KC_MS_BTN3, KC_MS_WH_DOWN, KC_NO, KC_NO, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
|
||||
),
|
||||
[5] = KEYMAP( /* CMD60 - Media */
|
||||
KC_SYSTEM_WAKE, 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_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_MEDIA_PLAY_PAUSE, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WWW_BACK, KC_WWW_FORWARD, KC_NO, KC_NO, KC_WWW_REFRESH, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
|
||||
),
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
@ -0,0 +1,89 @@
|
||||
|
||||
#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
|
||||
|
||||
# for avr upload
|
||||
USB ?= /dev/cu.usbmodem1421
|
||||
#
|
||||
# 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)
|
||||
|
||||
|
||||
ifdef TEENSY2
|
||||
OPT_DEFS += -DATREUS_TEENSY2
|
||||
ATREUS_UPLOAD_COMMAND = teensy_loader_cli -w -mmcu=$(MCU) $(TARGET).hex
|
||||
else
|
||||
OPT_DEFS += -DATREUS_ASTAR
|
||||
OPT_DEFS += -DCATERINA_BOOTLOADER
|
||||
ATREUS_UPLOAD_COMMAND = while [ ! -r $(USB) ]; do sleep 1; done; \
|
||||
avrdude -p $(MCU) -c avr109 -U flash:w:$(TARGET).hex -P $(USB)
|
||||
endif
|
||||
# Interrupt driven control endpoint task(+60)
|
||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||
|
||||
|
||||
# MCU name
|
||||
|
||||
# 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
|
||||
# change yes to no to disable
|
||||
#
|
||||
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 ?= no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../Makefile
|
||||
endif
|
||||
|
||||
upload: build
|
||||
$(ATREUS_UPLOAD_COMMAND)
|
||||
|
@ -0,0 +1,173 @@
|
||||
/*
|
||||
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 0x6060
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER You
|
||||
#define PRODUCT traveller
|
||||
#define DESCRIPTION A custom keyboard
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 13
|
||||
|
||||
/*
|
||||
* 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 { D0, D1, D3, D2 }
|
||||
// no I can't say why this order seemed like a good idea
|
||||
#define MATRIX_COL_PINS { B5, D6, B7, B6, F6, B1, B3, F7, B4, E6, D7, C6, D4 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
// LED stuff
|
||||
#define RGB_DI_PIN B2
|
||||
//#define RBLIGHT_TIMER
|
||||
#define RGBLED_NUM 1 // Number of LEDs
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
#define RGBLIGHT_VAL_STEP 17
|
||||
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
// #define BACKLIGHT_PIN B7
|
||||
// #define BACKLIGHT_BREATHING
|
||||
// #define BACKLIGHT_LEVELS 3
|
||||
|
||||
|
||||
/* 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 MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
#define BACKLIGHT_LEVELS 3
|
||||
|
||||
/* 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 */
|
||||
#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
|
||||
* 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
|
@ -0,0 +1,305 @@
|
||||
#include "traveller.h"
|
||||
#include "mousekey.h"
|
||||
#include "action_layer.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.
|
||||
#define _QW 0
|
||||
#define _LW 1
|
||||
#define _HI 2
|
||||
#define _NAV 4
|
||||
#define _CUR 5
|
||||
#define _FKEYS 6
|
||||
#define _TRNS 8
|
||||
|
||||
// We do the same trick for functions
|
||||
#define RGBLED_TOGGLE 10
|
||||
#define _HIOUT 15
|
||||
#define _LWOUT 16
|
||||
// Macros
|
||||
#define MDL 4
|
||||
#define MDR 5
|
||||
#define MUR 6
|
||||
#define MUL 3
|
||||
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------. .-----------------------------------------.
|
||||
* | NAV | ` ~ | W | E | R | T | | Y | U | I | O | - | = |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | Q | S | D | F | G | | H | J | K | L | P | \ |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+------|
|
||||
*|ctrl/esc| A | X | C | V | B |Ctrl /| N | M | , | . | ; | ' |
|
||||
* |------+------+------+------+------+------+ // +------+------+------+------+------+------|
|
||||
* | Shift| Z | Del | GUI | Low | Bspc |/Enter| Spc | Hi | GUI | Alt | / |Shift |
|
||||
* `------------------------------------------------------------------------------------------'
|
||||
*
|
||||
*/
|
||||
[_QW] = KEYMAP(
|
||||
F(_NAV), KC_GRV, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_MINS, KC_EQL,
|
||||
KC_TAB, KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_P, KC_BSLS,
|
||||
CTL_T(KC_ESC), KC_A, KC_X, KC_C, KC_V, KC_B, KC_RCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_DEL, KC_LGUI, MO(_LW), KC_BSPC, KC_ENTER, KC_SPC, MO(_HI), KC_RGUI, KC_RALT, KC_SLSH, KC_RSFT
|
||||
),
|
||||
|
||||
/* LOW - numbers, missing or awkward programming keys
|
||||
Doubled 1 key allows lazy reach with ring finger.
|
||||
* ,-----------------------------------------. .-----------------------------------------.
|
||||
* | FKeys| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |Ctrl-alt-del|
|
||||
* |------+------+------+------+------+------| +------+------+------+------+------+------|
|
||||
* | Tab | 1 | ] | ( | ) | | | * | ( | ) | [ | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+------|
|
||||
* | Caps | [ | | { | } | ` | /| # | { | } | | ] | |
|
||||
* |------+------+------+------+------+------+ // +------+------+------+------+------+------|
|
||||
* | Shift| | | | Low | |/ | | Hi | | | |Shift |
|
||||
* `------------------------------------------------------------------------------------------'
|
||||
*
|
||||
*/
|
||||
|
||||
[_LW] = KEYMAP(
|
||||
F(_FKEYS), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, LCTL(LALT(KC_DEL)) ,
|
||||
KC_TRNS, KC_1, KC_RBRC, KC_LPRN, KC_RPRN, KC_NO, KC_ASTR, KC_LPRN, KC_RPRN, KC_LBRC, KC_NO, KC_NO,
|
||||
KC_CAPS, KC_LBRC, KC_NO, KC_LCBR, KC_RCBR, KC_TILD, KC_TRNS, KC_HASH, KC_LCBR, KC_RCBR, KC_NO, KC_RBRC, KC_NO,
|
||||
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
|
||||
),
|
||||
|
||||
/* HI - Punctuation, shell and
|
||||
url ://@.com row on bottom, && is opposite || ^$ are in regex order: ^.*$
|
||||
Right hand nav keys work pretty well chorded with the Right hand Hi Key
|
||||
* ,-----------------------------------------. .-----------------------------------------.
|
||||
* |FKEYS | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | ! | & | "|" | $ | % | | Vol+| Mute| | | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+------|
|
||||
* | CAPS | ^ | : | . | * | - | /| Vol-| Play | PgUp | Home | Up | End |
|
||||
* |------+------+------+------+------+------+ // +------+------+------+------+------+------|
|
||||
* | | / | | | Low | |/ | | Hi | PgDn | Left| Down | Right |
|
||||
* `------------------------------------------------------------------------------------------'
|
||||
*
|
||||
*/
|
||||
|
||||
[_HI] = KEYMAP(
|
||||
F(_FKEYS), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
|
||||
KC_TRNS, KC_EXLM, KC_AMPR, KC_PIPE, KC_DLR, KC_PERC, KC_VOLU, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_CAPS, KC_CIRC, KC_COLN, KC_DOT, KC_ASTR, KC_MINS, KC_TRNS, KC_VOLD, KC_PPLS, KC_PGUP, KC_HOME, KC_UP, KC_END,
|
||||
KC_TRNS, KC_SLSH, KC_TRNS, KC_TRNS, F(_LW), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||
),
|
||||
|
||||
/* NAV - mouse & navigation
|
||||
//gui left and right are line home/end, or fore & back in browser
|
||||
// Mouse buttons are reversed for comfort - bigger stretch is to the right button.
|
||||
|
||||
* ,-----------------------------------------. .-----------------------------------------.
|
||||
* | NAV | | | Up | |Gui-> | | MwU | MS_UL| MS_U |MS_UR | |Ms Norm|
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | |Gui<- | Left | Down |Right | C^E | | BTN3 | MS_L |MS Up | MS_R | |Ms Fast |
|
||||
* |------+------+------+------+------+------|------|------+------+------+------+------+--------|
|
||||
* | | C^A | GUI X| GUI C| GUI_V| |Enter/| MWD | M_DL |MS Dwn|MS_DR | Up |Ms Slow |
|
||||
* |------+------+------+------+------+------+ // +------+------+------+------+------+------|
|
||||
* | | GuiZ | | | Low | |/ButnR|ButnL | Hi | | Left | Down | Right |
|
||||
* `------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_NAV] = KEYMAP(
|
||||
F(_NAV), KC_NO, KC_NO, KC_UP, KC_NO, RGUI(KC_RIGHT), KC_WH_U, M(MUL), KC_MS_U, M(MUR), KC_NO, KC_ACL2,
|
||||
KC_TRNS, RGUI(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E), KC_BTN3, KC_MS_L, KC_MS_U, KC_MS_R, KC_NO, KC_ACL1,
|
||||
KC_TRNS, LCTL(KC_A), LGUI(KC_X),RGUI(KC_C), RGUI(KC_V),KC_NO, KC_ENTER, KC_WH_D, M(MDL), KC_MS_D, M(MDR), KC_UP, KC_ACL0,
|
||||
KC_TRNS, RGUI(KC_Z), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||
),
|
||||
|
||||
/* FKEYS - Funtion keys & mac stuff
|
||||
* ,-----------------------------------------. .-----------------------------------------.
|
||||
* | FKEYS| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | Ctrl |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | F11 | F12 | F13 | F14 | F15 | Alt |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+------|
|
||||
* |Qwerty| | | | | | /| | | | | | Del |
|
||||
* |------+------+------+------+------+------+ // +------+------+------+------+------+------|
|
||||
* | . |RGBTog| . | | LO | Bspc |/ | | HI | | | | |
|
||||
* `------------------------------------------------------------------------------------------'
|
||||
*
|
||||
*/
|
||||
|
||||
[_FKEYS] = KEYMAP(
|
||||
F(_FKEYS), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_RCTL,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_LALT ,
|
||||
F(_QW), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL,
|
||||
KC_TRNS, F(RGBLED_TOGGLE), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
|
||||
/* TRNS - skeleton for laters
|
||||
* ,-----------------------------------------. .-----------------------------------------.
|
||||
* | . | . | . | . | . | . | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | . | . | . | . | . | . | | 6 | 7 | 8 | 9 | 0 | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+------|
|
||||
* | . | . | . | . | . | . | /| | | | . | ; | " |
|
||||
* |------+------+------+------+------+------+ // +------+------+------+------+------+------|
|
||||
* | . | . | . | GUI | LO | . |/ | Spc | HI | GUI | M0 | / |LSFT |
|
||||
* `------------------------------------------------------------------------------------------'
|
||||
*
|
||||
*/
|
||||
|
||||
[_TRNS] = {
|
||||
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, 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_NO, 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}
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[_QW] = ACTION_LAYER_ON(_QW,ON_RELEASE), // return to QWERTY layer
|
||||
[_LW] = ACTION_LAYER_TAP_TOGGLE(_LW), // Turn on LW when holding, or tap 3 times to switch
|
||||
[_HI] = ACTION_LAYER_TAP_TOGGLE(_HI), // Turn on LW when holding, or tap 3 times to switch
|
||||
[_NAV] = ACTION_LAYER_TOGGLE(_NAV),
|
||||
[_FKEYS] = ACTION_LAYER_TOGGLE(_FKEYS),
|
||||
[_LWOUT] = ACTION_LAYER_OFF(_LW,ON_RELEASE),
|
||||
[_HIOUT] = ACTION_LAYER_OFF(_HI,ON_RELEASE),
|
||||
|
||||
// Functions
|
||||
[RGBLED_TOGGLE] = ACTION_FUNCTION(RGBLED_TOGGLE),
|
||||
|
||||
};
|
||||
|
||||
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);
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_step();
|
||||
#endif
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
break;
|
||||
|
||||
// from algernon's ErgoDox EZ layout,
|
||||
case MUL:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_UP);
|
||||
mousekey_on(KC_MS_LEFT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_UP);
|
||||
mousekey_off(KC_MS_LEFT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case MUR:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_UP);
|
||||
mousekey_on(KC_MS_RIGHT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_UP);
|
||||
mousekey_off(KC_MS_RIGHT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case MDL:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_DOWN);
|
||||
mousekey_on(KC_MS_LEFT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_DOWN);
|
||||
mousekey_off(KC_MS_LEFT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case MDR:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_DOWN);
|
||||
mousekey_on(KC_MS_RIGHT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_DOWN);
|
||||
mousekey_off(KC_MS_RIGHT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
|
||||
|
||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||
switch (id) {
|
||||
case RGBLED_TOGGLE:
|
||||
//led operations
|
||||
if (record->event.pressed) {
|
||||
rgblight_toggle();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void LayerLEDSet(uint8_t layr) {
|
||||
|
||||
switch (layr) {
|
||||
case _QW:
|
||||
rgblight_setrgb(0,20, 0); // dim green
|
||||
break;
|
||||
case _LW:
|
||||
// deep purple
|
||||
rgblight_setrgb(20,0,35);
|
||||
break;
|
||||
case _HI:
|
||||
// light blue
|
||||
rgblight_setrgb(0,20,20);
|
||||
break;
|
||||
case _NAV:
|
||||
// Yellowy orange
|
||||
rgblight_setrgb(25,20,0); // brighter
|
||||
break;
|
||||
case _FKEYS:
|
||||
// RED
|
||||
rgblight_setrgb(20,0,0); // brighter
|
||||
break;
|
||||
default:
|
||||
rgblight_setrgb(20,2,20);//error
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
// Bleah globals need to be initialized.
|
||||
uint8_t old_layer=_QW;
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
uint8_t layer = biton32(layer_state);
|
||||
if (old_layer != layer) {
|
||||
LayerLEDSet(layer);
|
||||
old_layer=layer;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,2 @@
|
||||
# The default keymap for handwired/traveller
|
||||
this is a kitchen sink build
|
@ -0,0 +1,35 @@
|
||||
traveler keyboard firmware
|
||||
======================
|
||||
|
||||
## Traveller Specific Info ##
|
||||
The traveller is a varient on the atreus keyboard.
|
||||
Like the Atreus, it is designed to be a good compromise between size and ergonomics.
|
||||
|
||||
key differences are
|
||||
- an additional column for each pinky
|
||||
- an RGB LED in the center to show the current layer
|
||||
- more finger stagger, splay angle and contoured keycaps (F2 profile for space key).
|
||||
|
||||
You can make your own traveller keyboard by using the openscad tools from the atreus repository, and adding a hole for the LED to shine through.
|
||||
|
||||
## 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 keyboard/traveler 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`.
|
||||
|
||||
### 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 file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
|
||||
|
||||
To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
|
||||
```
|
||||
$ make KEYMAP=[default|jack|<name>]
|
||||
```
|
||||
Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
|
@ -0,0 +1,61 @@
|
||||
#include "traveller.h"
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
};
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void process_action_user(keyrecord_t *record) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
}
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_init();
|
||||
rgblight_mode(1); // solid, no timer
|
||||
rgblight_setrgb(0,20,0);// dim green, happens to be same as _QW
|
||||
#endif
|
||||
|
||||
// Turn status LED on
|
||||
DDRC |= (1<<7);
|
||||
PORTC |= (1<<7);
|
||||
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
// put your looping keyboard code here
|
||||
// runs every cycle (a lot)
|
||||
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
// put your per-action keyboard code here
|
||||
// runs for every action, just before processing by the firmware
|
||||
|
||||
return process_record_user(keycode, record);
|
||||
}
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||
|
||||
led_set_user(usb_led);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,32 @@
|
||||
#ifndef TRAVELLER_H
|
||||
#define TRAVELLER_H
|
||||
|
||||
#include "quantum.h"
|
||||
#include "led.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#include "rgblight.h"
|
||||
#endif
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
#include "backlight.h"
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// This a shortcut to help you visually see your layout.
|
||||
// The first section contains all of the arguements
|
||||
// The second converts the arguments into a two-dimensional array
|
||||
#define KEYMAP( \
|
||||
k00, k01, k02, k03, k04, k05, k07, k08, k09, k0a, k0b, k0c, \
|
||||
k10, k11, k12, k13, k14, k15, k17, k18, k19, k1a, k1b, k1c, \
|
||||
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 \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, k02, k03, k04, k05, KC_NO, k07, k08, k09, k0a, k0b, k0c }, \
|
||||
{ k10, k11, k12, k13, k14, k15, KC_NO, k17, k18, k19, k1a, k1b, k1c }, \
|
||||
{ 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 } \
|
||||
}
|
||||
|
||||
#endif
|
@ -1,44 +0,0 @@
|
||||
#ifndef KEYBOARDS_INFINITY_ERGODOX_INFINITY_ERGODOX_H_
|
||||
#define KEYBOARDS_INFINITY_ERGODOX_INFINITY_ERGODOX_H_
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define KEYMAP( \
|
||||
A80, A70, A60, A50, A40, A30, A20, \
|
||||
A81, A71, A61, A51, A41, A31, A21, \
|
||||
A82, A72, A62, A52, A42, A32, \
|
||||
A83, A73, A63, A53, A43, A33, A23, \
|
||||
A84, A74, A64, A54, A44, \
|
||||
A13, A03, \
|
||||
A04, \
|
||||
A34, A24, A14, \
|
||||
B20, B30, B40, B50, B60, B70, B80, \
|
||||
B21, B31, B41, B51, B61, B71, B81, \
|
||||
B32, B42, B52, B62, B72, B82, \
|
||||
B23, B33, B43, B53, B63, B73, B83, \
|
||||
B44, B54, B64, B74, B84, \
|
||||
B03, B13, \
|
||||
B04, \
|
||||
B14, B24, B34 \
|
||||
) { \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_##A03, KC_##A04 }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_##A13, KC_##A14 }, \
|
||||
{ KC_##A20, KC_##A21, KC_NO, KC_##A23, KC_##A24 }, \
|
||||
{ KC_##A30, KC_##A31, KC_##A32, KC_##A33, KC_##A34 }, \
|
||||
{ KC_##A40, KC_##A41, KC_##A42, KC_##A43, KC_##A44 }, \
|
||||
{ KC_##A50, KC_##A51, KC_##A52, KC_##A53, KC_##A54 }, \
|
||||
{ KC_##A60, KC_##A61, KC_##A62, KC_##A63, KC_##A64 }, \
|
||||
{ KC_##A70, KC_##A71, KC_##A72, KC_##A73, KC_##A74 }, \
|
||||
{ KC_##A80, KC_##A81, KC_##A82, KC_##A83, KC_##A84 }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_##B03, KC_##B04 }, \
|
||||
{ KC_NO, KC_NO, KC_NO, KC_##B13, KC_##B14 }, \
|
||||
{ KC_##B20, KC_##B21, KC_NO, KC_##B23, KC_##B24 }, \
|
||||
{ KC_##B30, KC_##B31, KC_##B32, KC_##B33, KC_##B34 }, \
|
||||
{ KC_##B40, KC_##B41, KC_##B42, KC_##B43, KC_##B44 }, \
|
||||
{ KC_##B50, KC_##B51, KC_##B52, KC_##B53, KC_##B54 }, \
|
||||
{ KC_##B60, KC_##B61, KC_##B62, KC_##B63, KC_##B64 }, \
|
||||
{ KC_##B70, KC_##B71, KC_##B72, KC_##B73, KC_##B74 }, \
|
||||
{ KC_##B80, KC_##B81, KC_##B82, KC_##B83, KC_##B84 } \
|
||||
}
|
||||
|
||||
#endif /* KEYBOARDS_INFINITY_ERGODOX_INFINITY_ERGODOX_H_ */
|
@ -1,114 +0,0 @@
|
||||
/*
|
||||
Copyright 2016 Fred Sundvik <fsundvik@gmail.com>
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include "infinity_ergodox.h"
|
||||
|
||||
// Workaround for old keymap format
|
||||
#define KC_RESET RESET
|
||||
|
||||
const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KEYMAP( // layer 0 : default
|
||||
// left hand
|
||||
EQL, 1, 2, 3, 4, 5, ESC,
|
||||
BSLS,Q, W, E, R, T, FN1,
|
||||
TAB, A, S, D, F, G,
|
||||
LSFT,Z, X, C, V, B, FN0,
|
||||
LGUI,GRV, BSLS,LEFT,RGHT,
|
||||
LCTL,LALT,
|
||||
HOME,
|
||||
BSPC,DEL, END,
|
||||
// right hand
|
||||
FN2, 6, 7, 8, 9, 0, MINS,
|
||||
LBRC,Y, U, I, O, P, RBRC,
|
||||
H, J, K, L, SCLN,QUOT,
|
||||
FN0, N, M, COMM,DOT, SLSH,RSFT,
|
||||
LEFT,DOWN,UP, RGHT,RGUI,
|
||||
RALT,RCTL,
|
||||
PGUP,
|
||||
PGDN,ENT, SPC
|
||||
),
|
||||
|
||||
KEYMAP( // layer 1 : function and symbol keys
|
||||
// left hand
|
||||
TRNS,F1, F2, F3, F4, F5, F11,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,FN3,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,
|
||||
TRNS,
|
||||
TRNS,TRNS,TRNS,
|
||||
// right hand
|
||||
F12, F6, F7, F8, F9, F10, TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,
|
||||
TRNS,
|
||||
TRNS,TRNS,TRNS
|
||||
),
|
||||
|
||||
KEYMAP( // layer 2 : keyboard functions
|
||||
// left hand
|
||||
RESET,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, FN3,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,
|
||||
TRNS,
|
||||
TRNS,TRNS,TRNS,
|
||||
// right hand
|
||||
TRNS, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,
|
||||
TRNS,
|
||||
TRNS,TRNS,TRNS
|
||||
),
|
||||
|
||||
KEYMAP( // layer 3: numpad
|
||||
// left hand
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,
|
||||
TRNS,TRNS,
|
||||
TRNS,
|
||||
TRNS,TRNS,TRNS,
|
||||
// right hand
|
||||
TRNS,NLCK,PSLS,PAST,PAST,PMNS,BSPC,
|
||||
TRNS,NO, P7, P8, P9, PMNS,BSPC,
|
||||
NO, P4, P5, P6, PPLS,PENT,
|
||||
TRNS,NO, P1, P2, P3, PPLS,PENT,
|
||||
P0, PDOT,SLSH,PENT,PENT,
|
||||
TRNS,TRNS,
|
||||
TRNS,
|
||||
TRNS,TRNS,TRNS
|
||||
),
|
||||
};
|
||||
const uint16_t fn_actions[] = {
|
||||
ACTION_LAYER_MOMENTARY(1), // FN0 - switch to Layer1
|
||||
ACTION_LAYER_SET(2, ON_PRESS), // FN1 - set Layer2
|
||||
ACTION_LAYER_TOGGLE(3), // FN2 - toggle Layer3 aka Numpad layer
|
||||
ACTION_LAYER_SET(0, ON_PRESS), // FN3 - set Layer0
|
||||
};
|
@ -1,168 +0,0 @@
|
||||
/*
|
||||
Copyright 2016 Fred Sundvik <fsundvik@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/>.
|
||||
*/
|
||||
|
||||
// Currently we are assuming that both the backlight and LCD are enabled
|
||||
// But it's entirely possible to write a custom visualizer that use only
|
||||
// one of them
|
||||
#ifndef LCD_BACKLIGHT_ENABLE
|
||||
#error This visualizer needs that LCD backlight is enabled
|
||||
#endif
|
||||
|
||||
#ifndef LCD_ENABLE
|
||||
#error This visualizer needs that LCD is enabled
|
||||
#endif
|
||||
|
||||
#include "visualizer.h"
|
||||
#include "led_test.h"
|
||||
|
||||
static const char* welcome_text[] = {"TMK", "Infinity Ergodox"};
|
||||
|
||||
// Just an example how to write custom keyframe functions, we could have moved
|
||||
// all this into the init function
|
||||
bool display_welcome(keyframe_animation_t* animation, visualizer_state_t* state) {
|
||||
(void)animation;
|
||||
// Read the uGFX documentation for information how to use the displays
|
||||
// http://wiki.ugfx.org/index.php/Main_Page
|
||||
gdispClear(White);
|
||||
// You can use static variables for things that can't be found in the animation
|
||||
// or state structs
|
||||
gdispDrawString(0, 3, welcome_text[0], state->font_dejavusansbold12, Black);
|
||||
gdispDrawString(0, 15, welcome_text[1], state->font_dejavusansbold12, Black);
|
||||
// Always remember to flush the display
|
||||
gdispFlush();
|
||||
// you could set the backlight color as well, but we won't do it here, since
|
||||
// it's part of the following animation
|
||||
// lcd_backlight_color(hue, saturation, intensity);
|
||||
// We don't need constant updates, just drawing the screen once is enough
|
||||
return false;
|
||||
}
|
||||
|
||||
// Feel free to modify the animations below, or even add new ones if needed
|
||||
|
||||
// Don't worry, if the startup animation is long, you can use the keyboard like normal
|
||||
// during that time
|
||||
static keyframe_animation_t startup_animation = {
|
||||
.num_frames = 4,
|
||||
.loop = false,
|
||||
.frame_lengths = {0, gfxMillisecondsToTicks(1000), gfxMillisecondsToTicks(5000), 0},
|
||||
.frame_functions = {
|
||||
display_welcome,
|
||||
keyframe_animate_backlight_color,
|
||||
keyframe_no_operation,
|
||||
enable_visualization
|
||||
},
|
||||
};
|
||||
|
||||
// The color animation animates the LCD color when you change layers
|
||||
static keyframe_animation_t color_animation = {
|
||||
.num_frames = 2,
|
||||
.loop = false,
|
||||
// Note that there's a 200 ms no-operation frame,
|
||||
// this prevents the color from changing when activating the layer
|
||||
// momentarily
|
||||
.frame_lengths = {gfxMillisecondsToTicks(200), gfxMillisecondsToTicks(500)},
|
||||
.frame_functions = {keyframe_no_operation, keyframe_animate_backlight_color},
|
||||
};
|
||||
|
||||
// The LCD animation alternates between the layer name display and a
|
||||
// bitmap that displays all active layers
|
||||
static keyframe_animation_t lcd_animation = {
|
||||
.num_frames = 2,
|
||||
.loop = true,
|
||||
.frame_lengths = {gfxMillisecondsToTicks(2000), gfxMillisecondsToTicks(2000)},
|
||||
.frame_functions = {keyframe_display_layer_text, keyframe_display_layer_bitmap},
|
||||
};
|
||||
|
||||
static keyframe_animation_t suspend_animation = {
|
||||
.num_frames = 3,
|
||||
.loop = false,
|
||||
.frame_lengths = {0, gfxMillisecondsToTicks(1000), 0},
|
||||
.frame_functions = {
|
||||
keyframe_display_layer_text,
|
||||
keyframe_animate_backlight_color,
|
||||
keyframe_disable_lcd_and_backlight,
|
||||
},
|
||||
};
|
||||
|
||||
static keyframe_animation_t resume_animation = {
|
||||
.num_frames = 5,
|
||||
.loop = false,
|
||||
.frame_lengths = {0, 0, gfxMillisecondsToTicks(1000), gfxMillisecondsToTicks(5000), 0},
|
||||
.frame_functions = {
|
||||
keyframe_enable_lcd_and_backlight,
|
||||
display_welcome,
|
||||
keyframe_animate_backlight_color,
|
||||
keyframe_no_operation,
|
||||
enable_visualization,
|
||||
},
|
||||
};
|
||||
|
||||
void initialize_user_visualizer(visualizer_state_t* state) {
|
||||
// The brightness will be dynamically adjustable in the future
|
||||
// But for now, change it here.
|
||||
lcd_backlight_brightness(0x50);
|
||||
state->current_lcd_color = LCD_COLOR(0x00, 0x00, 0xFF);
|
||||
state->target_lcd_color = LCD_COLOR(0x10, 0xFF, 0xFF);
|
||||
start_keyframe_animation(&startup_animation);
|
||||
start_keyframe_animation(&led_test_animation);
|
||||
}
|
||||
|
||||
void update_user_visualizer_state(visualizer_state_t* state) {
|
||||
// Add more tests, change the colors and layer texts here
|
||||
// Usually you want to check the high bits (higher layers first)
|
||||
// because that's the order layers are processed for keypresses
|
||||
// You can for check for example:
|
||||
// state->status.layer
|
||||
// state->status.default_layer
|
||||
// state->status.leds (see led.h for available statuses)
|
||||
if (state->status.layer & 0x8) {
|
||||
state->target_lcd_color = LCD_COLOR(0xC0, 0xB0, 0xFF);
|
||||
state->layer_text = "Numpad";
|
||||
}
|
||||
else if (state->status.layer & 0x4) {
|
||||
state->target_lcd_color = LCD_COLOR(0, 0xB0, 0xFF);
|
||||
state->layer_text = "KBD functions";
|
||||
}
|
||||
else if (state->status.layer & 0x2) {
|
||||
state->target_lcd_color = LCD_COLOR(0x80, 0xB0, 0xFF);
|
||||
state->layer_text = "Function keys";
|
||||
}
|
||||
else {
|
||||
state->target_lcd_color = LCD_COLOR(0x40, 0xB0, 0xFF);
|
||||
state->layer_text = "Default";
|
||||
}
|
||||
// You can also stop existing animations, and start your custom ones here
|
||||
// remember that you should normally have only one animation for the LCD
|
||||
// and one for the background. But you can also combine them if you want.
|
||||
start_keyframe_animation(&lcd_animation);
|
||||
start_keyframe_animation(&color_animation);
|
||||
}
|
||||
|
||||
void user_visualizer_suspend(visualizer_state_t* state) {
|
||||
state->layer_text = "Suspending...";
|
||||
uint8_t hue = LCD_HUE(state->current_lcd_color);
|
||||
uint8_t sat = LCD_SAT(state->current_lcd_color);
|
||||
state->target_lcd_color = LCD_COLOR(hue, sat, 0);
|
||||
start_keyframe_animation(&suspend_animation);
|
||||
}
|
||||
|
||||
void user_visualizer_resume(visualizer_state_t* state) {
|
||||
state->current_lcd_color = LCD_COLOR(0x00, 0x00, 0x00);
|
||||
state->target_lcd_color = LCD_COLOR(0x10, 0xFF, 0xFF);
|
||||
start_keyframe_animation(&resume_animation);
|
||||
start_keyframe_animation(&led_test_animation);
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
JD45 keyboard firmware
|
||||
======================
|
||||
|
||||
TODO: to be updated.
|
@ -0,0 +1,79 @@
|
||||
|
||||
## Project specific files
|
||||
|
||||
SRC= matrix.c
|
||||
|
||||
# MCU name
|
||||
MCU = at90usb1286
|
||||
#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=1024
|
||||
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
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
|
||||
# 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 ?= no # Enable keyboard backlight functionality on B7 by default
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output should be port E6, current quantum library hardcodes C6, which we use for programming
|
||||
CUSTOM_MATRIX=yes # need to do our own thing with the matrix
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../Makefile
|
||||
endif
|
||||
|
||||
|
@ -0,0 +1,174 @@
|
||||
/*
|
||||
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 0x6060
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER You
|
||||
#define PRODUCT kinesis-advantage
|
||||
#define DESCRIPTION A custom keyboard
|
||||
|
||||
// Mouse
|
||||
#define MOUSEKEY_DELAY 20
|
||||
#define MOUSEKEY_INTERVAL 20
|
||||
#define MOUSEKEY_MAX_SPEED 4
|
||||
#define MOUSEKEY_TIME_TO_MAX 20
|
||||
#define MOUSEKEY_WHEEL_MAX_SPEED 1
|
||||
#define MOUSEKEY_WHEEL_DELTA 1
|
||||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 1
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 16
|
||||
#define MATRIX_COLS 8
|
||||
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
*/
|
||||
//Passed through the port multipler, so 4 pins =16
|
||||
#define MATRIX_ROW_PINS { F0,F1, F2, F3 }
|
||||
|
||||
// May be upside down.
|
||||
#define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
// #define BACKLIGHT_PIN B7
|
||||
// #define BACKLIGHT_BREATHING
|
||||
// #define BACKLIGHT_LEVELS 3
|
||||
|
||||
|
||||
/* 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 MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
|
||||
/* 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 */
|
||||
#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
|
||||
* 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
|
@ -0,0 +1,232 @@
|
||||
EESchema-LIBRARY Version 2.3 Date: Wednesday, November 12, 2014 'pmt' 10:15:19 pm
|
||||
#encoding utf-8
|
||||
#
|
||||
# AT90S4414-P
|
||||
#
|
||||
DEF AT90S4414-P IC 0 40 Y Y 1 F N
|
||||
F0 "IC" -850 1880 40 H V L BNN
|
||||
F1 "AT90S4414-P" 450 -1950 40 H V L BNN
|
||||
F2 "DIL40" 0 0 30 H V C CIN
|
||||
F3 "~" 0 0 60 H V C CNN
|
||||
ALIAS AT90S8515-P
|
||||
$FPLIST
|
||||
40DIP-ELL600
|
||||
40dip600
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -850 1850 850 -1850 0 1 10 f
|
||||
X (T0)PB0 1 1000 700 150 L 40 40 1 1 B
|
||||
X (T1)PB1 2 1000 600 150 L 40 40 1 1 B
|
||||
X (AIN0)PB2 3 1000 500 150 L 40 40 1 1 B
|
||||
X (AIN1)PB3 4 1000 400 150 L 40 40 1 1 B
|
||||
X (~SS~)PB4 5 1000 300 150 L 40 40 1 1 B
|
||||
X (MOSI)PB5 6 1000 200 150 L 40 40 1 1 B
|
||||
X (MISO)PB6 7 1000 100 150 L 40 40 1 1 B
|
||||
X (SCK)PB7 8 1000 0 150 L 40 40 1 1 B
|
||||
X ~RESET 9 -1000 1700 150 R 40 40 1 1 I
|
||||
X (RXD)PD0 10 1000 -1000 150 L 40 40 1 1 B
|
||||
X GND 20 0 -2000 150 U 40 40 1 1 W
|
||||
X ALE 30 1000 850 150 L 40 40 1 1 O
|
||||
X VCC 40 0 2000 150 D 40 40 1 1 W
|
||||
X (TXD)PD1 11 1000 -1100 150 L 40 40 1 1 B
|
||||
X (A8)PC0 21 1000 -150 150 L 40 40 1 1 B
|
||||
X ICP 31 -1000 -1400 150 R 40 40 1 1 I
|
||||
X (INT0)PD2 12 1000 -1200 150 L 40 40 1 1 B
|
||||
X (A9)PC1 22 1000 -250 150 L 40 40 1 1 B
|
||||
X (AD7)PA7 32 1000 1000 150 L 40 40 1 1 B
|
||||
X (INT1)PD3 13 1000 -1300 150 L 40 40 1 1 B
|
||||
X (A10)PC2 23 1000 -350 150 L 40 40 1 1 B
|
||||
X (AD6)PA6 33 1000 1100 150 L 40 40 1 1 B
|
||||
X PD4 14 1000 -1400 150 L 40 40 1 1 B
|
||||
X (A11)PC3 24 1000 -450 150 L 40 40 1 1 B
|
||||
X (AD5)PA5 34 1000 1200 150 L 40 40 1 1 B
|
||||
X (OC1A)PD5 15 1000 -1500 150 L 40 40 1 1 B
|
||||
X (A12)PC4 25 1000 -550 150 L 40 40 1 1 B
|
||||
X (AD4)PA4 35 1000 1300 150 L 40 40 1 1 B
|
||||
X (~WR~)PD6 16 1000 -1600 150 L 40 40 1 1 B
|
||||
X (A13)PC5 26 1000 -650 150 L 40 40 1 1 B
|
||||
X (AD3)PA3 36 1000 1400 150 L 40 40 1 1 B
|
||||
X (~RD~)PD7 17 1000 -1700 150 L 40 40 1 1 B
|
||||
X (A14)PC6 27 1000 -750 150 L 40 40 1 1 B
|
||||
X (AD2)PA2 37 1000 1500 150 L 40 40 1 1 B
|
||||
X XTAL2 18 -1000 1200 150 R 40 40 1 1 B
|
||||
X (A15)PC7 28 1000 -850 150 L 40 40 1 1 B
|
||||
X (AD1)PA1 38 1000 1600 150 L 40 40 1 1 B
|
||||
X XTAL1 19 -1000 800 150 R 40 40 1 1 B
|
||||
X OC1B 29 -1000 -1500 150 R 40 40 1 1 W
|
||||
X (AD0)PA0 39 1000 1700 150 L 40 40 1 1 B
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# ATMEGA16U4-A
|
||||
#
|
||||
DEF ATMEGA16U4-A U 0 40 Y Y 1 F N
|
||||
F0 "U" -950 1700 40 H V C CNN
|
||||
F1 "ATMEGA16U4-A" 700 -1500 40 H V C CNN
|
||||
F2 "TQFP44" 0 0 35 H V C CIN
|
||||
F3 "~" 1100 1100 60 H V C CNN
|
||||
ALIAS ATMEGA16U4RC-A ATMEGA32U4-A ATMEGA32U4RC-A
|
||||
$FPLIST
|
||||
TQFP44
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -1000 1650 950 -1450 0 1 10 f
|
||||
X (INT6/AIN0)PE6 1 1100 -650 150 L 40 40 1 1 B
|
||||
X UVCC 2 -450 1800 150 D 40 40 1 1 W
|
||||
X D- 3 -1150 100 150 R 40 40 1 1 B
|
||||
X D+ 4 -1150 200 150 R 40 40 1 1 B
|
||||
X UGND 5 -400 -1600 150 U 40 40 1 1 P
|
||||
X UCAP 6 -1150 -50 150 R 40 40 1 1 P
|
||||
X VBUS 7 -1150 350 150 R 40 40 1 1 P
|
||||
X (SS/PCINT0)PB0 8 1100 1550 150 L 40 40 1 1 B
|
||||
X (SCLK/PCINT1)PB1 9 1100 1450 150 L 40 40 1 1 B
|
||||
X (PDI/MOSI/PCINT2)PB2 10 1100 1350 150 L 40 40 1 1 B
|
||||
X (RXD/INT2)PD2 20 1100 150 150 L 40 40 1 1 B
|
||||
X (ADC13/OC1B/OC4B/PCINT13)PB6 30 1100 950 150 L 40 40 1 1 B
|
||||
X (ADC1)PF1 40 1100 -950 150 L 40 40 1 1 B
|
||||
X (PDO/MISO/PCINT3)PB3 11 1100 1250 150 L 40 40 1 1 B
|
||||
X (TXD/INT3)PD3 21 1100 50 150 L 40 40 1 1 B
|
||||
X (OC3A/~OC4A~)PC6 31 1100 650 150 L 40 40 1 1 B
|
||||
X (ADC0)PF0 41 1100 -850 150 L 40 40 1 1 B
|
||||
X (OC0A/OC1C/~RTS~/PCINT7)PB7 12 1100 850 150 L 40 40 1 1 B
|
||||
X (XCK1/~CTS~)PD5 22 1100 -150 150 L 40 40 1 1 B
|
||||
X (ICP3/CLK0/OC4A)PC7 32 1100 550 150 L 40 40 1 1 B
|
||||
X AREF 42 -1150 -850 150 R 40 40 1 1 P
|
||||
X ~RESET~ 13 -1150 1550 150 R 40 40 1 1 I
|
||||
X GND 23 -50 -1600 150 U 40 40 1 1 W
|
||||
X (~HWB~)PE2 33 1100 -550 150 L 40 40 1 1 B
|
||||
X GND 43 150 -1600 150 U 40 40 1 1 W
|
||||
X VCC 14 -200 1800 150 D 40 40 1 1 W
|
||||
X AVCC 24 150 1800 150 D 40 40 1 1 W
|
||||
X VCC 34 -100 1800 150 D 40 40 1 1 W
|
||||
X AVCC 44 250 1800 150 D 40 40 1 1 W
|
||||
X GND 15 -150 -1600 150 U 40 40 1 1 W
|
||||
X (ICP2/ADC8)PD4 25 1100 -50 150 L 40 40 1 1 B
|
||||
X GND 35 50 -1600 150 U 40 40 1 1 W
|
||||
X XTAL2 16 -1150 950 150 R 40 40 1 1 O
|
||||
X (T1/~OC4D~/ADC9)PD6 26 1100 -250 150 L 40 40 1 1 B
|
||||
X (ADC7/TDI)PF7 36 1100 -1350 150 L 40 40 1 1 B
|
||||
X XTAL1 17 -1150 1150 150 R 40 40 1 1 I
|
||||
X (T0/OC4D/ADC10)PD7 27 1100 -350 150 L 40 40 1 1 B
|
||||
X (ADC6/TDO)PF6 37 1100 -1250 150 L 40 40 1 1 B
|
||||
X (OC0B/SCL/INT0)PD0 18 1100 350 150 L 40 40 1 1 B
|
||||
X (ADC11/PCINT4)PB4 28 1100 1150 150 L 40 40 1 1 B
|
||||
X (ADC5/TMS)PF5 38 1100 -1150 150 L 40 40 1 1 B
|
||||
X (SDA/INT1)PD1 19 1100 250 150 L 40 40 1 1 B
|
||||
X (ADC12/OC1A/~OC4B~/PCINT12)PB5 29 1100 1050 150 L 40 40 1 1 B
|
||||
X (ADC4/TCK)PF4 39 1100 -1050 150 L 40 40 1 1 B
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# C
|
||||
#
|
||||
DEF C C 0 10 N Y 1 F N
|
||||
F0 "C" 0 100 40 H V L CNN
|
||||
F1 "C" 6 -85 40 H V L CNN
|
||||
F2 "~" 38 -150 30 H V C CNN
|
||||
F3 "~" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
SM*
|
||||
C?
|
||||
C1-1
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 20 -80 -30 80 -30 N
|
||||
P 2 0 1 20 -80 30 80 30 N
|
||||
X ~ 1 0 200 170 D 40 40 1 1 P
|
||||
X ~ 2 0 -200 170 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# CONN_7
|
||||
#
|
||||
DEF CONN_7 P 0 40 Y N 1 F N
|
||||
F0 "P" -30 0 60 V V C CNN
|
||||
F1 "CONN_7" 70 0 60 V V C CNN
|
||||
F2 "~" 0 0 60 H V C CNN
|
||||
F3 "~" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
S -100 350 150 -350 0 1 0 N
|
||||
X P1 1 -350 300 250 R 50 50 1 1 P I
|
||||
X P2 2 -350 200 250 R 50 50 1 1 P I
|
||||
X P3 3 -350 100 250 R 50 50 1 1 P I
|
||||
X P4 4 -350 0 250 R 50 50 1 1 P I
|
||||
X P5 5 -350 -100 250 R 50 50 1 1 P I
|
||||
X P6 6 -350 -200 250 R 50 50 1 1 P I
|
||||
X P7 7 -350 -300 250 R 50 50 1 1 P I
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# GND
|
||||
#
|
||||
DEF ~GND #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 0 30 H I C CNN
|
||||
F1 "GND" 0 -70 30 H I C CNN
|
||||
F2 "~" 0 0 60 H V C CNN
|
||||
F3 "~" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
P 4 0 1 0 -50 0 0 -50 50 0 -50 0 N
|
||||
X GND 1 0 0 0 U 30 30 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# R
|
||||
#
|
||||
DEF R R 0 0 N Y 1 F N
|
||||
F0 "R" 80 0 40 V V C CNN
|
||||
F1 "R" 7 1 40 V V C CNN
|
||||
F2 "~" -70 0 30 V V C CNN
|
||||
F3 "~" 0 0 30 H V C CNN
|
||||
$FPLIST
|
||||
R?
|
||||
SM0603
|
||||
SM0805
|
||||
R?-*
|
||||
SM1206
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -40 150 40 -150 0 1 12 N
|
||||
X ~ 1 0 250 100 D 60 60 1 1 P
|
||||
X ~ 2 0 -250 100 U 60 60 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# USB-MINI-B
|
||||
#
|
||||
DEF USB-MINI-B CON 0 40 Y Y 1 F N
|
||||
F0 "CON" -250 450 60 H V C CNN
|
||||
F1 "USB-MINI-B" -50 -500 60 H V C CNN
|
||||
F2 "~" 0 0 60 H V C CNN
|
||||
F3 "~" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
USB-Mini-B-Jack
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -350 400 350 -400 0 1 0 N
|
||||
X VBUS 1 -550 300 200 R 50 50 1 1 W
|
||||
X D- 2 -550 150 200 R 50 50 1 1 B
|
||||
X D+ 3 -550 0 200 R 50 50 1 1 B
|
||||
X ID 4 -550 -150 200 R 50 50 1 1 B
|
||||
X GND 5 -550 -300 200 R 50 50 1 1 W
|
||||
X SHELL1 6 550 300 200 L 50 50 1 1 B
|
||||
X SHELL2 7 550 150 200 L 50 50 1 1 B
|
||||
X SHELL3 8 550 -150 200 L 50 50 1 1 B
|
||||
X SHELL4 9 550 -300 200 L 50 50 1 1 B
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# VCC
|
||||
#
|
||||
DEF VCC #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 100 30 H I C CNN
|
||||
F1 "VCC" 0 100 30 H V C CNN
|
||||
F2 "~" 0 0 60 H V C CNN
|
||||
F3 "~" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
X VCC 1 0 0 0 U 20 20 0 0 W N
|
||||
C 0 50 20 0 1 0 N
|
||||
P 3 0 1 0 0 0 0 30 0 30 N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
@ -0,0 +1,83 @@
|
||||
update=Wednesday, November 05, 2014 'pmt' 12:08:47 pm
|
||||
version=1
|
||||
last_client=pcbnew
|
||||
[cvpcb]
|
||||
version=1
|
||||
NetIExt=net
|
||||
[cvpcb/libraries]
|
||||
EquName1=devcms
|
||||
[general]
|
||||
version=1
|
||||
[eeschema]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
SubpartIdSeparator=0
|
||||
SubpartFirstId=65
|
||||
LibDir=../../../lib/kicad/library
|
||||
NetFmtName=
|
||||
RptD_X=0
|
||||
RptD_Y=100
|
||||
RptLab=1
|
||||
LabSize=60
|
||||
[eeschema/libraries]
|
||||
LibName1=power
|
||||
LibName2=device
|
||||
LibName3=transistors
|
||||
LibName4=conn
|
||||
LibName5=linear
|
||||
LibName6=regul
|
||||
LibName7=74xx
|
||||
LibName8=cmos4000
|
||||
LibName9=adc-dac
|
||||
LibName10=memory
|
||||
LibName11=xilinx
|
||||
LibName12=special
|
||||
LibName13=microcontrollers
|
||||
LibName14=dsp
|
||||
LibName15=microchip
|
||||
LibName16=analog_switches
|
||||
LibName17=motorola
|
||||
LibName18=texas
|
||||
LibName19=intel
|
||||
LibName20=audio
|
||||
LibName21=interface
|
||||
LibName22=digital-audio
|
||||
LibName23=philips
|
||||
LibName24=display
|
||||
LibName25=cypress
|
||||
LibName26=siliconi
|
||||
LibName27=opto
|
||||
LibName28=atmel
|
||||
LibName29=contrib
|
||||
LibName30=valves
|
||||
LibName31=custom
|
||||
[pcbnew]
|
||||
version=1
|
||||
LastNetListRead=
|
||||
UseCmpFile=1
|
||||
PadDrill=1.016000000000
|
||||
PadDrillOvalY=1.016000000000
|
||||
PadSizeH=1.524000000000
|
||||
PadSizeV=1.524000000000
|
||||
PcbTextSizeV=1.500000000000
|
||||
PcbTextSizeH=1.500000000000
|
||||
PcbTextThickness=0.300000000000
|
||||
ModuleTextSizeV=1.000000000000
|
||||
ModuleTextSizeH=1.000000000000
|
||||
ModuleTextSizeThickness=0.150000000000
|
||||
SolderMaskClearance=0.000000000000
|
||||
SolderMaskMinWidth=0.000000000000
|
||||
DrawSegmentWidth=0.200000000000
|
||||
BoardOutlineThickness=0.100000000000
|
||||
ModuleOutlineThickness=0.150000000000
|
||||
[pcbnew/libraries]
|
||||
LibDir=../../../lib/kicad/modules
|
||||
LibName1=custom
|
||||
LibName2=Sockets
|
||||
LibName3=Connect
|
||||
LibName4=Discret
|
||||
LibName5=Divers
|
||||
LibName6=Display
|
||||
LibName7=LEDs
|
||||
LibName8=SMD_Packages
|
||||
LibName9=Sockets_DIP
|
@ -0,0 +1,634 @@
|
||||
EESchema Schematic File Version 2
|
||||
LIBS:power
|
||||
LIBS:device
|
||||
LIBS:transistors
|
||||
LIBS:conn
|
||||
LIBS:linear
|
||||
LIBS:regul
|
||||
LIBS:74xx
|
||||
LIBS:cmos4000
|
||||
LIBS:adc-dac
|
||||
LIBS:memory
|
||||
LIBS:xilinx
|
||||
LIBS:special
|
||||
LIBS:microcontrollers
|
||||
LIBS:dsp
|
||||
LIBS:microchip
|
||||
LIBS:analog_switches
|
||||
LIBS:motorola
|
||||
LIBS:texas
|
||||
LIBS:intel
|
||||
LIBS:audio
|
||||
LIBS:interface
|
||||
LIBS:digital-audio
|
||||
LIBS:philips
|
||||
LIBS:display
|
||||
LIBS:cypress
|
||||
LIBS:siliconi
|
||||
LIBS:opto
|
||||
LIBS:atmel
|
||||
LIBS:contrib
|
||||
LIBS:valves
|
||||
LIBS:custom
|
||||
LIBS:kinesis-cache
|
||||
EELAYER 27 0
|
||||
EELAYER END
|
||||
$Descr A4 11693 8268
|
||||
encoding utf-8
|
||||
Sheet 1 1
|
||||
Title ""
|
||||
Date "13 nov 2014"
|
||||
Rev ""
|
||||
Comp ""
|
||||
Comment1 ""
|
||||
Comment2 ""
|
||||
Comment3 ""
|
||||
Comment4 ""
|
||||
$EndDescr
|
||||
$Comp
|
||||
L C C4
|
||||
U 1 1 545804FB
|
||||
P 2850 4250
|
||||
F 0 "C4" H 2850 4350 40 0000 L CNN
|
||||
F 1 "1uF" H 2856 4165 40 0000 L CNN
|
||||
F 2 "~" H 2888 4100 30 0000 C CNN
|
||||
F 3 "~" H 2850 4250 60 0000 C CNN
|
||||
1 2850 4250
|
||||
-1 0 0 1
|
||||
$EndComp
|
||||
$Comp
|
||||
L R R3
|
||||
U 1 1 545805E8
|
||||
P 2500 4000
|
||||
F 0 "R3" V 2580 4000 40 0000 C CNN
|
||||
F 1 "22" V 2507 4001 40 0000 C CNN
|
||||
F 2 "~" V 2430 4000 30 0000 C CNN
|
||||
F 3 "~" H 2500 4000 30 0000 C CNN
|
||||
1 2500 4000
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
L R R2
|
||||
U 1 1 545805FA
|
||||
P 2500 3800
|
||||
F 0 "R2" V 2580 3800 40 0000 C CNN
|
||||
F 1 "22" V 2507 3801 40 0000 C CNN
|
||||
F 2 "~" V 2430 3800 30 0000 C CNN
|
||||
F 3 "~" H 2500 3800 30 0000 C CNN
|
||||
1 2500 3800
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
Entry Wire Line
|
||||
6450 2450 6550 2550
|
||||
Entry Wire Line
|
||||
6450 2550 6550 2650
|
||||
Entry Wire Line
|
||||
6450 2650 6550 2750
|
||||
Entry Wire Line
|
||||
6450 2750 6550 2850
|
||||
Entry Wire Line
|
||||
6450 2950 6550 3050
|
||||
Entry Wire Line
|
||||
6450 3050 6550 3150
|
||||
Entry Wire Line
|
||||
6450 2850 6550 2950
|
||||
Entry Wire Line
|
||||
6450 3150 6550 3250
|
||||
Wire Wire Line
|
||||
10250 1800 10750 1800
|
||||
Entry Wire Line
|
||||
10750 1800 10850 1900
|
||||
Entry Wire Line
|
||||
10750 1900 10850 2000
|
||||
Entry Wire Line
|
||||
10750 2000 10850 2100
|
||||
Entry Wire Line
|
||||
10750 2800 10850 2900
|
||||
Entry Wire Line
|
||||
10750 2900 10850 3000
|
||||
Entry Wire Line
|
||||
10750 3000 10850 3100
|
||||
Entry Wire Line
|
||||
10750 3100 10850 3200
|
||||
Entry Wire Line
|
||||
10750 3200 10850 3300
|
||||
Entry Wire Line
|
||||
10750 3300 10850 3400
|
||||
$Comp
|
||||
L AT90S8515-P IC2
|
||||
U 1 1 545A62EA
|
||||
P 9250 3500
|
||||
F 0 "IC2" H 8400 5380 40 0000 L BNN
|
||||
F 1 "AT90S8515-P" H 9700 1550 40 0000 L BNN
|
||||
F 2 "DIL40" H 9250 3500 30 0000 C CIN
|
||||
F 3 "" H 9250 3500 60 0000 C CNN
|
||||
1 9250 3500
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
NoConn ~ 10250 2650
|
||||
Entry Wire Line
|
||||
10750 3650 10850 3750
|
||||
Entry Wire Line
|
||||
10750 3750 10850 3850
|
||||
Entry Wire Line
|
||||
10750 3850 10850 3950
|
||||
Entry Wire Line
|
||||
10750 3950 10850 4050
|
||||
Entry Wire Line
|
||||
10750 4050 10850 4150
|
||||
Entry Wire Line
|
||||
10750 4150 10850 4250
|
||||
Entry Wire Line
|
||||
10750 4350 10850 4450
|
||||
Entry Wire Line
|
||||
10750 4250 10850 4350
|
||||
NoConn ~ 8250 4900
|
||||
NoConn ~ 8250 5000
|
||||
NoConn ~ 8250 1800
|
||||
Wire Wire Line
|
||||
10250 1900 10750 1900
|
||||
Wire Wire Line
|
||||
10250 2000 10750 2000
|
||||
Wire Wire Line
|
||||
10250 2100 10750 2100
|
||||
Wire Wire Line
|
||||
10250 2200 10750 2200
|
||||
Wire Wire Line
|
||||
10250 2300 10750 2300
|
||||
Wire Wire Line
|
||||
10250 2400 10750 2400
|
||||
Wire Wire Line
|
||||
10250 2500 10750 2500
|
||||
Text Label 10350 1800 0 60 ~ 0
|
||||
A
|
||||
Text Label 10350 1900 0 60 ~ 0
|
||||
B
|
||||
Text Label 10350 2000 0 60 ~ 0
|
||||
C
|
||||
Text Label 10350 2100 0 60 ~ 0
|
||||
G
|
||||
Wire Wire Line
|
||||
10250 2800 10750 2800
|
||||
Wire Wire Line
|
||||
10250 2900 10750 2900
|
||||
Wire Wire Line
|
||||
10250 3000 10750 3000
|
||||
Wire Wire Line
|
||||
10250 3100 10750 3100
|
||||
Wire Wire Line
|
||||
10250 3200 10750 3200
|
||||
Wire Wire Line
|
||||
10250 3300 10750 3300
|
||||
Wire Wire Line
|
||||
10250 3400 10750 3400
|
||||
Wire Wire Line
|
||||
10250 3500 10750 3500
|
||||
Text Label 10350 2800 0 60 ~ 0
|
||||
DL2
|
||||
Text Label 10350 2900 0 60 ~ 0
|
||||
DR1
|
||||
Text Label 10350 3000 0 60 ~ 0
|
||||
DR2
|
||||
Text Label 10350 3100 0 60 ~ 0
|
||||
DL1
|
||||
Text Label 10350 3400 0 60 ~ 0
|
||||
SCL
|
||||
Text Label 10350 3500 0 60 ~ 0
|
||||
SDA
|
||||
Wire Wire Line
|
||||
10250 3650 10750 3650
|
||||
Wire Wire Line
|
||||
10250 3750 10750 3750
|
||||
Wire Wire Line
|
||||
10250 3850 10750 3850
|
||||
Wire Wire Line
|
||||
10250 3950 10750 3950
|
||||
Wire Wire Line
|
||||
10250 4050 10750 4050
|
||||
Wire Wire Line
|
||||
10250 4150 10750 4150
|
||||
Wire Wire Line
|
||||
10250 4250 10750 4250
|
||||
Wire Wire Line
|
||||
10250 4350 10750 4350
|
||||
Text Label 10350 3650 0 60 ~ 0
|
||||
R1
|
||||
Text Label 10350 3750 0 60 ~ 0
|
||||
R2
|
||||
Text Label 10350 3850 0 60 ~ 0
|
||||
R3
|
||||
Text Label 10350 3950 0 60 ~ 0
|
||||
R4
|
||||
Text Label 10350 4050 0 60 ~ 0
|
||||
R5
|
||||
Text Label 10350 4150 0 60 ~ 0
|
||||
R6
|
||||
Text Label 10350 4250 0 60 ~ 0
|
||||
R7
|
||||
Text Label 10350 4350 0 60 ~ 0
|
||||
R8
|
||||
Wire Wire Line
|
||||
10250 4500 10750 4500
|
||||
Wire Wire Line
|
||||
10250 4600 10750 4600
|
||||
Wire Wire Line
|
||||
10250 4700 10750 4700
|
||||
Wire Wire Line
|
||||
10250 4800 10750 4800
|
||||
Wire Wire Line
|
||||
10250 4900 10750 4900
|
||||
Wire Wire Line
|
||||
10250 5000 10750 5000
|
||||
Wire Wire Line
|
||||
10250 5100 10750 5100
|
||||
Wire Wire Line
|
||||
10250 5200 10750 5200
|
||||
Text Label 10350 4600 0 60 ~ 0
|
||||
FS1
|
||||
Text Label 10350 5000 0 60 ~ 0
|
||||
FS3
|
||||
Text Label 10350 5200 0 60 ~ 0
|
||||
FS2
|
||||
$Comp
|
||||
L GND #PWR01
|
||||
U 1 1 545A7377
|
||||
P 9250 5600
|
||||
F 0 "#PWR01" H 9250 5600 30 0001 C CNN
|
||||
F 1 "GND" H 9250 5530 30 0001 C CNN
|
||||
F 2 "" H 9250 5600 60 0000 C CNN
|
||||
F 3 "" H 9250 5600 60 0000 C CNN
|
||||
1 9250 5600
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
9250 5500 9250 5600
|
||||
Text Label 10350 4700 0 60 ~ 0
|
||||
CLOCK
|
||||
Text Label 10350 4800 0 60 ~ 0
|
||||
DATA
|
||||
NoConn ~ 10750 4700
|
||||
NoConn ~ 10750 4800
|
||||
Text Label 10350 3200 0 60 ~ 0
|
||||
KP
|
||||
Text Label 10350 3300 0 60 ~ 0
|
||||
PGM
|
||||
Text Label 10350 2500 0 60 ~ 0
|
||||
BUZZ
|
||||
NoConn ~ 8250 2300
|
||||
NoConn ~ 8250 2700
|
||||
$Comp
|
||||
L GND #PWR02
|
||||
U 1 1 545A7565
|
||||
P 4750 5700
|
||||
F 0 "#PWR02" H 4750 5700 30 0001 C CNN
|
||||
F 1 "GND" H 4750 5630 30 0001 C CNN
|
||||
F 2 "" H 4750 5700 60 0000 C CNN
|
||||
F 3 "" H 4750 5700 60 0000 C CNN
|
||||
1 4750 5700
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Entry Wire Line
|
||||
6450 3650 6550 3750
|
||||
Entry Wire Line
|
||||
6450 3750 6550 3850
|
||||
Entry Wire Line
|
||||
6450 4150 6550 4250
|
||||
Entry Wire Line
|
||||
6450 4250 6550 4350
|
||||
Entry Wire Line
|
||||
6450 4050 6550 4150
|
||||
Entry Wire Line
|
||||
6450 4350 6550 4450
|
||||
NoConn ~ 3750 2850
|
||||
Wire Wire Line
|
||||
1200 2000 6450 2000
|
||||
NoConn ~ 3750 3050
|
||||
Wire Wire Line
|
||||
2750 3800 3750 3800
|
||||
Wire Wire Line
|
||||
2750 3900 3750 3900
|
||||
Wire Wire Line
|
||||
2750 3900 2750 4000
|
||||
Wire Bus Line
|
||||
6550 2100 6550 6050
|
||||
Wire Bus Line
|
||||
10850 1600 10850 6050
|
||||
Text Label 6050 4350 0 60 ~ 0
|
||||
DL1
|
||||
Text Label 6050 4250 0 60 ~ 0
|
||||
DR2
|
||||
Text Label 6050 4150 0 60 ~ 0
|
||||
DR1
|
||||
Text Label 6050 4050 0 60 ~ 0
|
||||
DL2
|
||||
Text Label 6050 2450 0 60 ~ 0
|
||||
R1
|
||||
Text Label 6050 2550 0 60 ~ 0
|
||||
R2
|
||||
Text Label 6050 2650 0 60 ~ 0
|
||||
R3
|
||||
Text Label 6050 2750 0 60 ~ 0
|
||||
R4
|
||||
Text Label 6050 2850 0 60 ~ 0
|
||||
R5
|
||||
Text Label 6050 2950 0 60 ~ 0
|
||||
R6
|
||||
Text Label 6050 3050 0 60 ~ 0
|
||||
R7
|
||||
Text Label 6050 3150 0 60 ~ 0
|
||||
R8
|
||||
Text Label 6050 5050 0 60 ~ 0
|
||||
A
|
||||
Text Label 6050 5150 0 60 ~ 0
|
||||
B
|
||||
Text Label 6050 5250 0 60 ~ 0
|
||||
C
|
||||
Text Label 6050 5350 0 60 ~ 0
|
||||
G
|
||||
Text Label 1300 3800 0 60 ~ 0
|
||||
D+
|
||||
Text Label 1300 4000 0 60 ~ 0
|
||||
D-
|
||||
NoConn ~ 10750 2200
|
||||
NoConn ~ 10750 2300
|
||||
NoConn ~ 10750 2400
|
||||
Text Label 10350 4500 0 60 ~ 0
|
||||
GND
|
||||
NoConn ~ 10750 4900
|
||||
NoConn ~ 10750 5100
|
||||
Text Label 6050 3450 0 60 ~ 0
|
||||
KP
|
||||
Text Label 6050 3350 0 60 ~ 0
|
||||
PGM
|
||||
$Comp
|
||||
L ATMEGA32U4-A U1
|
||||
U 1 1 5462E0B1
|
||||
P 4900 4000
|
||||
F 0 "U1" H 3950 5700 40 0000 C CNN
|
||||
F 1 "ATMEGA32U4-A" H 5600 2500 40 0000 C CNN
|
||||
F 2 "TQFP44" H 4900 4000 35 0000 C CIN
|
||||
F 3 "" H 6000 5100 60 0000 C CNN
|
||||
1 4900 4000
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
3750 4850 3750 5600
|
||||
Wire Wire Line
|
||||
4450 2200 5150 2200
|
||||
Connection ~ 4700 2200
|
||||
Connection ~ 4800 2200
|
||||
Connection ~ 5050 2200
|
||||
Connection ~ 4800 2000
|
||||
Wire Wire Line
|
||||
6000 2450 6450 2450
|
||||
Wire Wire Line
|
||||
6000 2550 6450 2550
|
||||
Wire Wire Line
|
||||
6000 2650 6450 2650
|
||||
Wire Wire Line
|
||||
6000 2750 6450 2750
|
||||
Wire Wire Line
|
||||
6000 2850 6450 2850
|
||||
Wire Wire Line
|
||||
6000 2950 6450 2950
|
||||
Wire Wire Line
|
||||
6000 3050 6450 3050
|
||||
Wire Wire Line
|
||||
6000 3150 6450 3150
|
||||
Wire Wire Line
|
||||
6000 5050 6450 5050
|
||||
Wire Wire Line
|
||||
6000 5150 6450 5150
|
||||
Wire Wire Line
|
||||
6000 5250 6450 5250
|
||||
Wire Wire Line
|
||||
6000 4050 6450 4050
|
||||
Wire Wire Line
|
||||
6000 4150 6450 4150
|
||||
Wire Wire Line
|
||||
6000 4250 6450 4250
|
||||
Wire Wire Line
|
||||
6000 4350 6450 4350
|
||||
Wire Wire Line
|
||||
6000 4550 6450 4550
|
||||
Entry Wire Line
|
||||
6450 3350 6550 3450
|
||||
Entry Wire Line
|
||||
6450 3450 6550 3550
|
||||
Entry Wire Line
|
||||
6450 5050 6550 5150
|
||||
Entry Wire Line
|
||||
6450 5150 6550 5250
|
||||
Entry Wire Line
|
||||
6450 5250 6550 5350
|
||||
Entry Wire Line
|
||||
6450 5350 6550 5450
|
||||
Entry Wire Line
|
||||
6450 4650 6550 4750
|
||||
Wire Wire Line
|
||||
6000 3350 6450 3350
|
||||
Wire Wire Line
|
||||
6000 3450 6450 3450
|
||||
Wire Wire Line
|
||||
1200 5600 6450 5600
|
||||
Connection ~ 4950 5600
|
||||
Connection ~ 4850 5600
|
||||
Wire Wire Line
|
||||
4750 5600 4750 5700
|
||||
Connection ~ 4750 5600
|
||||
Connection ~ 4500 5600
|
||||
Text Label 6050 4550 0 60 ~ 0
|
||||
HWB
|
||||
Wire Wire Line
|
||||
6000 5350 6450 5350
|
||||
Wire Wire Line
|
||||
6000 3650 6450 3650
|
||||
Wire Wire Line
|
||||
6000 3750 6450 3750
|
||||
Text Label 6050 3650 0 60 ~ 0
|
||||
SCL
|
||||
Text Label 6050 3750 0 60 ~ 0
|
||||
SDA
|
||||
Wire Wire Line
|
||||
6000 3850 6450 3850
|
||||
Wire Wire Line
|
||||
6000 3950 6450 3950
|
||||
Wire Wire Line
|
||||
6000 4650 6450 4650
|
||||
Text Label 6050 4650 0 60 ~ 0
|
||||
BUZZ
|
||||
NoConn ~ 10750 4600
|
||||
NoConn ~ 10750 5000
|
||||
NoConn ~ 10750 5200
|
||||
Entry Wire Line
|
||||
10750 3400 10850 3500
|
||||
Entry Wire Line
|
||||
10750 3500 10850 3600
|
||||
Entry Wire Line
|
||||
10750 4500 10850 4600
|
||||
Wire Wire Line
|
||||
2850 4050 3750 4050
|
||||
Text Label 2950 4050 0 60 ~ 0
|
||||
UCAP
|
||||
Wire Wire Line
|
||||
6000 4850 6450 4850
|
||||
Wire Wire Line
|
||||
6000 4950 6450 4950
|
||||
NoConn ~ 6450 4850
|
||||
NoConn ~ 6450 4950
|
||||
NoConn ~ 6450 4550
|
||||
$Comp
|
||||
L USB-MINI-B CON1
|
||||
U 1 1 546431C1
|
||||
P 2100 5050
|
||||
F 0 "CON1" H 1850 5500 60 0000 C CNN
|
||||
F 1 "USB-MINI-B" H 2050 4550 60 0000 C CNN
|
||||
F 2 "" H 2100 5050 60 0000 C CNN
|
||||
F 3 "" H 2100 5050 60 0000 C CNN
|
||||
1 2100 5050
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
L VCC #PWR03
|
||||
U 1 1 54643698
|
||||
P 2400 4400
|
||||
F 0 "#PWR03" H 2400 4500 30 0001 C CNN
|
||||
F 1 "VCC" H 2400 4500 30 0000 C CNN
|
||||
F 2 "" H 2400 4400 60 0000 C CNN
|
||||
F 3 "" H 2400 4400 60 0000 C CNN
|
||||
1 2400 4400
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Text Notes 2600 2750 0 60 ~ 0
|
||||
Teensy 2.0\n(not fully drawn)
|
||||
$Comp
|
||||
L CONN_7 B7K-PH-K-S1
|
||||
U 1 1 54643939
|
||||
P 1950 6900
|
||||
F 0 "B7K-PH-K-S1" V 1920 6900 60 0000 C CNN
|
||||
F 1 "CONN_7" V 2020 6900 60 0000 C CNN
|
||||
F 2 "" H 1950 6900 60 0000 C CNN
|
||||
F 3 "" H 1950 6900 60 0000 C CNN
|
||||
1 1950 6900
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Connection ~ 3750 5600
|
||||
Connection ~ 2400 5600
|
||||
Connection ~ 2250 5600
|
||||
Connection ~ 1950 5600
|
||||
Wire Wire Line
|
||||
2400 4400 2400 4500
|
||||
Wire Wire Line
|
||||
2250 4000 2250 4500
|
||||
Wire Wire Line
|
||||
1200 3800 2250 3800
|
||||
Wire Wire Line
|
||||
2100 3800 2100 4500
|
||||
Wire Wire Line
|
||||
2850 4450 2850 5600
|
||||
Connection ~ 2850 5600
|
||||
Entry Wire Line
|
||||
1100 6800 1200 6900
|
||||
Entry Wire Line
|
||||
1100 6900 1200 7000
|
||||
Entry Wire Line
|
||||
1100 7000 1200 7100
|
||||
Entry Wire Line
|
||||
1100 6700 1200 6800
|
||||
Wire Wire Line
|
||||
1200 6600 1600 6600
|
||||
Wire Wire Line
|
||||
1200 6700 1600 6700
|
||||
Wire Wire Line
|
||||
1200 6800 1600 6800
|
||||
Wire Wire Line
|
||||
1200 6900 1600 6900
|
||||
Wire Wire Line
|
||||
1200 7000 1600 7000
|
||||
Wire Wire Line
|
||||
1200 7100 1600 7100
|
||||
Wire Wire Line
|
||||
1200 7200 1600 7200
|
||||
Text Label 1300 6600 0 60 ~ 0
|
||||
FS2
|
||||
Text Label 1300 6700 0 60 ~ 0
|
||||
FS1
|
||||
Text Label 1300 6800 0 60 ~ 0
|
||||
VCC
|
||||
Text Label 1300 6900 0 60 ~ 0
|
||||
D-
|
||||
Text Label 1300 7000 0 60 ~ 0
|
||||
D+
|
||||
Text Label 1300 7100 0 60 ~ 0
|
||||
GND
|
||||
Text Label 1300 7200 0 60 ~ 0
|
||||
FS3
|
||||
NoConn ~ 3750 2450
|
||||
Wire Wire Line
|
||||
3600 2000 3600 3650
|
||||
Wire Wire Line
|
||||
3600 3650 3750 3650
|
||||
NoConn ~ 1950 4500
|
||||
Wire Bus Line
|
||||
1100 1900 1100 7100
|
||||
NoConn ~ 1200 6600
|
||||
NoConn ~ 1200 6700
|
||||
NoConn ~ 1200 7200
|
||||
Connection ~ 2100 3800
|
||||
Wire Wire Line
|
||||
1200 4000 2250 4000
|
||||
Entry Wire Line
|
||||
1100 3700 1200 3800
|
||||
Entry Wire Line
|
||||
1100 3900 1200 4000
|
||||
Text Label 10350 1500 0 60 ~ 0
|
||||
VCC
|
||||
Entry Wire Line
|
||||
1100 1900 1200 2000
|
||||
Text Label 1250 2000 0 60 ~ 0
|
||||
VCC
|
||||
Entry Wire Line
|
||||
1100 5500 1200 5600
|
||||
Connection ~ 1800 5600
|
||||
Text Label 1300 5600 0 60 ~ 0
|
||||
GND
|
||||
Wire Wire Line
|
||||
9250 5500 10750 5500
|
||||
Entry Wire Line
|
||||
10750 5500 10850 5600
|
||||
Text Label 10350 5500 0 60 ~ 0
|
||||
GND
|
||||
Wire Wire Line
|
||||
9250 1500 10750 1500
|
||||
Entry Wire Line
|
||||
10750 1500 10850 1600
|
||||
Connection ~ 3600 2000
|
||||
Wire Wire Line
|
||||
4800 2000 4800 2200
|
||||
Entry Wire Line
|
||||
6450 2000 6550 2100
|
||||
Text Label 6050 2000 0 60 ~ 0
|
||||
VCC
|
||||
Connection ~ 5050 5600
|
||||
Entry Wire Line
|
||||
6450 5600 6550 5700
|
||||
Text Label 6050 5600 0 60 ~ 0
|
||||
GND
|
||||
NoConn ~ 6450 3850
|
||||
NoConn ~ 6450 3950
|
||||
Wire Wire Line
|
||||
1800 4500 1500 4500
|
||||
Wire Wire Line
|
||||
1500 4500 1500 5600
|
||||
Connection ~ 1500 5600
|
||||
Entry Wire Line
|
||||
10750 2500 10850 2600
|
||||
Entry Wire Line
|
||||
10750 2100 10850 2200
|
||||
Text Notes 1000 5300 1 60 ~ 0
|
||||
Sacrificial USB cable from header to Teensy
|
||||
Text Notes 7850 5950 0 60 ~ 0
|
||||
Ribbon cable between Teensy pins and socket
|
||||
Wire Bus Line
|
||||
10850 6050 6550 6050
|
||||
$EndSCHEMATC
|
After Width: | Height: | Size: 174 KiB |
After Width: | Height: | Size: 336 KiB |
After Width: | Height: | Size: 260 KiB |
@ -0,0 +1,52 @@
|
||||
This directory of documentation was copied from https://github.com/wjanssens/tmk_keyboard/tree/master/keyboard/kinesis
|
||||
and is probably Copyright 2014 Warren Janssens <warren.janssens@gmail.com>
|
||||
and probably released under GPL v2, which may be recovered at <http://www.gnu.org/licenses/>.
|
||||
|
||||
Row configuration
|
||||
PF0 A
|
||||
PF1 B
|
||||
PF2 C
|
||||
PF3 G 0 = U4, 1 = U5
|
||||
|
||||
Column configuration
|
||||
4y0 4y1 4y2 4y3 4y4 4y5 4y6 4y7 5y0 5y1 5y2 5y3 5y4 5y5 5y6 5y7
|
||||
r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16
|
||||
PB0 21 c1 f6 f8 f7 5 4 3 2 1 =+
|
||||
PB1 22 c2 f3 f5 f4 t r e w q TAB
|
||||
PB2 23 c3 ESC f2 f1 g f d s a CL
|
||||
PB3 24 c4 f9 f11 f10 b v c x z LS UP DN [{ ]}
|
||||
PB4 25 c5 f12 SL PS RT LT §± `~ 6 7 8 9 0 -_
|
||||
PB5 26 c6 PB PGM KPD y u i o p \
|
||||
PB6 27 c7 LC DL BS RC EN SP h j k l ;: '"
|
||||
PB7 28 c8 RA PU PD n m ,< .> /? RS
|
||||
*/
|
||||
|
||||
|
||||
40 pin connector
|
||||
|
||||
DL2 1 40 VCC
|
||||
DR1 2 39 A
|
||||
DR2 3 38 B
|
||||
DL1 4 37 C
|
||||
KPD 5 36 G
|
||||
PGM 6 35
|
||||
SCL 7 34
|
||||
SDA 8 33
|
||||
RST 9 32 BUZZ
|
||||
WP 10 31 EA
|
||||
FS1 11 30 ALE
|
||||
CLOCK 12 29 PSEN
|
||||
DATA 13 28 r8
|
||||
14 27 r7
|
||||
FS3 15 26 r6
|
||||
16 25 r5
|
||||
FS2 17 24 r4
|
||||
XTAL1 18 23 r3
|
||||
XTAL2 19 22 r2
|
||||
GND 20 21 r1
|
||||
|
||||
|
||||
references:
|
||||
https://github.com/chrisandreae/keyboard-firmware
|
||||
|
||||
|
After Width: | Height: | Size: 171 KiB |
@ -0,0 +1,21 @@
|
||||
# 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 = no # 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 = no # 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
|
@ -0,0 +1,8 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include "../../config.h"
|
||||
|
||||
// place overrides here
|
||||
|
||||
#endif
|
@ -0,0 +1,116 @@
|
||||
#include "kinesis.h"
|
||||
#include "action_layer.h"
|
||||
|
||||
#define QWERTY 0 // Base qerty
|
||||
#define SYMB 1// Symbol layer
|
||||
|
||||
// An almost entirely blank keymap. Test layers with the upper right hand key - 1 in normal mode, reset in layer 2.
|
||||
|
||||
|
||||
/****************************************************************************************************
|
||||
*
|
||||
* Keymap: Default Layer in Qwerty
|
||||
*
|
||||
* ,-------------------------------------------------------------------------------------------------------------------.
|
||||
* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | PSCR | SLCK | PAUS | FN0 | BOOT |
|
||||
* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
|
||||
* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ |
|
||||
* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | Caps | A | S | D | F | G | | H | J | K | L | ;: | '" |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? | Shift |
|
||||
* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
|
||||
* | `~ | INS | Left | Right| | Up | Down | [{ | ]} |
|
||||
* `---------------------------' `---------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | Ctrl | Alt | | Gui | Ctrl |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | Home | | PgUp | | |
|
||||
* | BkSp | Del |------| |------|Return| Space|
|
||||
* | | | End | | PgDn | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[QWERTY] = KEYMAP(
|
||||
KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8,
|
||||
KC_EQL, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
|
||||
KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
|
||||
KC_CAPS,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
|
||||
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,
|
||||
KC_GRV ,KC_INS ,KC_LEFT,KC_RGHT,
|
||||
KC_LCTL,KC_LALT,
|
||||
KC_HOME,
|
||||
KC_BSPC,KC_DEL ,KC_END ,
|
||||
KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1,
|
||||
KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
|
||||
KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
|
||||
KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
|
||||
KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT,
|
||||
KC_UP ,KC_DOWN,KC_LBRC,KC_RBRC,
|
||||
KC_RGUI,KC_RCTL,
|
||||
KC_PGUP,
|
||||
KC_PGDN,KC_ENTER ,KC_SPC
|
||||
),
|
||||
[SYMB] = 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_FN0, RESET,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[0] = ACTION_LAYER_TAP_TOGGLE(SYMB) , // FN1 - Momentary Layer 1 (Symbols)
|
||||
|
||||
|
||||
};
|
||||
|
||||
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) {
|
||||
|
||||
}
|
@ -0,0 +1 @@
|
||||
# The default keymap for kinesis-advantage
|
@ -0,0 +1,21 @@
|
||||
# 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 = no # 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 = no # 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
|
@ -0,0 +1,8 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include "../../config.h"
|
||||
|
||||
// place overrides here
|
||||
|
||||
#endif
|
@ -0,0 +1,245 @@
|
||||
#include "kinesis.h"
|
||||
#include "action_layer.h"
|
||||
#include "mousekey.h"
|
||||
|
||||
#define QWERTY 0 // Base qerty
|
||||
#define SYMB 1// Symbol layer
|
||||
#define MOUSE 2//
|
||||
|
||||
|
||||
|
||||
|
||||
/* Macros */
|
||||
enum {
|
||||
NONE = 0,
|
||||
// Diagonal mouse movement
|
||||
A_MUL,
|
||||
A_MUR,
|
||||
A_MDL,
|
||||
A_MDR,
|
||||
};
|
||||
|
||||
|
||||
// Borrowing very heavily from
|
||||
// https://github.com/alvicstep/tmk_keyboard
|
||||
/****************************************************************************************************
|
||||
*
|
||||
* Keymap: Default Layer in Qwerty
|
||||
*
|
||||
* ,-------------------------------------------------------------------------------------------------------------------.
|
||||
* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT |
|
||||
* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
|
||||
* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ |
|
||||
* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* |MouseFN1| A | S | D | F | G | | H | J | K | L | ;: | '" |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? | Shift |
|
||||
* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
|
||||
* | `~ | ESC |MOUSE1|MOUSE2| | [{ | ]} | ESC | GUI |
|
||||
* `---------------------------' `---------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | Ctrl | Alt | | Gui | Ctrl |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | Home | | PgUp | | |
|
||||
* | BkSp | Del |------| |------|Return| Space|
|
||||
* | | | End | | PgDn | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[QWERTY] = KEYMAP(
|
||||
KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8,
|
||||
KC_EQL, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
|
||||
KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
|
||||
KC_FN1 ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
|
||||
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,
|
||||
KC_GRV ,KC_ESC, KC_BTN1,KC_BTN2,
|
||||
KC_LCTL,KC_LALT,
|
||||
KC_HOME,
|
||||
KC_BSPC,KC_DEL ,KC_FN0 ,
|
||||
KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_FN0 ,KC_FN1 ,KC_FN2, KC_NO, RESET,
|
||||
KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
|
||||
KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
|
||||
KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
|
||||
KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT,
|
||||
KC_LBRC,KC_RBRC, KC_ESC, KC_RGUI,
|
||||
KC_RGUI,KC_RCTL,
|
||||
KC_PGUP,
|
||||
KC_PGDN,KC_ENTER ,KC_SPC
|
||||
),
|
||||
[SYMB] = 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_FN0, KC_2,
|
||||
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
|
||||
),
|
||||
/* Keymap: Movement and function layer
|
||||
*
|
||||
* ,-------------------------------------------------------------------------------------------------------------------.
|
||||
* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | Tada | bOOT |
|
||||
* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
|
||||
* | =+ | ! | @ | # | $ | % | | ^ | & | * | ( | ) |MS Fast |
|
||||
* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
|
||||
* | Tab | | | Up | |PgUp | | MwU |MS_UL | MS_U |MS_UR | | Ms Norm|
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* |MouseFN1| C^A | Left | Down |Right | C^E | | | MS_L |Mouse1| MS_R | |MS Slow |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | | GuiZ | GUI X| GUI C| GUI_V|PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | |
|
||||
* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
|
||||
* | `~ | ESC | < | > | | { | } | ESC | |
|
||||
* `---------------------------' `---------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | Ctrl | Alt | | Gui | Ctrl |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | Home | | PgUp | | |
|
||||
* | BkSp | Del |------| |------|Mouse1|Mouse2|
|
||||
* | | | End | | PgDn |LClick|Rclick|
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
|
||||
|
||||
[MOUSE] = KEYMAP(
|
||||
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC ,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP,
|
||||
KC_FN1, LCTL(KC_A),KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E),
|
||||
KC_TRNS, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V),KC_PGDN,
|
||||
KC_TRNS, KC_TRNS, KC_LABK, KC_RABK,
|
||||
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_FN0,RESET,
|
||||
KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2,
|
||||
KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1,
|
||||
KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0,
|
||||
KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), KC_TRNS, KC_TRNS,
|
||||
KC_LCBR, KC_RCBR, KC_ESC, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,
|
||||
KC_TRNS, KC_BTN1, KC_BTN2
|
||||
),
|
||||
|
||||
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[0] = ACTION_LAYER_TAP_TOGGLE(MOUSE) , // FN1 - Momentary Layer 1 (Symbols)
|
||||
[1] = ACTION_LAYER_TOGGLE(MOUSE) , // FN1 - Momentary Layer 1 (Symbols)
|
||||
[2] = ACTION_LAYER_TAP_TOGGLE(SYMB) , // FN1 - Momentary Layer 1 (Symbols)
|
||||
|
||||
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
// from algernon's ErgoDox EZ layout,
|
||||
case A_MUL:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_UP);
|
||||
mousekey_on(KC_MS_LEFT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_UP);
|
||||
mousekey_off(KC_MS_LEFT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case A_MUR:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_UP);
|
||||
mousekey_on(KC_MS_RIGHT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_UP);
|
||||
mousekey_off(KC_MS_RIGHT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case A_MDL:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_DOWN);
|
||||
mousekey_on(KC_MS_LEFT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_DOWN);
|
||||
mousekey_off(KC_MS_LEFT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case A_MDR:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_DOWN);
|
||||
mousekey_on(KC_MS_RIGHT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_DOWN);
|
||||
mousekey_off(KC_MS_RIGHT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
|
||||
void matrix_init_user(void) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
int8_t layer = biton32(layer_state);
|
||||
|
||||
switch (layer) {
|
||||
case 1:
|
||||
all_led_off();
|
||||
break;
|
||||
case 2:
|
||||
if (!(host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK))) {
|
||||
all_led_off();
|
||||
caps_lock_led_on();
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
all_led_off();
|
||||
num_lock_led_on();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
# a programmer friendly keymap for the kinesis-advantage
|
||||
# not really baked yet.
|
@ -0,0 +1,106 @@
|
||||
#include "kinesis.h"
|
||||
|
||||
// begin section origin https://github.com/alvicstep/tmk_keyboard
|
||||
|
||||
|
||||
void all_led_off(void)
|
||||
{
|
||||
PORTD = 0b11111111;
|
||||
}
|
||||
|
||||
void all_led_on(void)
|
||||
{
|
||||
PORTD = 0b00000000;
|
||||
}
|
||||
void num_lock_led_on(void)
|
||||
{
|
||||
PORTD = 0b11101111;
|
||||
}
|
||||
|
||||
void caps_lock_led_on(void)
|
||||
{
|
||||
PORTD = 0b01111111;
|
||||
}
|
||||
|
||||
void scroll_lock_led_on(void)
|
||||
{
|
||||
PORTD = 0b11011111;
|
||||
}
|
||||
void keypad_led_on(void)
|
||||
{
|
||||
PORTD = 0b10111111;
|
||||
}
|
||||
void blink_all_leds(void)
|
||||
{
|
||||
all_led_on();
|
||||
_delay_ms(500);
|
||||
|
||||
all_led_off();
|
||||
_delay_ms(100);
|
||||
|
||||
caps_lock_led_on();
|
||||
_delay_ms(100);
|
||||
|
||||
num_lock_led_on();
|
||||
_delay_ms(100);
|
||||
|
||||
scroll_lock_led_on();
|
||||
_delay_ms(100);
|
||||
|
||||
keypad_led_on();
|
||||
_delay_ms(100);
|
||||
|
||||
//back
|
||||
|
||||
scroll_lock_led_on();
|
||||
_delay_ms(100);
|
||||
|
||||
num_lock_led_on();
|
||||
_delay_ms(100);
|
||||
|
||||
caps_lock_led_on();
|
||||
_delay_ms(100);
|
||||
|
||||
all_led_off();
|
||||
}
|
||||
|
||||
// End section origin https://github.com/alvicstep/tmk_keyboard
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
blink_all_leds();
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
// put your looping keyboard code here
|
||||
// runs every cycle (a lot)
|
||||
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
// put your per-action keyboard code here
|
||||
// runs for every action, just before processing by the firmware
|
||||
|
||||
return process_record_user(keycode, record);
|
||||
}
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||
|
||||
//Copyright 2014 Warren Janssens <warren.janssens@gmail.com>
|
||||
uint8_t leds = 0xF0;
|
||||
if (usb_led & 1 << USB_LED_NUM_LOCK)
|
||||
leds &= ~0x10;
|
||||
if (usb_led & 1 << USB_LED_CAPS_LOCK)
|
||||
leds &= ~0x80;
|
||||
if (usb_led & 1 << USB_LED_SCROLL_LOCK)
|
||||
leds &= ~0x20;
|
||||
PORTD = (PORTD & 0x0F) | leds;
|
||||
|
||||
led_set_user(usb_led);
|
||||
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,67 @@
|
||||
#ifndef KINESIS_H
|
||||
#define KINESIS_H
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
|
||||
// The first section contains all of the arguements
|
||||
// The second converts the arguments into a two-dimensional array
|
||||
|
||||
#define KEYMAP( \
|
||||
k02,k22,k12,k01,k21,k11,k00,k20,k10, \
|
||||
k80,k70,k60,k50,k40,k30, \
|
||||
k81,k71,k61,k51,k41,k31, \
|
||||
k82,k72,k62,k52,k42,k32, \
|
||||
k83,k73,k63,k53,k43,k33, \
|
||||
k74,k64,k54,k34, \
|
||||
k36,k35, \
|
||||
k55, \
|
||||
k56,k46,k75, \
|
||||
k03,k23,k13,k04,k24,k14,k05,k85,k84, \
|
||||
k94,kA4,kB4,kD4,kE4,kF4, \
|
||||
k95,kA5,kB5,kD5,kE5,kF5, \
|
||||
k96,kA6,kB6,kD6,kE6,kF6, \
|
||||
k97,kA7,kB7,kD7,kE7,kF7, \
|
||||
k93,kB3,kD3,kE3, \
|
||||
k47,k66, \
|
||||
k67, \
|
||||
k87,k76,k86 \
|
||||
) { \
|
||||
{ k00, k01, k02, k03, k04, k05, KC_NO, KC_NO }, \
|
||||
{ k10, k11, k12, k13, k14, KC_NO, KC_NO, KC_NO }, \
|
||||
{ k20, k21, k22, k23, k24, KC_NO, KC_NO, KC_NO }, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, KC_NO }, \
|
||||
{ k40, k41, k42, k43, KC_NO, KC_NO, k46, k47 }, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, KC_NO }, \
|
||||
{ k60, k61, k62, k63, k64, KC_NO, k66, k67 }, \
|
||||
{ k70, k71, k72, k73, k74, k75, k76, KC_NO }, \
|
||||
{ k80, k81, k82, k83, KC_NO ,KC_NO, k86, k87}, \
|
||||
{ KC_NO, KC_NO ,KC_NO ,k93, k94, k95, k96, k97}, \
|
||||
{ KC_NO, KC_NO ,KC_NO ,KC_NO, kA4, kA5, kA6, kA7}, \
|
||||
{ KC_NO, KC_NO ,KC_NO ,kB3, kB4, kB5, kB6, kB7}, \
|
||||
{ KC_NO, KC_NO ,KC_NO ,KC_NO, KC_NO, KC_NO, k84, k85}, \
|
||||
{ KC_NO, KC_NO ,KC_NO ,kD3, kD4, kD5, kD6, kD7}, \
|
||||
{ KC_NO, KC_NO ,KC_NO ,kE3, kE4, kE5, kE6, kE7}, \
|
||||
{ KC_NO, KC_NO ,KC_NO ,KC_NO, kF4, kF5, kF6, kF7} \
|
||||
}
|
||||
|
||||
|
||||
/* 4y0 A 4y1 B 4y2 4y3 D 4y4 E 4y5 F 4y6 G 4y7 H 5y0 I 5y1 J 5y2 K 5y3 L 5y4 M 5y5 N 5y6 O 5y7 P */
|
||||
|
||||
/*
|
||||
0 1 2 3 4 5 6 7 8 9 A B C D E F
|
||||
A B C D E F G H I J K L M N O P
|
||||
4y0 4y1 4y2 4y3 4y4 4y5 4y6 4y7 5y0 5y1 5y2 5y3 5y4 5y5 5y6 5y7
|
||||
r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
|
||||
0 PB0 21 c0 f6 f8 f7 5 4 3 2 1 =+
|
||||
1 PB1 22 c1 f3 f5 f4 t r e w q TAB
|
||||
2 PB2 23 c2 ESC f2 f1 g f d s a CL
|
||||
3 PB3 24 c3 f9 f11 f10 b v c x z LS UP DN [{ ]}
|
||||
4 PB4 25 c4 f12 SL PS RT LT §± `~ 6 7 8 9 0 -_
|
||||
5 PB5 26 c5 PB PGM KPD LA HM END y u i o p \
|
||||
6 PB6 27 c6 LC DEL BS RC ENT SP h j k l ;: '"
|
||||
7 PB7 28 c7 RA PU PD n m ,< .> /? RS
|
||||
*/
|
||||
|
||||
|
||||
#endif
|
@ -0,0 +1,228 @@
|
||||
/*
|
||||
Copyright 2014 Warren Janssens <warren.janssens@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/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* scan matrix
|
||||
*/
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include "action_layer.h"
|
||||
#include "print.h"
|
||||
#include "debug.h"
|
||||
#include "util.h"
|
||||
#include "matrix.h"
|
||||
#include "led.h"
|
||||
#include "config.h"
|
||||
|
||||
#ifndef DEBOUNCE
|
||||
# define DEBOUNCE 5
|
||||
#endif
|
||||
static uint8_t debouncing = DEBOUNCE;
|
||||
|
||||
/* matrix state(1:on, 0:off) */
|
||||
static uint8_t matrix[MATRIX_ROWS];
|
||||
static uint8_t matrix_debouncing[MATRIX_ROWS];
|
||||
|
||||
static matrix_row_t read_row(uint8_t row);
|
||||
static void unselect_rows(void);
|
||||
static void select_rows(uint8_t row);
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_quantum(void) {
|
||||
matrix_init_kb();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_quantum(void) {
|
||||
matrix_scan_kb();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_kb(void) {
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_kb(void) {
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
inline
|
||||
uint8_t matrix_rows(void)
|
||||
{
|
||||
return MATRIX_ROWS;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
uint8_t matrix_cols(void)
|
||||
{
|
||||
return MATRIX_COLS;
|
||||
}
|
||||
|
||||
void matrix_init(void)
|
||||
{
|
||||
//debug_enable = true;
|
||||
|
||||
//dprint("matrix_init"); dprintln();
|
||||
// output high (leds)
|
||||
DDRD = 0xFF;
|
||||
PORTD = 0xFF;
|
||||
|
||||
// output low (multiplexers)
|
||||
DDRF = 0xFF;
|
||||
PORTF = 0x00;
|
||||
|
||||
// input with pullup (matrix)
|
||||
DDRB = 0x00;
|
||||
PORTB = 0xFF;
|
||||
|
||||
// input with pullup (program and keypad buttons)
|
||||
DDRC = 0x00;
|
||||
PORTC = 0xFF;
|
||||
|
||||
// initialize row and col
|
||||
unselect_rows();
|
||||
|
||||
// initialize matrix state: all keys off
|
||||
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
|
||||
matrix[i] = 0;
|
||||
matrix_debouncing[i] = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
uint8_t matrix_scan(void)
|
||||
{
|
||||
|
||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||
select_rows(i);
|
||||
uint8_t row = read_row(i);
|
||||
if (matrix_debouncing[i] != row) {
|
||||
matrix_debouncing[i] = row;
|
||||
if (debouncing) {
|
||||
debug("bounce!: "); debug_hex(debouncing); debug("\n");
|
||||
}
|
||||
debouncing = DEBOUNCE;
|
||||
}
|
||||
unselect_rows();
|
||||
}
|
||||
|
||||
if (debouncing) {
|
||||
if (--debouncing) {
|
||||
_delay_ms(1);
|
||||
} else {
|
||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||
matrix[i] = matrix_debouncing[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
matrix_scan_quantum();
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool matrix_is_modified(void)
|
||||
{
|
||||
if (debouncing) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
inline
|
||||
bool matrix_is_on(uint8_t row, uint8_t col)
|
||||
{
|
||||
return (matrix[row] & ((matrix_row_t)1<<col));
|
||||
}
|
||||
|
||||
inline
|
||||
matrix_row_t matrix_get_row(uint8_t row)
|
||||
{
|
||||
return matrix[row];
|
||||
}
|
||||
|
||||
void matrix_print(void)
|
||||
{
|
||||
print("\nr/c 01234567\n");
|
||||
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||
phex(row); print(": ");
|
||||
pbin_reverse(matrix_get_row(row));
|
||||
print("\n");
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t matrix_key_count(void)
|
||||
{
|
||||
uint8_t count = 0;
|
||||
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||
count += bitpop16(matrix[i]);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
static matrix_row_t read_row(uint8_t row)
|
||||
{
|
||||
_delay_us(30); // without this wait read unstable value.
|
||||
|
||||
//keypad and program buttons
|
||||
if (row == 12)
|
||||
{
|
||||
return ~(PINC | 0b00111111);
|
||||
}
|
||||
return ~PINB;
|
||||
}
|
||||
|
||||
static void unselect_rows(void)
|
||||
{
|
||||
// set A,B,C,G to 0 (F4 - F7)
|
||||
PORTF &= 0x0F;
|
||||
}
|
||||
|
||||
static void select_rows(uint8_t row)
|
||||
{
|
||||
// set A,B,C,G to row value
|
||||
PORTF |= row << 4;
|
||||
}
|
||||
|
||||
|
||||
/* Row pin configuration
|
||||
PF0 A
|
||||
PF1 B
|
||||
PF2 C
|
||||
PF3 G 0 = U4, 1 = U5
|
||||
|
||||
4y0 4y1 4y2 4y3 4y4 4y5 4y6 4y7 5y0 5y1 5y2 5y3 5y4 5y5 5y6 5y7
|
||||
r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16
|
||||
PB0 21 c1 f6 f8 f7 5 4 3 2 1 =+
|
||||
PB1 22 c2 f3 f5 f4 t r e w q TAB
|
||||
PB2 23 c3 ESC f2 f1 g f d s a CL
|
||||
PB3 24 c4 f9 f11 f10 b v c x z LS UP DN [{ ]}
|
||||
PB4 25 c5 f12 SL PS RT LT §± `~ 6 7 8 9 0 -_
|
||||
PB5 26 c6 PB PGM KPD y u i o p \
|
||||
PB6 27 c7 LC DL BS RC EN SP h j k l ;: '"
|
||||
PB7 28 c8 RA PU PD n m ,< .> /? RS
|
||||
*/
|
||||
|
||||
|
@ -0,0 +1,42 @@
|
||||
kinesis-advantage keyboard firmware
|
||||
======================
|
||||
|
||||
## Kinesis specific information
|
||||
This is a port of https://github.com/alvicstep/tmk_keyboard,
|
||||
which is a fork of https://github.com/wjanssens/tmk_keyboard,
|
||||
which is based on work from https://github.com/chrisandreae/keyboard-firmware
|
||||
|
||||
If you replace the kinesis CPU as described in the doc folder, then this code should allow you to use QMK.
|
||||
I've tested with a Teensy 2++, remember to change the CPU if you use a 32u4 instead.
|
||||
|
||||
Not yet implemented:
|
||||
- Kinesis EEProm reading or writing
|
||||
- Audio - this should be simple if we remove hardcoded pins from audio.h and switch to E7
|
||||
|
||||
|
||||
|
||||
## Quantum MK Firmware
|
||||
|
||||
For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
|
||||
|
||||
## Building
|
||||
|
||||
Download or clone the whole firmware and navigate to the keyboards/kinesis-advantage 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`.
|
||||
|
||||
### 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 `keymap` option like:
|
||||
|
||||
```
|
||||
$ make keymap=[default|jack|<name>]
|
||||
```
|
||||
|
||||
Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
|
@ -0,0 +1,4 @@
|
||||
Phantom keyboard firmware
|
||||
======================
|
||||
|
||||
TODO: to be updated.
|
@ -0,0 +1,25 @@
|
||||
|
||||
|
||||
# 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 = no # 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 = no # 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
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
@ -0,0 +1,138 @@
|
||||
#include "planck.h"
|
||||
#include "action_layer.h"
|
||||
#ifdef AUDIO_ENABLE
|
||||
#include "audio.h"
|
||||
#endif
|
||||
#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 _BASE 0
|
||||
#define _MOVE 1
|
||||
#define _SYMB 2
|
||||
#define _FUNC 3
|
||||
|
||||
enum planck_keycodes {
|
||||
BASE = SAFE_RANGE,
|
||||
MOVE,
|
||||
SYMB,
|
||||
FUNC
|
||||
};
|
||||
|
||||
// Fillers to make layering more clear
|
||||
#define _______ KC_TRNS
|
||||
#define XXXXXXX KC_NO
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* BASE
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | - |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Bksp | A | R | S | T | D | H | N | E | I | O | " |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Func | GUI | Alt | Ctrl | Symb |Enter |Space | Move | GUI | Alt | Ctrl |Caps |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_BASE] = {
|
||||
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_MINS},
|
||||
{KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
|
||||
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT},
|
||||
{FUNC, KC_LGUI, KC_LALT, KC_LCTL, SYMB, KC_ENT, KC_SPC, MOVE, KC_RGUI, KC_RALT, KC_RCTL, KC_CAPS}
|
||||
},
|
||||
|
||||
/* MOVE
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Esc | | Home | Up | End | | | Home | Up | End | | Esc |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Del | | Left | Down |Right | | | Left | Down |Right | | Del |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | | |Pg Up |Pg Dn | | |Pg Dn |Pg Up | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_MOVE] = {
|
||||
{KC_ESC, _______, KC_HOME, KC_UP, KC_END, _______, _______, KC_HOME, KC_UP, KC_END, _______, KC_ESC},
|
||||
{KC_DEL, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_DEL},
|
||||
{_______, _______, _______, KC_PGUP, KC_PGDN, _______, _______, KC_PGDN, KC_PGUP, _______, _______, _______},
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||
},
|
||||
|
||||
/* SYMB
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Esc |
|
||||
* |-----------------------------------------------------------------------------------.
|
||||
* | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | ~ | | | + | [ | { | } | ] | = | \ | ` | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_SYMB] = {
|
||||
{KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC },
|
||||
{KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL },
|
||||
{_______, KC_TILD, KC_PIPE, KC_PLUS, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_EQL, KC_BSLS, KC_GRV, _______},
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||
},
|
||||
|
||||
/* FUNC
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | F12 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |-----------------------------------------------------------------------------------.
|
||||
* | | Play | Prev | Next | BL+ | | | | | | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | Mute | Vol- | Vol+ | BL- | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | |Reset |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FUNC] = {
|
||||
{KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 },
|
||||
{_______, KC_MPLY, KC_MPRV, KC_MNXT, KC_PAUS, _______, _______, _______, _______, _______, _______, _______},
|
||||
{_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_SLCK, _______, _______, _______, _______, _______, _______, _______},
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET }
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case MOVE:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_MOVE);
|
||||
update_tri_layer(_MOVE, _SYMB, _FUNC);
|
||||
} else {
|
||||
layer_off(_MOVE);
|
||||
update_tri_layer(_MOVE, _SYMB, _FUNC);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case SYMB:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_SYMB);
|
||||
update_tri_layer(_MOVE, _SYMB, _FUNC);
|
||||
} else {
|
||||
layer_off(_SYMB);
|
||||
update_tri_layer(_MOVE, _SYMB, _FUNC);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case FUNC:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_FUNC);
|
||||
} else {
|
||||
layer_off(_FUNC);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
|
||||
|
||||
# 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 = yes # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # 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
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
@ -0,0 +1,364 @@
|
||||
// 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 "planck.h"
|
||||
#include "action_layer.h"
|
||||
#ifdef AUDIO_ENABLE
|
||||
#include "audio.h"
|
||||
#endif
|
||||
#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 _PLOVER 5
|
||||
#define _TOUCHCURSOR 6
|
||||
#define _MOUSE 7
|
||||
#define _ADJUST 16
|
||||
|
||||
enum planck_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
DVORAK,
|
||||
PLOVER,
|
||||
LOWER,
|
||||
RAISE,
|
||||
BACKLIT,
|
||||
EXT_PLV
|
||||
};
|
||||
|
||||
// Fillers to make layering more clear
|
||||
#define _______ KC_TRNS
|
||||
#define XXXXXXX KC_NO
|
||||
|
||||
// Custom macros
|
||||
#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl
|
||||
#define LT_TC LT(_TOUCHCURSOR, KC_SPC) // L-ayer T-ap T-ouch C-ursor
|
||||
// ^-- Requires KC_TRNS / _______ for the trigger key in the destination layer
|
||||
#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
|
||||
#define LT_ML LT(_MOUSE, KC_A) // L-ayer T-ap M-ouse C-ursor (on A)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||
* |----------+------+------+------+------+-------------+------+------+------+------+--------|
|
||||
* | Ctrl/Esc | ML/A | S | D | F | G | H | J | K | L | ; | " |
|
||||
* |----------+------+------+------+------+------|------+------+------+------+------+--------|
|
||||
* | Shift | Z | X | C | V | B | N | M | , | . | / |Sft/Ent |
|
||||
* |----------+------+------+------+------+------+------+------+------+------+------+--------|
|
||||
* | PrntScrn | RGUI | Alt | GUI |Lower | TC/Space |Raise | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = {
|
||||
{KC_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, LT_ML, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
|
||||
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT},
|
||||
{KC_PSCR, KC_RGUI, KC_LALT, KC_LGUI, LOWER, LT_TC, LT_TC, RAISE, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
|
||||
},
|
||||
|
||||
/* Colemak
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
|
||||
* |----------+------+------+------+------+-------------+------+------+------+------+--------|
|
||||
* | Ctrl/Esc | ML/A | R | S | T | D | H | N | E | I | O | " |
|
||||
* |----------+------+------+------+------+------|------+------+------+------+------+--------|
|
||||
* | Shift | Z | X | C | V | B | K | M | , | . | / |Sft/Ent |
|
||||
* |----------+------+------+------+------+------+------+------+------+------+------+--------|
|
||||
* | PrntScrn | RGUI | Alt | GUI |Lower | TC/Space |Raise | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_COLEMAK] = {
|
||||
{KC_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, LT_ML, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
|
||||
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT},
|
||||
{KC_PSCR, KC_RGUI, KC_LALT, KC_LGUI, LOWER, LT_TC, LT_TC, RAISE, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
|
||||
},
|
||||
|
||||
/* Dvorak
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
|
||||
* |----------+------+------+------+------+-------------+------+------+------+------+--------|
|
||||
* | Ctrl/Esc | ML/A | O | E | U | I | D | H | T | N | S | / |
|
||||
* |----------+------+------+------+------+------|------+------+------+------+------+--------|
|
||||
* | Shift | ; | Q | J | K | X | B | M | W | V | Z |Sft/Ent |
|
||||
* |----------+------+------+------+------+------+------+------+------+------+------+--------|
|
||||
* | PrntScrn | RGUI | Alt | GUI |Lower | TC/Space |Raise | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_DVORAK] = {
|
||||
{KC_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, LT_ML, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
|
||||
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT},
|
||||
{KC_PSCR, KC_RGUI, KC_LALT, KC_LGUI, LOWER, LT_TC, LT_TC, RAISE, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
|
||||
},
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | [ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | ] | F7 | F8 | F9 | F10 | F11 | F12 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Brite | | | | | | | Prev | Stop | Slct | Mute |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_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_LBRC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
|
||||
{KC_RBRC, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
|
||||
{BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MSTP, KC_MSEL, KC_MUTE}
|
||||
},
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | $ | 4 | 5 | 6 | . | + | * | 4 | 5 | 6 | - | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | = | 7 | 8 | 9 | 0 | - | / | 1 | 2 | 3 | . | \ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Brite | | | | | | | Prev | Stop | Slct | Mute |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = {
|
||||
{KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
|
||||
{KC_DLR, KC_4, KC_5, KC_6, KC_DOT, KC_PLUS, KC_ASTR, KC_4, KC_5, KC_6, KC_MINS, KC_PIPE},
|
||||
{KC_EQL, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_SLSH, KC_1, KC_2, KC_3, KC_DOT, KC_BSLS},
|
||||
{BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MSTP, KC_MSEL, KC_MUTE}
|
||||
},
|
||||
|
||||
/* TouchCursor layer (http://martin-stone.github.io/touchcursor/) plus personal customizations
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | |Shift | GUI | ~ |Insert| Home | Up | End | Bksp | |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | Alt |Space | | Find |Again | PgUp | Left | Down |Right | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | Undo | Cut | Copy |Paste | ` | PgDn | Del | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*
|
||||
* The KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_FIND, and KC_AGAIN keycodes don't
|
||||
* seem to work on Mac. Presumably they'll work under Windows.
|
||||
*/
|
||||
|
||||
[_TOUCHCURSOR] = {
|
||||
{_______, _______, _______, KC_LSFT, KC_LGUI, KC_TILD, KC_INS, KC_HOME, KC_UP, KC_END, KC_BSPC, _______},
|
||||
{_______, KC_LALT, KC_SPC, _______, KC_FIND,KC_AGAIN, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______},
|
||||
{_______, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE,KC_GRV, KC_PGDN, KC_DEL, _______, _______, _______, _______},
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||
},
|
||||
|
||||
/* Mouse Layer
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | |ACCL0 |ACCL1 |ACCL2 |ACCL2 | |WHL_L | Up |WHL_R | BTN2 | |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | | | BTN3 | BTN1 | BTN4 |WHL_Up| Left | Down |Right | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | | | | BTN2 | BTN5 |WHL_Dn| BTN1 | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_MOUSE] = {
|
||||
{_______, _______, KC_ACL0, KC_ACL1, KC_ACL2, KC_ACL2, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, _______},
|
||||
{_______, _______, _______, KC_BTN3, KC_BTN1, KC_BTN4, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______},
|
||||
{_______, _______, _______, _______, KC_BTN2, KC_BTN5, KC_WH_D, KC_BTN1, _______, _______, _______, _______},
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||
},
|
||||
|
||||
/* Plover layer (http://opensteno.org)
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | # | # | # | # | # | # | # | # | # | # | # | # |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | S | T | P | H | * | * | F | P | L | T | D |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* |TogOut| S | K | W | R | * | * | R | B | G | S | Z |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Exit | | | A | O | | E | U | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
|
||||
[_PLOVER] = {
|
||||
{KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
|
||||
{XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
|
||||
{XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
|
||||
{EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX}
|
||||
},
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | |Reset |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = {
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
|
||||
{_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______},
|
||||
{_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______},
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET}
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
|
||||
float tone_startup[][2] = SONG(STARTUP_SOUND);
|
||||
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
|
||||
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
|
||||
float tone_plover[][2] = SONG(PLOVER_SOUND);
|
||||
float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
||||
float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
|
||||
|
||||
float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
|
||||
#endif
|
||||
|
||||
|
||||
void persistant_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
|
||||
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
|
||||
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
|
||||
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 BACKLIT:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_step();
|
||||
#endif
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case PLOVER:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
stop_all_notes();
|
||||
PLAY_NOTE_ARRAY(tone_plover, false, 0);
|
||||
#endif
|
||||
layer_off(_RAISE);
|
||||
layer_off(_LOWER);
|
||||
layer_off(_ADJUST);
|
||||
layer_on(_PLOVER);
|
||||
if (!eeconfig_is_enabled()) {
|
||||
eeconfig_init();
|
||||
}
|
||||
keymap_config.raw = eeconfig_read_keymap();
|
||||
keymap_config.nkro = 1;
|
||||
eeconfig_update_keymap(keymap_config.raw);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case EXT_PLV:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_NOTE_ARRAY(tone_plover_gb, false, 0);
|
||||
#endif
|
||||
layer_off(_PLOVER);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
startup_user();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
|
||||
void startup_user()
|
||||
{
|
||||
_delay_ms(20); // gets rid of tick
|
||||
PLAY_NOTE_ARRAY(tone_startup, false, 0);
|
||||
}
|
||||
|
||||
void shutdown_user()
|
||||
{
|
||||
PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
|
||||
_delay_ms(150);
|
||||
stop_all_notes();
|
||||
}
|
||||
|
||||
void music_on_user(void)
|
||||
{
|
||||
music_scale_user();
|
||||
}
|
||||
|
||||
void music_scale_user(void)
|
||||
{
|
||||
PLAY_NOTE_ARRAY(music_scale, false, 0);
|
||||
}
|
||||
|
||||
#endif
|
@ -0,0 +1,107 @@
|
||||
jeebak's layout
|
||||
=======================
|
||||
This WIP keymap attempts to minimize fingers straying away from the home row.
|
||||
To aid in this endeavor, when additional modifyer keys to switch layers are
|
||||
needed, they will be mapped to home row keys. The `keymap.c` file will contain
|
||||
the exact changes. The diagrams in this README shows the highlights of the
|
||||
changes from the default mappings.
|
||||
|
||||
I also decided to change all calls to `persistant_default_layer_set()` to
|
||||
`update_tri_layer()` since this is my personal perference.
|
||||
|
||||
## Base Layers (Qwerty/Colemak/Dvorak)
|
||||
These base layers are mostly the same as the default mappings. The interesting
|
||||
changes are shown below. The `Ctrl/Esc`, mapped using `CTL_T(KC_ESC)` will emit
|
||||
an `Escape` when tapped, and act as a `Control` key when held. A `TODO` item is
|
||||
to see if it can also act as a `CapsLock` when double-tapped. The right shift
|
||||
key acts as `Enter` when tapped, and as a `Shift` key when held. The arrow
|
||||
keys, which have been moved to the
|
||||
[TouchCursor](http://martin-stone.github.io/touchcursor/) layer, have been
|
||||
replaced with the Media keys as shown. The `ML/A` key activates the Mouse layer
|
||||
when held, and emits an `A` when tapped.
|
||||
```
|
||||
,-----------------------------------------------------------------------------------------.
|
||||
| | | | | | | | | | | | |
|
||||
|----------+------+------+------+------+-------------+------+------+------+------+--------|
|
||||
| Ctrl/Esc | ML/A | | | | | | | | | | |
|
||||
|----------+------+------+------+------+------|------+------+------+------+------+--------|
|
||||
| | | | | | | | | | | |Sft/Ent |
|
||||
|----------+------+------+------+------+------+------+------+------+------+------+--------|
|
||||
| PrntScrn | RGUI | Alt | GUI |Lower | TC/Space |Raise | Next | Vol- | Vol+ | Play |
|
||||
`-----------------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
## Lower Layer (Symbols and Function Keys)
|
||||
The symbols and functions keys are essentially the same as the default mapping.
|
||||
The most notable changes are that the symbol keys from the `RAISE` layer have
|
||||
been moved here. The remaining Media keys replace those that are now on the
|
||||
base layers. The `BACKLIT` key has also been moved here.
|
||||
```
|
||||
,-----------------------------------------------------------------------------------.
|
||||
| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
||||
|------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
| [ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
|
||||
|------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
| ] | F7 | F8 | F9 | F10 | F11 | F12 | - | = | [ | ] | \ |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
|Brite | | | | | | | Prev | Stop | Slct | Mute |
|
||||
`-----------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
## Raise Layer (Numbers and Arithmetic Operators)
|
||||
All of the numbers and arithmetic operators are available on this layer. Some
|
||||
keys are duplicated for the convenience of their positions. The `0` and `$`
|
||||
keys at the far left are for quick access to beginning and end of line in vim.
|
||||
```
|
||||
,-----------------------------------------------------------------------------------.
|
||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
|------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
| $ | 4 | 5 | 6 | . | + | * | 4 | 5 | 6 | - | | |
|
||||
|------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
| = | 7 | 8 | 9 | 0 | - | / | 1 | 2 | 3 | . | \ |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
|Brite | | | | | | | Prev | Stop | Slct | Mute |
|
||||
`-----------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
## TouchCursor layer plus personal customizations
|
||||
[TouchCursor](http://martin-stone.github.io/touchcursor/) uses the `Space` key
|
||||
as the modifier, with the `IJKL` home row keys representing the inverted-T of
|
||||
the arrow keys. All of the default TouchCursor keymappings for the right hand
|
||||
are represented below. My personalizations include all of the keys shown for
|
||||
the left hand. Having the `Alt` and `Shift` keys readily accessible from the
|
||||
home row allows quick word jumps and highlighting when used in conjunction with
|
||||
the arrow keys. The `KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_FIND,` and
|
||||
`KC_AGAIN` keycodes have been mapped but they don't seem to work on Mac.
|
||||
Presumably they'll work under Windows.
|
||||
```
|
||||
,-----------------------------------------------------------------------------------.
|
||||
| | | |Shift | GUI | ~ |Insert| Home | Up | End | Bksp | |
|
||||
|------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
| | Alt |Space | | Find |Again | PgUp | Left | Down |Right | | |
|
||||
|------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
| | Undo | Cut | Copy |Paste | ` | PgDn | Del | | | | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | |
|
||||
`-----------------------------------------------------------------------------------'
|
||||
```
|
||||
|
||||
## Mouse Layer
|
||||
The Mouse layer, closely mimics the layout/behaviour of the TouchCursor layer.
|
||||
The `A` key is used to activate this layer. All 16 keycodes for the mouse from
|
||||
the `doc/keycode.txt` file are represented, and logically located, IMHO. The
|
||||
left and right click buttons are duplicated; on the right hand side, for a
|
||||
quick click here and there, and again on the left hand side for when the
|
||||
buttons need to be held for dragging things or highlighting text, thus allowing
|
||||
the right hand to be free to use the up/down/left/right actions.
|
||||
```
|
||||
,-----------------------------------------------------------------------------------.
|
||||
| | |ACCL0 |ACCL1 |ACCL2 |ACCL2 | |WHL_L | Up |WHL_R | BTN2 | |
|
||||
|------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
| | | | BTN3 | BTN1 | BTN4 |WHL_Up| Left | Down |Right | | |
|
||||
|------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
| | | | | BTN2 | BTN5 |WHL_Dn| BTN1 | | | | |
|
||||
|------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
| | | | | | | | | | | |
|
||||
`-----------------------------------------------------------------------------------'
|
||||
```
|
@ -0,0 +1,21 @@
|
||||
# Build Options
|
||||
|
||||
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 = yes # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # 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
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
@ -0,0 +1,30 @@
|
||||
Ergonomic Colemak Keymap
|
||||
========================
|
||||
An ergonomically optimized Colemak keymap for the grid-layout Preonic
|
||||
|
||||
Modes
|
||||
----------
|
||||
|
||||
#### Colemak
|
||||
|
||||
> Base layer
|
||||
|
||||
- All alphanumerics and symbols available on the base layer
|
||||
|
||||
----------
|
||||
|
||||
#### Game
|
||||
|
||||
> QWERTY layout for use with games or number entry
|
||||
|
||||
- Standard QWERTY layout
|
||||
- Integrated right-hand numpad in phone layout
|
||||
|
||||
----------
|
||||
|
||||
#### Function (Raise)
|
||||
|
||||
> Functions and mode switching
|
||||
|
||||
- Turns NEIO into arrow cluster, with nav cluster below (Home, Page Down, Page Up, End)
|
||||
- Reset key at lower left (Esc)
|
@ -0,0 +1,10 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include "../../config.h"
|
||||
|
||||
// Number of backlight levels
|
||||
#undef BACKLIGHT_LEVELS
|
||||
#define BACKLIGHT_LEVELS 5
|
||||
|
||||
#endif
|
@ -0,0 +1,77 @@
|
||||
CMD-Preonic
|
||||
===================
|
||||
The CMD project seeks to improve productivity by optimizing usage of the left hand via clever use of the function layers.
|
||||
|
||||
>Note: This project is currently optimized for grid layout, and has not been confirmed to work 100% on MIT layout, although it is expected to work correctly.
|
||||
|
||||
----------
|
||||
|
||||
Modes
|
||||
-------------
|
||||
|
||||
#### QWERTY
|
||||
|
||||
>CMD-Qwerty is very similar to the default Preonic with a few key differences:
|
||||
|
||||
- Dual-role Raise/Enter Key at Caps Lock position. -Don't need to take your hand off the mouse to submit URLs
|
||||
- Space_Function under left space (Grid layout) -Don't need to take your thumb off of the spacebar to use lower.
|
||||
- Dedicated arrow keys replaced with ( - , = , [ , and ] ) - big improvement for programmers who are used to fn layer.
|
||||
|
||||
----------
|
||||
|
||||
#### Game
|
||||
|
||||
> Disables extra features to facilitate easier usage of the Preonic while gaming. this mode is toggled in the adjust layer.
|
||||
|
||||
- Dual Role Function key becomes Caps Lock.
|
||||
- Space_Function disabled and replaced with normal spacebar.
|
||||
- Windows Key disabled.
|
||||
|
||||
----------
|
||||
|
||||
#### Numpad
|
||||
|
||||
> Enables left-hand numpad
|
||||
|
||||
- Left-side numpad
|
||||
- Can be toggled on in Adjust layer (under . key)
|
||||
|
||||
----------
|
||||
|
||||
#### Arrow - (Lower)
|
||||
|
||||
> Makes arrow keys easily accessible to Left Hand, and much more.
|
||||
|
||||
- Arrow keys at WASD, Backspace at Q, Delete at E.
|
||||
- Media Keys near arrow cluster, mute at A.
|
||||
- Web Nav keys.
|
||||
- Mouse cluster at YGHJ.
|
||||
- Numpad in right side of board.
|
||||
- Can be toggled on in Adjust layer (Under , key)
|
||||
|
||||
----------
|
||||
|
||||
#### Function- (Raise)
|
||||
|
||||
> Basic Functions. Open Keys for customization.
|
||||
|
||||
- Turns WASD into Navigation cluster (Home, End, Page up and Page Down)
|
||||
- Pok3r style right hand arrow cluster for accessibility (familiar for many users.)
|
||||
- Doubles as shift key for top row numbers.
|
||||
- Print Screen, Insert, etc.
|
||||
|
||||
----------
|
||||
|
||||
#### Adjust- (Raise + Lower)
|
||||
|
||||
> Switch Modes
|
||||
|
||||
- Default modes moved to the left and new layer toggle modes located to the right.
|
||||
- Sleep and Wake keys added.
|
||||
- Reset button moved under Spacebar(s).
|
||||
|
||||
Notes:
|
||||
-------------
|
||||
|
||||
Please feel free to reach out to Commandlinedesign@gmail.com with suggestions.
|
||||
Special Thanks to Jack for QMK firmware and the Preonic!
|
@ -0,0 +1,332 @@
|
||||
#include "preonic.h"
|
||||
#include "action_layer.h"
|
||||
#include "eeconfig.h"
|
||||
#ifdef AUDIO_ENABLE
|
||||
#include "audio.h"
|
||||
#endif
|
||||
|
||||
// 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 _GAME 3
|
||||
#define _ARROW 12
|
||||
#define _NUMPAD 13
|
||||
#define _LOWER 14
|
||||
#define _RAISE 15
|
||||
#define _ADJUST 16
|
||||
|
||||
// Macro name shortcuts
|
||||
#define QWERTY M(_QWERTY)
|
||||
#define COLEMAK M(_COLEMAK)
|
||||
#define DVORAK M(_DVORAK)
|
||||
#define GAME M(_GAME)
|
||||
#define ARROW M(_ARROW)
|
||||
#define NUMPAD M(_NUMPAD)
|
||||
#define LOWER M(_LOWER)
|
||||
#define RAISE M(_RAISE)
|
||||
#define M_BL 5
|
||||
|
||||
// Fillers to make layering more clear
|
||||
#define _______ KC_TRNS
|
||||
#define XXXXXXX KC_NO
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | \ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Brite| Ctrl | Alt | GUI |Lower | Space | Raise| - | = | [ | ] |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = {
|
||||
{KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_BSLASH},
|
||||
{LT(_RAISE, KC_ENT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
|
||||
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
|
||||
{M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, LT(_LOWER, KC_SPC), KC_SPC, RAISE, KC_MINUS, KC_EQUAL, KC_LBRC, KC_RBRC}
|
||||
},
|
||||
|
||||
/* Colemak
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | R | S | T | D | H | N | E | I | O | " |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Brite| Ctrl | Alt | GUI |Lower | Space | Raise| - | = | [ | ] |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_COLEMAK] = {
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{_______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, _______},
|
||||
{_______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
|
||||
{_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______},
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||
},
|
||||
|
||||
/* Dvorak
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Tab | " | , | . | P | Y | F | G | C | R | L | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | O | E | U | I | D | H | T | N | S | / |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Brite| Ctrl | Alt | GUI |Lower | Space | Raise| - | = | [ | ] |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_DVORAK] = {
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{_______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______},
|
||||
{_______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, _______},
|
||||
{_______, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______},
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||
},
|
||||
|
||||
/* GAME
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | \ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | CAPS | A | S | D | F | G | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Brite| Ctrl | Alt | XXX | Lower | Space | Raise| - | = | [ | ] |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_GAME] = {
|
||||
{KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_BSLASH},
|
||||
{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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
|
||||
{_______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||
},
|
||||
|
||||
/* NUMPAD
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Esc | / | * | - | 4 | 5 | 6 | 7 | 8 | 9 | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | 7 | 8 | 9 | + | R | T | Y | U | I | O | P | \ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | 4 | 5 | 6 | + | F | G | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | 1 | 2 | 3 | Enter| V | B | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | 0 | 0 | . | Enter| Lower| Space | Raise| - | = | [ | ] |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_NUMPAD] = {
|
||||
{KC_ESC, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
{KC_P0, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||
},
|
||||
/* Lower
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Del |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Mute | BkSpc| Up | Del | Forwd| MBtn1| MUp| MBtn2| / | 7 | 8 | 9 |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | Left | Down | Right| Refr MLeft| MDn |MRight| * | 4 | 5 | 6 |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Vol+| Prev | Play | Next | Back | MWDn| MBtn3| MWUp | - | 1 | 2 | 3 |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Vol- | | | | | | | + | Enter| 0 | . |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = {
|
||||
{KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL},
|
||||
{KC_MUTE, KC_BSPC, KC_UP, KC_DEL, KC_WWW_FORWARD, KC_BTN1, KC_MS_U, KC_BTN2, KC_PSLS, KC_P7, KC_P8, KC_P9},
|
||||
{_______, KC_LEFT, KC_DOWN, KC_RIGHT, KC_WWW_REFRESH, KC_MS_L, KC_MS_D, KC_MS_R, KC_PAST, KC_P4, KC_P5, KC_P6},
|
||||
{KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, KC_WWW_BACK, KC_WH_D, KC_BTN3, KC_WH_U, KC_PMNS, KC_P1, KC_P2, KC_P3},
|
||||
{KC_VOLD, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PENT, KC_P0, KC_PDOT}
|
||||
},
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | Bksp | PgUp | Del | | | | PgUp | Up | PgDn | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | Home | PgDn | End | | | Home | Left | Down | Right| ] | \ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | Pause| Ins | | | Print|Screen| End | | | |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = {
|
||||
{KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
|
||||
{_______, KC_BSPC, KC_PGUP, KC_DEL, _______, _______, _______, KC_PGUP, KC_UP, _______, _______, _______},
|
||||
{_______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______},
|
||||
{_______, KC_PAUSE, KC_INS, _______, KC_PSCR, KC_PSCR, _______, KC_END, _______, _______, _______, _______},
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||
},
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | |qwerty|ColMak|Dvorak| | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | |AGNorm|AGSwap| | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | |Aud On|AudOff|MidiOn|MdiOff| | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | |Voice-|Voice+|Mus On|MusOff| Sleep| Wake | Arrow| Game |NUMPAD| | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | Reset | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = {
|
||||
{_______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______},
|
||||
{_______, RESET, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, _______, KC_DEL},
|
||||
{_______, _______, _______, AU_ON, AU_OFF, MI_ON, MI_OFF, QWERTY, COLEMAK, DVORAK, _______, _______},
|
||||
{_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, ARROW, GAME, NUMPAD, _______, _______},
|
||||
{_______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______}
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
|
||||
};
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
float start_up[][2] = {
|
||||
{440.0*pow(2.0,(14)/12.0), 20},
|
||||
{440.0*pow(2.0,(26)/12.0), 8},
|
||||
{440.0*pow(2.0,(18)/12.0), 20},
|
||||
{440.0*pow(2.0,(26)/12.0), 8}
|
||||
};
|
||||
|
||||
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
|
||||
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
|
||||
|
||||
float goodbye[][2] = SONG(GOODBYE_SOUND);
|
||||
#endif
|
||||
|
||||
void persistant_default_layer_set(uint16_t default_layer) {
|
||||
eeconfig_update_default_layer(default_layer);
|
||||
default_layer_set(default_layer);
|
||||
}
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
switch(id) {
|
||||
case _QWERTY:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
|
||||
#endif
|
||||
persistant_default_layer_set(1UL<<_QWERTY);
|
||||
}
|
||||
break;
|
||||
case _COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
|
||||
#endif
|
||||
persistant_default_layer_set(1UL<<_COLEMAK);
|
||||
}
|
||||
break;
|
||||
case _DVORAK:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
|
||||
#endif
|
||||
persistant_default_layer_set(1UL<<_DVORAK);
|
||||
}
|
||||
break;
|
||||
case _GAME:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
|
||||
#endif
|
||||
persistant_default_layer_set(1UL<<_GAME);
|
||||
}
|
||||
break;
|
||||
case _NUMPAD:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
|
||||
#endif
|
||||
persistant_default_layer_set(1UL<<_NUMPAD);
|
||||
}
|
||||
break;
|
||||
case _ARROW:
|
||||
if (record->event.pressed) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
|
||||
#endif
|
||||
persistant_default_layer_set(1UL<<_LOWER);
|
||||
}
|
||||
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);
|
||||
}
|
||||
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);
|
||||
}
|
||||
break;
|
||||
case M_BL:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_RSFT);
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_step();
|
||||
#endif
|
||||
} else {
|
||||
unregister_code(KC_RSFT);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
_delay_ms(20); // gets rid of tick
|
||||
PLAY_NOTE_ARRAY(start_up, false, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef AUDIO_ENABLE
|
||||
|
||||
void play_goodbye_tone()
|
||||
{
|
||||
PLAY_NOTE_ARRAY(goodbye, false, 0);
|
||||
_delay_ms(150);
|
||||
}
|
||||
|
||||
#endif
|
@ -0,0 +1,23 @@
|
||||
# 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 = no # 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 controls
|
||||
AUDIO_ENABLE = yes # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # 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
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
@ -0,0 +1,21 @@
|
||||
# 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 = no # 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
|
@ -0,0 +1 @@
|
||||
# default Satan GH60 layout
|
@ -0,0 +1,21 @@
|
||||
# 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 = no # 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
|
@ -0,0 +1,3 @@
|
||||
# sethbc's Satan GH60 layout
|
||||
|
||||
HHKB style split right shift and split backspace. Largely based on the HHKB layout.
|
@ -1,20 +1,15 @@
|
||||
#include "../../config.h"
|
||||
|
||||
// USB Device descriptor parameter
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6060
|
||||
#define DEVICE_VER 0x0003
|
||||
#define MANUFACTURER Custom
|
||||
#define PRODUCT GH60 rev.CHN
|
||||
#define DESCRIPTION QMK keyboard firmware for GH60 with WS2812 support
|
||||
|
||||
// Backlight configuration
|
||||
#undef BACKLIGHT_LEVELS
|
||||
#define BACKLIGHT_LEVELS 3
|
||||
|
||||
// Underlight configuration
|
||||
#define RGB_DI_PIN E2
|
||||
#define RGBLIGHT_TIMER
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 6 // Number of LEDs
|
||||
#undef RGBLIGHT_HUE_STEP
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#undef RGBLIGHT_SAT_STEP
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#undef RGBLIGHT_VAL_STEP
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
|
@ -0,0 +1,4 @@
|
||||
Satan GH60 keyboard firmware
|
||||
======================
|
||||
|
||||
TODO: to be updated.
|
@ -0,0 +1 @@
|
||||
<html><head><meta http-equiv="refresh" content="0; url=http://qmk.fm/keyboards/ergodox/" /></head></html>
|