Compare commits

...
74 Commits
Author SHA1 Message Date
Markus Kohler 718fddf44c Fix broken link 2017-08-24 07:59:22 -04:00
Jack Humbert d2ff66a985 Creates a layouts/ folder for keymaps shared between keyboards (#1609)
* include variables and .h files as pp directives

* start layout compilation

* split ergodoxes up

* don't compile all layouts for everything

* might seg fault

* reset layouts variable

* actually reset layouts

* include rules.mk instead

* remove includes from rules.mk

* update variable setting

* load visualizer from path

* adds some more examples

* adds more layouts

* more boards added

* more boards added

* adds documentation for layouts

* use lowercase names for LAYOUT_

* add layout.json files for each layout

* add community folder, default keymaps for layouts

* touch-up default layouts

* touch-up layouts, some keyboard rules.mk

* update documentation for layouts

* fix up serial/i2c switches
2017-08-23 22:29:07 -04:00
Jack Humbert 7260fc3eef update 9key readme 2017-08-23 15:46:02 -04:00
Jack Humbert 437c86c9c1 update build script 2017-08-23 15:44:25 -04:00
Steve Holt d54360b1d8 Update keymap.c 2017-08-22 23:53:41 -04:00
Steve Holt fe4549839e Update config.h 2017-08-22 23:53:41 -04:00
Steve Holt 1d930ebe45 Update Makefile 2017-08-22 23:53:41 -04:00
Jonathan Boyett fcb60b1601 fix link brackets 2017-08-22 23:33:38 -04:00
Cory Shaw 3aa7fbcd79 fix(9key): Fix layout of 9key readme 2017-08-22 23:09:12 -04:00
Cory Shaw 82f434a4d4 update(9key): Add readme with updated format 2017-08-22 23:09:12 -04:00
Cory Shaw d8fd33dd5e Add support for 9key by Bishop Keyboards 2017-08-22 23:09:12 -04:00
Jonathan Boyett bd484f18bd JD40 MiniVan port 2017-08-22 23:07:52 -04:00
Ryan MacLean 9f6362e4df Adding Makefile
Required for JIS layouts
2017-08-22 17:59:38 -04:00
Ryan MacLean 57c93c13cc Creating Mac Version of JIS Keymap
Swapping command and alt, restoring fn+left for delete, subbing in grave for hhkb key.
2017-08-22 17:59:38 -04:00
Jack Humbert e719f5b0b5 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-08-22 10:08:44 -04:00
Jack Humbert 9da308a0cd move to compiled [skip ci] 2017-08-22 10:07:32 -04:00
keisuke333 47cd5b5622 Fix avoid certificate errors that occur during '2-setup-environment-win.bat' 2017-08-22 09:09:51 -04:00
Jack Humbert 0e39f1faf4 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-08-22 08:57:13 -04:00
Jack Humbert dd8cedc361 update travis script 2017-08-22 08:56:39 -04:00
Jack Humbert 51a2ce6145 convert to unix line-endings [skip ci] 2017-08-22 08:56:22 -04:00
Jack Humbert 11d27cec1e attempt to fix line-ending travis stuff 2017-08-21 23:39:06 -04:00
jpetermans 7a445d9167 Add back original copyrights 2017-08-21 23:22:36 -04:00
jpetermans ff32643641 Readme correction #2 2017-08-21 23:22:36 -04:00
jpetermans dbd4ce19e9 Correct jpetermans keymap readme and update copyright info 2017-08-21 23:22:36 -04:00
Jack Humbert 9ff064ae50 triggering travis 2017-08-21 23:11:08 -04:00
Jack Humbert c3c07eff51 update building for .hex, secrets moving 2017-08-21 21:57:46 -04:00
Daniel Shields 69c4cfb238 Fix gherkin README to use correct build command. 2017-08-21 17:04:31 -04:00
Mark Spanbroek 36709d6a30 Use cmd-left and cmd-right instead of ctrl-a and ctrl-e for home and end
The ctrl commands only seem to work well in terminal, not in other apps.
2017-08-21 17:01:27 -04:00
Mark Spanbroek 1ab9e5d1c9 Remove COMPACT_KEYMAP, use full KC_ keycodes instead. 2017-08-21 17:01:27 -04:00
Mark Spanbroek f4b3b576a0 Revert "Add COMPACT_KEYMAP macro to Satan GH60"
9a1826598a1a06d87459c5bbef9db9be277bdae9
2017-08-21 17:01:27 -04:00
Mark Spanbroek dc1d24a4fe Add screen lock key 2017-08-21 17:01:27 -04:00
Mark Spanbroek 0be483c762 Fix power; use keyboard shortcut for Mac 2017-08-21 17:01:27 -04:00
Mark Spanbroek cb719757c2 Reverse the split shift/fn
Turns out that 3c and 3d are not reversed when splitting the right
shift in the way that the Mark I layout does. Reversing it here, rather
than in the generic satan.h to avoid breaking the other layouts.
2017-08-21 17:01:27 -04:00
Mark Spanbroek d172d6bec6 Add Mark I layout 2017-08-21 17:01:27 -04:00
Mark Spanbroek 90b07a5be4 Add COMPACT_KEYMAP macro to Satan GH60 2017-08-21 17:01:27 -04:00
Mark Spanbroek af21fa63e5 Fix: add missing keys to Satan GH60 KEYMAP macro 2017-08-21 17:01:27 -04:00
Stephen Tudor dde035b963 Add smt keymap for Sentraq S65-X 2017-08-21 16:59:52 -04:00
Jack Humbert e7b3991b97 fix readmes 2017-08-21 16:51:16 -04:00
Jack Humbert 1ce3971c90 adds sweet16 and four banger keyboards 2017-08-21 16:51:16 -04:00
Ben James 48e79cbe29 Create readme.md 2017-08-20 20:57:22 -04:00
Ben James 68dafc8382 Create Makefile 2017-08-20 20:57:22 -04:00
Ben James e0d9cc945f Create config.h 2017-08-20 20:57:22 -04:00
Ben James 7aa839915e Create keymap.c 2017-08-20 20:57:22 -04:00
Jack Humbert 78dc7bacfa travis files in gitignore for good measure 2017-08-20 15:20:32 -04:00
Jack Humbert fa6bcfd10c make travis convert line-endings and push a skippable commit 2017-08-20 14:22:18 -04:00
Jack Humbert 1254e76e29 stop compiling ez after build, rework ssh ids 2017-08-20 14:04:35 -04:00
Jack Humbert 166706a32c adds subatomic files (non-working) 2017-08-20 13:52:28 -04:00
Joe Wasson 948d6efcfb Fix stray keystroke in readme file. 2017-08-20 13:28:39 -04:00
Joe Wasson fe60cbd928 Remove PLAY_NOTE_ARRAY usages to get rid of warning. 2017-08-20 12:32:20 -04:00
Jack Humbert f94963e6b7 Merge pull request #1608 from hot-leaf-juice/master
keymap update
2017-08-20 11:52:57 -04:00
Joe Wasson 4b74c9056b Fix Planck Steno layout with new error message (remove MIDI). 2017-08-20 11:51:57 -04:00
Joe Wasson e74a95bf26 Keymap tweaks. 2017-08-20 11:51:57 -04:00
Joe Wasson bae1144a9f Fix compilation error when NO_ACTION_LAYER is defined. 2017-08-20 11:51:57 -04:00
Joe Wasson eb5748e8bf Gherkin keymaps for Steno and Talljoe 2017-08-20 11:51:57 -04:00
Joe Wasson bdc0880ca5 Add compile error if too many endpoints are defined for the ATmega32U4. 2017-08-20 11:51:57 -04:00
Joe Wasson fc70c9ac9e Allow steno to build when NKRO is not defined.
Was missing eeprom.h, MAX(), and memset.
2017-08-20 11:51:57 -04:00
That-Canadian 937b86d030 Added default ECO keymap 2017-08-20 11:47:46 -04:00
That-Canadian cc9b0eb109 Line ending stuff again 2017-08-20 11:47:46 -04:00
Daniel Khodabakhsh 046595f521 Update s60_x/default/rule.mk for original Sentraq S60-X
Fix and issue with the original Sentraq S60-X not being compatible with 'default'. If 'default' shouldn't be changed, perhaps I can create an 'original' revision.
2017-08-20 11:45:18 -04:00
ThreeFx 8341068299 Correct if-statement 2017-08-20 11:17:19 -04:00
ThreeFx a553dcba5a Added gentoo support for dependency script 2017-08-20 11:17:19 -04:00
Jack Humbert 5cab5e4a4e validates json 2017-08-19 08:35:14 -04:00
Jack Humbert d8145c8464 adds redirects for docs 2017-08-19 08:31:54 -04:00
Jack Humbert 81d7e7d4c8 Merge pull request #1601 from dlaroe/master
My keymaps only
2017-08-19 08:19:50 -04:00
Balz Guenat 30ac7d403e remove dead links, add troubleshooting section 2017-08-19 08:19:16 -04:00
Balz Guenat 6ea408da10 Update USB-USB converter README according to #1588 2017-08-19 08:19:16 -04:00
Ryan MacLean 1132646b2f Update readme.md 2017-08-19 08:18:27 -04:00
Ryan MacLean 9eb71e9719 Update readme.md 2017-08-19 08:18:27 -04:00
Ryan MacLean 9ea56f03a1 Fixing readme clobber 2017-08-19 08:18:27 -04:00
Callum Oakley a6845036e2 Merge branch 'master' of https://github.com/qmk/qmk_firmware 2017-08-19 10:34:45 +01:00
4c4a174dbe Added Preonic Makefile and readme.md 2017-08-18 17:45:32 -04:00
8b62a0af74 Updated keymaps with second LOWER for the right hand 2017-08-18 17:29:19 -04:00
07dcbd23fd First Update 2017-07-24 15:19:31 -04:00
Callum Oakley 84a8aabe5b MORE layer 2017-07-04 18:16:45 +01:00
591 changed files with 5053 additions and 2199 deletions

No files matched your search

+5 -1
View File
@@ -44,4 +44,8 @@ util/Win_Check_Output.txt
*.gif *.gif
# Do not ignore MiniDox left/right hand eeprom files # Do not ignore MiniDox left/right hand eeprom files
!keyboards/minidox/*.eep !keyboards/minidox/*.eep
# things travis sees
secrets.tar
id_rsa_*
+1
View File
@@ -29,6 +29,7 @@ addons:
- binutils-arm-none-eabi - binutils-arm-none-eabi
- libnewlib-arm-none-eabi - libnewlib-arm-none-eabi
- diffutils - diffutils
- dos2unix
after_success: after_success:
bash util/travis_compiled_push.sh bash util/travis_compiled_push.sh
notifications: notifications:
+10
View File
@@ -314,11 +314,21 @@ define PARSE_SUBPROJECT
ifneq ($$(CURRENT_SP),allsp) ifneq ($$(CURRENT_SP),allsp)
# get a list of all keymaps # get a list of all keymaps
KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.))) KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.)))
LAYOUTS :=
$$(eval -include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/rules.mk)
KEYBOARD_LAYOUTS := $$(LAYOUTS)
ifneq ($$(CURRENT_SP),) ifneq ($$(CURRENT_SP),)
# if the subproject is defined, then also look for keymaps inside the subproject folder # if the subproject is defined, then also look for keymaps inside the subproject folder
SP_KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/keymaps/*/.))) SP_KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/keymaps/*/.)))
KEYMAPS := $$(sort $$(KEYMAPS) $$(SP_KEYMAPS)) KEYMAPS := $$(sort $$(KEYMAPS) $$(SP_KEYMAPS))
# $$(eval -include $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/$$(CURRENT_SP)/rules.mk)
# KEYBOARD_LAYOUTS := $$(sort $$(KEYBOARD_LAYOUTS) $$(LAYOUTS))
endif endif
LAYOUT_KEYMAPS :=
$$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))
KEYMAPS := $$(sort $$(KEYMAPS) $$(LAYOUT_KEYMAPS))
# if the rule after removing the start of it is empty (we haven't specified a kemap or target) # if the rule after removing the start of it is empty (we haven't specified a kemap or target)
# compile all the keymaps # compile all the keymaps
ifeq ($$(RULE),) ifeq ($$(RULE),)
+6 -1
View File
@@ -8,7 +8,8 @@
"hints", "hints",
"page-toc", "page-toc",
"terminal", "terminal",
"toolbar" "toolbar",
"bulk-redirect"
], ],
"pluginsConfig": { "pluginsConfig": {
"edit-link": { "edit-link": {
@@ -35,6 +36,10 @@
"url": "https://github.com/qmk/qmk_firmware" "url": "https://github.com/qmk/qmk_firmware"
} }
] ]
},
"bulk-redirect": {
"basepath": "/",
"redirectsFile": "docs/redirects.json"
} }
}, },
"root": "./docs/" "root": "./docs/"
+9 -3
View File
@@ -39,6 +39,7 @@ ifneq ("$(wildcard $(KEYBOARD_C))","")
else else
$(error "$(KEYBOARD_C)" does not exist) $(error "$(KEYBOARD_C)" does not exist)
endif endif
OPT_DEFS += -DKEYBOARD_$(KEYBOARD)
ifneq ($(SUBPROJECT),) ifneq ($(SUBPROJECT),)
SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT) SUBPROJECT_PATH := keyboards/$(KEYBOARD)/$(SUBPROJECT)
@@ -97,11 +98,13 @@ else ifneq ("$(wildcard $(MAIN_KEYMAP_C))","")
-include $(MAIN_KEYMAP_PATH)/Makefile -include $(MAIN_KEYMAP_PATH)/Makefile
KEYMAP_C := $(MAIN_KEYMAP_C) KEYMAP_C := $(MAIN_KEYMAP_C)
KEYMAP_PATH := $(MAIN_KEYMAP_PATH) KEYMAP_PATH := $(MAIN_KEYMAP_PATH)
else ifneq ($(LAYOUTS),)
include build_layout.mk
else else
$(error "$(MAIN_KEYMAP_C)/keymap.c" does not exist) $(error Could not find keymap)
# this state should never be reached
endif endif
# Object files directory # Object files directory
# To put object files in current directory, use a dot (.), do NOT make # To put object files in current directory, use a dot (.), do NOT make
# this an empty or blank macro! # this an empty or blank macro!
@@ -157,7 +160,10 @@ endif
OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT) OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC) $(KEYMAP_OUTPUT)_SRC := $(SRC)
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYMAP=\"$(KEYMAP)\" $(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) $(GFXDEFS) \
-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(KEYBOARD).h\" -DQMK_KEYBOARD_CONFIG_H=\"$(KEYBOARD_PATH)/config.h\" \
-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
-DQMK_SUBPROJECT=\"$(SUBPROJECT)\" -DQMK_SUBPROJECT_H=\"$(SUBPROJECT).h\" -DQMK_SUBPROJECT_CONFIG_H=\"$(SUBPROJECT_PATH)/config.h\"
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H) $(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
$(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC) $(KEYBOARD_OUTPUT)_SRC := $(CHIBISRC) $(GFXSRC)
+18
View File
@@ -0,0 +1,18 @@
LAYOUTS_PATH := layouts
LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/))))
define SEARCH_LAYOUTS_REPO
LAYOUT_KEYMAP_PATH := $$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP)
LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c
ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","")
-include $$(LAYOUT_KEYMAP_PATH)/rules.mk
KEYMAP_C := $$(LAYOUT_KEYMAP_C)
KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
endif
endef
define SEARCH_LAYOUTS
$$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO)))
endef
$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))
+1
View File
@@ -12,6 +12,7 @@
* [Keymap](faq_keymap.md) * [Keymap](faq_keymap.md)
* [Features](features.md) * [Features](features.md)
* [Layouts](feature_layouts.md)
* [Common Shortcuts](feature_common_shortcuts.md) * [Common Shortcuts](feature_common_shortcuts.md)
* [Backlight](feature_backlight.md) * [Backlight](feature_backlight.md)
* [Bootmagic](feature_bootmagic.md) * [Bootmagic](feature_bootmagic.md)
+77
View File
@@ -0,0 +1,77 @@
# Layouts: Using a keymap with multiple keyboards
The `layouts/` folder contains different physical key layouts that can apply to different keyboards.
```
layouts/
+ default/
| + 60_ansi/
| | + readme.md
| | + layout.json
| | + a_good_keymap/
| | | + keymap.c
| | | + readme.md
| | | + config.h
| | | + rules.mk
| | + <keymap folder>/
| | + ...
| + <layout folder>/
+ community/
| + <layout folder>/
| + ...
```
The `layouts/default/` and `layouts/community/` are two examples of layout "repositories" - currently `default` will contain all of the information concerning the layout, and one default keymap named `default_<layout>`, for users to use as a reference. `community` contains all of the community keymaps, with the eventual goal of being split-off into a separate repo for users to clone into `layouts/`. QMK searches through all folders in `layouts/`, so it's possible to have multiple reposistories here.
Each layout folder is named (`[a-z0-9_]`) after the physical aspects of the layout, in the most generic way possible, and contains a `readme.md` with the layout to be defined by the keyboard:
```md
# 60_ansi
LAYOUT_60_ansi
```
New names should try to stick to the standards set by existing layouts, and can be discussed in the PR/Issue.
## Supporting a layout
For a keyboard to support a layout, the variable (`[a-z0-9_]`) must be defined in it's `<keyboard>.h`, and match the number of arguments/keys (and preferrably the physical layout):
#define LAYOUT_60_ansi KEYMAP_ANSI
The folder name must be added to the keyboard's `rules.mk`:
LAYOUTS = 60_ansi
`LAYOUTS` can be appended in the subproject's `rules.mk`:
LAYOUTS += 60_iso
but the `LAYOUT_<layout>` variable must be defined in `<subproject>.h` as well.
## Tips for making layouts keyboard-agnostic
Instead of using `#include "planck.h"`, you can use this line to include whatever `<keyboard>.h` (`<subproject>.h` should not be included here) file that is being compiled:
#include QMK_KEYBOARD_H
In your config.h, you can also use this variable to include the keyboard's `config.h`:
#include QMK_KEYBOARD_CONFIG_H
If you want to keep some keyboard-specific code, you can use these variables to escape it with an `#ifdef` statement:
* `KEYBOARD_<keyboard>`
* `SUBPROJECT_<subproject>`
For example:
```c
#ifdef KEYBOARD_planck
#ifdef SUBPROJECT_rev4
planck_rev4_function();
#endif
#endif
```
Note that the names are lowercase and match the folder/file names for the keyboard/subproject exactly.
+12
View File
@@ -0,0 +1,12 @@
{
"redirects": [
{
"from": "build_environment_setup.html",
"to": "getting_started_build_tools.html"
},
{
"from": "make_instructions.html",
"to": "getting_started_make_guide.html"
}
]
}
+1 -1
View File
@@ -30,7 +30,7 @@ GeminiPR encodes 42 keys into a 6-byte packet. While TX Bolt contains everything
## Configuring QMK for Steno ## Configuring QMK for Steno
Firstly, enable steno in your keymap's Makefile. You should also diable mousekeys to prevent conflicts. Firstly, enable steno in your keymap's Makefile. You may also need disable mousekeys, extra keys, or another USB endpoint to prevent conflicts. The builtin USB stack for some processors only supports a certain number of USB endpoints and the virtual serial port needed for steno fills 3 of them.
```Makefile ```Makefile
STENO_ENABLE = yes STENO_ENABLE = yes
+5
View File
@@ -0,0 +1,5 @@
#include "9key.h"
void matrix_init_kb(void) {
matrix_init_user();
}
+17
View File
@@ -0,0 +1,17 @@
#ifndef NINEKEY_H
#define NINEKEY_H
#include "quantum.h"
#define KEYMAP( \
k00, k01, k02, \
k10, k11, k12, \
k20, k21, k22 \
) \
{ \
{ k00, k01, k02 }, \
{ k10, k11, k12 }, \
{ k20, k21, k22 } \
}
#endif
@@ -1,5 +1,3 @@
SUBPROJECT_DEFAULT = ez
ifndef MAKEFILE_INCLUDED ifndef MAKEFILE_INCLUDED
include ../../Makefile include ../../Makefile
endif endif
+52
View File
@@ -0,0 +1,52 @@
/*
Copyright 2012 Jun Wako <[email protected]>
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 0x0007
#define DEVICE_VER 0x0001
#define MANUFACTURER Bishop Keyboards
#define PRODUCT 9Key
#define DESCRIPTION Bishop Keyboards 9Key // Charleston, SC Meetup Handout
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
/* 9Key PCB default pin-out */
#define MATRIX_ROW_PINS { D1, D0, D4 }
#define MATRIX_COL_PINS { F4, F5, F6 }
#define UNUSED_PINS
/* ws2812 RGB LED */
#define RGB_DI_PIN F7
#define RGBLIGHT_TIMER
#define RGBLED_NUM 1 // Number of LEDs
#define ws2812_PORTREG PORTD
#define ws2812_DDRREG DDRD
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define TAPPING_TERM 150
#endif
+47
View File
@@ -0,0 +1,47 @@
#include "9key.h"
// Tap Dance Declarations
enum {
ENT_5 = 0
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* LAYER 0
* ,-----------------.
* | 1 | 2 | 3 |
* |-----+-----+-----|
* | 4 |5/ENT| 6 | Dbl Tap 5 for Enter
* |-----+-----+-----|
* | 7 | 8 | FN |
* `-----------------'
*/
[0] = KEYMAP( \
KC_1, KC_2, KC_3, \
KC_4, TD(ENT_5), KC_6, \
KC_7, KC_8, MO(1) \
),
/* LAYER 1
* ,-----------------.
* | 9 | 0 | - |
* |-----+-----+-----|
* | + | * | / |
* |-----+-----+-----|
* | F1 | F2 | |
* `-----------------'
*/
[1] = KEYMAP( \
KC_9, KC_0, KC_MINS, \
KC_PLUS, KC_ASTR, KC_SLSH, \
KC_F1, KC_F2, KC_TRNS \
)
};
qk_tap_dance_action_t tap_dance_actions[] = {
[ENT_5] = ACTION_TAP_DANCE_DOUBLE(KC_5, KC_ENT)
};
void matrix_init_user(void) {
}
+17
View File
@@ -0,0 +1,17 @@
9key
===
![9key](http://i.imgur.com/a3wWc7h.jpg)
![9KeyBehind](http://i.imgur.com/2PWf5wu.jpg)
A compact minipad (3x3) keyboard made and sold by Bishop Keyboards.
Keyboard Maintainer: QMK Community
Hardware Supported: 9key PCB, Pro Micro ATmega32U4
Hardware Availability: [BishopKeyboards.com](https://www.reddit.com/user/se7en9057) (BishopKeyboards.com under renovation)
Make example for this keyboard (after setting up your build environment):
make 9key-default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
+69
View File
@@ -0,0 +1,69 @@
# 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 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 = no # Audio output on port C6
UNICODE_ENABLE = yes # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
API_SYSEX_ENABLE = yes
TAP_DANCE_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+18
View File
@@ -20,12 +20,30 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h" #include "quantum.h"
/* Alps64 keymap definition macro */ /* Alps64 keymap definition macro */
#define KEYMAP( \ #define KEYMAP( \
K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \ K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \
K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \ K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \ K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, K22, \ K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, K22, \
K30, K40, K50, K60, K70, K00, K10, K20 \ K30, K40, K50, K60, K70, K00, K10, K20 \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07 }, \
{ K10, K11, K12, K13, K14, K15, K16, K17 }, \
{ K20, K21, K22, K23, K24, K25, K26, K27 }, \
{ K30, K31, K32, K33, K34, K35, K36, K37 }, \
{ K40, K41, K42, K43, K44, K45, K46, K47 }, \
{ K50, K51, K52, K53, K54, K55, K56, K57 }, \
{ K60, K61, K62, K63, K64, K65, K66, K67 }, \
{ K70, K71, K72, K73, K74, K75, K76, K77 } \
}
#define KC_KEYMAP( \
K36, K37, K46, K47, K56, K57, K66, K67, K76, K77, K06, K07, K17, K26, K27, \
K34, K35, K44, K45, K54, K55, K64, K65, K75, K05, K15, K16, K25, K24, \
K32, K33, K43, K52, K53, K63, K73, K74, K03, K04, K13, K14, K23, \
K31, K41, K42, K51, K61, K62, K71, K72, K01, K02, K11, K12, K21, K22, \
K30, K40, K50, K60, K70, K00, K10, K20 \
) { \ ) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
+1 -1
View File
@@ -2,7 +2,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 0: qwerty */ /* 0: qwerty */
KEYMAP( \ KC_KEYMAP( \
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS, BSPC, \ GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS, BSPC, \
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \ CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \
+3 -3
View File
@@ -179,7 +179,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case QWERTY: case QWERTY:
if (record->event.pressed) { if (record->event.pressed) {
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_qwerty, false, 0); PLAY_SONG(tone_qwerty);
#endif #endif
persistent_default_layer_set(1UL<<_QWERTY); persistent_default_layer_set(1UL<<_QWERTY);
} }
@@ -188,7 +188,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case COLEMAK: case COLEMAK:
if (record->event.pressed) { if (record->event.pressed) {
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_colemak, false, 0); PLAY_SONG(tone_colemak);
#endif #endif
persistent_default_layer_set(1UL<<_COLEMAK); persistent_default_layer_set(1UL<<_COLEMAK);
} }
@@ -197,7 +197,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case DVORAK: case DVORAK:
if (record->event.pressed) { if (record->event.pressed) {
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_dvorak, false, 0); PLAY_SONG(tone_dvorak);
#endif #endif
persistent_default_layer_set(1UL<<_DVORAK); persistent_default_layer_set(1UL<<_DVORAK);
} }
+3
View File
@@ -63,6 +63,8 @@
{k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \
} }
#define LAYOUT_60_ansi KEYMAP_ANSI
/* AMJ60 HHKB matrix layout /* AMJ60 HHKB matrix layout
* ,------------------------------------------------------------. * ,------------------------------------------------------------.
* | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49 | * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49 |
@@ -119,6 +121,7 @@
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX}, \ {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX}, \
{k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \
} }
/* ISO w/ split right shift key matrix layout /* ISO w/ split right shift key matrix layout
* ,-----------------------------------------------------------. * ,-----------------------------------------------------------.
* | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d | * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d |
+3 -3
View File
@@ -3,9 +3,9 @@ AMJ60
A 60% keyboard. A 60% keyboard.
Keyboard Maintainer: QMK Community Keyboard Maintainer: QMK Community
Hardware Supported: AMJ60 Hardware Supported: AMJ60
Hardware Availability: https://geekhack.org/index.php?topic=77636.0 Hardware Availability: https://geekhack.org/index.php?topic=77636.0
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
+2
View File
@@ -64,3 +64,5 @@ MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no AUDIO_ENABLE = no
UNICODE_ENABLE = no # Unicode UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
LAYOUTS = 60_ansi
+3 -3
View File
@@ -3,9 +3,9 @@ AMJ Pad
A DIY Keypad Kit A DIY Keypad Kit
Keyboard Maintainer: QMK Community Keyboard Maintainer: QMK Community
Hardware Supported: AMJ Pad Hardware Supported: AMJ Pad
Hardware Availability: https://geekhack.org/index.php?topic=83546.0 Hardware Availability: https://geekhack.org/index.php?topic=83546.0
Make example for this keyboard (after setting up your build environment): Make example for this keyboard (after setting up your build environment):
+16
View File
@@ -24,4 +24,20 @@
{ K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \ { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \
} }
#define KEYMAP_GRID( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E,\
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E,\
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E,\
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E,\
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
{ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E } \
}
#define LAYOUT_ortho_5x15 KEYMAP_GRID
#endif #endif
+15 -15
View File
@@ -471,7 +471,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
else else
{ {
audio_on(); audio_on();
PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); PLAY_SONG(tone_audio_on);
} }
} }
break; break;
@@ -486,7 +486,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
} }
else else
{ {
PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); PLAY_SONG(tone_music_on);
layer_on(LAYER_MUSIC); layer_on(LAYER_MUSIC);
} }
} }
@@ -496,7 +496,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{ {
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
voice_iterate(); voice_iterate();
PLAY_NOTE_ARRAY(music_scale, false, STACCATO); PLAY_SONG(music_scale);
#endif #endif
} }
break; break;
@@ -506,7 +506,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{ {
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
voice_deiterate(); voice_deiterate();
PLAY_NOTE_ARRAY(music_scale, false, STACCATO); PLAY_SONG(music_scale);
#endif #endif
} }
break; break;
@@ -550,32 +550,32 @@ void led_set_user(uint8_t usb_led)
if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK))) if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK)))
{ {
// If CAPS LK LED is turning on... // If CAPS LK LED is turning on...
PLAY_NOTE_ARRAY(tone_caps_on, false, LEGATO); PLAY_SONG(tone_caps_on);
} }
else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK))) else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK)))
{ {
// If CAPS LK LED is turning off... // If CAPS LK LED is turning off...
PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO); PLAY_SONG(tone_caps_off);
} }
else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK))) else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK)))
{ {
// If NUM LK LED is turning on... // If NUM LK LED is turning on...
PLAY_NOTE_ARRAY(tone_numlk_on, false, LEGATO); PLAY_SONG(tone_numlk_on);
} }
else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK))) else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK)))
{ {
// If NUM LED is turning off... // If NUM LED is turning off...
PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO); PLAY_SONG(tone_numlk_off);
} }
else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK))) else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
{ {
// If SCROLL LK LED is turning on... // If SCROLL LK LED is turning on...
PLAY_NOTE_ARRAY(tone_scroll_on, false, LEGATO); PLAY_SONG(tone_scroll_on);
} }
else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK))) else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
{ {
// If SCROLL LED is turning off... // If SCROLL LED is turning off...
PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO); PLAY_SONG(tone_scroll_off);
} }
} }
@@ -586,29 +586,29 @@ void led_set_user(uint8_t usb_led)
void startup_user() void startup_user()
{ {
_delay_ms(10); // gets rid of tick _delay_ms(10); // gets rid of tick
PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO); PLAY_SONG(tone_my_startup);
} }
void shutdown_user() void shutdown_user()
{ {
PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); PLAY_SONG(tone_my_goodbye);
_delay_ms(2000); _delay_ms(2000);
stop_all_notes(); stop_all_notes();
} }
void audio_on_user(void) void audio_on_user(void)
{ {
PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO); PLAY_SONG(tone_audio_on);
} }
void music_on_user(void) void music_on_user(void)
{ {
PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO); PLAY_SONG(tone_music_on);
} }
void music_scale_user(void) void music_scale_user(void)
{ {
PLAY_NOTE_ARRAY(music_scale, false, STACCATO); PLAY_SONG(music_scale);
} }
#endif /* AUDIO_ENABLE */ #endif /* AUDIO_ENABLE */
+3 -1
View File
@@ -66,4 +66,6 @@ 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. 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 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
LAYOUTS = ortho_5x15
+2 -2
View File
@@ -78,5 +78,5 @@ UNICODE_ENABLE = YES # Unicode
USB = /dev/cu.usbmodem1411 USB = /dev/cu.usbmodem1411
upload: build # upload: build
$(ATREUS_UPLOAD_COMMAND) # $(ATREUS_UPLOAD_COMMAND)
@@ -35,7 +35,4 @@ ARMV = 6
# Build Options # Build Options
# comment out to disable the options. # comment out to disable the options.
# #
ifndef QUANTUM_DIR
include ../../../Makefile
endif
@@ -44,9 +44,4 @@ ARMV = 7
# http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf # http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf
# This also requires a patch to chibios: # This also requires a patch to chibios:
# <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch # <tmk_dir>/tmk_core/tool/chibios/ch-bootloader-jump.patch
#STM32_BOOTLOADER_ADDRESS = 0x1FFFC800 #STM32_BOOTLOADER_ADDRESS = 0x1FFFC800
ifndef QUANTUM_DIR
include ../../../Makefile
endif
@@ -42,8 +42,4 @@ MCU = cortex-m0plus
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
# I.e. 6 for Teensy LC; 7 for Teensy 3.x # I.e. 6 for Teensy LC; 7 for Teensy 3.x
ARMV = 6 ARMV = 6
ifndef QUANTUM_DIR
include ../../../Makefile
endif
+1 -5
View File
@@ -1,5 +1 @@
BACKLIGHT_ENABLE = no BACKLIGHT_ENABLE = no
ifndef QUANTUM_DIR
include ../../../Makefile
endif
+1 -5
View File
@@ -1,5 +1 @@
BACKLIGHT_ENABLE = yes BACKLIGHT_ENABLE = yes
ifndef QUANTUM_DIR
include ../../../Makefile
endif
+3 -3
View File
@@ -36,13 +36,13 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
if (record->event.pressed) { if (record->event.pressed) {
switch (id) { switch (id) {
case 0: case 0:
PLAY_NOTE_ARRAY(tone_startup, false, 0); PLAY_SONG(tone_startup);
break; break;
case 1: case 1:
PLAY_NOTE_ARRAY(music_scale, false, 0); PLAY_SONG(music_scale);
break; break;
case 2: case 2:
PLAY_NOTE_ARRAY(tone_goodbye, false, 0); PLAY_SONG(tone_goodbye);
break; break;
} }
} }
+47 -57
View File
@@ -1,80 +1,70 @@
USB to USB keyboard protocol converter USB to USB keyboard protocol converter
====================================== ======================================
Original code from Hasu's TMK firmware. Ported to QMK by Coloneljesus. A small device to connect between your USB keyboard and your PC that makes (almost) every keyboard fully programmable.
Original code from the [TMK firmware](https://github.com/tmk/tmk_keyboard/tree/master/converter/usb_usb). Ported to QMK by [Balz Guenat](https://github.com/BalzGuenat).
This port has been tested only on the Pro Micro variant described in the next section. Keyboard Maintainer: [Balz Guenat](https://github.com/BalzGuenat)
Hardware Supported: [Hasu's USB-USB converter](https://geekhack.org/index.php?topic=69169.0), [Pro Micro + USB Host Shield](https://geekhack.org/index.php?topic=80421.0), maybe more
Hardware Availability: [GH thread](https://geekhack.org/index.php?topic=72052.0), self-built
See for detail and discussion. Make example for this keyboard (after setting up your build environment):
make converter-usb_usb-default
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
Troubleshooting & Known Issues
------------------------------
The Pro Micro variant runs at 8MHz, hence the following line in `usb_usb/rules.mk`:
`F_CPU ?= 8000000`
If the firmware doesn't work, try changing that line to
`F_CPU ?= 16000000`
or override the `F_CPU` variable in the `rules.mk` of your keymap.
Getting the Hardware
--------------------
There are two options to get a converter: You can buy one from Hasu or build one yourself.
### Buy a Converter
You can buy a fully assembled converter from me here:
https://geekhack.org/index.php?topic=69169.0 https://geekhack.org/index.php?topic=69169.0
### Build one yourself using Arduino Leonardo + Circuit@Home USB Host Shield 2.0
Hardware requirement
--------------------
There are two options.
### TMK USB-USB Converter
You can buy a fully assembled converter from me here.
https://geekhack.org/index.php?topic=69169.0
### Arduino Leonardo + Circuit@Home USB Host Shield 2.0
Buying Arduino Leonardo and USB Host Shield 2.0(from Circuit@home) will be better, you won't need even soldering iron. Buying Arduino Leonardo and USB Host Shield 2.0(from Circuit@home) will be better, you won't need even soldering iron.
http://arduino.cc/en/Main/ArduinoBoardLeonardo
http://arduino.cc/en/Main/ArduinoBoardLeonardo https://www.circuitsathome.com/arduino_usb_host_shield_projects/
https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino-assembled/
Other compatible boards like Arduino's Shield will also work well but I think Sparkfun's needs to be modified. Other compatible boards like Arduino's Shield will also work well but I think Sparkfun's needs to be modified.
http://arduino.cc/en/Main/ArduinoUSBHostShield
http://arduino.cc/en/Main/ArduinoUSBHostShield https://www.sparkfun.com/products/9947
https://www.sparkfun.com/products/9947
Also Pro Micro 3.3V(not Mini) or Teensy with mini host shield will work with some fixes on signal/power routing. Also Pro Micro 3.3V(not Mini) or Teensy with mini host shield will work with some fixes on signal/power routing.
[Build guide](https://geekhack.org/index.php?topic=80421.0)
https://www.circuitsathome.com/arduino_usb_host_shield_projects/
https://www.sparkfun.com/products/12587
https://www.pjrc.com/teensy/td_libs_USBHostShield.html
https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-for-arduino-pro-mini Limitations
https://www.sparkfun.com/products/12587
https://www.pjrc.com/teensy/td_libs_USBHostShield.html
Build firmware
--------------
Follow normal QMK build instructions to get a binary file. Flashing depends on you hardware.
Limitation
---------- ----------
Only supports 'HID Boot protocol'. Only supports 'HID Boot protocol'.
Note that the converter can host only USB "boot protocol" keyboard(6KRO), not NKRO, it is possible to support NKRO keyboard but you will need to write HID report parser for that. Every NKRO keyboard can have different HID report and it is difficult to support all kind of NKRO keyboards in the market. Note that the converter can host only USB "boot protocol" keyboard(6KRO), not NKRO, it is possible to support NKRO keyboard but you will need to write HID report parser for that. Every NKRO keyboard can have different HID report and it is difficult to support all kind of NKRO keyboards in the market.
Resources
Keymap editor
-------------
You can editor keymap and download firmware with web brwoser.
- http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?usb_usb
Update
------
2014/12/11 Added Hub support(confirmed with HHKB pro2)
2016/09/10 Unimap editor support
2016/10/18 Fix LED state at startup
2017/08/16 Port to QMK
Resource
-------- --------
USB Host Sheild 2.0 Hasu's main thread for the converter
https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino https://geekhack.org/index.php?topic=69169.0
https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-for-arduino-pro-mini Build guide for the Pro Micro variant
USB Host Sheild 2.0 source https://geekhack.org/index.php?topic=80421.0
Original TMK version of the converter
https://github.com/tmk/tmk_keyboard/tree/master/converter/usb_usb
USB Host Shield 2.0
https://www.circuitsathome.com/arduino_usb_host_shield_projects/
USB Host Shield 2.0 source
https://github.com/felis/USB_Host_Shield_2.0 https://github.com/felis/USB_Host_Shield_2.0
Arduino USB Host Shield(with bootst converter) Arduino USB Host Shield (with bootst converter)
http://arduino.cc/en/Main/ArduinoUSBHostShield http://arduino.cc/en/Main/ArduinoUSBHostShield
Arduino source Arduino source
https://github.com/arduino/Arduino/hardware/arduino/{cores,variants} https://github.com/arduino/Arduino
Initial release of TMK USB-USB converter Initial release of TMK USB-USB converter
https://geekhack.org/index.php?topic=33057.msg653549#msg653549 https://geekhack.org/index.php?topic=33057.msg653549#msg653549
http://deskthority.net/workshop-f7/is-remapping-a-usb-keyboard-using-teensy-possible-t2841-30.html#p74854 http://deskthority.net/workshop-f7/is-remapping-a-usb-keyboard-using-teensy-possible-t2841-30.html#p74854
+25
View File
@@ -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 = 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 = 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
+107
View File
@@ -0,0 +1,107 @@
// 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.
// Default ECO Layout
// KLE here : http://www.keyboard-layout-editor.com/#/gists/0733eca6b4cb88ff9d7de746803f4039
#include "eco.h"
#include "action_layer.h"
#include "eeconfig.h"
extern keymap_config_t keymap_config;
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
#define _QWERTY 0
#define _FN1 2
#define _FN2 3
enum eco_keycodes {
QWERTY = SAFE_RANGE
};
// Fillers to make layering more clear
#define _______ KC_TRNS
#define XXXXXXX KC_NO
// Defines for task manager and such
#define CALTDEL LCTL(LALT(KC_DEL))
#define TSKMGR LCTL(LSFT(KC_ESC))
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-------------------------------------------------------------------------------------------------.
* | Esc | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | Tab | A | S | D | F | G | H | J | K | L | ; | ' | Enter| \ |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | Shift| Z | X | C | V | B | N | M | , | . | / | Shift| Up | Del |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | Ctrl | GUI | Alt | Del | FN1 | FN1 | Space| Space| FN2 | FN2 | Ctrl | Left | Down | Right|
* `-------------------------------------------------------------------------------------------------'
*/
[_QWERTY] = KEYMAP(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_BSLS,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
KC_LCTL, KC_LGUI,KC_LALT, KC_DEL, MO(_FN1), MO(_FN1), KC_SPC, KC_SPC, MO(_FN2), MO(_FN2), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* FN1
* ,-------------------------------------------------------------------------------------------------.
* | | ! | @ | # | $ | % | ^ | & | * | ( | ) | _ | + | |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* |caltde| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | | | RESET|
* `-------------------------------------------------------------------------------------------------'
*/
[_FN1] = KEYMAP(
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS, KC_PLUS, _______,
CALTDEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
),
/* Raise
* ,-------------------------------------------------------------------------------------------------.
* | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* |Taskmg| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | | | |
* `-------------------------------------------------------------------------------------------------'
*/
[_FN2] = KEYMAP(
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______,
TSKMGR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
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) {
persistant_default_layer_set(1UL<<_QWERTY);
}
return false;
break;
}
return true;
}
+3
View File
@@ -0,0 +1,3 @@
# ECO Default Layout by u/That-Canadian
KLE here : http://www.keyboard-layout-editor.com/#/gists/0733eca6b4cb88ff9d7de746803f4039
+4 -4
View File
@@ -153,7 +153,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case QWERTY: case QWERTY:
if (record->event.pressed) { if (record->event.pressed) {
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_qwerty, false, 0); PLAY_SONG(tone_qwerty);
#endif #endif
persistant_default_layer_set(1UL<<_QWERTY); persistant_default_layer_set(1UL<<_QWERTY);
} }
@@ -194,12 +194,12 @@ void matrix_init_user(void) {
void startup_user() void startup_user()
{ {
_delay_ms(20); // gets rid of tick _delay_ms(20); // gets rid of tick
PLAY_NOTE_ARRAY(tone_startup, false, 0); PLAY_SONG(tone_startup);
} }
void shutdown_user() void shutdown_user()
{ {
PLAY_NOTE_ARRAY(tone_goodbye, false, 0); PLAY_SONG(tone_goodbye);
_delay_ms(150); _delay_ms(150);
stop_all_notes(); stop_all_notes();
} }
@@ -211,7 +211,7 @@ void music_on_user(void)
void music_scale_user(void) void music_scale_user(void)
{ {
PLAY_NOTE_ARRAY(music_scale, false, 0); PLAY_SONG(music_scale);
} }
#endif #endif
+1 -5
View File
@@ -1,5 +1 @@
BACKLIGHT_ENABLE = no BACKLIGHT_ENABLE = no
ifndef QUANTUM_DIR
include ../../../Makefile
endif
+1 -5
View File
@@ -1,5 +1 @@
BACKLIGHT_ENABLE = no BACKLIGHT_ENABLE = no
ifndef QUANTUM_DIR
include ../../../Makefile
endif
File renamed without changes.
@@ -1,8 +1,6 @@
#ifndef ERGODOX_ERGODONE_CONFIG_H #ifndef ERGODOX_ERGODONE_CONFIG_H
#define ERGODOX_ERGODONE_CONFIG_H #define ERGODOX_ERGODONE_CONFIG_H
#include "../config.h"
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
@@ -17,6 +15,31 @@
#define MATRIX_ROWS 6 #define MATRIX_ROWS 6
#define MATRIX_COLS 14 #define MATRIX_COLS 14
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_WHEEL_DELAY 0
#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)) \
)
/* number of backlight levels */ /* number of backlight levels */
#define BACKLIGHT_LEVELS 3 #define BACKLIGHT_LEVELS 3
File renamed without changes.
@@ -60,4 +60,6 @@ inline void ergodox_led_all_set(uint8_t n) {}
{ KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, KC_NO } \ { KC_NO, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5A, k5B, k5C, KC_NO } \
} }
#define LAYOUT_ergodox KEYMAP
#endif #endif
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,4 +1,4 @@
#include "ergodox.h" #include QMK_KEYBOARD_H
#include "debug.h" #include "debug.h"
#include "action_layer.h" #include "action_layer.h"
#include "version.h" #include "version.h"
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/ */
// If it accepts an argument (i.e, is a function), it doesn't need KC_. // If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_* // Otherwise, it needs KC_*
[BASE] = KEYMAP( // layer 0 : default [BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand // left hand
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------' * `--------------------' `--------------------'
*/ */
// SYMBOLS // SYMBOLS
[SYMB] = KEYMAP( [SYMB] = LAYOUT_ergodox(
// left hand // left hand
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, VRSN, 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_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
@@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------' * `--------------------' `--------------------'
*/ */
// MEDIA AND MOUSE // MEDIA AND MOUSE
[MDIA] = KEYMAP( [MDIA] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_U, 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_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
File renamed without changes.
File renamed without changes.
@@ -70,6 +70,8 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
# Build Options # Build Options
# comment out to disable the options. # comment out to disable the options.
# #
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDone
UNICODE_ENABLE = yes # Unicode
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = yes # Mouse keys(+4700) MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450) EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
@@ -89,3 +91,5 @@ LEDMAP_IN_EEPROM_ENABLE = no # Read LED mapping from eeprom
ONEHAND_ENABLE = no # Disable Onehand ONEHAND_ENABLE = no # Disable Onehand
RGBLIGHT_ENABLE = no RGBLIGHT_ENABLE = no
MIDI_ENABLE = no MIDI_ENABLE = no
LAYOUTS = ergodox ergodox_80
File renamed without changes.
-40
View File
@@ -1,40 +0,0 @@
#ifndef KEYBOARDS_ERGODOX_CONFIG_H_
#define KEYBOARDS_ERGODOX_CONFIG_H_
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_WHEEL_DELAY 0
#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
#ifdef SUBPROJECT_ergodone
#include "ergodone/config.h"
#endif
#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */
-4
View File
@@ -1,4 +0,0 @@
#include "ergodox.h"
#include "debug.h"
#include "action_layer.h"
-13
View File
@@ -1,13 +0,0 @@
#ifndef KEYBOARDS_ERGODOX_ERGODOX_H_
#define KEYBOARDS_ERGODOX_ERGODOX_H_
#ifdef SUBPROJECT_ez
#include "ez.h"
#endif
#ifdef SUBPROJECT_infinity
#include "infinity.h"
#endif
#ifdef SUBPROJECT_ergodone
#include "ergodone.h"
#endif
#endif /* KEYBOARDS_ERGODOX_ERGODOX_H_ */
-6
View File
@@ -1,6 +0,0 @@
TAP_DANCE_ENABLE=yes
UNICODE_ENABLE=yes
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
@@ -1,6 +0,0 @@
SUBPROJECT_DEFAULT = ez
TAP_DANCE_ENABLE = yes
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
@@ -1,42 +0,0 @@
/*
Copyright 2017 Fred Sundvik
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 "simple_visualizer.h"
// This function should be implemented by the keymap visualizer
// Don't change anything else than state->target_lcd_color and state->layer_text as that's the only thing
// that the simple_visualizer assumes that you are updating
// Also make sure that the buffer passed to state->layer_text remains valid until the previous animation is
// stopped. This can be done by either double buffering it or by using constant strings
static void get_visualizer_layer_and_color(visualizer_state_t* state) {
uint8_t saturation = 60;
if (state->status.leds & (1u << USB_LED_CAPS_LOCK)) {
saturation = 255;
}
if (state->status.layer & 0x4) {
state->target_lcd_color = LCD_COLOR(0, saturation, 0xFF);
state->layer_text = "Media & Mouse";
}
else if (state->status.layer & 0x2) {
state->target_lcd_color = LCD_COLOR(168, saturation, 0xFF);
state->layer_text = "Symbol";
}
else {
state->target_lcd_color = LCD_COLOR(84, saturation, 0xFF);
state->layer_text = "Default";
}
}
@@ -1,79 +0,0 @@
#include "ergodox.h"
#include "debug.h"
#include "action_layer.h"
#include "version.h"
#include "keymap_fr_ch.h"
#include "keymap_french.h"
#include "keymap_german.h"
#include "keymap_german_ch.h"
#include "keymap_nordic.h"
#include "keymap_norwegian.h"
#include "keymap_spanish.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP(NO_LESS,KC_1,KC_2,KC_3,KC_4,KC_5,KC_BSPACE,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,TG(1),KC_BSPACE,KC_A,KC_S,KC_D,KC_F,KC_G,SFT_T(NO_APOS),CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,SFT_T(KC_EQUAL),MO(1),CTL_T(KC_GRAVE),KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_CAPSLOCK,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_6,KC_7,KC_8,KC_9,KC_0,NO_PLUS,TG(1),KC_Y,KC_U,KC_I,KC_O,KC_P,NO_AM,KC_H,KC_J,KC_K,KC_L,LT(2,NO_OSLH),NO_AE,SFT_T(KC_RBRC),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SFT_T(NO_APOS),KC_DOWN,KC_UP,NO_LPRN,NO_RPRN,MO(1),NO_QUOT,CTL_T(KC_ESCAPE),NO_APOS,KC_LALT,KC_LGUI,KC_ENTER),
[1] = KEYMAP(M(0),KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_TRANSPARENT,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_7,KC_8,KC_9,KC_TRANSPARENT,KC_TRANSPARENT,KC_F12,KC_4,KC_5,KC_6,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_0,KC_1,KC_2,KC_3,NO_LBRC,NO_RBRC,KC_LSHIFT,KC_COMMA,KC_DOT,LSFT(NO_LBRC),LSFT(NO_RBRC),KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LALT,KC_LGUI,KC_ENTER),
[2] = KEYMAP(KC_ESCAPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LALT,KC_LGUI,KC_MS_BTN1,KC_MS_BTN2,KC_ESCAPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_SPACE,KC_LGUI,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_ESCAPE,KC_MS_WH_UP,KC_MS_WH_DOWN,KC_MS_ACCEL0,KC_MS_ACCEL1),
};
const uint16_t PROGMEM fn_actions[] = {
[1] = ACTION_LAYER_TAP_TOGGLE(1)
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case 0:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
break;
}
return MACRO_NONE;
};
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) {
case 1:
ergodox_right_led_1_on();
break;
case 2:
ergodox_right_led_2_on();
break;
case 3:
ergodox_right_led_3_on();
break;
case 4:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
break;
case 5:
ergodox_right_led_1_on();
ergodox_right_led_3_on();
break;
case 6:
ergodox_right_led_2_on();
ergodox_right_led_3_on();
break;
case 7:
ergodox_right_led_1_on();
ergodox_right_led_2_on();
ergodox_right_led_3_on();
break;
default:
break;
}
};
@@ -1,13 +0,0 @@
ifndef QUANTUM_DIR
include ../../../../Makefile
endif
install-xorg-configuration:
install -m 0664 90-$(KEYBOARD)-$(KEYMAP).conf \
/etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(KEYMAP).conf
install -m 0644 $(KEYBOARD)_$(KEYMAP) \
/usr/share/X11/xkb/symbols/$(KEYBOARD)_$(KEYMAP)
uninstall-xorg-configuration:
-rm -f /etc/X11/xorg.conf.d/90-$(KEYBOARD)-$(KEYMAP).conf
-rm -f /usr/share/X11/xkb/symbols/$(KEYBOARD)_$(KEYMAP)
-111
View File
@@ -1,111 +0,0 @@
ErgoDox
==
The ErgoDox is a split ergonomic keyboard originally developed by Dominic "Dox" Beauchamp.
* The **ErgoDox EZ** is a Teensy-based split mechanical keyboard, sold assembled and with warranty at [ErgoDox-EZ.com](https://ergodox-ez.com).
* The **ErgoDox Infinity** is an ARM-based split mechanical keyboard, sold from time to time in kit form at [MassDrop.com](https://www.massdrop.com/buy/infinity-ergodox)
The ErgoDox EZ code is maintained by Erez Zukerman and is officially supported by the EZ -- the keyboard ships running QMK from the factory.
The ErgoDox Infinity code is maintained by Fredizzimo, as a community contribution.
## Standard Build Instructions
To build QMK for the ErgoDox, see the official [build guide](/docs/build_guide.md).
## Additional resources
A graphical configurator for the ErgoDox EZ is available at [configure.ergodox-ez.com](http://configure.ergodox-ez.com). It outputs QMK-compiled binaries, as well as source code for your layout, which you can use as a jumping-off point to further customize in QMK.
# Flashing Firmware
## ErgoDox EZ
The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html).
Linux users need to modify udev rules as described on the [Teensy
Linux page]. Some distributions provide a binary, maybe called
`teensy-loader-cli`.
[Teensy Linux page]: https://www.pjrc.com/teensy/loader_linux.html
To flash the firmware:
- Build the firmware with `make keymapname`, for example `make default`
- This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g.
`ergodox_ez_default.hex`
- Start the teensy loader.
- Load the .hex file into it.
- Press the Reset button by inserting a paperclip gently into the reset hole
in the top right corder.
- Click the button in the Teensy app to download the firmware.
To flash with ´teensy-loader-cli´:
- Build the firmware with `make keymapname`, for example `make default`
- Run ´<path/to/>teensy_loader_cli -mmcu=atmega32u4 -w ergodox_ez_<keymap>.hex´
- Press the Reset button by inserting a paperclip gently into the reset hole
in the top right corder.
## ErgoDox Infinity
The Infinity is two completely independent keyboards, and needs to be flashed
for the left and right halves seperately. To flash them:
- Build the firmware with `make infinity-keymapname`
- Plug in the left hand keyboard only.
- Press the program button (back of keyboard, above thumb pad).
- Install the firmware with `sudo make infinity-keymapname-dfu-util`
- Build right hand firmware with `make infinity-keymapname MASTER=right`
- Plug in the right hand keyboard only.
- Press the program button (back of keyboard, above thumb pad).
- Install the firmware with `sudo make infinity-keymapname-dfu-util MASTER=right`
More information on the Infinity firmware is available in the [TMK/chibios for
Input Club Infinity Ergodox](https://github.com/fredizzimo/infinity_ergodox/blob/master/README.md)
### Infinity Master/Two Halves
The Infinity is two completely independent keyboards, that can connect together.
You have a few options in how you flash the firmware:
- Flash the left half, rebuild the firmware with "MASTER=right" and then flash
the right half. This allows you to plug in either half directly to the
computer and is what the above instructions do.
- Flash the left half, then flash the same firmware on the right. This only
works when the left half is plugged directly to the computer and the keymap
is mirrored. It saves the small extra step of rebuilding with
"MASTER=right".
- The same as the previous one but with "MASTER=right" when you build the
firmware, then flash the same firmware to both halves. You just have to
directly connect the right half to the computer.
- For minor changes such as changing only the keymap without having updated
any part of the firmware code itself, you can program only the MASTER half.
It is safest to program both halves though.
## ErgoDone
The ErgoDone uses its own HID bootloader and needs to be flashed using the [TKG Toolkit](https://github.com/kairyu/tkg-toolkit).
- Build the firmware with `make ergodone-keymapname`
- While plugging in the USB cable, hold the two right-most keys on the left half of the ErgoDone to enter FLASH mode.
- Use the utility from [TKG Toolkit](https://github.com/kairyu/tkg-toolkit) to flash the keyboard: `hid_bootloader_cli -mmcu=atmega32u4 ergodox_ergodone_keymapname.hex`
-28
View File
@@ -1,28 +0,0 @@
#----------------------------------------------------------------------------
# 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).
#
#----------------------------------------------------------------------------
# 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
UNICODE_ENABLE = yes # Unicode
ONEHAND_ENABLE = yes # Allow swapping hands of keyboard
File renamed without changes.
@@ -4,5 +4,5 @@ RGBLIGHT_ENABLE = yes
MIDI_ENABLE = no MIDI_ENABLE = no
ifndef MAKEFILE_INCLUDED ifndef MAKEFILE_INCLUDED
include ../../../Makefile include ../../Makefile
endif endif
@@ -19,8 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef ERGODOX_EZ_CONFIG_H #ifndef ERGODOX_EZ_CONFIG_H
#define ERGODOX_EZ_CONFIG_H #define ERGODOX_EZ_CONFIG_H
#include "../config.h"
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
@@ -35,6 +33,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 14 #define MATRIX_ROWS 14
#define MATRIX_COLS 6 #define MATRIX_COLS 6
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
#define MOUSEKEY_MAX_SPEED 7
#define MOUSEKEY_WHEEL_DELAY 0
#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)) \
)
/* number of backlight levels */ /* number of backlight levels */
#define BACKLIGHT_LEVELS 3 #define BACKLIGHT_LEVELS 3
@@ -1,4 +1,4 @@
#include "ez.h" #include QMK_KEYBOARD_H
#include "i2cmaster.h" #include "i2cmaster.h"
@@ -160,4 +160,6 @@ inline void ergodox_led_all_set(uint8_t n)
{ k0D, k1D, k2D, k3D, k4D, KC_NO } \ { k0D, k1D, k2D, k3D, k4D, KC_NO } \
} }
#define LAYOUT_ergodox KEYMAP
#endif #endif
File renamed without changes.
@@ -1,4 +1,4 @@
#include "ergodox.h" #include QMK_KEYBOARD_H
#include "debug.h" #include "debug.h"
#include "action_layer.h" #include "action_layer.h"
@@ -0,0 +1,223 @@
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
#include "version.h"
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define MDIA 2 // media keys
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | App | LGui | | Alt |Ctrl/Esc|
* ,------|------|------| |------+--------+------.
* | | | Home | | PgUp | | |
* | Space|Backsp|------| |------| Tab |Enter |
* | |ace | End | | PgDn | | |
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
ALT_T(KC_APP), KC_LGUI,
KC_HOME,
KC_SPC,KC_BSPC,KC_END,
// right hand
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
KC_LALT, CTL_T(KC_ESC),
KC_PGUP,
KC_PGDN,KC_TAB, KC_ENT
),
/* Keymap 1: Symbol Layer
*
* ,---------------------------------------------------. ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | EPRM | | | | | | | . | 0 | = | |
* `-----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* |Animat| | |Toggle|Solid |
* ,------|------|------| |------+------+------.
* |Bright|Bright| | | |Hue- |Hue+ |
* |ness- |ness+ |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = LAYOUT_ergodox(
// left hand
VRSN, 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,
EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
RGB_MOD,KC_TRNS,
KC_TRNS,
RGB_VAD,RGB_VAI,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_TRNS,
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
RGB_TOG, RGB_SLD,
KC_TRNS,
KC_TRNS, RGB_HUD, RGB_HUI
),
/* Keymap 2: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | MsUp | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | | | | | | | | | | Prev | Next | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | |Brwser|
* | | |------| |------| |Back |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox(
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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_WBAK
),
};
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) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
break;
case 1:
if (record->event.pressed) { // For resetting EEPROM
eeconfig_init();
}
break;
}
return MACRO_NONE;
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// dynamically generate these.
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_mode(1);
#endif
}
return false;
break;
}
return true;
}
// 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,15 @@
# ErgoDox EZ Default Configuration
## Changelog
* Dec 2016:
* Added LED keys
* Refreshed layout graphic, comes from http://configure.ergodox-ez.com now.
* Sep 22, 2016:
* Created a new key in layer 1 (bottom-corner key) that resets the EEPROM.
* Feb 2, 2016 (V1.1):
* Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows).
This is what we ship with out of the factory. :) The image says it all:
![Default](https://i.imgur.com/Be53jH7.png)
@@ -1,7 +1,7 @@
// Netable differences vs. the default firmware for the ErgoDox EZ: // Netable differences vs. the default firmware for the ErgoDox EZ:
// 1. The Cmd key is now on the right side, making Cmd+Space easier. // 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). // 2. The media keys work on OSX (But not on Windows).
#include "ergodox.h" #include QMK_KEYBOARD_H
#include "debug.h" #include "debug.h"
#include "action_layer.h" #include "action_layer.h"
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/ */
// If it accepts an argument (i.e, is a function), it doesn't need KC_. // If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_* // Otherwise, it needs KC_*
[BASE] = KEYMAP( // layer 0 : default [BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand // left hand
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------' * `--------------------' `--------------------'
*/ */
// SYMBOLS // SYMBOLS
[SYMB] = KEYMAP( [SYMB] = LAYOUT_ergodox(
// left hand // left hand
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, 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_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------' * `--------------------' `--------------------'
*/ */
// MEDIA AND MOUSE // MEDIA AND MOUSE
[MDIA] = KEYMAP( [MDIA] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_U, 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_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
@@ -1,10 +1,10 @@
TAP_DANCE_ENABLE = yes TAP_DANCE_ENABLE = yes
LAYER_UNDERGLOW_LIGHTING = yes LAYER_UNDERGLOW_LIGHTING = yes
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
COMMAND_ENABLE = no # Commands for debug and configuration COMMAND_ENABLE = no # Commands for debug and configuration
RGBLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes
MIDI_ENABLE = no MIDI_ENABLE = no
ifndef QUANTUM_DIR ifndef QUANTUM_DIR
include ../../../../Makefile include ../../../../Makefile
endif endif
@@ -1,4 +1,4 @@
#include "ergodox.h" #include QMK_KEYBOARD_H
#include "debug.h" #include "debug.h"
#include "action_layer.h" #include "action_layer.h"
#include "version.h" #include "version.h"
@@ -1,6 +1,6 @@
RGBLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes
RGBLIGHT_ANIMATION = no RGBLIGHT_ANIMATION = no
ifndef QUANTUM_DIR ifndef QUANTUM_DIR
include ../../../../Makefile include ../../../../Makefile
endif endif
@@ -1,4 +1,4 @@
#include "ergodox.h" #include QMK_KEYBOARD_H
#include "debug.h" #include "debug.h"
#include "action_layer.h" #include "action_layer.h"
#include "version.h" #include "version.h"
@@ -1,4 +1,4 @@
#include "ergodox.h" #include QMK_KEYBOARD_H
#include "debug.h" #include "debug.h"
#include "action_layer.h" #include "action_layer.h"
#include "version.h" #include "version.h"
@@ -1,4 +1,4 @@
#include "ergodox.h" #include QMK_KEYBOARD_H
#include "debug.h" #include "debug.h"
#include "action_layer.h" #include "action_layer.h"
#include "sendchar.h" #include "sendchar.h"
@@ -33,7 +33,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "debug.h" #include "debug.h"
#include "util.h" #include "util.h"
#include "matrix.h" #include "matrix.h"
#include "ez.h" #include QMK_KEYBOARD_H
#include "i2cmaster.h" #include "i2cmaster.h"
#ifdef DEBUG_MATRIX_SCAN_RATE #ifdef DEBUG_MATRIX_SCAN_RATE
#include "timer.h" #include "timer.h"
+33
View File
@@ -0,0 +1,33 @@
# ErgoDox EZ
The Ez uses the [Teensy Loader](https://www.pjrc.com/teensy/loader.html).
Linux users need to modify udev rules as described on the [Teensy
Linux page]. Some distributions provide a binary, maybe called
`teensy-loader-cli`.
[Teensy Linux page]: https://www.pjrc.com/teensy/loader_linux.html
To flash the firmware:
- Build the firmware with `make keymapname`, for example `make default`
- This will result in a hex file called `ergodox_ez_keymapname.hex`, e.g.
`ergodox_ez_default.hex`
- Start the teensy loader.
- Load the .hex file into it.
- Press the Reset button by inserting a paperclip gently into the reset hole
in the top right corder.
- Click the button in the Teensy app to download the firmware.
To flash with ´teensy-loader-cli´:
- Build the firmware with `make keymapname`, for example `make default`
- Run ´<path/to/>teensy_loader_cli -mmcu=atmega32u4 -w ergodox_ez_<keymap>.hex´
- Press the Reset button by inserting a paperclip gently into the reset hole
in the top right corder.
@@ -70,7 +70,17 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
# Build Options # Build Options
# comment out to disable the 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
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
UNICODE_ENABLE = yes # Unicode
ONEHAND_ENABLE = yes # Allow swapping hands of keyboard
SLEEP_LED_ENABLE = no SLEEP_LED_ENABLE = no
API_SYSEX_ENABLE = no API_SYSEX_ENABLE = no
RGBLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes
LAYOUTS = ergodox
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 591 files, more files were not shown because too many files have changed in this diff. Show more