Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
49fbcb3e7c
274 changed files with 5133 additions and 2508 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -17,6 +17,7 @@ build/
|
|||
.build/
|
||||
*.bak
|
||||
.vagrant/
|
||||
quantum/version.h
|
||||
.idea/
|
||||
CMakeLists.txt
|
||||
.DS_STORE
|
||||
|
|
@ -26,4 +27,4 @@ CMakeLists.txt
|
|||
.project
|
||||
.settings/
|
||||
.idea
|
||||
.browse.VC.db*
|
||||
.browse.VC.db*
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ env:
|
|||
global:
|
||||
- secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM=
|
||||
script:
|
||||
- make all-keyboards-quick AUTOGEN=true
|
||||
- make all-keyboards AUTOGEN=true
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ RUN apt-get install --no-install-recommends -y build-essential \
|
|||
RUN apt-get clean
|
||||
RUN rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENV keyboard=ergodox_ez
|
||||
ENV keyboard=ergodox
|
||||
ENV keymap=default
|
||||
|
||||
VOLUME /qmk
|
||||
|
|
|
|||
30
Makefile
30
Makefile
|
|
@ -5,8 +5,9 @@ endif
|
|||
.DEFAULT_GOAL := all
|
||||
|
||||
space := $(subst ,, )
|
||||
starting_makefile := $(subst $(space),_SPACE_,$(abspath $(firstword $(MAKEFILE_LIST))))
|
||||
mkfile_path := $(subst $(space),_SPACE_,$(abspath $(lastword $(MAKEFILE_LIST))))
|
||||
ESCAPED_ABS_PATH = $(subst $(space),_SPACE_,$(abspath $1))
|
||||
starting_makefile := $(call ESCAPED_ABS_PATH,$(firstword $(MAKEFILE_LIST)))
|
||||
mkfile_path := $(call ESCAPED_ABS_PATH,$(lastword $(MAKEFILE_LIST))))
|
||||
abs_tmk_root := $(patsubst %/,%,$(dir $(mkfile_path)))
|
||||
|
||||
ifneq (,$(findstring /keyboards/,$(starting_makefile)))
|
||||
|
|
@ -83,10 +84,8 @@ endif
|
|||
|
||||
ifneq ("$(wildcard $(KEYBOARD_PATH)/$(KEYBOARD).c)","")
|
||||
KEYBOARD_FILE = keyboards/$(KEYBOARD)/$(KEYBOARD).c
|
||||
ifndef ARCH
|
||||
ifneq ("$(wildcard $(KEYBOARD_PATH)/Makefile)","")
|
||||
include $(KEYBOARD_PATH)/Makefile
|
||||
endif
|
||||
ifneq ($(call ESCAPED_ABS_PATH,$(KEYBOARD_PATH)/Makefile),$(starting_makefile))
|
||||
-include $(KEYBOARD_PATH)/Makefile
|
||||
endif
|
||||
else
|
||||
$(error "$(KEYBOARD_PATH)/$(KEYBOARD).c" does not exist)
|
||||
|
|
@ -101,7 +100,9 @@ ifdef SUBPROJECT
|
|||
ifneq ("$(wildcard $(SUBPROJECT_PATH)/$(SUBPROJECT).c)","")
|
||||
OPT_DEFS += -DSUBPROJECT_$(SUBPROJECT)
|
||||
SUBPROJECT_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/$(SUBPROJECT).c
|
||||
-include $(SUBPROJECT_PATH)/Makefile
|
||||
ifneq ($(call ESCAPED_ABS_PATH,$(SUBPROJECT_PATH)/Makefile),$(starting_makefile))
|
||||
-include $(SUBPROJECT_PATH)/Makefile
|
||||
endif
|
||||
else
|
||||
$(error "$(SUBPROJECT_PATH)/$(SUBPROJECT).c" does not exist)
|
||||
endif
|
||||
|
|
@ -119,14 +120,18 @@ endif
|
|||
KEYMAP_PATH = $(KEYBOARD_PATH)/keymaps/$(KEYMAP)
|
||||
ifneq ("$(wildcard $(KEYMAP_PATH)/keymap.c)","")
|
||||
KEYMAP_FILE = keyboards/$(KEYBOARD)/keymaps/$(KEYMAP)/keymap.c
|
||||
-include $(KEYMAP_PATH)/Makefile
|
||||
ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile))
|
||||
-include $(KEYMAP_PATH)/Makefile
|
||||
endif
|
||||
else
|
||||
ifeq ("$(wildcard $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)/keymap.c)","")
|
||||
$(error "$(KEYMAP_PATH)/keymap.c" does not exist)
|
||||
else
|
||||
KEYMAP_PATH = $(SUBPROJECT_PATH)/keymaps/$(KEYMAP)
|
||||
KEYMAP_FILE = keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/$(KEYMAP)/keymap.c
|
||||
-include $(KEYMAP_PATH)/Makefile
|
||||
ifneq ($(call ESCAPED_ABS_PATH,$(KEYMAP_PATH)/Makefile),$(starting_makefile))
|
||||
-include $(KEYMAP_PATH)/Makefile
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
|
|
@ -135,7 +140,8 @@ ifdef SUBPROJECT
|
|||
else
|
||||
TARGET ?= $(KEYBOARD)_$(KEYMAP)
|
||||
endif
|
||||
BUILD_DIR = .build
|
||||
|
||||
BUILD_DIR = $(TOP_DIR)/.build
|
||||
|
||||
# Object files directory
|
||||
# To put object files in current directory, use a dot (.), do NOT make
|
||||
|
|
@ -265,4 +271,6 @@ include $(TMK_PATH)/rules.mk
|
|||
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
|
||||
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
|
||||
OPT_DEFS += -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\"
|
||||
OPT_DEFS += -DQMK_VERSION=\"$(GIT_VERSION)\" -DQMK_BUILDDATE=\"$(BUILD_DATE)\"
|
||||
|
||||
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(QUANTUM_PATH)/version.h)
|
||||
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(QUANTUM_PATH)/version.h)
|
||||
2
Vagrantfile
vendored
2
Vagrantfile
vendored
|
|
@ -91,7 +91,7 @@ Vagrant.configure(2) do |config|
|
|||
|
||||
Or you can copy and paste the example line below.
|
||||
|
||||
cd /vagrant; cd keyboards; cd ergodox_ez; make clean; make
|
||||
cd /vagrant; cd keyboards; cd ergodox; make clean; make
|
||||
|
||||
|
||||
EOT
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ You can find some keyboard specific projects under `converter` and `keyboard` di
|
|||
* [atomic](keyboards/atomic/) - [Atomic] Ortholinear 60% keyboard
|
||||
|
||||
### Ergodox EZ
|
||||
* [ergodox_ez](keyboards/ergodox_ez) - [Ergodox_EZ] Assembled split keyboard
|
||||
* [ergodox_ez](keyboards/ergodox/ez) - [Ergodox_EZ] Assembled split keyboard
|
||||
|
||||
## Other projects
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ See [/doc/keymap.md](/doc/keymap.md).
|
|||
|
||||
## Flashing the firmware
|
||||
|
||||
The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](/keyboards/ergodox_ez/readme.md) gives a great example.
|
||||
The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](/keyboards/ergodox/readme.md) gives a great example.
|
||||
|
||||
If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version.
|
||||
|
||||
|
||||
|
|
|
|||
96
doc/basic_how_keyboards_work.md
Normal file
96
doc/basic_how_keyboards_work.md
Normal file
|
|
@ -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.
|
||||
|
|
@ -90,7 +90,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||
|
||||
|
||||
# Build Options
|
||||
# comment out to disable the options.
|
||||
# change to no to disable the options.
|
||||
#
|
||||
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
|
||||
|
|
|
|||
|
|
@ -29,9 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* define if matrix has ghost */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCING_DELAY 5
|
||||
|
||||
|
|
|
|||
|
|
@ -66,19 +66,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
* `----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RS] = KEYMAP(
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, \
|
||||
KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||
MO(_FL), KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), RGB_SAI, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI),
|
||||
#else
|
||||
KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, MO(_RS),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_FL), KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
#endif
|
||||
};
|
||||
|
||||
enum function_id {
|
||||
|
|
|
|||
5
keyboards/clueboard/keymaps/skully/readme.md
Normal file
5
keyboards/clueboard/keymaps/skully/readme.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# skullY's Clueboard Layout
|
||||
|
||||
This layout is what I (@skullydazed) use on my personal Clueboards. I mostly use it for programming, CAD, and general typing.
|
||||
|
||||
The most notable change from the default layout is putting Ctrl on the Capslock key. I also swap Alt and Cmd because I mostly use a Mac day to day.
|
||||
|
|
@ -1,4 +1,97 @@
|
|||
Clueboard keyboard firmware
|
||||
======================
|
||||
|
||||
TODO: to be updated.
|
||||
DIY/Assembled compact 66% keyboard by [Clueboard](http://clueboard.co).
|
||||
|
||||
For the full Quantum Mechanical Keyboard feature list, see [the parent readme.md](/readme.md).
|
||||
|
||||
## First Time Setup
|
||||
|
||||
Download or clone the whole firmware and navigate to the keyboards/clueboard directory. Once your dev env is setup, you'll be able to generate the default .hex:
|
||||
|
||||
```
|
||||
$ make
|
||||
```
|
||||
|
||||
You will see a lot of output and if everything worked correctly you will see something similar to this:
|
||||
|
||||
```
|
||||
Size after:
|
||||
text data bss dec hex filename
|
||||
0 19992 0 19992 4e18 clueboard_rev2_default.hex
|
||||
```
|
||||
|
||||
At this point you can press RESET on your Clueboard and flash your keyboard with this command:
|
||||
|
||||
```
|
||||
$ make dfu
|
||||
```
|
||||
|
||||
If you would like to use one of the alternative keymaps, or create your own, see below.
|
||||
|
||||
## Clueboard 1.0
|
||||
|
||||
If you have a first generation Clueboard (one with a black PCB) you will need to use the revision 1 code. To do so add `SUBPROJECT=rev1` to your make command, like this:
|
||||
|
||||
```
|
||||
$ make SUBPROJECT=rev1
|
||||
```
|
||||
|
||||
And when flashing your keyboard:
|
||||
|
||||
```
|
||||
$ make SUBPROJECT=rev1 dfu
|
||||
```
|
||||
|
||||
If you are flashing an alternative layout to your rev1, include both `SUBPROJECT=rev1` and `KEYMAP=<keymap>` in your command, for example when flashing max:
|
||||
|
||||
```
|
||||
$ make SUBPROJECT=rev1 KEYMAP=max dfu
|
||||
```
|
||||
|
||||
## Alternate Keymaps
|
||||
|
||||
There are many alternative and user-contributed layouts available in the [keymaps/](keymaps/) directory. To compile and flash an alternative you will want to add `KEYMAP=<keymap>` to your command:
|
||||
|
||||
```
|
||||
$ make KEYMAP=skully
|
||||
```
|
||||
|
||||
And when flashing your keyboard, put `KEYMAP=<keymap>` between "make" and "dfu":
|
||||
|
||||
```
|
||||
$ make KEYMAP=skully dfu
|
||||
```
|
||||
|
||||
### Notable Layouts
|
||||
|
||||
These layouts are notable for one reason or another. If you are looking for ideas or inspiration you should look at these first:
|
||||
|
||||
* [keymaps/default](keymaps/default) - The default Clueboard layout
|
||||
* [keymaps/max](keymaps/max) - A maximised layout that makes use of every key and feature of the Clueboard 2.0 PCB.
|
||||
* [keymaps/skully](keymaps/skully) - The layout that @skullydazed uses on his own Clueboards.
|
||||
|
||||
## Create Your Own Keymap
|
||||
|
||||
There are a lot of possibilities when creating your own keymap, and the primary documentation for doing that is [Customizing Your Keymap](/readme.md##customizing-your-keymap) in the main readme.md. As a way to get started, here is the procedure I recommend:
|
||||
|
||||
* Copy `[keymaps/default](keymaps/default/)` to `keymaps/<your_layout>`.
|
||||
* Compile the firmware (`$ make KEYMAP=<your_layout>`)
|
||||
* Flash the firmware (`$ make KEYMAP=<your_layout> dfu`)
|
||||
* Make sure everything works like the default keyboard
|
||||
* Modify `keymaps/<your_layout>/readme.md` to tell others about your layout.
|
||||
* Modify `keymaps/<your_layout>/keymap.c` to reflect your desired layout.
|
||||
* Compile your new custom firmware (`$ make KEYMAP=<your_layout>`)
|
||||
** If you have warnings you may flash without fixing them, but something may not work right.
|
||||
** If you have any errors you must fix them before continuing.
|
||||
* Flash the firmware (`$ make KEYMAP=<your_layout> dfu`)
|
||||
|
||||
## Share Your Keymap
|
||||
|
||||
Got your layout dialed in? Please share it with the world so we can benefit from your work! Simply submit a pull request with your layout and we'll include it in the official repository. Please use the following guidelines when putting together your pull request:
|
||||
|
||||
* Include a readme.md that states what your primary keyboard use is, how your layout differs from the default, and highlights anything you think makes your layout particularly great.
|
||||
* If your layout requires certain features (EG, RGB underlight or backlighting) ensure you have a Makefile and config.h that reflects that
|
||||
* If your layout requires special hardware to be added, please describe that in the readme.md
|
||||
|
||||
TODO: Write up or link quick how-to on creating and submitting a PR. (Pull requests accepted. :)
|
||||
|
|
|
|||
|
|
@ -36,4 +36,4 @@
|
|||
#define RGBLIGHT_SAT_STEP 17
|
||||
#define RGBLIGHT_VAL_STEP 17
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,63 +0,0 @@
|
|||
#include "clueboard2.h"
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
matrix_init_user();
|
||||
led_init_ports();
|
||||
|
||||
// JTAG disable for PORT F. write JTD bit twice within four cycles.
|
||||
MCUCR |= (1<<JTD);
|
||||
MCUCR |= (1<<JTD);
|
||||
};
|
||||
|
||||
void led_init_ports() {
|
||||
// * Set our LED pins as output
|
||||
DDRB |= (1<<4);
|
||||
}
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
|
||||
// Turn capslock on
|
||||
PORTB |= (1<<4);
|
||||
} else {
|
||||
// Turn capslock off
|
||||
PORTB &= ~(1<<4);
|
||||
}
|
||||
}
|
||||
|
||||
/* Clueboard 2.0 LED locations:
|
||||
*
|
||||
* Capslock: B4, pull high to turn on
|
||||
* LCtrl: Shared with Capslock, DO NOT INSTALL LED'S IN BOTH
|
||||
* Page Up: B7, pull high to turn on
|
||||
* Escape: D6, pull high to turn on
|
||||
* Arrows: D4, pull high to turn on
|
||||
*/
|
||||
|
||||
void backlight_init_ports(void) {
|
||||
print("init_backlight_pin()\n");
|
||||
// Set our LED pins as output
|
||||
DDRD |= (1<<6); // Esc
|
||||
DDRB |= (1<<7); // Page Up
|
||||
DDRD |= (1<<4); // Arrows
|
||||
|
||||
// Set our LED pins low
|
||||
PORTD &= ~(1<<6); // Esc
|
||||
PORTB &= ~(1<<7); // Page Up
|
||||
PORTD &= ~(1<<4); // Arrows
|
||||
}
|
||||
|
||||
void backlight_set(uint8_t level) {
|
||||
if ( level == 0 ) {
|
||||
// Turn off light
|
||||
PORTD |= (1<<6); // Esc
|
||||
PORTB |= (1<<7); // Page Up
|
||||
PORTD |= (1<<4); // Arrows
|
||||
} else {
|
||||
// Turn on light
|
||||
PORTD &= ~(1<<6); // Esc
|
||||
PORTB &= ~(1<<7); // Page Up
|
||||
PORTD &= ~(1<<4); // Arrows
|
||||
}
|
||||
}
|
||||
76
keyboards/cluecard/Makefile
Normal file
76
keyboards/cluecard/Makefile
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
|
||||
|
||||
# MCU name
|
||||
#MCU = at90usb1287
|
||||
MCU = atmega32u4
|
||||
|
||||
# Processor frequency.
|
||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||
# automatically to create a 32-bit value in your source code.
|
||||
#
|
||||
# This will be an integer division of F_USB below, as it is sourced by
|
||||
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||
# does not *change* the processor frequency - it should merely be updated to
|
||||
# reflect the processor speed set externally so that the code can use accurate
|
||||
# software delays.
|
||||
F_CPU = 16000000
|
||||
|
||||
|
||||
#
|
||||
# LUFA specific
|
||||
#
|
||||
# Target architecture (see library "Board Types" documentation).
|
||||
ARCH = AVR8
|
||||
|
||||
# Input clock frequency.
|
||||
# This will define a symbol, F_USB, in all source code files equal to the
|
||||
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||
# at the end, this will be done automatically to create a 32-bit value in your
|
||||
# source code.
|
||||
#
|
||||
# If no clock division is performed on the input clock inside the AVR (via the
|
||||
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||
F_USB = $(F_CPU)
|
||||
|
||||
# Interrupt driven control endpoint task(+60)
|
||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||
|
||||
|
||||
# Boot Section Size in *bytes*
|
||||
# Teensy halfKay 512
|
||||
# Teensy++ halfKay 1024
|
||||
# Atmel DFU loader 4096
|
||||
# LUFA bootloader 4096
|
||||
# USBaspLoader 2048
|
||||
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||
|
||||
|
||||
# Build Options
|
||||
# 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
|
||||
RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality (+4870)
|
||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality by default
|
||||
MIDI_ENABLE ?= no # MIDI controls
|
||||
UNICODE_ENABLE ?= no # Unicode
|
||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE ?= yes # Audio output on port C6
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../Makefile
|
||||
endif
|
||||
|
||||
|
||||
98
keyboards/cluecard/cluecard.c
Normal file
98
keyboards/cluecard/cluecard.c
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
#include "cluecard.h"
|
||||
#define BL_RED OCR1B
|
||||
#define BL_GREEN OCR1A
|
||||
#define BL_BLUE OCR1C
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
void backlight_init_ports(void)
|
||||
{
|
||||
// Set B5, B6, and B7 as output
|
||||
DDRB |= (1<<7)|(1<<6)|(1<<5);
|
||||
|
||||
// Setup PWM
|
||||
ICR1 = 0xFFFF;
|
||||
TCCR1A = 0b10101010;
|
||||
TCCR1B = 0b00011001;
|
||||
|
||||
BL_RED = 0xFFFF;
|
||||
BL_GREEN = 0xFFFF;
|
||||
BL_BLUE = 0xFFFF;
|
||||
}
|
||||
|
||||
void backlight_set(uint8_t level)
|
||||
{
|
||||
// Set the RGB color
|
||||
switch (level)
|
||||
{
|
||||
case 0:
|
||||
// Off
|
||||
BL_RED = 0xFFFF;
|
||||
BL_GREEN = 0xFFFF;
|
||||
BL_BLUE = 0xFFFF;
|
||||
break;
|
||||
case 1:
|
||||
// Red
|
||||
BL_RED = 0x0000;
|
||||
BL_GREEN = 0xFFFF;
|
||||
BL_BLUE = 0xFFFF;
|
||||
break;
|
||||
case 2:
|
||||
// Green
|
||||
BL_RED = 0xFFFF;
|
||||
BL_GREEN = 0x0000;
|
||||
BL_BLUE = 0xFFFF;
|
||||
break;
|
||||
case 3:
|
||||
// Blue
|
||||
BL_RED = 0xFFFF;
|
||||
BL_GREEN = 0xFFFF;
|
||||
BL_BLUE = 0x0000;
|
||||
break;
|
||||
case 4:
|
||||
// Magenta
|
||||
BL_RED = 0x4000;
|
||||
BL_GREEN = 0x4000;
|
||||
BL_BLUE = 0x4000;
|
||||
break;
|
||||
case 5:
|
||||
// Purple
|
||||
BL_RED = 0x0000;
|
||||
BL_GREEN = 0xFFFF;
|
||||
BL_BLUE = 0x0000;
|
||||
break;
|
||||
case 6:
|
||||
// Yellow
|
||||
BL_RED = 0x0000;
|
||||
BL_GREEN = 0x0000;
|
||||
BL_BLUE = 0xFFFF;
|
||||
break;
|
||||
default:
|
||||
xprintf("Unknown level: %d\n", level);
|
||||
}
|
||||
}
|
||||
22
keyboards/cluecard/cluecard.h
Normal file
22
keyboards/cluecard/cluecard.h
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef CLUECARD_H
|
||||
#define CLUECARD_H
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
// 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, \
|
||||
k10, k12, \
|
||||
k20, k21, k22, \
|
||||
k11, \
|
||||
k30, k31, k32 \
|
||||
) { \
|
||||
{ k00, k01, k02, }, \
|
||||
{ k10, k11, k12, }, \
|
||||
{ k20, k21, k22, }, \
|
||||
{ k30, k31, k32, } \
|
||||
}
|
||||
|
||||
#endif
|
||||
167
keyboards/cluecard/config.h
Normal file
167
keyboards/cluecard/config.h
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
/*
|
||||
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 0xC1ED
|
||||
#define PRODUCT_ID 0x2330
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER Clueboard
|
||||
#define PRODUCT ATMEGA32U4 Firmware Dev Kit
|
||||
#define DESCRIPTION A small board to help you hack on QMK.
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 4
|
||||
#define MATRIX_COLS 3
|
||||
|
||||
/*
|
||||
* 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, F5, F4, B4 }
|
||||
#define MATRIX_COL_PINS { F1, F7, F6 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION ROW2COL
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCING_DELAY 20
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
#define BACKLIGHT_LEVELS 6
|
||||
|
||||
/* 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
|
||||
|
||||
/* Underlight configuration
|
||||
*/
|
||||
#define RGB_DI_PIN E6
|
||||
//#define RGBLIGHT_TIMER
|
||||
#define RGBLED_NUM 4 // Number of LEDs
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
#define RGBLIGHT_VAL_STEP 17
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
#endif
|
||||
21
keyboards/cluecard/keymaps/default/Makefile
Normal file
21
keyboards/cluecard/keymaps/default/Makefile
Normal file
|
|
@ -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 = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # 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 = yes # Enable WS2812 RGB underlight.
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
ifndef QUANTUM_DIR
|
||||
include ../../../../Makefile
|
||||
endif
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue