Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fe47b36065 | ||
|
|
ea134be36a | ||
|
|
b7afa59c97 | ||
|
|
753809eed7 | ||
|
|
b476d65b9c | ||
|
|
61ef949576 | ||
|
|
56634ca065 | ||
|
|
663d3906ec | ||
|
|
f5f7dfa064 | ||
|
|
4ea247e673 | ||
|
|
a52836e669 | ||
|
|
7d28a417c0 | ||
|
|
ea7590c894 | ||
|
|
9f5b4e1d7a | ||
|
|
b82604dada | ||
|
|
bfc73e90cf | ||
|
|
eabf530a0e | ||
|
|
4ba9438c3f | ||
|
|
b2979eba23 | ||
|
|
98391605ca | ||
|
|
a25dbaad32 | ||
|
|
61cdc9aaa4 | ||
|
|
d1fb8d2296 | ||
|
|
42e6ecc36b | ||
|
|
43579a80a7 | ||
|
|
1a4a66fd01 | ||
|
|
3a2ae6a213 | ||
|
|
e740520b3f | ||
|
|
169ede0715 | ||
|
|
de833659ae | ||
|
|
1e6a3f9e17 | ||
|
|
daf16535f1 | ||
|
|
62c77e7dbf | ||
|
|
582a6ac75c | ||
|
|
901a92a2fd | ||
|
|
f175f5df95 | ||
|
|
6c81656e8e | ||
|
|
5dae013ff8 | ||
|
|
30ab4dd14f | ||
|
|
c208a6d4e5 | ||
|
|
b9987d65f9 | ||
|
|
2c65a17752 | ||
|
|
dfa6417ae3 | ||
|
|
918aea5b47 | ||
|
|
b4f2f44a6f | ||
|
|
1524c2cb16 | ||
|
|
8ad12b1eb7 | ||
|
|
dcf9fa1aaa | ||
|
|
f912c74fe7 | ||
|
|
574ca7f59c | ||
|
|
da19852964 | ||
|
|
ff49259a1a | ||
|
|
b0094e631e | ||
|
|
6c9b4743f7 | ||
|
|
e43e58aad1 | ||
|
|
f4e4d6f8d0 | ||
|
|
37987837b1 | ||
|
|
a3f151b8e9 | ||
|
|
de80e2c756 | ||
|
|
a1ce43781a | ||
|
|
91f3a73a28 | ||
|
|
6794495336 | ||
|
|
2b26abf9a9 | ||
|
|
946f4854c5 | ||
|
|
a2fbd671ad | ||
|
|
7389beb18c | ||
|
|
dd9b00543b | ||
|
|
7ca335cf5b | ||
|
|
3522496f24 | ||
|
|
67b8bf8f70 | ||
|
|
98373f2fc1 | ||
|
|
a012c24225 | ||
|
|
fa96d64f37 | ||
|
|
2b98ec67f3 | ||
|
|
7b3c9cc8de | ||
|
|
f32c68ee65 | ||
|
|
c21c2cc92b | ||
|
|
fe9556104b | ||
|
|
0fb835c54c | ||
|
|
23b0fc20e3 | ||
|
|
9d22a1a6d8 | ||
|
|
8705ac408d | ||
|
|
4b50ab029d | ||
|
|
5a70cb30ee | ||
|
|
3af2bca1fc | ||
|
|
035f7bb1bf | ||
|
|
f397402e10 | ||
|
|
4cf17210b6 | ||
|
|
4ba9917f82 | ||
|
|
e87691fa5d | ||
|
|
8665ed3efc |
No files matched your search
+3
-2
@@ -1,6 +1,7 @@
|
|||||||
os: linux
|
os: linux
|
||||||
dist: trusty
|
dist: trusty
|
||||||
sudo: required
|
sudo: required
|
||||||
|
group: edge
|
||||||
language: c
|
language: c
|
||||||
branches:
|
branches:
|
||||||
except:
|
except:
|
||||||
@@ -33,7 +34,7 @@ after_success:
|
|||||||
notifications:
|
notifications:
|
||||||
webhooks:
|
webhooks:
|
||||||
urls:
|
urls:
|
||||||
- https://webhooks.gitter.im/e/cca31de3d44b9adb617b
|
- https://webhooks.gitter.im/e/afce403d65f143dfac09
|
||||||
on_success: change # options: [always|never|change] default: always
|
on_success: always # options: [always|never|change] default: always
|
||||||
on_failure: always # options: [always|never|change] default: always
|
on_failure: always # options: [always|never|change] default: always
|
||||||
on_start: never # options: [always|never|change] default: always
|
on_start: never # options: [always|never|change] default: always
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Code Of Conduct
|
||||||
|
|
||||||
|
QMK strives to be an inclusive and tolerant community. We welcome participation from anyone regardless of age, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, political belief, race, religion, or sexual identity and orientation.
|
||||||
|
|
||||||
|
> “A gentle word turns away wrath, but a harsh word stirs up anger.”
|
||||||
|
|
||||||
|
Our users, contributors, and collaborators are expected to treat each other with respect, to assume good intentions, and to gently correct, where possible, rather than react with escalation. Some examples of behavior we will not tolerate include, but is not limited to:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery
|
||||||
|
* Unwelcome advances, sexual or otherwise
|
||||||
|
* Insults or derogatory comments, or personal or political attacks
|
||||||
|
* Publishing others’ private information without explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||||
|
|
||||||
|
If someone is violating this Code of Conduct you may email hello@qmk.fm to bring your concern to the Members. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||||
+5
-1
@@ -3,6 +3,7 @@
|
|||||||
* [Introduction](home.md)
|
* [Introduction](home.md)
|
||||||
* [QMK Overview](qmk_overview.md)
|
* [QMK Overview](qmk_overview.md)
|
||||||
* [Build Environment Setup](build_environment_setup.md)
|
* [Build Environment Setup](build_environment_setup.md)
|
||||||
|
* [Make instructions](make_instructions.md)
|
||||||
|
|
||||||
### Making a keymap
|
### Making a keymap
|
||||||
* [Keymap overview](keymap.md)
|
* [Keymap overview](keymap.md)
|
||||||
@@ -19,10 +20,13 @@
|
|||||||
* [FAQ: Compiling QMK](faq_build.md)
|
* [FAQ: Compiling QMK](faq_build.md)
|
||||||
|
|
||||||
### For hardware makers and modders
|
### For hardware makers and modders
|
||||||
* [Modding your keyboard](modding_your_keyboard.md)
|
* [Adding a keyboard to QMK](adding_a_keyboard_to_qmk.md)
|
||||||
* [Porting your keyboard to QMK](porting_your_keyboard_to_qmk.md)
|
* [Porting your keyboard to QMK](porting_your_keyboard_to_qmk.md)
|
||||||
|
* [Modding your keyboard](modding_your_keyboard.md)
|
||||||
* [Adding features to QMK](adding_features_to_qmk.md)
|
* [Adding features to QMK](adding_features_to_qmk.md)
|
||||||
|
* [ISP flashing guide](isp_flashing_guide.md)
|
||||||
|
|
||||||
### Other topics
|
### Other topics
|
||||||
* [General FAQ](faq.md)
|
* [General FAQ](faq.md)
|
||||||
* [Differences from TMK](differences_from_tmk.md)
|
* [Differences from TMK](differences_from_tmk.md)
|
||||||
|
* [Using Eclipse with QMK](eclipse.md)
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# Adding your keyboard to QMK
|
||||||
|
|
||||||
|
We welcome all keyboard projects into QMK, but ask that you try to stick to a couple guidelines that help us keep things organised and consistent.
|
||||||
|
|
||||||
|
## Naming your directory/project
|
||||||
|
|
||||||
|
All names should be lowercase alphanumeric, and separated by an underscore (`_`), but not begin with one. Dashes (`-`) aren't allow by our build system, and will confuse it with keymaps/subprojects. Your directory and your `.h` and `.c` files should have exactly the same name. Subprojects/revision should follow the same format.
|
||||||
|
|
||||||
|
## `readme.md`
|
||||||
|
|
||||||
|
All projects need to have a `readme.md` file that explains what the keyboard is, who made it, where it is available, and links to move information (template coming).
|
||||||
|
|
||||||
|
## Image/Hardware files
|
||||||
|
|
||||||
|
In an effort to keep the repo size down, we're no longer accepting images of any format in the repo, with few exceptions. Hosting them elsewhere (imgur) and linking them in the readme.md is the preferred method.
|
||||||
|
|
||||||
|
Any sort of hardware file (plate, case, pcb) can't be stored in qmk_firmware, but we have the [qmk.fm repo](https://github.com/qmk/qmk.fm) where such files (as well as in-depth info) can be store, and viewed on [qmk.fm](http://qmk.fm). Downloadable files are stored in `/<keyboard>/` (name follows the same format as above) which are served at `http://qmk.fm/<keyboard>/`, and pages are generated from `/_pages/<keyboard>/` which are served at the same location (.md files are generated into .html files through Jekyll). Check out the `lets_split` directory for an example.
|
||||||
|
|
||||||
|
## Non-production/handwired projects
|
||||||
|
|
||||||
|
We're happy to accept any project that uses QMK, including prototypes and handwired ones, but we have a separate `/keyboards/handwired/` folder for them, so the main `/keyboards/` folder doesn't get overcrowded. If a prototype project becomes a production project at some point in the future, we'd be happy to move it to the main `/keyboards/` folder!
|
||||||
|
|
||||||
|
## Warnings as errors
|
||||||
|
|
||||||
|
When developing your keyboard, keep in mind that all warnings will be treated as errors - these small warnings can build-up and cause larger errors down the road (and keeping them is generally a bad practice).
|
||||||
|
|
||||||
|
## Licenses
|
||||||
|
|
||||||
|
If you're adapting your keyboard's setup from another project, but not using the same code, but sure to update the copyright header at the top of the files to show your name, it this format:
|
||||||
|
|
||||||
|
Copyright 2017 Your Name <your@email.com>
|
||||||
|
|
||||||
|
## Technical details
|
||||||
|
|
||||||
|
If you're looking for more information on making your keyboard work with QMK, [check out this guide](porting_your_keyboard_to_qmk.md)!
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
# ISP Flashing Guide
|
||||||
|
|
||||||
|
If you're having trouble flashing/erasing your board, and running into cryptic error messages like any of the following:
|
||||||
|
|
||||||
|
libusb: warning [darwin_transfer_status] transfer error: timed out
|
||||||
|
dfu.c:844: -ETIMEDOUT: Transfer timed out, NAK 0xffffffc4 (-60)
|
||||||
|
atmel.c:1627: atmel_flash: flash data dfu_download failed.
|
||||||
|
atmel.c:1629: Expected message length of 1072, got -60.
|
||||||
|
atmel.c:1434: Error flashing the block: err -2.
|
||||||
|
ERROR
|
||||||
|
Memory write error, use debug for more info.
|
||||||
|
commands.c:360: Error writing memory data. (err -4)
|
||||||
|
|
||||||
|
dfu.c:844: -EPIPE: a) Babble detect or b) Endpoint stalled 0xffffffe0 (-32)
|
||||||
|
Device is write protected.
|
||||||
|
dfu.c:252: dfu_clear_status( 0x7fff4fc2ea80 )
|
||||||
|
atmel.c:1434: Error flashing the block: err -2.
|
||||||
|
ERROR
|
||||||
|
Memory write error, use debug for more info.
|
||||||
|
commands.c:360: Error writing memory data. (err -4)
|
||||||
|
|
||||||
|
You're likely going to need to ISP flash your board/device to get it working again. Luckily, this process is pretty straight-forward, provided you have any extra programmable keyboard, Arduino, or Teensy 2.0/Teensy 2.0++. There are also dedicated ISP flashers available for this, but most cost >$15, and it's assumed that if you are googling this error, this is the first you've heard about ISP flashing, and don't have one readily available (whereas you might have some other AVR board). __We'll be using a Teensy 2.0 with Windows 10 in this guide__ - if you are comfortable doing this on another system, please consider editing this guide and contributing those instructions!
|
||||||
|
|
||||||
|
## Software needed
|
||||||
|
|
||||||
|
* [The Arduino IDE](https://www.arduino.cc/en/Main/Software)
|
||||||
|
* [Teensyduino](https://www.pjrc.com/teensy/td_download.html) (if you're using a Teensy)
|
||||||
|
* [WinAVR](http://www.ladyada.net/learn/avr/setup-win.html) (Windows)
|
||||||
|
|
||||||
|
## Wiring
|
||||||
|
|
||||||
|
This is pretty straight-forward - we'll be connecting like-things to like-things in the following manner:
|
||||||
|
|
||||||
|
Flasher B0 <-> Keyboard RESET
|
||||||
|
Flasher B1 <-> Keyboard B1 (SCLK)
|
||||||
|
Flasher B2 <-> Keyboard B2 (MOSI)
|
||||||
|
Flasher B3 <-> Keyboard B3 (MISO)
|
||||||
|
Flasher VCC <-> Keyboard VCC
|
||||||
|
Flasher GND <-> Keyboard GND
|
||||||
|
|
||||||
|
## The ISP firmware
|
||||||
|
|
||||||
|
Make sure your keyboard is unplugged from any device, and plug in your Teensy.
|
||||||
|
|
||||||
|
1. Run Arduino after you have everything installed
|
||||||
|
2. Select `Tools > Board * > Teensy 2.0`
|
||||||
|
3. Click `File > Examples > 11.ArduinoISP > ArduinoISP`
|
||||||
|
|
||||||
|
Then scroll down until you see something that looks like this block of code:
|
||||||
|
|
||||||
|
// Configure which pins to use:
|
||||||
|
|
||||||
|
// The standard pin configuration.
|
||||||
|
#ifndef ARDUINO_HOODLOADER2
|
||||||
|
|
||||||
|
#define RESET 0 // Use 0 (B0) instead of 10
|
||||||
|
#define LED_HB 11 // Use 11 (LED on the Teensy 2.0)
|
||||||
|
#define LED_ERR 8 // This won't be used unless you have an LED hooked-up to 8 (D3)
|
||||||
|
#define LED_PMODE 7 // This won't be used unless you have an LED hooked-up to 7 (D2)
|
||||||
|
|
||||||
|
And make the changes in the last four lines. If you're using something besides the Teenys 2.0, you'll want to choose something else that makes sense for `LED_HB`. We define `RESET` as `0`/`B0` because that's what's close - if you want to use another pin for some reason, [you can use the pinouts to choose something else](https://www.pjrc.com/teensy/pinout.html).
|
||||||
|
|
||||||
|
Once you've made your changes, you can click the Upload button (right arrow), which will open up the Teensy flasher app - you'll need to press the reset button on the Teensy the first time, but after that, it's automatic (you shouldn't be flashing this more than once, though). Once flashed, the orange LED on the Teensy will flash on and off, indicating it's ready for some action.
|
||||||
|
|
||||||
|
## The .hex file
|
||||||
|
|
||||||
|
Before flashing your firmware, you're going to need to and do a little preparation. We'll be appending [this bootloader (also a .hex file)](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1_0_0.hex) to the end of our firmware by opening the original .hex file in a text editor, and removing the last line, which should be `:00000001FF` (this is an EOF message). After that's been removed, copy the entire bootloader's contents and paste it at the end of the original file, and save it.
|
||||||
|
|
||||||
|
It's possible to use other bootloaders here in the same way, but __you need a bootloader__, otherwise you'll have to ISP to write new firmware to your keyboard.
|
||||||
|
|
||||||
|
## Flashing your firmware
|
||||||
|
|
||||||
|
Make sure your keyboard is unplugged from any device, and plug in your Teensy.
|
||||||
|
|
||||||
|
Open `cmd` and navigate to your where your modified .hex file is. We'll pretend this file is called `main.hex`, and that your Teensy 2.0 is on the `COM3` port - if you're unsure, you can open your Device Manager, and look for `Ports > USB Serial Device`. Use that COM port here. You can confirm it's the right port with:
|
||||||
|
|
||||||
|
avrdude -c avrisp -P COM3 -p atmega32u4
|
||||||
|
|
||||||
|
and you should get something like the following output:
|
||||||
|
|
||||||
|
avrdude: AVR device initialized and ready to accept instructions
|
||||||
|
|
||||||
|
Reading | ################################################## | 100% 0.02s
|
||||||
|
|
||||||
|
avrdude: Device signature = 0x1e9587
|
||||||
|
|
||||||
|
avrdude: safemode: Fuses OK
|
||||||
|
|
||||||
|
avrdude done. Thank you.
|
||||||
|
|
||||||
|
Since our keyboard uses an `atmega32u4` (common), that is the chip we'll specify. This is the full command:
|
||||||
|
|
||||||
|
avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i
|
||||||
|
|
||||||
|
You should see a couple of progress bars, then you should see:
|
||||||
|
|
||||||
|
avrdude: verifying ...
|
||||||
|
avrdude: 32768 bytes of flash verified
|
||||||
|
|
||||||
|
avrdude: safemode: Fuses OK
|
||||||
|
|
||||||
|
avrdude done. Thank you.
|
||||||
|
|
||||||
|
Which means everything should be ok! Your board may restart automatically, otherwise, unplug your Teensy and plug in your keyboard - you can leave your Teensy wired to your keyboard while testing things, but it's recommended that you desolder it/remove the wiring once you're sure everything works.
|
||||||
|
|
||||||
|
If you have any questions/problems, feel free to [open an issue](https://github.com/qmk/qmk_firmware/issues/new)!
|
||||||
@@ -7,7 +7,7 @@ In rare circumstances, your keyboard/device can become unwritable, and `dfu-prog
|
|||||||
[ X ERROR
|
[ X ERROR
|
||||||
Memory write error, use debug for more info.
|
Memory write error, use debug for more info.
|
||||||
|
|
||||||
Currently the only way to solve this is to [reprogram the chip via ISP](https://www.reddit.com/r/olkb/comments/4rjzen/flashing_error_on_mac_os_x/d52rj8o/). This requires another device to be hooked up to a couple of exposed pins on the PCB. There is a guide on how to do this [here](https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader), and [this is where things are on the Planck PCB](http://imgur.com/lvbxbHt).
|
Currently the only way to solve this is to [reprogram the chip via ISP](https://www.reddit.com/r/olkb/comments/4rjzen/flashing_error_on_mac_os_x/d52rj8o/). This requires another device to be hooked up to a couple of exposed pins on the PCB. __[We now have a guide on ISP flashing](isp_flashing_guide.md)__ and [this is where things are on the Planck PCB](http://imgur.com/lvbxbHt).
|
||||||
|
|
||||||
An example command to flash the board once things are hooked up is:
|
An example command to flash the board once things are hooked up is:
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
## Audio output from a speaker
|
## Audio output from a speaker
|
||||||
|
|
||||||
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any keyboard that allows access to the C6 port, you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
|
Your keyboard can make sounds! If you've got a Planck, Preonic, or basically any keyboard that allows access to the C6 or B5 port (`#define C6_AUDIO` and `#define B5_AUDIO`), you can hook up a simple speaker and make it beep. You can use those beeps to indicate layer transitions, modifiers, special keys, or just to play some funky 8bit tunes.
|
||||||
|
|
||||||
The audio code lives in [quantum/audio/audio.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/audio.h) and in the other files in the audio directory. It's enabled by default on the Planck [stock keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/default/keymap.c). Here are the important bits:
|
The audio code lives in [quantum/audio/audio.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/audio/audio.h) and in the other files in the audio directory. It's enabled by default on the Planck [stock keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/planck/keymaps/default/keymap.c). Here are the important bits:
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
# Porting your keyboard to QMK
|
||||||
|
|
||||||
|
This page describes the technical details of porting an existing keyboard to QMK. If you're looking to add your keyboard to QMK, please [look through these guidelines](adding_a_keyboard_to_qmk.md)!
|
||||||
|
|
||||||
If your keyboard is running an Atmega chip (atmega32u4 and others), it's pretty easy to get things setup for compiling your own firmware to flash onto your board. There is a `/util/new_project.sh <keyboard>` script to help get you started - you can simply pass your keyboard's name into the script, and all of the necessary files will be created. The components of each are described below.
|
If your keyboard is running an Atmega chip (atmega32u4 and others), it's pretty easy to get things setup for compiling your own firmware to flash onto your board. There is a `/util/new_project.sh <keyboard>` script to help get you started - you can simply pass your keyboard's name into the script, and all of the necessary files will be created. The components of each are described below.
|
||||||
|
|
||||||
## `/keyboards/<keyboard>/config.h`
|
## `/keyboards/<keyboard>/config.h`
|
||||||
@@ -34,7 +38,7 @@ At the bottom of the file, you'll find lots of features to turn on and off - all
|
|||||||
|
|
||||||
## `/keyboards/<keyboard>/readme.md`
|
## `/keyboards/<keyboard>/readme.md`
|
||||||
|
|
||||||
This is where you'll describe your keyboard - please write as much as you can about it! Talking about default functionality/features is useful here. Feel free to link to external pages/sites if necessary. Images can be included here as well. This file will be rendered into a webpage at qmk.fm/keyboards/<keyboard>/.
|
This is where you'll describe your keyboard - please write as much as you can about it! Talking about default functionality/features is useful here. Feel free to link to external pages/sites if necessary. Images can be included here as well, as long as they're hosted elsewhere (imgur).
|
||||||
|
|
||||||
## `/keyboards/<keyboard>/<keyboard>.c`
|
## `/keyboards/<keyboard>/<keyboard>.c`
|
||||||
|
|
||||||
|
|||||||
@@ -55,12 +55,12 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
|
|
||||||
|
|
||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# change to no to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
NKRO_ENABLE = no # USB Nkey Rollover - not yet supported in LUFA
|
||||||
+12
-12
@@ -52,15 +52,15 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality (+4870)
|
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality (+4870)
|
||||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150)
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
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
|
||||||
+12
-12
@@ -52,15 +52,15 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality (+4870)
|
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality (+4870)
|
||||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150)
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
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
|
||||||
@@ -49,6 +49,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define BACKLIGHT_PIN B7
|
#define BACKLIGHT_PIN B7
|
||||||
#define BACKLIGHT_BREATHING
|
#define BACKLIGHT_BREATHING
|
||||||
|
|
||||||
|
#define C6_AUDIO
|
||||||
|
|
||||||
/* COL2ROW or ROW2COL */
|
/* COL2ROW or ROW2COL */
|
||||||
#define DIODE_DIRECTION COL2ROW
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
|||||||
+10
-20
@@ -1,26 +1,16 @@
|
|||||||
Atomic keyboard firmware
|
Atomic
|
||||||
======================
|
===
|
||||||
DIY/Assembled ortholinear 60% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
|
|
||||||
|
|
||||||
## Quantum MK Firmware
|

|
||||||
|
|
||||||
For the full Quantum feature list, see [the parent readme.md](/readme.md).
|
A compact 60% (15x5) ortholinear keyboard kit made and sold by OLKB. [More info on qmk.fm](http://qmk.fm/atomic/)
|
||||||
|
|
||||||
## Building
|
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
|
||||||
|
Hardware Supported: Atomic PCB rev1, Teensy 2.0
|
||||||
|
Hardware Availability: no longer available
|
||||||
|
|
||||||
Download or clone the whole firmware and navigate to the keyboards/atomic folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button.
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
Depending on which keymap you would like to use, you will have to compile slightly differently.
|
make atomic-default
|
||||||
|
|
||||||
### 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.
|
||||||
To build with the default keymap, simply run `make default`.
|
|
||||||
|
|
||||||
### Other Keymaps
|
|
||||||
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top readme.md) and existent keymap files.
|
|
||||||
|
|
||||||
To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ make [default|jack|<name>]
|
|
||||||
```
|
|
||||||
Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
|
|
||||||
+13
-13
@@ -52,18 +52,18 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = no # 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
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
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
|
||||||
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
|
||||||
+11
-11
@@ -64,19 +64,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
#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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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 ?= yes # Breathing sleep LED during USB suspend
|
# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - not yet supported in LUFA
|
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
||||||
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
# MIDI_ENABLE ?= YES # MIDI controls
|
# MIDI_ENABLE = YES # MIDI controls
|
||||||
UNICODE_ENABLE ?= YES # Unicode
|
UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
||||||
USB ?= /dev/cu.usbmodem1411
|
USB = /dev/cu.usbmodem1411
|
||||||
|
|
||||||
upload: build
|
upload: build
|
||||||
$(ATREUS_UPLOAD_COMMAND)
|
$(ATREUS_UPLOAD_COMMAND)
|
||||||
+11
-11
@@ -51,16 +51,16 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = no # 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
|
#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
#MIDI_ENABLE ?= no # MIDI controls
|
#MIDI_ENABLE = no # MIDI controls
|
||||||
UNICODE_ENABLE ?= yes # Unicode
|
UNICODE_ENABLE = yes # Unicode
|
||||||
#BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
#BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
||||||
# 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
|
||||||
+11
-11
@@ -53,15 +53,15 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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 ?= yes # Breathing sleep LED during USB suspend
|
# 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
|
# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
# MIDI_ENABLE ?= YES # MIDI controls
|
# MIDI_ENABLE = YES # MIDI controls
|
||||||
# UNICODE_ENABLE ?= YES # Unicode
|
# UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
|
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
|
||||||
MOUSEKEY_ENABLE ?= yes # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX ?= yes # Custom matrix file
|
CUSTOM_MATRIX = yes # Custom matrix file
|
||||||
@@ -90,14 +90,14 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE ?= no # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
AUDIO_ENABLE ?= no
|
AUDIO_ENABLE = no
|
||||||
RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality
|
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
+13
-13
@@ -53,18 +53,18 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
RGBLIGHT_ENABLE ?= yes # Enable keyboard underlight functionality (+4870)
|
RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality (+4870)
|
||||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality by default
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= yes # Audio output on port C6
|
AUDIO_ENABLE = yes # Audio output on port C6
|
||||||
+11
-11
@@ -52,14 +52,14 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
# CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
# CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
# COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
# COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
BACKLIGHT_ENABLE ?= yes # Enable numpad's backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable numpad's backlight functionality
|
||||||
RGBLIGHT_ENABLE ?= yes
|
RGBLIGHT_ENABLE = yes
|
||||||
# MIDI_ENABLE ?= YES # MIDI controls
|
# MIDI_ENABLE = YES # MIDI controls
|
||||||
# UNICODE_ENABLE ?= YES # Unicode
|
# UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
@@ -2,24 +2,24 @@
|
|||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
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
|
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
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
UNICODE_ENABLE ?= no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
UNICODEMAP_ENABLE ?= yes
|
UNICODEMAP_ENABLE = yes
|
||||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
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.
|
||||||
PS2_USE_USART ?= yes
|
PS2_USE_USART = yes
|
||||||
API_SYSEX_ENABLE ?= no
|
API_SYSEX_ENABLE = no
|
||||||
|
|
||||||
# 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
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../../Makefile
|
include ../../../../../Makefile
|
||||||
|
|||||||
@@ -2,24 +2,24 @@
|
|||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
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
|
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
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
UNICODE_ENABLE ?= no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
UNICODEMAP_ENABLE ?= yes
|
UNICODEMAP_ENABLE = yes
|
||||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
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.
|
||||||
PS2_USE_USART ?= yes
|
PS2_USE_USART = yes
|
||||||
API_SYSEX_ENABLE ?= no
|
API_SYSEX_ENABLE = no
|
||||||
|
|
||||||
# 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
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../../Makefile
|
include ../../../../../Makefile
|
||||||
|
|||||||
@@ -49,24 +49,24 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
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
|
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
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
UNICODE_ENABLE ?= no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
UNICODEMAP_ENABLE ?= yes
|
UNICODEMAP_ENABLE = yes
|
||||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
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.
|
||||||
PS2_USE_USART ?= yes
|
PS2_USE_USART = yes
|
||||||
API_SYSEX_ENABLE ?= n
|
API_SYSEX_ENABLE = n
|
||||||
CUSTOM_MATRIX = yes
|
CUSTOM_MATRIX = yes
|
||||||
|
|
||||||
# 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
|
||||||
|
|
||||||
SRC = matrix.c led.c
|
SRC = matrix.c led.c
|
||||||
+14
-14
@@ -5,17 +5,17 @@ F_USB = $(F_CPU)
|
|||||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||||
|
|
||||||
BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
# CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
# CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
# COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
# COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
|
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
RGBLIGHT_ENABLE ?= no # Enable keyboard underlight functionality (+4870)
|
RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality (+4870)
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality (+1150)
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality (+1150)
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE ?= no
|
AUDIO_ENABLE = no
|
||||||
UNICODE_ENABLE ?= yes # Unicode
|
UNICODE_ENABLE = yes # Unicode
|
||||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
SLEEP_LED_ENABLE ?= yes
|
SLEEP_LED_ENABLE = yes
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # 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 MAKEFILE_INCLUDED
|
ifndef MAKEFILE_INCLUDED
|
||||||
include ../../../Makefile
|
include ../../../Makefile
|
||||||
|
|||||||
@@ -1,6 +1,30 @@
|
|||||||
#include "ez.h"
|
#include "ez.h"
|
||||||
#include "i2cmaster.h"
|
#include "i2cmaster.h"
|
||||||
|
|
||||||
|
|
||||||
|
extern inline void ergodox_board_led_on(void);
|
||||||
|
extern inline void ergodox_right_led_1_on(void);
|
||||||
|
extern inline void ergodox_right_led_2_on(void);
|
||||||
|
extern inline void ergodox_right_led_3_on(void);
|
||||||
|
extern inline void ergodox_right_led_on(uint8_t led);
|
||||||
|
|
||||||
|
extern inline void ergodox_board_led_off(void);
|
||||||
|
extern inline void ergodox_right_led_1_off(void);
|
||||||
|
extern inline void ergodox_right_led_2_off(void);
|
||||||
|
extern inline void ergodox_right_led_3_off(void);
|
||||||
|
extern inline void ergodox_right_led_off(uint8_t led);
|
||||||
|
|
||||||
|
extern inline void ergodox_led_all_on(void);
|
||||||
|
extern inline void ergodox_led_all_off(void);
|
||||||
|
|
||||||
|
extern inline void ergodox_right_led_1_set(uint8_t n);
|
||||||
|
extern inline void ergodox_right_led_2_set(uint8_t n);
|
||||||
|
extern inline void ergodox_right_led_3_set(uint8_t n);
|
||||||
|
extern inline void ergodox_right_led_set(uint8_t led, uint8_t n);
|
||||||
|
|
||||||
|
extern inline void ergodox_led_all_set(uint8_t n);
|
||||||
|
|
||||||
|
|
||||||
bool i2c_initialized = 0;
|
bool i2c_initialized = 0;
|
||||||
uint8_t mcp23018_status = 0x20;
|
uint8_t mcp23018_status = 0x20;
|
||||||
|
|
||||||
@@ -57,7 +81,7 @@ uint8_t init_mcp23018(void) {
|
|||||||
// cli();
|
// cli();
|
||||||
if (i2c_initialized == 0) {
|
if (i2c_initialized == 0) {
|
||||||
i2c_init(); // on pins D(1,0)
|
i2c_init(); // on pins D(1,0)
|
||||||
i2c_initialized++;
|
i2c_initialized = true;
|
||||||
_delay_ms(1000);
|
_delay_ms(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,289 @@
|
|||||||
|
#include "ergodox.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This section of macros is for tap or hold functionality. Keys will fire off the second symbol in the name if tapped
|
||||||
|
* or fire the first symbol in the name if held. For example
|
||||||
|
* GUI_Z
|
||||||
|
*
|
||||||
|
* - will fire z if tapped
|
||||||
|
* - will fire cmd/super/win if held
|
||||||
|
*/
|
||||||
|
#define ALT_DOT ALT_T(KC_DOT)
|
||||||
|
#define ALT_X ALT_T(KC_X)
|
||||||
|
#define CTL_SLSH CTL_T(KC_SLSH)
|
||||||
|
#define CTL_Z CTL_T(KC_Z)
|
||||||
|
#define GUI_C GUI_T(KC_C)
|
||||||
|
#define GUI_COMM GUI_T(KC_COMM)
|
||||||
|
#define HPR_ESC ALL_T(KC_ESC)
|
||||||
|
#define HPR_QUO ALL_T(KC_QUOT)
|
||||||
|
|
||||||
|
#define BASE 0
|
||||||
|
#define SYMB 1
|
||||||
|
#define MDIA 2
|
||||||
|
#define MOUSE 3
|
||||||
|
#define DEV 4
|
||||||
|
|
||||||
|
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| '" |
|
||||||
|
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
||||||
|
* | LShift |Z/Ctrl|X/Alt |C/GUI | V | B | | | | N | M |,/GUI |./ALT |//Ctrl| RShift |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,------------.
|
||||||
|
* |MOUSE | Home | | PgDn | PgUp|
|
||||||
|
* ,------|------|------| |------+-----+------.
|
||||||
|
* | | | ESC | | ESC | | |
|
||||||
|
* | Space|Backsp|------| |------| Tab |Enter |
|
||||||
|
* | |ace | LGui | | LGui | | |
|
||||||
|
* `--------------------' `-------------------'
|
||||||
|
*/
|
||||||
|
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
||||||
|
// Otherwise, it needs KC_*
|
||||||
|
[BASE] = KEYMAP( // layer 0 : default
|
||||||
|
// left hand
|
||||||
|
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
|
||||||
|
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(DEV),
|
||||||
|
KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||||
|
KC_LSFT, CTL_T(KC_Z), ALT_T(KC_X), GUI_T(KC_C), KC_V, KC_B, ALL_T(KC_NO),
|
||||||
|
LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT,
|
||||||
|
|
||||||
|
TG(MOUSE), KC_HOME,
|
||||||
|
KC_ESC,
|
||||||
|
KC_SPC, KC_BSPC, KC_LGUI,
|
||||||
|
|
||||||
|
// 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), KC_QUOT,
|
||||||
|
MEH_T(KC_NO), KC_N, KC_M, GUI_COMM, ALT_DOT, CTL_SLSH, KC_RSFT,
|
||||||
|
KC_DOWN, KC_UP, KC_LBRC, KC_RBRC, KC_FN1,
|
||||||
|
|
||||||
|
KC_PGDN, KC_PGUP,
|
||||||
|
KC_ESC,
|
||||||
|
KC_LGUI, KC_TAB, KC_ENT
|
||||||
|
),
|
||||||
|
/* Keymap 1: Symbol Layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | . | 0 | = | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | | |------| |------| | |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// SYMBOLS
|
||||||
|
[SYMB] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||||
|
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
||||||
|
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
||||||
|
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||||
|
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
||||||
|
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_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,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
/* Keymap 2: Media and mouse keys
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | | | | | |------| |------| | Prev | Next | Mute | | Play |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | | | | | | | | | | VolDn| VolUp| | | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | | |------| |------| | |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// MEDIA
|
||||||
|
[MDIA] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_MPRV, KC_MNXT, KC_MUTE, KC_TRNS, KC_MPLY,
|
||||||
|
KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
[MOUSE] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
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_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
[DEV] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_TRNS,
|
||||||
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
|
||||||
|
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
// 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_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
|
||||||
|
};
|
||||||
|
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_RSFT);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_RSFT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs just one time when the keyboard initializes.
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs constantly in the background, in a loop.
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
uint8_t layer = biton32(layer_state);
|
||||||
|
|
||||||
|
ergodox_board_led_off();
|
||||||
|
ergodox_right_led_1_off();
|
||||||
|
ergodox_right_led_2_off();
|
||||||
|
ergodox_right_led_3_off();
|
||||||
|
switch (layer) {
|
||||||
|
case SYMB:
|
||||||
|
// Binary 1 represented by the leds
|
||||||
|
// --*
|
||||||
|
ergodox_right_led_3_on();
|
||||||
|
break;
|
||||||
|
case MDIA:
|
||||||
|
// Binary 2 represented by the leds
|
||||||
|
// -*-
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
break;
|
||||||
|
case MOUSE:
|
||||||
|
// Binary 3 represented by the leds
|
||||||
|
// -**
|
||||||
|
ergodox_right_led_3_on();
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
break;
|
||||||
|
case DEV:
|
||||||
|
// Binary 4 represented by the leds
|
||||||
|
// *--
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// none
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
// switch (keycode) {
|
||||||
|
// case QWERTY:
|
||||||
|
// return false
|
||||||
|
// break;
|
||||||
|
// case LOWER:
|
||||||
|
// if (record->event.pressed) {
|
||||||
|
// layer_on(_LOWER);
|
||||||
|
// update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
// } else {
|
||||||
|
// layer_off(_LOWER);
|
||||||
|
// update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
// }
|
||||||
|
// return false;
|
||||||
|
// break;
|
||||||
|
// case RAISE:
|
||||||
|
// if (record->event.pressed) {
|
||||||
|
// layer_on(_RAISE);
|
||||||
|
// update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
// } else {
|
||||||
|
// layer_off(_RAISE);
|
||||||
|
// update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
// }
|
||||||
|
// return false;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// return true;
|
||||||
|
//}
|
||||||
|
|
||||||
@@ -72,5 +72,5 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
#
|
#
|
||||||
|
|
||||||
SLEEP_LED_ENABLE = no
|
SLEEP_LED_ENABLE = no
|
||||||
API_SYSEX_ENABLE ?= no
|
API_SYSEX_ENABLE = no
|
||||||
RGBLIGHT_ENABLE ?= yes
|
RGBLIGHT_ENABLE = yes
|
||||||
@@ -56,6 +56,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#define VISUALIZER_USER_DATA_SIZE 16
|
#define VISUALIZER_USER_DATA_SIZE 16
|
||||||
|
|
||||||
|
#define LCD_DISPLAY_NUMBER 0
|
||||||
|
#define LED_DISPLAY_NUMBER 1
|
||||||
|
|
||||||
|
#define LED_NUM_ROWS 7
|
||||||
|
#define LED_NUM_COLS 7
|
||||||
/*
|
/*
|
||||||
* Feature disable options
|
* Feature disable options
|
||||||
* These options are also useful to firmware size reduction.
|
* These options are also useful to firmware size reduction.
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
GFXINC += drivers/gdisp/emulator_lcd
|
|
||||||
GFXSRC += drivers/gdisp/emulator_lcd/emulator_lcd.c
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#define GDISP_DRIVER_VMT GDISPVMT_EMULATOR_LCD_ERGODOX
|
|
||||||
#define GDISP_HARDWARE_DRAWPIXEL TRUE
|
|
||||||
#define GDISP_HARDWARE_PIXELREAD TRUE
|
|
||||||
#define GDISP_HARDWARE_CONTROL TRUE
|
|
||||||
#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO
|
|
||||||
#define GDISP_SCREEN_WIDTH 128
|
|
||||||
#define GDISP_SCREEN_HEIGHT 32
|
|
||||||
#define ROTATE_180_IS_FLIP
|
|
||||||
|
|
||||||
#include "emulator/emulator_driver_impl.h"
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
GFXINC += drivers/gdisp/emulator_led
|
|
||||||
GFXSRC += drivers/gdisp/emulator_led/emulator_led.c
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#define GDISP_DRIVER_VMT GDISPVMT_EMULATOR_LED_ERGODOX
|
|
||||||
#define GDISP_HARDWARE_DRAWPIXEL TRUE
|
|
||||||
#define GDISP_HARDWARE_PIXELREAD TRUE
|
|
||||||
#define GDISP_HARDWARE_CONTROL TRUE
|
|
||||||
#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_MONO
|
|
||||||
#define GDISP_SCREEN_WIDTH 7
|
|
||||||
#define GDISP_SCREEN_HEIGHT 7
|
|
||||||
#define ROTATE_180_IS_FLIP
|
|
||||||
|
|
||||||
#include "emulator/emulator_driver_impl.h"
|
|
||||||
@@ -58,12 +58,12 @@ OPT_DEFS += -DCORTEX_VTOR_INIT=0x00002000
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
CUSTOM_MATRIX ?= yes # Custom matrix file
|
CUSTOM_MATRIX = yes # Custom matrix file
|
||||||
SERIAL_LINK_ENABLE = yes
|
SERIAL_LINK_ENABLE = yes
|
||||||
VISUALIZER_ENABLE ?= yes
|
VISUALIZER_ENABLE = yes
|
||||||
LCD_ENABLE ?= yes
|
LCD_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE ?= yes
|
BACKLIGHT_ENABLE = yes
|
||||||
LCD_BACKLIGHT_ENABLE ?= yes
|
LCD_BACKLIGHT_ENABLE = yes
|
||||||
MIDI_ENABLE = no
|
MIDI_ENABLE = no
|
||||||
RGBLIGHT_ENABLE = no
|
RGBLIGHT_ENABLE = no
|
||||||
|
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ void initialize_user_visualizer(visualizer_state_t* state) {
|
|||||||
start_keyframe_animation(&default_startup_animation);
|
start_keyframe_animation(&default_startup_animation);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool is_led_on(visualizer_user_data_t* user_data, uint8_t num) {
|
static inline bool is_led_on(visualizer_user_data_t* user_data, uint8_t num) {
|
||||||
return user_data->led_on & (1u << num);
|
return user_data->led_on & (1u << num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ SUBPROJECT_DEFAULT = infinity
|
|||||||
LCD_BACKLIGHT_ENABLE = yes
|
LCD_BACKLIGHT_ENABLE = yes
|
||||||
LCD_ENABLE = yes
|
LCD_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
BACKLIGHT_ENABLE = yes
|
||||||
BACKLIGHT_ENABLE = yes
|
|
||||||
NKRO_ENABLE = yes
|
NKRO_ENABLE = yes
|
||||||
TAP_DANCE_ENABLE = yes
|
TAP_DANCE_ENABLE = yes
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|LCTRL | F4 | F5 | LGUI | LALT | | Left | Down | Up | Right| RGUI |
|
|LCTRL | F4 | F5 | LGUI | LALT | | Left | Down | Up | Right| RGUI |
|
||||||
`----------------------------------' `----------------------------------'
|
`----------------------------------' `----------------------------------'
|
||||||
,-------------. ,-------------.
|
,-------------. ,-------------.
|
||||||
| Home | End | | Alt |Ctrl/Esc|
|
| Copy | Paste| | Alt |Ctrl/Esc|
|
||||||
,------|------|------| |------+--------+------.
|
,------|------|------| |------+--------+------.
|
||||||
| | | PgUp | | PgDn | | |
|
| | | PgUp | | PgDn | | |
|
||||||
| Bcksp|OSL(2)|------| |------| Ent |Space |
|
| Bcksp|OSL(2)|------| |------| Ent |Space |
|
||||||
@@ -32,23 +32,28 @@
|
|||||||
| | | | | | | F10 | | F11 | | | | | | |
|
| | | | | | | F10 | | F11 | | | | | | |
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
| | | | | | |------| |------| | | | | | |
|
| | | | | | |------| |------| | | | | | |
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|--------+------+------+------+------+------| L2 | | |------+------+------+------+------+--------|
|
||||||
| | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | |
|
||||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
| | | | | | | | | | | |
|
| | | | | | | F12 |GoToIm| FAR | | |
|
||||||
`----------------------------------' `----------------------------------'
|
`----------------------------------' `----------------------------------'
|
||||||
,-------------. ,---------------.
|
,-------------. ,---------------.
|
||||||
|Format| | | Test | DTest |
|
|Format|Build | | Test | DTest |
|
||||||
,------|------|------| |------+--------+------.
|
,------|------|------| |------+--------+------.
|
||||||
| | |Refact| | | | |
|
| | |Refact| |Sort U| | |
|
||||||
| | |------| |------| | |
|
| | |------| |------| | |
|
||||||
| | | | | | | |
|
| | | | | | | |
|
||||||
`--------------------' `----------------------'
|
`--------------------' `----------------------'
|
||||||
```
|
```
|
||||||
* Format - Visual Studio Format. Sends `CTRL + K, CTRL + D`
|
* Build - Visualt Studio Build Solution. Sends `CTRL + SHFT + B`
|
||||||
* Refact - Visual Studio Refactor. Sends `CTRL + R, R`
|
|
||||||
* Test - Visual Studio Run Test. Sends `CTRL + R, T`
|
|
||||||
* DTest - Visual Studio Debug Test. Sends `CTRL + R, CTRL + T`
|
* DTest - Visual Studio Debug Test. Sends `CTRL + R, CTRL + T`
|
||||||
|
* FAR - Visual Studio Find All References. Sends `CTRL + K, R`
|
||||||
|
* Format - Visual Studio Format. Sends `CTRL + K, CTRL + D`
|
||||||
|
* GoToIm - Visual Studio Go To Implementation. Sends `CTRL + F12`
|
||||||
|
* Refact - Visual Studio Refactor. Sends `CTRL + R, R`
|
||||||
|
* Sort U - Visual Studio Sort Usings. Sends `CTRL + R, CTRL + G`
|
||||||
|
* Test - Visual Studio Run Test. Sends `CTRL + R, T`
|
||||||
|
|
||||||
|
|
||||||
### Keymap 2: Symbol Layer
|
### Keymap 2: Symbol Layer
|
||||||
```
|
```
|
||||||
@@ -87,9 +92,9 @@
|
|||||||
| | | | Lclk | Rclk | | | | | | |
|
| | | | Lclk | Rclk | | | | | | |
|
||||||
`----------------------------------' `----------------------------------'
|
`----------------------------------' `----------------------------------'
|
||||||
,-------------. ,-------------.
|
,-------------. ,-------------.
|
||||||
| | | | Vol+ | |
|
| Back+| Back-| | Vol+ | |
|
||||||
,------|------|------| |------+------+------.
|
,------|------|------| |------+------+------.
|
||||||
| | | | | Vol- | | |
|
| | |BL_TOG| | Vol- | | |
|
||||||
| | |------| |------| PL/PS| Next |
|
| | |------| |------| PL/PS| Next |
|
||||||
| | | | | Back | | |
|
| | | | | Back | | |
|
||||||
`--------------------' `--------------------'
|
`--------------------' `--------------------'
|
||||||
@@ -100,23 +105,24 @@
|
|||||||
,--------------------------------------------------. ,--------------------------------------------------.
|
,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
| | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | |
|
||||||
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
| | | | | | | | | | | | | | | |
|
| |KOpen |KType | | | | | | | Copy | | | | Paste| |
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
| |DLeft |DRight|LShift| | |------| |------| Left | Down | Up | Right| | |
|
| |DLeft |DRight| LCTL | | |------| |------| Left | Down | Up | Right| | |
|
||||||
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
| |KOpen |KType | | | | | | | | | | | | |
|
| |SFT_TB| Tab | | | | | | | | | | | | |
|
||||||
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
`--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
| | | | | | | | | | | |
|
| | | | | | | | | | | |
|
||||||
`----------------------------------' `----------------------------------'
|
`----------------------------------' `----------------------------------'
|
||||||
,-------------. ,-------------.
|
,-------------. ,-------------.
|
||||||
| | | | | |
|
| | | | Home | End |
|
||||||
,------|------|------| |------+------+------.
|
,------|------|------| |------+------+------.
|
||||||
| | | | | | | |
|
| | | | | | | |
|
||||||
| | CTRL |------| |------| | |
|
| | LSFT |------| |------| | |
|
||||||
| | | | | | | |
|
| | | | | | | |
|
||||||
`--------------------' `--------------------'
|
`--------------------' `--------------------'
|
||||||
```
|
```
|
||||||
* DLeft - Move to the left Desktop. Sends `Ctrl + Win + Left Arrow`
|
* DLeft - Move to the left Desktop. Sends `Ctrl + Win + Left Arrow`
|
||||||
* DRight - Move to the right Desktop. Sends `Ctrl + Win + Right Arrow`
|
* DRight - Move to the right Desktop. Sends `Ctrl + Win + Right Arrow`
|
||||||
* KOpen - Opens KeePass. Sends `Ctrl + Alt + k`
|
* KOpen - Opens KeePass. Sends `Ctrl + Alt + k`
|
||||||
* KType - Autotypes KeePass password. Sends `Ctrl + Alt + a`
|
* KType - Autotypes KeePass password. Sends `Ctrl + Alt + a`
|
||||||
|
* SFT_TB - Sends `CTRL + TAB`.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
#ifndef CONFIG_H_
|
||||||
|
#define CONFIG_H_
|
||||||
|
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
#undef TAPPING_TERM
|
||||||
|
#define TAPPING_TERM 150
|
||||||
|
|
||||||
|
#define PERMISSIVE_HOLD
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -23,12 +23,17 @@ enum custom_macros {
|
|||||||
DLEFT,
|
DLEFT,
|
||||||
DRIGHT,
|
DRIGHT,
|
||||||
PSCREEN_APP,
|
PSCREEN_APP,
|
||||||
|
LSFT_TAB,
|
||||||
|
|
||||||
// VS Macros
|
// VS Macros
|
||||||
REFACTOR,
|
REFACTOR,
|
||||||
TEST,
|
TEST,
|
||||||
DEBUG_TEST,
|
DEBUG_TEST,
|
||||||
FORMAT,
|
FORMAT,
|
||||||
|
BUILD,
|
||||||
|
GO_TO_IMPL,
|
||||||
|
FIND_ALL_REF,
|
||||||
|
REMOVE_SORT_USINGS,
|
||||||
|
|
||||||
// KeePass macros
|
// KeePass macros
|
||||||
KEEPASS_OPEN,
|
KEEPASS_OPEN,
|
||||||
@@ -61,11 +66,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* |LCTRL | F4 | F5 | LGUI | LALT | | Left | Down | Up | Right| RGUI |
|
* |LCTRL | F4 | F5 | LGUI | LALT | | Left | Down | Up | Right| RGUI |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `----------------------------------' `----------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | Home | End | | Alt |Ctrl/Esc|
|
* | Copy | Paste| | Alt |Ctrl/Esc|
|
||||||
* ,------|------|------| |------+--------+------.
|
* ,------|------|------| |------+--------+------.
|
||||||
* | | | PgUp | | PgDn | | |
|
* | | | PgUp | | PgDn | | |
|
||||||
* | Bcksp|OSL(2)|------| |------| Ent |Space |
|
* | Bcksp|OSL(2)|------| |------| Ent |Space |
|
||||||
* | | | Del | |OSL(2)| | |
|
* | | | Del | | RCtrl| | |
|
||||||
* `--------------------' `----------------------'
|
* `--------------------' `----------------------'
|
||||||
*/
|
*/
|
||||||
// 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_.
|
||||||
@@ -75,20 +80,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL,
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
|
||||||
KC_ESC, KC_A, KC_S, KC_D, LT(MOVE, KC_F),KC_G,
|
KC_ESC, KC_A, KC_S, KC_D, LT(MOVE, KC_F),KC_G,
|
||||||
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(CODE),
|
OSM(MOD_LSFT), CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(CODE),
|
||||||
KC_LCTRL, KC_F4, KC_F5, KC_LGUI,KC_LALT,
|
OSM(MOD_LCTL), KC_F4, KC_F5, KC_LGUI,KC_LALT,
|
||||||
KC_HOME, KC_END,
|
LCTL(KC_C),LCTL(KC_V),
|
||||||
KC_PGUP,
|
KC_PGUP,
|
||||||
KC_BSPC,OSL(SYMB),KC_DEL,
|
KC_BSPC,OSL(SYMB), KC_DEL,
|
||||||
// right hand
|
// right hand
|
||||||
TG(CODE), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
TG(CODE), 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,
|
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
KC_H, KC_J, KC_K, KC_L, TD(TD_SEMICOLON_COLON),KC_QUOT,
|
KC_H, KC_J, KC_K, KC_L, TD(TD_SEMICOLON_COLON),KC_QUOT,
|
||||||
MO(MDIA), KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
|
MO(MDIA), KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), OSM(MOD_RSFT),
|
||||||
KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, KC_RGUI,
|
KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, KC_RGUI,
|
||||||
KC_RALT, CTL_T(KC_ESC),
|
KC_RALT, CTL_T(KC_ESC),
|
||||||
KC_PGDN,
|
KC_PGDN,
|
||||||
OSL(SYMB),KC_ENT, KC_SPC
|
KC_RCTL, KC_ENT, KC_SPC
|
||||||
),
|
),
|
||||||
/* Keymap 1: Code Layer
|
/* Keymap 1: Code Layer
|
||||||
*
|
*
|
||||||
@@ -98,15 +103,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | F10 | | F11 | | | | | | |
|
* | | | | | | | F10 | | F11 | | | | | | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | | | | | |------| |------| | | | | | |
|
* | | | | | | |------| |------| | | | | | |
|
||||||
* |--------+------+------+------+------+------|ACCESS| | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| L2 | | |------+------+------+------+------+--------|
|
||||||
* | | | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | | | |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | | | | | | | | | | | |
|
* | | | | | | | F12 |GoToIm| FAR | | |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `----------------------------------' `----------------------------------'
|
||||||
* ,-------------. ,---------------.
|
* ,-------------. ,---------------.
|
||||||
* |Format| | | Test | DTest |
|
* |Format|Build | | Test | DTest |
|
||||||
* ,------|------|------| |------+--------+------.
|
* ,------|------|------| |------+--------+------.
|
||||||
* | | |Refact| | | | |
|
* | | |Refact| |Sort U| | |
|
||||||
* | | |------| |------| | |
|
* | | |------| |------| | |
|
||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
* `--------------------' `----------------------'
|
* `--------------------' `----------------------'
|
||||||
@@ -118,20 +123,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F10,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F10,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TG(SYMB),
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
M(FORMAT), KC_TRNS,
|
M(FORMAT),M(BUILD),
|
||||||
M(REFACTOR),
|
M(REFACTOR),
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
// right hand
|
// 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_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_F12, M(GO_TO_IMPL),M(FIND_ALL_REF),KC_TRNS, KC_TRNS,
|
||||||
M(TEST), M(DEBUG_TEST),
|
M(TEST), M(DEBUG_TEST),
|
||||||
KC_TRNS,
|
M(REMOVE_SORT_USINGS),
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
/* Keymap 2: Symbol Layer
|
/* Keymap 2: Symbol Layer
|
||||||
@@ -142,7 +147,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | ! | @ | ( | ) | | |ACCESS| |ACCESS| Up | 7 | 8 | 9 | * | F12 |
|
* | | ! | @ | ( | ) | | |ACCESS| |ACCESS| Up | 7 | 8 | 9 | * | F12 |
|
||||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | # | $ | { | } | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
* | | # | $ | { | } | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
||||||
* |---------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |---------+------+------+------+------+------|ACCESS| | |------+------+------+------+------+--------|
|
||||||
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
||||||
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | EPRM | | | | | | 0 | 0 | . | = | |
|
* | EPRM | | | | | | 0 | 0 | . | = | |
|
||||||
@@ -190,9 +195,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | Lclk | Rclk | | | | | | |
|
* | | | | Lclk | Rclk | | | | | | |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `----------------------------------' `----------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | | | | Vol+ | |
|
* | Back+| Back-| | Vol+ | |
|
||||||
* ,------|------|------| |------+------+------.
|
* ,------|------|------| |------+------+------.
|
||||||
* | | | | | Vol- | | |
|
* | | |BackTg| | Vol- | | |
|
||||||
* | | |------| |------| PL/PS| Next |
|
* | | |------| |------| PL/PS| Next |
|
||||||
* | | | | | Back | | |
|
* | | | | | Back | | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
@@ -204,8 +209,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
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,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
|
||||||
KC_TRNS, KC_TRNS,
|
BL_INC, BL_DEC,
|
||||||
KC_TRNS,
|
BL_TOGG,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
// right hand
|
// 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,
|
||||||
@@ -222,39 +227,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | | | | | | | | | | | | | | | |
|
* | | | | | | | | | | | | | | | |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | | | | | | | | | | | | | | | |
|
* | |KOpen |KType | | | | | | | Copy | | | | Paste| |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | |DLeft |DRight|LShift|ACCESS| |------| |------| Left | Down | Up | Right| | |
|
* | |DLeft |DRight|LCTRL |ACCESS| |------| |------| Left | Down | Up | Right| | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | |KOpen |KType | | | | | | | | | | | | |
|
* | |SFT_TB| TAB | | | | | | | | | | | | |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | | | | | | | | | | | |
|
* | | | | | | | | | | | |
|
||||||
* `----------------------------------' `----------------------------------'
|
* `----------------------------------' `----------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | | | | | |
|
* | | | | Home | End |
|
||||||
* ,------|------|------| |------+------+------.
|
* ,------|------|------| |------+------+------.
|
||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
* | | CTRL |------| |------| | |
|
* | |LSHIFT|------| |------| | |
|
||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
// MEDIA AND MOUSE
|
// MEDIA AND MOUSE
|
||||||
[MOVE] = KEYMAP(
|
[MOVE] = KEYMAP(
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, M(DLEFT), M(DRIGHT), KC_LSFT, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, M(KEEPASS_OPEN),M(KEEPASS_TYPE),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, M(KEEPASS_OPEN),M(KEEPASS_TYPE),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, M(DLEFT), M(DRIGHT), KC_LCTL, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, M(LSFT_TAB), KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
KC_TRNS, KC_LCTRL,KC_TRNS,
|
KC_TRNS, KC_LSFT, KC_TRNS,
|
||||||
// right hand
|
// 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_TRNS, KC_TRNS,
|
KC_TRNS, LCTL(KC_C),KC_TRNS, KC_TRNS, KC_TRNS, LCTL(KC_V),KC_TRNS,
|
||||||
KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_TRNS, KC_TRNS,
|
KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS,
|
KC_HOME, KC_END,
|
||||||
KC_TRNS,
|
KC_TRNS,
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
|
||||||
@@ -291,9 +296,13 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|||||||
break;
|
break;
|
||||||
case PSCREEN_APP:
|
case PSCREEN_APP:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
return MACRO(D(LALT), T(PSCR), U(LALT));
|
return MACRO(D(LALT), T(PSCR), U(LALT), END);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case LSFT_TAB:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(D(LSFT), T(TAB), U(LSFT), END);
|
||||||
|
}
|
||||||
case REFACTOR:
|
case REFACTOR:
|
||||||
if (record->event.pressed) { // VS Refactor CTRL+R, R
|
if (record->event.pressed) { // VS Refactor CTRL+R, R
|
||||||
return MACRO(D(LCTL), T(R), U(LCTL), T(R), END);
|
return MACRO(D(LCTL), T(R), U(LCTL), T(R), END);
|
||||||
@@ -314,6 +323,26 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
|||||||
return MACRO(D(LCTL), T(K), T(D), U(LCTL), END);
|
return MACRO(D(LCTL), T(K), T(D), U(LCTL), END);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case BUILD:
|
||||||
|
if (record->event.pressed) { // VS Build. Sends CTRL+SHFT+B
|
||||||
|
return MACRO(D(LCTL), D(LSFT), T(B), U(LSFT), U(LCTL), END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GO_TO_IMPL:
|
||||||
|
if (record->event.pressed) { // VS Go To Implementation. Sends CTRL+F12
|
||||||
|
return MACRO(D(LCTL), T(F12), U(LCTL), END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case FIND_ALL_REF:
|
||||||
|
if (record->event.pressed) { // VS Find All References. Sends CTRL+K, R
|
||||||
|
return MACRO(D(LCTL), T(K), U(LCTL), T(R), END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case REMOVE_SORT_USINGS:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
return MACRO(D(LCTL), T(R), T(G), U(LCTL), END);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case KEEPASS_OPEN:
|
case KEEPASS_OPEN:
|
||||||
if (record->event.pressed) { // Keepass open application
|
if (record->event.pressed) { // Keepass open application
|
||||||
return MACRO(D(LCTL), D(LALT), T(K), U(LALT), U(LCTL), END);
|
return MACRO(D(LCTL), D(LALT), T(K), U(LALT), U(LCTL), END);
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
BOOTMAGIC_ENABLE=no
|
BOOTMAGIC_ENABLE=no
|
||||||
COMMAND_ENABLE=no
|
COMMAND_ENABLE=no
|
||||||
SLEEP_LED_ENABLE=no
|
SLEEP_LED_ENABLE=no
|
||||||
FORCE_NKRO ?= yes
|
FORCE_NKRO = yes
|
||||||
DEBUG_ENABLE = no
|
DEBUG_ENABLE = no
|
||||||
CONSOLE_ENABLE = no
|
CONSOLE_ENABLE = no
|
||||||
TAP_DANCE_ENABLE = yes
|
TAP_DANCE_ENABLE = yes
|
||||||
KEYLOGGER_ENABLE ?= yes
|
KEYLOGGER_ENABLE = yes
|
||||||
UCIS_ENABLE = yes
|
UCIS_ENABLE = yes
|
||||||
MOUSEKEY_ENABLE = no
|
MOUSEKEY_ENABLE = no
|
||||||
|
|
||||||
AUTOLOG_ENABLE ?= no
|
AUTOLOG_ENABLE = no
|
||||||
|
|
||||||
ifeq (${FORCE_NKRO},yes)
|
ifeq (${FORCE_NKRO},yes)
|
||||||
OPT_DEFS += -DFORCE_NKRO
|
OPT_DEFS += -DFORCE_NKRO
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
BOOTMAGIC_ENABLE=no
|
BOOTMAGIC_ENABLE=no
|
||||||
COMMAND_ENABLE=no
|
COMMAND_ENABLE=no
|
||||||
SLEEP_LED_ENABLE=no
|
SLEEP_LED_ENABLE=no
|
||||||
FORCE_NKRO ?= yes
|
FORCE_NKRO = yes
|
||||||
DEBUG_ENABLE = no
|
DEBUG_ENABLE = no
|
||||||
CONSOLE_ENABLE = no
|
CONSOLE_ENABLE = no
|
||||||
TAP_DANCE_ENABLE = no
|
TAP_DANCE_ENABLE = no
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
|
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # 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
|
|
||||||
MIDI_ENABLE ?= yes
|
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
TAP_DANCE_ENABLE=yes
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
# ErgoDox Familiar Layout
|
# ErgoDox Familiar Layout
|
||||||
Familiar layout for those who regularly switch back and forth from ErgoDox to regular QWERTY.
|
Familiar layout for those who regularly switch back and forth from ErgoDox to "normal" QWERTY.
|
||||||
|
|
||||||
[](../../../../license_GPLv3.md../../../../license_GPLv3.md) [](https://github.com/RichardLitt/standard-readme)
|
[](../../../../license_GPLv3.md../../../../license_GPLv3.md) [](https://github.com/RichardLitt/standard-readme)
|
||||||
|
|
||||||
@@ -23,12 +23,12 @@ Key features of the familiar layout:
|
|||||||
1. QWERTY default layout.
|
1. QWERTY default layout.
|
||||||
1. International symbols layer, mapped in the US-International layout default positions, through [UCIS](https://github.com/qmk/qmk_firmware/wiki/Unicode-and-additional-language-support#ucis_enable).
|
1. International symbols layer, mapped in the US-International layout default positions, through [UCIS](https://github.com/qmk/qmk_firmware/wiki/Unicode-and-additional-language-support#ucis_enable).
|
||||||
1. Numpad layer on right hand.
|
1. Numpad layer on right hand.
|
||||||
1. Thumb cluster holds spacebar, ALT, and access to secondary layers.
|
1. Thumb cluster holds spacebar and access to secondary layers.
|
||||||
1. Function-layer arrow keys in both the first-person-shooter (actually ESDF instead of WASD) and vim (HJKL) locations.
|
1. Function-layer arrow keys in both the first-person-shooter (actually ESDF instead of WASD) and vim (HJKL) locations.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
If you are on Windows or Mac, choose the proper line in [`keymap.c`](keymap.c) for [unicode/international character support](https://github.com/qmk/qmk_firmware/wiki/Unicode-and-additional-language-support#ucis_enable) (starts at line 235).
|
If you are on Windows or Mac, choose the proper line in [`keymap.c`](keymap.c) for [unicode/international character support](https://github.com/qmk/qmk_firmware/wiki/Unicode-and-additional-language-support#ucis_enable) (starts at line 253).
|
||||||
```c
|
```c
|
||||||
void matrix_init_user(void) {
|
void matrix_init_user(void) {
|
||||||
set_unicode_input_mode(UC_LNX); // Linux
|
set_unicode_input_mode(UC_LNX); // Linux
|
||||||
@@ -45,13 +45,13 @@ $ make ergodox-ez-familiar-teensy
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
[](http://www.keyboard-layout-editor.com/#/gists/13508a9f99cff381d58b7be6f7dcc644)
|
[](https://gist.github.com/nstickney/13508a9f99cff381d58b7be6f7dcc644)
|
||||||
|
|
||||||
### Layers
|
### Layers
|
||||||
1. Base Layer: QWERTY, with arrow keys at bottom right.
|
1. Base Layer: QWERTY, with arrow keys at bottom right.
|
||||||
1. UCIS Layer: US-International symbols layer, plus —. Accessed by toggling the `INTL` layer using the UCIS key (bottom of left thumb cluster).
|
1. UCIS Layer: US-International symbols layer, plus —. Accessed by toggling the `SYMB` layer using the UCIS key (bottom of left thumb cluster).
|
||||||
1. UCIS-Shifted Layer: Making shift work for UCIS characters. An ugly workaround. Any ideas? Accessed through holding shift while the UCIS layer is active (toggles the `INSF` layer).
|
1. UCIS-Shifted Layer: Making shift work for UCIS characters. An ugly workaround. Any ideas? Accessed by holding shift while the `SYMB` layer is active (toggles the `CSYM` layer).
|
||||||
1. Numpad Layer: Right hand number pad. Accessed by toggling the `NUMP` layer using the NPAD key (bottom of right thumb cluster).
|
1. Numpad Layer: Right hand number pad. Accessed by toggling the `NUMP` layer using the NUMP key (bottom of right thumb cluster).
|
||||||
1. Function Layer: F1-F12, arrows on ESDF and HJKL, media player controls. Accessed by holding either FN key (center key of each thumb cluster), which toggles the `ARRW` layer. I know, I need to work on my naming conventions.
|
1. Function Layer: F1-F12, arrows on ESDF and HJKL, media player controls. Accessed by holding either FN key (center key of each thumb cluster), which toggles the `ARRW` layer. I know, I need to work on my naming conventions.
|
||||||
|
|
||||||
## Contribute
|
## Contribute
|
||||||
@@ -61,9 +61,9 @@ $ make ergodox-ez-familiar-teensy
|
|||||||
I'm terrible at this; I have no background in human-computer interaction, kinesiology, or keyboard-ology. Please send comments/issues/pull requests/angry tweets/etc. If you think there is a better way to take advantage of the ErgoDox/QMK comination without straying far from 84/101-key QWERTY, I want to know it.
|
I'm terrible at this; I have no background in human-computer interaction, kinesiology, or keyboard-ology. Please send comments/issues/pull requests/angry tweets/etc. If you think there is a better way to take advantage of the ErgoDox/QMK comination without straying far from 84/101-key QWERTY, I want to know it.
|
||||||
|
|
||||||
### Issues
|
### Issues
|
||||||
1. The top two keys of the right thumb cluster are currently unused. I wanted them for screen brightness, but I haven't found a solution I like.
|
1. The `CSYM` layer is an ugly workaround. I should write a function for doing different things in the `SYMB` layer depending on whether SHIFT is being held. Or something. Ideas?
|
||||||
1. The `'`, `"`, `[`, and `]` keys are terrible to access; I want to put them somewhere else but I haven't figured out where.
|
1. Right now, the thumb cluster function keys double as slash and whack... this really isnt a great solution.
|
||||||
1. The `INSF` layer is an ugly workaround. I should write a function for doing different things in the `INTL` layer depending on whether SHIFT is being held. Or something. Ideas?
|
1. `MENU` and `LEAD` are useless, at the moment.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
QMK is licensed ([mostly](https://github.com/qmk/qmk_firmware/issues/1038)) under the [GPLv2](blob/master/license_GPLv2.md). Accordingly, to whatever extent applicable, this keymap is licensed under the [GPLv3](../../../../license_GPLv3.md).
|
QMK is licensed ([mostly](https://github.com/qmk/qmk_firmware/issues/1038)) under the [GPLv2](blob/master/license_GPLv2.md). Accordingly, to whatever extent applicable, this keymap is licensed under the [GPLv3](../../../../license_GPLv3.md).
|
||||||
@@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
// Layers
|
// Layers
|
||||||
#define BASE 0 // default layer
|
#define BASE 0 // default layer
|
||||||
#define INTL 1 // international symbols
|
#define SYMB 1 // international symbols
|
||||||
#define INSF 2 // international symbols shifted
|
#define CSYM 2 // international symbols shifted
|
||||||
#define NUMP 3 // numpad
|
#define NUMP 3 // numpad
|
||||||
#define ARRW 4 // function, media, arrow keys
|
#define ARRW 4 // function, media, arrow keys
|
||||||
|
|
||||||
@@ -14,63 +14,81 @@
|
|||||||
#define _______ KC_TRNS
|
#define _______ KC_TRNS
|
||||||
#define XXXXXXX KC_NO
|
#define XXXXXXX KC_NO
|
||||||
|
|
||||||
|
// Tap Dancing
|
||||||
|
void dance_lock (qk_tap_dance_state_t *state, void *user_data) {
|
||||||
|
if (state->count == 1) { // Press once for NUMLOCK
|
||||||
|
register_code (KC_NLCK);
|
||||||
|
unregister_code (KC_NLCK);
|
||||||
|
} else if (state->count == 2) { // Press twice for CAPSLOCK
|
||||||
|
register_code (KC_CAPS);
|
||||||
|
unregister_code (KC_CAPS);
|
||||||
|
} else if (state->count == 3) { //Press thrice for SCROLLLOCK
|
||||||
|
register_code (KC_SLCK);
|
||||||
|
unregister_code (KC_SLCK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
enum {LOCKS = 0};
|
||||||
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
|
[LOCKS] = ACTION_TAP_DANCE_FN(dance_lock)
|
||||||
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
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_*
|
||||||
/* layer 0 : default
|
/* layer 0 : default
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | BCKSPC |
|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | BCKSPC |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | TAB | Q | W | E | R | T | HOME | | PGUP | Y | U | I | O | P | DELETE |
|
* | TAB | Q | W | E | R | T | HOME | | PGUP | Y | U | I | O | P | DELETE |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | ` | A | S | D | F | G |------| |------| H | J | K | L | ; | ENTER |
|
* | ' | A | S | D | F | G |------| |------| H | J | K | L | ; | ENTER |
|
||||||
* |--------+------+------+------+------+------| END | | PGDN |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| END | | PGDN |------+------+------+------+------+--------|
|
||||||
* | (/LSFT | Z | X | C | V | B | | | | N | M | , | . | UP | )/RSFT |
|
* | (/LSFT | Z | X | C | V | B | | | | N | M | , | . | UP | )/RSFT |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | LCTRL | LGUI | MENU | ' | " | | [ | ] | LEFT | DOWN | RIGHT |
|
* | LCTRL | LGUI | MENU | LEAD | LALT | |[/RALT|]/RCTL| LEFT | DOWN | RIGHT |
|
||||||
* `------------------------------------' `------------------------------------'
|
* `------------------------------------' `------------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | VOL- | VOL+ | | | |
|
* |PRTSCR| ESC | | VOL- | VOL+ |
|
||||||
* ,------|------|------| |------+------+------.
|
* ,------|------|------| |------+------+------.
|
||||||
* | SPC/ |SLASH/| MUTE | |NUMLCK|WHACK/| SPC/ |
|
* | |SLASH/| LOCKS| | MUTE |WHACK/| |
|
||||||
* | ALT | MO(1)|------| |------|MO(1) | ALT |
|
* | SPC | MO(4)|------| |------|MO(4) | SPC |
|
||||||
* | | | LAY3 | | LAY2 | | |
|
* | | | TO(1)| |TO(3) | | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
[BASE] = KEYMAP(
|
[BASE] = KEYMAP(
|
||||||
// left hand
|
// left hand
|
||||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME,
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME,
|
||||||
KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G,
|
KC_QUOT, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||||
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END,
|
KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END,
|
||||||
KC_LCTL, KC_LGUI, KC_MENU, KC_QUOT, S(KC_QUOT),
|
KC_LCTL, KC_LGUI, KC_MENU, KC_LEAD, KC_LALT,
|
||||||
KC_VOLD, KC_VOLU,
|
KC_PSCR, KC_ESC,
|
||||||
KC_MUTE,
|
TD(LOCKS),
|
||||||
ALT_T(KC_SPC), LT(ARRW,KC_SLSH), TG(INTL),
|
KC_SPC, LT(ARRW, KC_SLSH), TG(SYMB),
|
||||||
// right hand
|
// right hand
|
||||||
KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||||
KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
|
KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
|
||||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENTER,
|
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENTER,
|
||||||
KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSPC,
|
KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSPC,
|
||||||
KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN, KC_RGHT,
|
MT(MOD_RALT, KC_LBRC), MT(MOD_RCTL, KC_RBRC), KC_LEFT, KC_DOWN, KC_RGHT,
|
||||||
_______, _______,
|
KC_VOLD, KC_VOLU,
|
||||||
KC_NLCK,
|
KC_MUTE,
|
||||||
TG(NUMP), LT(ARRW,KC_BSLS), ALT_T(KC_SPC)
|
TG(NUMP), LT(ARRW, KC_BSLS), KC_SPC
|
||||||
),
|
),
|
||||||
|
|
||||||
/* layer 1: International symbols, etc
|
/* layer 1: International symbols, etc
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | ´ | ¡ | ² | ³ | ¤ | € | ¼ | | ½ | ¾ | ‘ | ’ | ¥ | × | |
|
* | | ¡ | ² | ³ | ¤ | € | ¼ | | ½ | ¾ | ‘ | ’ | ¥ | × | |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | | ä | å | é | ® | þ | | | | ü | ú | í | ó | ö | |
|
* | | ä | å | é | ® | þ | | | | ü | ú | í | ó | ö | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | á | ß | ð | | |------| |------| | | | ø | ¶ | |
|
* | ´ | á | ß | ð | | |------| |------| | | | ø | ¶ | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* |MO(INSF)| æ | | © | | | | | | ñ | µ | ç | | |MO(INSF)|
|
* |MO(CSYM)| æ | ¿ | © | ¬ | | | | | ñ | µ | ç | | |MO(CSYM)|
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | | | | ¬ | ¿ | | « | » | | | |
|
* | | | | | | | « | » | | | |
|
||||||
* `------------------------------------' `------------------------------------'
|
* `------------------------------------' `------------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | | | | | |
|
* | | | | | |
|
||||||
@@ -80,13 +98,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
[INTL] = KEYMAP(
|
[SYMB] = KEYMAP(
|
||||||
// left hand
|
// left hand
|
||||||
UC(0x00B4), UC(0x00A1), UC(0x00B2), UC(0x00B3), UC(0x00A4), UC(0x20AC), UC(0x00BC),
|
_______, UC(0x00A1), UC(0x00B2), UC(0x00B3), UC(0x00A4), UC(0x20AC), UC(0x00BC),
|
||||||
_______, UC(0x00E4), UC(0x00E5), UC(0x00E9), UC(0x00AE), UC(0x00FE), _______,
|
_______, UC(0x00E4), UC(0x00E5), UC(0x00E9), UC(0x00AE), UC(0x00FE), _______,
|
||||||
_______, UC(0x00E1), UC(0x00DF), UC(0x00F0), _______, _______,
|
UC(0x00B4), UC(0x00E1), UC(0x00DF), UC(0x00F0), _______, _______,
|
||||||
MO(INSF), UC(0x00E6), _______, UC(0x00A9), _______, _______, _______,
|
MO(CSYM), UC(0x00E6), UC(0x00BF), _______, UC(0x00AC), UC(0x00A9), _______,
|
||||||
_______, _______, _______, UC(0x00AC), UC(0x00BF),
|
_______, _______, _______, _______, _______,
|
||||||
_______, _______,
|
_______, _______,
|
||||||
_______,
|
_______,
|
||||||
_______, _______, _______,
|
_______, _______, _______,
|
||||||
@@ -94,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
UC(0x00BD), UC(0x00BE), UC(0x2018), UC(0x2019), UC(0x00A5), UC(0x00D7), _______,
|
UC(0x00BD), UC(0x00BE), UC(0x2018), UC(0x2019), UC(0x00A5), UC(0x00D7), _______,
|
||||||
_______, UC(0x00FC), UC(0x00FA), UC(0x00ED), UC(0x00F3), UC(0x00F6), _______,
|
_______, UC(0x00FC), UC(0x00FA), UC(0x00ED), UC(0x00F3), UC(0x00F6), _______,
|
||||||
_______, _______, _______, UC(0x00F8), UC(0x00B6), _______,
|
_______, _______, _______, UC(0x00F8), UC(0x00B6), _______,
|
||||||
_______, UC(0x00F1), UC(0x00B5), UC(0x00E7), _______, _______, MO(INSF),
|
_______, UC(0x00F1), UC(0x00B5), UC(0x00E7), _______, _______, MO(CSYM),
|
||||||
UC(0x00AB), UC(0x00BB), _______, _______, _______,
|
UC(0x00AB), UC(0x00BB), _______, _______, _______,
|
||||||
_______, _______,
|
_______, _______,
|
||||||
_______,
|
_______,
|
||||||
@@ -106,15 +124,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* which don't produce an "upper case" or "shifted" international symobol.
|
* which don't produce an "upper case" or "shifted" international symobol.
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | ¨ | ¹ | | | £ | | | | | | | | — | ÷ | |
|
* | | ¹ | | | £ | | | | | | | | — | ÷ | |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | | Ä | Å | É | | Þ | | | | Ü | Ú | Í | Ó | Ö | |
|
* | | Ä | Å | É | | Þ | | | | Ü | Ú | Í | Ó | Ö | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | Á | § | Ð | | |------| |------| | | | Ø | ° | |
|
* | ¨ | Á | § | Ð | | |------| |------| | | | Ø | ° | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | Æ | | ¢ | | | | | | Ñ | | Ç | | | |
|
* | | Æ | | ¢ | ¦ | | | | | Ñ | | Ç | | | |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | | | | ¦ | | | | | | | |
|
* | | | | | | | “ | ” | | | |
|
||||||
* `------------------------------------' `------------------------------------'
|
* `------------------------------------' `------------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | | | | | |
|
* | | | | | |
|
||||||
@@ -124,13 +142,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
*/
|
*/
|
||||||
[INSF] = KEYMAP(
|
[CSYM] = KEYMAP(
|
||||||
// left hand
|
// left hand
|
||||||
UC(0x00A8), UC(0x00B9), _______, _______, UC(0x00A3), _______, _______,
|
_______, UC(0x00B9), _______, _______, UC(0x00A3), _______, _______,
|
||||||
_______, UC(0x00C4), UC(0x00C5), UC(0x00C9), _______, UC(0x00DE), _______,
|
_______, UC(0x00C4), UC(0x00C5), UC(0x00C9), S(KC_R), UC(0x00DE), _______,
|
||||||
_______, UC(0x00C1), UC(0x00A7), UC(0x00D0), S(KC_F), S(KC_G),
|
UC(0x00A8), UC(0x00C1), UC(0x00A7), UC(0x00D0), S(KC_F), S(KC_G),
|
||||||
_______, UC(0x00C6), S(KC_X), UC(0x00A2), S(KC_V), S(KC_B), _______,
|
_______, UC(0x00C6), UC(0x00A6), UC(0x00A2), S(KC_V), S(KC_B), _______,
|
||||||
_______, _______, _______, UC(0x00A6), _______,
|
_______, _______, _______, _______, _______,
|
||||||
_______, _______,
|
_______, _______,
|
||||||
_______,
|
_______,
|
||||||
_______, _______, _______,
|
_______, _______, _______,
|
||||||
@@ -139,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
_______, UC(0x00DC), UC(0x00DA), UC(0x00CD), UC(0x00D3), UC(0x00D6), _______,
|
_______, UC(0x00DC), UC(0x00DA), UC(0x00CD), UC(0x00D3), UC(0x00D6), _______,
|
||||||
S(KC_H), S(KC_J), S(KC_K), UC(0x00D8), UC(0x00B0), _______,
|
S(KC_H), S(KC_J), S(KC_K), UC(0x00D8), UC(0x00B0), _______,
|
||||||
_______, UC(0x00D1), _______, UC(0x00C7), S(KC_DOT), _______, _______,
|
_______, UC(0x00D1), _______, UC(0x00C7), S(KC_DOT), _______, _______,
|
||||||
_______, _______, _______, _______, _______,
|
UC(0x201C), UC(0x201D), _______, _______, _______,
|
||||||
_______, _______,
|
_______, _______,
|
||||||
_______,
|
_______,
|
||||||
_______, _______, _______
|
_______, _______, _______
|
||||||
@@ -156,7 +174,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | | | | | | | | | | | 1 | 2 | 3 | = | |
|
* | | | | | | | | | | | 1 | 2 | 3 | = | |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | | | | | | | 0 | . | , | ENTER| |
|
* | | | | | | |0/RALT|./RCTL| , | ENTER| |
|
||||||
* `------------------------------------' `------------------------------------'
|
* `------------------------------------' `------------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | | | | | |
|
* | | | | | |
|
||||||
@@ -181,7 +199,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
_______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______,
|
_______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______,
|
||||||
_______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______,
|
_______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______,
|
||||||
_______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PEQL, _______,
|
_______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PEQL, _______,
|
||||||
KC_KP_0, KC_KP_DOT, KC_PCMM, KC_PENT, _______,
|
MT(MOD_RALT, KC_KP_0), MT(MOD_RCTL, KC_KP_DOT),KC_PCMM, KC_PENT, _______,
|
||||||
_______, _______,
|
_______, _______,
|
||||||
_______,
|
_______,
|
||||||
_______, _______, _______
|
_______, _______, _______
|
||||||
@@ -191,20 +209,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
* This layer is at the top so that the functions still work no matter what layers are active.
|
* This layer is at the top so that the functions still work no matter what layers are active.
|
||||||
*
|
*
|
||||||
* ,--------------------------------------------------. ,--------------------------------------------------.
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
* | ESCAPE | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | SYSREQ |
|
* | ESCAPE | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | |
|
||||||
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
* | | | | UP | | | | | | | | | | | INSERT |
|
* | | | | UP | | | | | | | | | | | INSERT |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* |CAPSLOCK| | LEFT | DOWN |RIGHT | |------| |------| LEFT | DOWN | UP | RIGHT| | |
|
* | | | LEFT | DOWN |RIGHT | |------| |------| LEFT | DOWN | UP | RIGHT| | |
|
||||||
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
* | |M_PREV|M_STOP|M_PLPS|M_NEXT| | | | | | | | | PGUP | |
|
* | |M_PREV|M_STOP|M_PLPS|M_NEXT| | | | | | | | | PGUP | |
|
||||||
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
* | | | | | | | | | HOME | PGDN | END |
|
* | | | | | | | | | HOME | PGDN | END |
|
||||||
* `------------------------------------' `------------------------------------'
|
* `------------------------------------' `------------------------------------'
|
||||||
* ,-------------. ,-------------.
|
* ,-------------. ,-------------.
|
||||||
* | | PAUSE| | | |
|
* | SYSRQ| PAUSE| | | |
|
||||||
* ,------|------|------| |------+------+------.
|
* ,------|------|------| |------+------+------.
|
||||||
* | | | | |SCRLK | | |
|
* | | | | | | | |
|
||||||
* | | |------| |------| | |
|
* | | |------| |------| | |
|
||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
* `--------------------' `--------------------'
|
* `--------------------' `--------------------'
|
||||||
@@ -213,20 +231,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
// left hand
|
// left hand
|
||||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
|
||||||
_______, _______, _______, KC_UP, _______, _______, _______,
|
_______, _______, _______, KC_UP, _______, _______, _______,
|
||||||
KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
|
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
|
||||||
_______, _______, _______, _______, _______, _______, _______,
|
_______, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, _______, _______,
|
||||||
_______, _______, _______, _______, _______,
|
_______, _______, _______, _______, _______,
|
||||||
_______, KC_PAUSE,
|
KC_SYSREQ, KC_PAUSE,
|
||||||
_______,
|
_______,
|
||||||
_______, _______, _______,
|
_______, _______, _______,
|
||||||
// right hand
|
// right hand
|
||||||
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_SYSREQ,
|
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
|
||||||
_______, _______, _______, _______, _______, _______, KC_INS,
|
_______, _______, _______, _______, _______, _______, KC_INS,
|
||||||
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
||||||
_______, _______, _______, _______, _______, KC_PGUP, _______,
|
_______, _______, _______, _______, _______, KC_PGUP, _______,
|
||||||
_______, _______, KC_HOME, KC_PGDN, KC_END,
|
_______, _______, KC_HOME, KC_PGDN, KC_END,
|
||||||
_______, _______,
|
_______, _______,
|
||||||
KC_SLCK,
|
_______,
|
||||||
_______, _______, _______
|
_______, _______, _______
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
@@ -249,8 +267,8 @@ void matrix_scan_user(void) {
|
|||||||
ergodox_right_led_2_off();
|
ergodox_right_led_2_off();
|
||||||
ergodox_right_led_3_off();
|
ergodox_right_led_3_off();
|
||||||
switch (layer) {
|
switch (layer) {
|
||||||
case INTL:
|
case SYMB:
|
||||||
case INSF:
|
case CSYM:
|
||||||
ergodox_right_led_1_on();
|
ergodox_right_led_1_on();
|
||||||
break;
|
break;
|
||||||
case NUMP:
|
case NUMP:
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
RGBLIGHT_ENABLE ?= yes
|
|
||||||
MIDI_ENABLE ?= yes
|
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
endif
|
endif
|
||||||
Binary file not shown.
@@ -0,0 +1,247 @@
|
|||||||
|
/* Copyright 2017 Andreas Lindhé
|
||||||
|
*
|
||||||
|
* 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 "ergodox.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "version.h"
|
||||||
|
#include "keymap_swedish.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
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | ½ | ! | " | # | # | % | LEFT | | RIGHT| & | / | ( | ) | = | ? |
|
||||||
|
* | § | 1 | 2 @ | 3 £ | 4 $ | 5 | | | | 6 | 7 { | 8 [ | 9 ] | 0 } | + \ |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | Delete | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | Å |
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | Caps | A | S | D | F | G |------| |------| H | J | K | L |Ö / L2|Ä / Cmd |
|
||||||
|
* | Lock | | | | | | Hyper| | Meh | | | | | | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | Left |Z/Ctrl| X | C | V | B | | | | N | M | ; | : |_/Ctrl| RShift |
|
||||||
|
* | Shift | | | | | | | | | | | , | . |- | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | '/L1 | ` |AltShf| Left | Right| | Up | Down | ^ | * | ~L1 |
|
||||||
|
* | | ' | | | | | | | | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,---------------.
|
||||||
|
* | App | LGui | | AltGr|Ctrl/Esc|
|
||||||
|
* ,------|------|------| |------+--------+------.
|
||||||
|
* | | | Home | | PgUp | | |
|
||||||
|
* | Space|Back- |------| |------| Tab |Enter |
|
||||||
|
* | |space | End | | PgDn | | |
|
||||||
|
* `--------------------' `----------------------'
|
||||||
|
*/
|
||||||
|
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
||||||
|
// Otherwise, it needs KC_*
|
||||||
|
[BASE] = KEYMAP( // layer 0 : default
|
||||||
|
// left hand
|
||||||
|
NO_HALF, 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,NO_APOS), NO_ACUT, 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, NO_PLUS,
|
||||||
|
TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, NO_AA,
|
||||||
|
KC_H, KC_J, KC_K, KC_L, LT(MDIA, NO_OSLH), GUI_T(NO_AE),
|
||||||
|
MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(NO_MINS), KC_RSFT,
|
||||||
|
KC_UP, KC_DOWN, NO_CIRC, NO_ASTR, KC_FN1,
|
||||||
|
NO_ALGR, 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 | \ | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | . | 0 | = | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* |Animat| | |Toggle|Solid |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* |Bright|Bright| | | |Hue- |Hue+ |
|
||||||
|
* |ness- |ness+ |------| |------| | |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// SYMBOLS
|
||||||
|
[SYMB] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||||
|
KC_TRNS,KC_EXLM,NO_AT, NO_LCBR,NO_RCBR,NO_PIPE,KC_TRNS,
|
||||||
|
KC_TRNS,KC_HASH,NO_DLR, NO_LPRN,NO_RPRN,NO_GRV,
|
||||||
|
KC_TRNS,KC_PERC,NO_CIRC,NO_LBRC,NO_RBRC,NO_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, NO_ASTR, KC_F12,
|
||||||
|
KC_DOWN, KC_4, KC_5, KC_6, NO_PLUS, KC_TRNS,
|
||||||
|
KC_TRNS, NO_AMPR, KC_1, KC_2, KC_3, NO_MINS, KC_TRNS,
|
||||||
|
KC_TRNS,KC_DOT, KC_0, NO_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] = KEYMAP(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_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,36 @@
|
|||||||
|
# Swedish (sv_SE) Qwerty layout for ErgoDox EZ, based on the Default configuration
|
||||||
|
|
||||||
|
*NOTE:* it might still be desirable to set the software layout to sv_SE in your
|
||||||
|
OS.
|
||||||
|
|
||||||
|
Remind me and I'll provide a picture of the layout.
|
||||||
|
|
||||||
|
I have tried making this as close of a match I could between the [default
|
||||||
|
ErgoDox EZ configuration](https://ergodox-ez.com/pages/our-firmware) and a
|
||||||
|
standard Swedish Qwerty layout.
|
||||||
|
|
||||||
|
## Notable differences from default:
|
||||||
|
|
||||||
|
* There are three special character buttons (acute accent, circumflex/tilde and
|
||||||
|
apostrophe/asterisk) that don't have any buttons to map to naturally. I've put
|
||||||
|
these at other places:
|
||||||
|
|
||||||
|
* Acute accent (´) can be found in the lower left corner, conveniently
|
||||||
|
placed to reach for making an é.
|
||||||
|
|
||||||
|
* Apostrophe (') was put in the lower left corner, close to acute accent.
|
||||||
|
|
||||||
|
* Circumflex (^) and asterisk (*) was placed in the lower right corner.
|
||||||
|
|
||||||
|
* Tilde (~) and diaeresis (¨) I couldn't find a good place for, so I left
|
||||||
|
those out. I could only get the buttons to produce a single one of the
|
||||||
|
characters. How can I get it to work properly?
|
||||||
|
|
||||||
|
* The Alt button on right thumb was exchanged for AltGr (RAlt).
|
||||||
|
|
||||||
|
* I changed the backslash in the numpad (layer 1) for a minus. Thought it was
|
||||||
|
more sensible.
|
||||||
|
|
||||||
|
* I didn't find a good place for the "<>|" button, so that one was left out.
|
||||||
|
That is a problem that really needs to be resolved. Pipe can be found on layer
|
||||||
|
one, however.
|
||||||
@@ -94,7 +94,7 @@ To flash with ´teensy-loader-cli´:
|
|||||||
|
|
||||||
- Build the firmware with `make keymapname`, for example `make default`
|
- Build the firmware with `make keymapname`, for example `make default`
|
||||||
|
|
||||||
- Run ´<path/to/>teensy_loader_cli --mcu=atmega32u4 -w ergodox_ez_<keymap>.hex´
|
- 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
|
- Press the Reset button by inserting a paperclip gently into the reset hole
|
||||||
in the top right corder.
|
in the top right corder.
|
||||||
|
|||||||
+10
-10
@@ -16,13 +16,13 @@
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ
|
CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ
|
||||||
SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
|
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
|
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
|
UNICODE_ENABLE = yes # Unicode
|
||||||
ONEHAND_ENABLE ?= yes # Allow swapping hands of keyboard
|
ONEHAND_ENABLE = yes # Allow swapping hands of keyboard
|
||||||
@@ -51,21 +51,21 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
|
|
||||||
CUSTOM_MATRIX = yes
|
CUSTOM_MATRIX = yes
|
||||||
SRC += matrix.c
|
SRC += matrix.c
|
||||||
+21
-7
@@ -1,25 +1,39 @@
|
|||||||
#include "gh60.h"
|
#include "gh60.h"
|
||||||
|
|
||||||
|
|
||||||
|
extern inline void gh60_caps_led_on(void);
|
||||||
|
extern inline void gh60_poker_leds_on(void);
|
||||||
|
extern inline void gh60_fn_led_on(void);
|
||||||
|
extern inline void gh60_esc_led_on(void);
|
||||||
|
extern inline void gh60_wasd_leds_on(void);
|
||||||
|
|
||||||
|
extern inline void gh60_caps_led_off(void);
|
||||||
|
extern inline void gh60_poker_leds_off(void);
|
||||||
|
extern inline void gh60_fn_led_off(void);
|
||||||
|
extern inline void gh60_esc_led_off(void);
|
||||||
|
extern inline void gh60_wasd_leds_off(void);
|
||||||
|
|
||||||
|
|
||||||
void led_set_kb(uint8_t usb_led) {
|
void led_set_kb(uint8_t usb_led) {
|
||||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||||
|
|
||||||
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
|
if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
|
||||||
gh60_caps_led_on();
|
gh60_caps_led_on();
|
||||||
} else {
|
} else {
|
||||||
gh60_caps_led_off();
|
gh60_caps_led_off();
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (usb_led & (1<<USB_LED_NUM_LOCK)) {
|
// if (usb_led & (1<<USB_LED_NUM_LOCK)) {
|
||||||
// gh60_esc_led_on();
|
// gh60_esc_led_on();
|
||||||
// } else {
|
// } else {
|
||||||
// gh60_esc_led_off();
|
// gh60_esc_led_off();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {
|
// if (usb_led & (1<<USB_LED_SCROLL_LOCK)) {
|
||||||
// gh60_fn_led_on();
|
// gh60_fn_led_on();
|
||||||
// } else {
|
// } else {
|
||||||
// gh60_fn_led_off();
|
// gh60_fn_led_off();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
led_set_user(usb_led);
|
led_set_user(usb_led);
|
||||||
}
|
}
|
||||||
@@ -91,20 +91,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
# CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
# CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
# COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
# COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
|
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||||
# 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 ?= yes # Breathing sleep LED during USB suspend
|
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
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
# MIDI_ENABLE ?= YES # MIDI controls
|
# MIDI_ENABLE = YES # MIDI controls
|
||||||
# UNICODE_ENABLE ?= YES # Unicode
|
# UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE ?= yes # Enable RGB Underglow
|
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
|
|||||||
@@ -91,20 +91,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
# CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
# CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
# COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
# COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
|
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||||
# 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 ?= yes # Breathing sleep LED during USB suspend
|
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
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
# MIDI_ENABLE ?= YES # MIDI controls
|
# MIDI_ENABLE = YES # MIDI controls
|
||||||
# UNICODE_ENABLE ?= YES # Unicode
|
# UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE ?= no # Enable RGB Underglow
|
RGBLIGHT_ENABLE = no # Enable RGB Underglow
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
|
|||||||
@@ -91,20 +91,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
# CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
# CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
# COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
# COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
|
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||||
# 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 ?= yes # Breathing sleep LED during USB suspend
|
# 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
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
# MIDI_ENABLE ?= YES # MIDI controls
|
# MIDI_ENABLE = YES # MIDI controls
|
||||||
# UNICODE_ENABLE ?= YES # Unicode
|
# UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE ?= yes # Enable RGB Underglow
|
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
|
|||||||
@@ -91,20 +91,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
# CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
# CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
# COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
# COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
|
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||||
# 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 ?= yes # Breathing sleep LED during USB suspend
|
# 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
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
# MIDI_ENABLE ?= YES # MIDI controls
|
# MIDI_ENABLE = YES # MIDI controls
|
||||||
# UNICODE_ENABLE ?= YES # Unicode
|
# UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE ?= yes # Enable RGB Underglow
|
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../../Makefile
|
include ../../../../Makefile
|
||||||
|
|||||||
+12
-12
@@ -51,16 +51,16 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
# CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
# CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
# COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
# COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
|
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||||
# 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 ?= yes # Breathing sleep LED during USB suspend
|
# 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
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
# MIDI_ENABLE ?= YES # MIDI controls
|
# MIDI_ENABLE = YES # MIDI controls
|
||||||
# UNICODE_ENABLE ?= YES # Unicode
|
# UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
+10
-10
@@ -44,13 +44,13 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
AUDIO_ENABLE ?= no
|
AUDIO_ENABLE = no
|
||||||
RGBLIGHT_ENABLE ?= no
|
RGBLIGHT_ENABLE = no
|
||||||
+12
-12
@@ -50,17 +50,17 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
@@ -51,20 +51,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../Makefile
|
include ../../../Makefile
|
||||||
|
|||||||
@@ -24,23 +24,23 @@ F_USB = $(F_CPU)
|
|||||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
|
|
||||||
USB ?= /dev/cu.usbmodem14141
|
USB = /dev/cu.usbmodem14141
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -53,18 +53,18 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
|
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
@@ -52,21 +52,21 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
NKRO_ENABLE = no # 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
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
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
|
||||||
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
|
||||||
|
|
||||||
avrdude: build
|
avrdude: build
|
||||||
ls /dev/tty* > /tmp/1; \
|
ls /dev/tty* > /tmp/1; \
|
||||||
|
|||||||
@@ -51,20 +51,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../Makefile
|
include ../../../Makefile
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
ifndef MAKEFILE_INCLUDED
|
||||||
|
include ../../Makefile
|
||||||
|
endif
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
Copyright 201 Nicolas Poirey <[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 FRENCHDEV_V1_CONFIG_H
|
||||||
|
#define FRENCHDEV_V1_CONFIG_H
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x1307
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER Nicolas Poirey
|
||||||
|
#define PRODUCT Frenchdev V1
|
||||||
|
#define DESCRIPTION QMK keyboard firmware for Frenchdev
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 16
|
||||||
|
#define MATRIX_COLS 6
|
||||||
|
|
||||||
|
/* number of backlight levels */
|
||||||
|
#define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
#define LED_BRIGHTNESS_LO 15
|
||||||
|
#define LED_BRIGHTNESS_HI 255
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
#define USB_MAX_POWER_CONSUMPTION 500
|
||||||
|
|
||||||
|
#define MOUSEKEY_INTERVAL 20
|
||||||
|
#define MOUSEKEY_DELAY 0
|
||||||
|
#define MOUSEKEY_TIME_TO_MAX 5
|
||||||
|
#define MOUSEKEY_MAX_SPEED 2
|
||||||
|
#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.)
|
||||||
|
|
||||||
|
/* key combination for command */
|
||||||
|
#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
// #define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
// #define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
//#define NO_ACTION_MACRO
|
||||||
|
//#define NO_ACTION_FUNCTION
|
||||||
|
//#define DEBUG_MATRIX_SCAN_RATE
|
||||||
|
|
||||||
|
#endif //FRENCHDEV_V1_CONFIG_H
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
#include "frenchdev.h"
|
||||||
|
#include "i2cmaster.h"
|
||||||
|
|
||||||
|
bool i2c_initialized = 0;
|
||||||
|
uint8_t mcp23018_status = 0x20;
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
// keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md")
|
||||||
|
TCCR1A = 0b10101001; // set and configure fast PWM
|
||||||
|
TCCR1B = 0b00001001; // set and configure fast PWM
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// unused pins - D4, D5, D7, E6
|
||||||
|
// set as input with internal pull-ip enabled
|
||||||
|
DDRD &= ~(1<<5 | 1<<4);
|
||||||
|
DDRE &= ~(1<<6);
|
||||||
|
PORTD |= (1<<5 | 1<<4);
|
||||||
|
PORTE |= (1<<6);
|
||||||
|
|
||||||
|
frenchdev_blink_all_leds();
|
||||||
|
frenchdev_blink_all_leds();
|
||||||
|
frenchdev_blink_all_leds();
|
||||||
|
frenchdev_blink_all_leds();
|
||||||
|
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
void frenchdev_blink_all_leds(void)
|
||||||
|
{
|
||||||
|
frenchdev_led_all_off();
|
||||||
|
frenchdev_led_all_set(LED_BRIGHTNESS_HI);
|
||||||
|
frenchdev_led_1_on();
|
||||||
|
_delay_ms(50);
|
||||||
|
frenchdev_led_2_on();
|
||||||
|
_delay_ms(50);
|
||||||
|
frenchdev_led_3_on();
|
||||||
|
_delay_ms(50);
|
||||||
|
frenchdev_led_1_off();
|
||||||
|
_delay_ms(50);
|
||||||
|
frenchdev_led_2_off();
|
||||||
|
_delay_ms(50);
|
||||||
|
frenchdev_led_3_off();
|
||||||
|
frenchdev_led_all_off();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t init_mcp23018(void) {
|
||||||
|
mcp23018_status = 0x20;
|
||||||
|
|
||||||
|
// I2C subsystem
|
||||||
|
|
||||||
|
// uint8_t sreg_prev;
|
||||||
|
// sreg_prev=SREG;
|
||||||
|
// cli();
|
||||||
|
if (i2c_initialized == 0) {
|
||||||
|
i2c_init(); // on pins D(1,0)
|
||||||
|
i2c_initialized++;
|
||||||
|
_delay_ms(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
// set pin direction
|
||||||
|
// - unused : input : 1
|
||||||
|
// - input : input : 1
|
||||||
|
// - driving : output : 0
|
||||||
|
mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write(IODIRA); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write(0b00000000); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write(0b00111111); if (mcp23018_status) goto out;
|
||||||
|
i2c_stop();
|
||||||
|
|
||||||
|
// set pull-up
|
||||||
|
// - unused : on : 1
|
||||||
|
// - input : on : 1
|
||||||
|
// - driving : off : 0
|
||||||
|
mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write(GPPUA); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write(0b00000000); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write(0b00111111); if (mcp23018_status) goto out;
|
||||||
|
|
||||||
|
out:
|
||||||
|
i2c_stop();
|
||||||
|
|
||||||
|
// SREG=sreg_prev;
|
||||||
|
|
||||||
|
return mcp23018_status;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
#ifndef FRENCHDEV_V1_H
|
||||||
|
#define FRENCHDEV_V1_H
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include "i2cmaster.h"
|
||||||
|
#include <util/delay.h>
|
||||||
|
|
||||||
|
#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
|
||||||
|
#define CPU_16MHz 0x00
|
||||||
|
|
||||||
|
// I2C aliases and register addresses (see "mcp23018.md" on tmk repository)
|
||||||
|
#define I2C_ADDR 0b0100000
|
||||||
|
#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
|
||||||
|
#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
|
||||||
|
#define IODIRA 0x00 // i/o direction register
|
||||||
|
#define IODIRB 0x01
|
||||||
|
#define GPPUA 0x0C // GPIO pull-up resistor register
|
||||||
|
#define GPPUB 0x0D
|
||||||
|
#define GPIOA 0x12 // general purpose i/o port register (write modifies OLAT)
|
||||||
|
#define GPIOB 0x13
|
||||||
|
#define OLATA 0x14 // output latch register
|
||||||
|
#define OLATB 0x15
|
||||||
|
|
||||||
|
extern uint8_t mcp23018_status;
|
||||||
|
|
||||||
|
void init_frenchdev(void);
|
||||||
|
void frenchdev_blink_all_leds(void);
|
||||||
|
uint8_t init_mcp23018(void);
|
||||||
|
|
||||||
|
#define LED_BRIGHTNESS_LO 15
|
||||||
|
#define LED_BRIGHTNESS_HI 255
|
||||||
|
|
||||||
|
|
||||||
|
inline void frenchdev_board_led_on(void) { DDRD |= (1<<6); PORTD |= (1<<6); }
|
||||||
|
inline void frenchdev_led_1_on(void) { DDRB |= (1<<5); PORTB |= (1<<5); }
|
||||||
|
inline void frenchdev_led_2_on(void) { DDRB |= (1<<6); PORTB |= (1<<6); }
|
||||||
|
inline void frenchdev_led_3_on(void) { DDRB |= (1<<7); PORTB |= (1<<7); }
|
||||||
|
inline void frenchdev_led_on(uint8_t led) { DDRB |= (1<<(led+4)); PORTB |= (1<<(led+4)); }
|
||||||
|
|
||||||
|
inline void frenchdev_board_led_off(void) { DDRD &= ~(1<<6); PORTD &= ~(1<<6); }
|
||||||
|
inline void frenchdev_led_1_off(void) { DDRB &= ~(1<<5); PORTB &= ~(1<<5); }
|
||||||
|
inline void frenchdev_led_2_off(void) { DDRB &= ~(1<<6); PORTB &= ~(1<<6); }
|
||||||
|
inline void frenchdev_led_3_off(void) { DDRB &= ~(1<<7); PORTB &= ~(1<<7); }
|
||||||
|
inline void frenchdev_led_off(uint8_t led) { DDRB &= ~(1<<(led+4)); PORTB &= ~(1<<(led+4)); }
|
||||||
|
|
||||||
|
inline void frenchdev_led_all_on(void)
|
||||||
|
{
|
||||||
|
frenchdev_board_led_on();
|
||||||
|
frenchdev_led_1_on();
|
||||||
|
frenchdev_led_2_on();
|
||||||
|
frenchdev_led_3_on();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void frenchdev_led_all_off(void)
|
||||||
|
{
|
||||||
|
frenchdev_board_led_off();
|
||||||
|
frenchdev_led_1_off();
|
||||||
|
frenchdev_led_2_off();
|
||||||
|
frenchdev_led_3_off();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void frenchdev_led_1_set(uint8_t n) { OCR1A = n; }
|
||||||
|
inline void frenchdev_led_2_set(uint8_t n) { OCR1B = n; }
|
||||||
|
inline void frenchdev_led_3_set(uint8_t n) { OCR1C = n; }
|
||||||
|
inline void frenchdev_led_set(uint8_t led, uint8_t n) {
|
||||||
|
(led == 1) ? (OCR1A = n) :
|
||||||
|
(led == 2) ? (OCR1B = n) :
|
||||||
|
(OCR1C = n);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void frenchdev_led_all_set(uint8_t n)
|
||||||
|
{
|
||||||
|
frenchdev_led_1_set(n);
|
||||||
|
frenchdev_led_2_set(n);
|
||||||
|
frenchdev_led_3_set(n);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define KEYMAP( \
|
||||||
|
\
|
||||||
|
k01, k02, k03, k04, k05, k06, k09, k0a, k0b, k0c, k0d, k0e, \
|
||||||
|
k10, k11, k12, k13, k14, k15, k16, k19, k1a, k1b, k1c, k1d, k1e, k1f, \
|
||||||
|
k20, k21, k22, k23, k24, k25, k26, k29, k2a, k2b, k2c, k2d, k2e, k2f, \
|
||||||
|
k30, k31, k32, k33, k34, k35, k36, k39, k3a, k3b, k3c, k3d, k3e, k3f, \
|
||||||
|
k40, k41, k42, k43, k44, k45, k46, k47, k37, k38, k48, k49, k4a, k4b, k4c, k4d, k4e, k4f, \
|
||||||
|
k50, k51, k52, k53, k54, k55, k56, k57, k58, k59, k5a, k5b, k5c, k5d, k5e, k5f, \
|
||||||
|
\
|
||||||
|
PL1, PL2, PL3, \
|
||||||
|
PR1, PR2, PR3 \
|
||||||
|
) \
|
||||||
|
\
|
||||||
|
/* matrix positions, inverted left and right for I2C to be on row 0-7 */\
|
||||||
|
{ \
|
||||||
|
\
|
||||||
|
{ k5f, k4f, k3f, k2f, k1f, KC_NO}, \
|
||||||
|
{ k5e, k4e, k3e, k2e, k1e, k0e }, \
|
||||||
|
{ k5d, k4d, k3d, k2d, k1d, k0d }, \
|
||||||
|
{ k5c, k4c, k3c, k2c, k1c, k0c }, \
|
||||||
|
{ k5b, k4b, k3b, k2b, k1b, k0b }, \
|
||||||
|
{ k5a, k4a, k3a, k2a, k1a, k0a }, \
|
||||||
|
{ k59, k49, k39, k29, k19, k09 }, \
|
||||||
|
{ k58, k48, k38, PR1, PR2, PR3 }, \
|
||||||
|
\
|
||||||
|
{ k57, k47, k37, PL1, PL2, PL3 }, \
|
||||||
|
{ k56, k46, k36, k26, k16, k06 }, \
|
||||||
|
{ k55, k45, k35, k25, k15, k05 }, \
|
||||||
|
{ k54, k44, k34, k24, k14, k04 }, \
|
||||||
|
{ k53, k43, k33, k23, k13, k03 }, \
|
||||||
|
{ k52, k42, k32, k22, k12, k02 }, \
|
||||||
|
{ k51, k41, k31, k21, k11, k01 }, \
|
||||||
|
{ k50, k40, k30, k20, k10, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
#ifndef _I2CMASTER_H
|
||||||
|
#define _I2CMASTER_H 1
|
||||||
|
/*************************************************************************
|
||||||
|
* Title: C include file for the I2C master interface
|
||||||
|
* (i2cmaster.S or twimaster.c)
|
||||||
|
* Author: Peter Fleury <[email protected]> http://jump.to/fleury
|
||||||
|
* File: $Id: i2cmaster.h,v 1.10 2005/03/06 22:39:57 Peter Exp $
|
||||||
|
* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3
|
||||||
|
* Target: any AVR device
|
||||||
|
* Usage: see Doxygen manual
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#ifdef DOXYGEN
|
||||||
|
/**
|
||||||
|
@defgroup pfleury_ic2master I2C Master library
|
||||||
|
@code #include <i2cmaster.h> @endcode
|
||||||
|
|
||||||
|
@brief I2C (TWI) Master Software Library
|
||||||
|
|
||||||
|
Basic routines for communicating with I2C slave devices. This single master
|
||||||
|
implementation is limited to one bus master on the I2C bus.
|
||||||
|
|
||||||
|
This I2c library is implemented as a compact assembler software implementation of the I2C protocol
|
||||||
|
which runs on any AVR (i2cmaster.S) and as a TWI hardware interface for all AVR with built-in TWI hardware (twimaster.c).
|
||||||
|
Since the API for these two implementations is exactly the same, an application can be linked either against the
|
||||||
|
software I2C implementation or the hardware I2C implementation.
|
||||||
|
|
||||||
|
Use 4.7k pull-up resistor on the SDA and SCL pin.
|
||||||
|
|
||||||
|
Adapt the SCL and SDA port and pin definitions and eventually the delay routine in the module
|
||||||
|
i2cmaster.S to your target when using the software I2C implementation !
|
||||||
|
|
||||||
|
Adjust the CPU clock frequence F_CPU in twimaster.c or in the Makfile when using the TWI hardware implementaion.
|
||||||
|
|
||||||
|
@note
|
||||||
|
The module i2cmaster.S is based on the Atmel Application Note AVR300, corrected and adapted
|
||||||
|
to GNU assembler and AVR-GCC C call interface.
|
||||||
|
Replaced the incorrect quarter period delays found in AVR300 with
|
||||||
|
half period delays.
|
||||||
|
|
||||||
|
@author Peter Fleury [email protected] http://jump.to/fleury
|
||||||
|
|
||||||
|
@par API Usage Example
|
||||||
|
The following code shows typical usage of this library, see example test_i2cmaster.c
|
||||||
|
|
||||||
|
@code
|
||||||
|
|
||||||
|
#include <i2cmaster.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define Dev24C02 0xA2 // device address of EEPROM 24C02, see datasheet
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
unsigned char ret;
|
||||||
|
|
||||||
|
i2c_init(); // initialize I2C library
|
||||||
|
|
||||||
|
// write 0x75 to EEPROM address 5 (Byte Write)
|
||||||
|
i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode
|
||||||
|
i2c_write(0x05); // write address = 5
|
||||||
|
i2c_write(0x75); // write value 0x75 to EEPROM
|
||||||
|
i2c_stop(); // set stop conditon = release bus
|
||||||
|
|
||||||
|
|
||||||
|
// read previously written value back from EEPROM address 5
|
||||||
|
i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode
|
||||||
|
|
||||||
|
i2c_write(0x05); // write address = 5
|
||||||
|
i2c_rep_start(Dev24C02+I2C_READ); // set device address and read mode
|
||||||
|
|
||||||
|
ret = i2c_readNak(); // read one byte from EEPROM
|
||||||
|
i2c_stop();
|
||||||
|
|
||||||
|
for(;;);
|
||||||
|
}
|
||||||
|
@endcode
|
||||||
|
|
||||||
|
*/
|
||||||
|
#endif /* DOXYGEN */
|
||||||
|
|
||||||
|
/**@{*/
|
||||||
|
|
||||||
|
#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304
|
||||||
|
#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <avr/io.h>
|
||||||
|
|
||||||
|
/** defines the data direction (reading from I2C device) in i2c_start(),i2c_rep_start() */
|
||||||
|
#define I2C_READ 1
|
||||||
|
|
||||||
|
/** defines the data direction (writing to I2C device) in i2c_start(),i2c_rep_start() */
|
||||||
|
#define I2C_WRITE 0
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief initialize the I2C master interace. Need to be called only once
|
||||||
|
@param void
|
||||||
|
@return none
|
||||||
|
*/
|
||||||
|
extern void i2c_init(void);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Terminates the data transfer and releases the I2C bus
|
||||||
|
@param void
|
||||||
|
@return none
|
||||||
|
*/
|
||||||
|
extern void i2c_stop(void);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Issues a start condition and sends address and transfer direction
|
||||||
|
|
||||||
|
@param addr address and transfer direction of I2C device
|
||||||
|
@retval 0 device accessible
|
||||||
|
@retval 1 failed to access device
|
||||||
|
*/
|
||||||
|
extern unsigned char i2c_start(unsigned char addr);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Issues a repeated start condition and sends address and transfer direction
|
||||||
|
|
||||||
|
@param addr address and transfer direction of I2C device
|
||||||
|
@retval 0 device accessible
|
||||||
|
@retval 1 failed to access device
|
||||||
|
*/
|
||||||
|
extern unsigned char i2c_rep_start(unsigned char addr);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Issues a start condition and sends address and transfer direction
|
||||||
|
|
||||||
|
If device is busy, use ack polling to wait until device ready
|
||||||
|
@param addr address and transfer direction of I2C device
|
||||||
|
@return none
|
||||||
|
*/
|
||||||
|
extern void i2c_start_wait(unsigned char addr);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief Send one byte to I2C device
|
||||||
|
@param data byte to be transfered
|
||||||
|
@retval 0 write successful
|
||||||
|
@retval 1 write failed
|
||||||
|
*/
|
||||||
|
extern unsigned char i2c_write(unsigned char data);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief read one byte from the I2C device, request more data from device
|
||||||
|
@return byte read from I2C device
|
||||||
|
*/
|
||||||
|
extern unsigned char i2c_readAck(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief read one byte from the I2C device, read is followed by a stop condition
|
||||||
|
@return byte read from I2C device
|
||||||
|
*/
|
||||||
|
extern unsigned char i2c_readNak(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
@brief read one byte from the I2C device
|
||||||
|
|
||||||
|
Implemented as a macro, which calls either i2c_readAck or i2c_readNak
|
||||||
|
|
||||||
|
@param ack 1 send ack, request more data from device<br>
|
||||||
|
0 send nak, read is followed by a stop condition
|
||||||
|
@return byte read from I2C device
|
||||||
|
*/
|
||||||
|
extern unsigned char i2c_read(unsigned char ack);
|
||||||
|
#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
|
||||||
|
|
||||||
|
|
||||||
|
/**@}*/
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,409 @@
|
|||||||
|
#include "frenchdev.h"
|
||||||
|
#include "mousekey.h"
|
||||||
|
#include "action.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "keymap_extras/keymap_bepo.h"
|
||||||
|
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
#define _BASE 0
|
||||||
|
#define _SYMBOLS 1
|
||||||
|
#define _MEDIA 2
|
||||||
|
#define _TRNS 8
|
||||||
|
|
||||||
|
#define PEDAL_DELAY 250
|
||||||
|
#define KEY_DELAY 130
|
||||||
|
|
||||||
|
enum macros {
|
||||||
|
M_LP, // left pedal
|
||||||
|
M_RP, // right pedal
|
||||||
|
M_SF, // shift
|
||||||
|
M_SFS, // shift and space
|
||||||
|
M_L1E, // L1 and space
|
||||||
|
L2INS, // L2 and insert
|
||||||
|
L2LOC, // Lock L2
|
||||||
|
M_UN, // undo
|
||||||
|
M_CUT, // cut
|
||||||
|
M_CP, // copy
|
||||||
|
M_PS, // paste
|
||||||
|
M_SE, // search
|
||||||
|
M_SFU, // shift and underscore
|
||||||
|
};
|
||||||
|
|
||||||
|
static uint16_t key_timer_left_pedal;
|
||||||
|
static uint16_t key_timer_right_pedal;
|
||||||
|
static uint16_t key_timer_shift;
|
||||||
|
static uint16_t key_timer_1;
|
||||||
|
static uint16_t key_timer_2;
|
||||||
|
|
||||||
|
static uint16_t shift_count = 0; //this is used to keep track of shift state and avoid inserting non breakable space
|
||||||
|
static uint16_t l2_locked = 0; //this indicate wether L2 is locked
|
||||||
|
|
||||||
|
#define BP_CBSP CTL_T(KC_BSPC)
|
||||||
|
#define BP_CDEL CTL_T(KC_DEL)
|
||||||
|
|
||||||
|
//layout : http://www.keyboard-layout-editor.com/#/gists/4480e3ab8026eb7c710a7e22203ef4aa
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* base
|
||||||
|
* left foot clicked is right click
|
||||||
|
* left foot pressed is layer 2
|
||||||
|
* right foot clicked is left click
|
||||||
|
* right foot pressed is layer 1 + scroll lock (used with autohotkey for easier scrolling with trackballs)
|
||||||
|
* ,------. .. ,------. *
|
||||||
|
* ,------| F3 |-------------. .. ,-------------| F10 |------. *
|
||||||
|
* ,------| F2 |------| F4 | F5 |------. .. ,------| F8 | F9 |------| F11 |------. *
|
||||||
|
* | F1 |------| »/3 |------|------| F6 | .. | F7 |------|------| -/8 |------| F12 | *
|
||||||
|
* ,------+------| «/2 |------| (/4 | )/5 |------| .. |------| @/6 | +/7 |------| //9 |------+------. *
|
||||||
|
* | ESC | "/1 |------| O |------|------| ¨ | .. | ^ |------|------| D |------| * /0 |BCKSP | *
|
||||||
|
* |------+------| É |------| P | È |------| .. |------| K | V |------| L |------+------| *
|
||||||
|
* | TAB | B |------| E |------|------| _ | .. | =/° |------|------| S |------| J |ENTER | *
|
||||||
|
* |------+------| U |------| I | F |------| .. |------| C | T |------| R |------+------| *
|
||||||
|
* | ` | A |------| Y |------|------| ; | .. | ! |------|------| UP |------| N | '/? | *
|
||||||
|
* |------+------| À |------| X | W |------|-------------. .. .-------------|------| M | G |------| H |------+------| *
|
||||||
|
* | SHIFT| Z |------| . |------|------|sp/sh |bsp/ct|L2/ins| .. |L2lock|del/CT|sp/sh |------|------| DOWN |------| Q |SHIFT | *
|
||||||
|
* |------+------| / |------| , | space|------|------|------ .. ------|------|------| L1/sp| LEFT |------| UP |------+------| *
|
||||||
|
* | CTRL | win |------/ \-------------| L1 | alt | .. | CAPS | L1 |-------------/ \------| : | CTRL | *
|
||||||
|
* `-------------/ \-------------/ .. \-------------/ \-------------/ *
|
||||||
|
*M(M_LP)
|
||||||
|
*/
|
||||||
|
[_BASE] = KEYMAP(
|
||||||
|
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
|
||||||
|
KC_ESC, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, BP_DTRM, BP_DCRC, BP_AT, BP_PLUS, BP_MINS, BP_SLSH, BP_ASTR, KC_BSPC, \
|
||||||
|
KC_TAB, BP_B, BP_ECUT, BP_O, BP_P, BP_EGRV, BP_UNDS, BP_EQL, BP_K, BP_V, BP_D, BP_L, BP_J, KC_ENT, \
|
||||||
|
BP_GRV, BP_A, BP_U, BP_E, BP_I, BP_F, BP_SCLN, BP_EXLM, BP_C, BP_T, BP_S, BP_R, BP_N, BP_APOS, \
|
||||||
|
M(M_SF), BP_Z, BP_AGRV, BP_Y, BP_X, KC_RBRACKET, M(M_SFS), BP_CBSP, M(L2INS), M(L2LOC), BP_CDEL, M(M_SFS),BP_M, BP_G, KC_UP, BP_H, BP_Q, M(M_SF), \
|
||||||
|
KC_LCTL, KC_LGUI, KC_PSLS, BP_DOT, BP_COMM, KC_SPACE,M(M_L1E), KC_LALT, KC_CAPS, M(M_L1E),KC_SPACE,KC_LEFT, KC_DOWN, KC_RIGHT,BP_COLN, KC_RCTL, \
|
||||||
|
//left pedals
|
||||||
|
M(M_LP), M(M_RP), KC_TRNS, \
|
||||||
|
//right pedals
|
||||||
|
M(M_LP), M(M_RP), KC_TRNS \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* Larer 1 for symbols.
|
||||||
|
* left foot is middle click
|
||||||
|
* ,------. .. ,------. *
|
||||||
|
* ,------| |-------------. .. ,-------------| |------. *
|
||||||
|
* ,------| |------| | |------. .. ,------| | |------| |------. *
|
||||||
|
* | |------| § |------|------| | .. | |------|------| ± |------| | *
|
||||||
|
* ,------+------| ¶ |------| µ | |------| .. |------| ≤ | ≥ |------| ÷ |------+------. *
|
||||||
|
* | | ¤ |------| { |------|------| ~ | .. | ˇ |------|------| ] |------| × | | *
|
||||||
|
* |------+------| * |------| } | ` |------| .. |------| # | [ |------| % |------+------| *
|
||||||
|
* | | \ |------| ( |------|------| | .. | ≠ |------|------| > |------| ‰ | | *
|
||||||
|
* |------+------| Ù |------| ) | + |------| .. |------| Ç | < |------| & |------+------| *
|
||||||
|
* | | = |------| copy |------|------| : | .. | ? |------|------| PGUP |------| _ | | *
|
||||||
|
* |------+------| cut |------| paste|search|------|-------------. .. .-------------|------| $ | = |------| | |------+------| *
|
||||||
|
* | | undo |------| \ |------|------| | | | .. | | | |------|------| PGDN |------| / | | *
|
||||||
|
* |------+------| |------| | |------|------|------ .. ------|------|------| | HOME |------| PGDN |------+------| *
|
||||||
|
* | | |------/ \-------------| | | .. | | |-------------/ \------| | | *
|
||||||
|
* `-------------/ \-------------/ .. \-------------/ \-------------/ *
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
[_SYMBOLS] = KEYMAP(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, BP_DCUR, BP_PARG, BP_SECT, BP_DGRK, KC_TRNS, BP_TILD, BP_DCAR, BP_LEQL, BP_GEQL, BP_PSMS, BP_OBEL, BP_TIMS, KC_TRNS, \
|
||||||
|
KC_TRNS, BP_BSLS, BP_ASTR, BP_LCBR, BP_RCBR, BP_GRV, KC_TRNS, BP_DIFF, BP_HASH, BP_LBRC, BP_RBRC, BP_PERC, BP_PMIL, KC_TRNS, \
|
||||||
|
KC_TRNS, BP_EQL, BP_UGRV, BP_LPRN, BP_RPRN, BP_PLUS, BP_COLN, BP_QEST, BP_CCED, BP_LESS, BP_GRTR, BP_AMPR, BP_UNDS, KC_TRNS, \
|
||||||
|
KC_TRNS, M(M_UN), M(M_CUT),M(M_CP), M(M_PS), M(M_SE), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BP_DLR, BP_EQL, KC_PGUP, BP_PIPE, BP_SLSH, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, BP_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, \
|
||||||
|
//left pedals
|
||||||
|
KC_TRNS, KC_BTN1, KC_TRNS, \
|
||||||
|
//right pedals
|
||||||
|
KC_TRNS, KC_BTN1, KC_TRNS \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* MEDIA, mouse and numpad.
|
||||||
|
* right pedal is left clic
|
||||||
|
* ,------. .. ,------. *
|
||||||
|
* ,------|PAUSE |-------------. .. ,-------------| PRINT|------. *
|
||||||
|
* ,------|SCROLL|------|MUTE |VOLUD |------. .. ,------| pre | next |------| calc |------. *
|
||||||
|
* |RESET |------| stop |------|------|VOLDU | .. | play |------|------| stop |------| num | *
|
||||||
|
* ,------+------| |------| pre | next |------| .. |------| pre | next |------| |------+------. *
|
||||||
|
* | | |------|scrolu|------|------| play | .. | play |------|------| 8 |------| - | | *
|
||||||
|
* |------+------| |------| | bt4 |------| .. |------| next | 7 |------| 9 |------+------| *
|
||||||
|
* | | |------|scrold|------|------| bt5 | .. | pre |------|------| 5 |------| + | | *
|
||||||
|
* |------+------| |------|mclic | rclic|------| .. |------| rclic| 4 |------| 6 |------+------| *
|
||||||
|
* | | |------| |------|------| lclic| .. | lclic|------|------| 2 |------| * | | *
|
||||||
|
* |------+------| |------| | mclck|------|-------------. .. .-------------|------| mclic| 1 |------| 3 |------+------| *
|
||||||
|
* | | |------| |------|------| | | | .. | | | |------|------| num. |------| / | | *
|
||||||
|
* |------+------| |------| | |------|------|------ .. ------|------|------| | 0 |------| . |------+------| *
|
||||||
|
* | | |------/ \-------------| | | .. | | |-------------/ \------| , | | *
|
||||||
|
* `-------------/ \-------------/ .. \-------------/ \-------------/ *
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
[_MEDIA] = KEYMAP(
|
||||||
|
RESET, KC_SLCK, KC_PAUS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CALC, KC_NLCK, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_MPRV, KC_MNXT, KC_MPLY, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_TRNS, KC_PMNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_BTN4, KC_BTN5, KC_BTN4, KC_BTN5, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_D, KC_BTN3, KC_BTN2, KC_BTN1, KC_BTN1, KC_BTN2, KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, KC_TRNS, \
|
||||||
|
KC_TRNS, M(M_UN), M(M_CUT),M(M_CP), M(M_PS), KC_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN3, KC_KP_1, KC_KP_2, KC_KP_3, KC_PSLS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_PDOT, BP_DOT, BP_COMM, KC_TRNS, \
|
||||||
|
//left pedals
|
||||||
|
KC_BTN3, M(M_RP), KC_TRNS, \
|
||||||
|
//right pedals
|
||||||
|
KC_BTN3, M(M_RP), KC_TRNS \
|
||||||
|
),
|
||||||
|
|
||||||
|
/* TRNS - skeleton for laters
|
||||||
|
* ,------. .. ,------. *
|
||||||
|
* ,------| |-------------. .. ,-------------| |------. *
|
||||||
|
* ,------| |------| | |------. .. ,------| | |------| |------. *
|
||||||
|
* | |------| |------|------| | .. | |------|------| |------| | *
|
||||||
|
* ,------+------| |------| | |------| .. |------| | |------| |------+------. *
|
||||||
|
* | | |------| |------|------| | .. | |------|------| |------| | | *
|
||||||
|
* |------+------| |------| | |------| .. |------| | |------| |------+------| *
|
||||||
|
* | | |------| |------|------| | .. | |------|------| |------| | | *
|
||||||
|
* |------+------| |------| | |------| .. |------| | |------| |------+------| *
|
||||||
|
* | | |------| |------|------| | .. | |------|------| |------| | | *
|
||||||
|
* |------+------| |------| | |------|-------------. .. .-------------|------| | |------| |------+------| *
|
||||||
|
* | | |------| |------|------| | | | .. | | | |------|------| |------| | | *
|
||||||
|
* |------+------| |------| | |------|------|------ .. ------|------|------| | |------| |------+------| *
|
||||||
|
* | | |------/ \-------------| | | .. | | |-------------/ \------| | | *
|
||||||
|
* `-------------/ \-------------/ .. \-------------/ \-------------/ *
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
[_TRNS] = KEYMAP(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
//left pedals
|
||||||
|
KC_BTN3, M(M_RP), KC_TRNS, \
|
||||||
|
//right pedals
|
||||||
|
KC_BTN3, M(M_RP), KC_TRNS \
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void hold_shift(void) {
|
||||||
|
shift_count = shift_count + 1;
|
||||||
|
register_code(KC_LSHIFT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void release_shift(void) {
|
||||||
|
shift_count = shift_count - 1;
|
||||||
|
if(shift_count <= 0){
|
||||||
|
unregister_code(KC_LSHIFT);
|
||||||
|
shift_count = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void press_space(void) {
|
||||||
|
if(shift_count > 0) unregister_code (KC_LSHIFT);
|
||||||
|
register_code (KC_SPACE);
|
||||||
|
unregister_code (KC_SPACE);
|
||||||
|
if(shift_count > 0) register_code (KC_LSHIFT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void press_enter(void) {
|
||||||
|
if(shift_count > 0) unregister_code (KC_LSHIFT);
|
||||||
|
register_code (KC_ENT);
|
||||||
|
unregister_code (KC_ENT);
|
||||||
|
if(shift_count > 0) register_code (KC_LSHIFT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void press_underscore(void) {
|
||||||
|
if(shift_count > 0) unregister_code (KC_LSHIFT);
|
||||||
|
register_code ((unsigned char) BP_UNDS);
|
||||||
|
unregister_code ((unsigned char) BP_UNDS);
|
||||||
|
if(shift_count > 0) register_code (KC_LSHIFT);
|
||||||
|
}
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
switch(id) {
|
||||||
|
case M_LP: //left pedal
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(1);
|
||||||
|
register_code (KC_SLCK);
|
||||||
|
key_timer_left_pedal = timer_read(); // if the key is being pressed, we start the timer.
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed(key_timer_left_pedal) < KEY_DELAY) {
|
||||||
|
mousekey_on (KC_BTN2);
|
||||||
|
mousekey_send();
|
||||||
|
mousekey_off (KC_BTN2);
|
||||||
|
mousekey_send();
|
||||||
|
}
|
||||||
|
unregister_code (KC_SLCK);
|
||||||
|
layer_off(1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_RP: //right pedal
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(2);
|
||||||
|
key_timer_right_pedal = timer_read(); // if the key is being pressed, we start the timer.
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed(key_timer_right_pedal) < PEDAL_DELAY) {
|
||||||
|
mousekey_on (KC_BTN1);
|
||||||
|
mousekey_send();
|
||||||
|
mousekey_off (KC_BTN1);
|
||||||
|
mousekey_send();
|
||||||
|
}
|
||||||
|
layer_off(2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_SF: // shift, using macro to keep track of shift state and avoid inserting nbsp by mistake
|
||||||
|
if (record->event.pressed) {
|
||||||
|
hold_shift();
|
||||||
|
} else {
|
||||||
|
release_shift();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_SFS: // shift when held, space when tapped
|
||||||
|
if (record->event.pressed) {
|
||||||
|
hold_shift();
|
||||||
|
key_timer_shift = timer_read(); // if the key is being pressed, we start the timer.
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed(key_timer_shift) < KEY_DELAY) {
|
||||||
|
press_space();
|
||||||
|
}
|
||||||
|
release_shift();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_SFU: // shift when held, _ when tapped
|
||||||
|
if (record->event.pressed) {
|
||||||
|
hold_shift();
|
||||||
|
key_timer_shift = timer_read(); // if the key is being pressed, we start the timer.
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed(key_timer_shift) < KEY_DELAY) {
|
||||||
|
press_space();
|
||||||
|
}
|
||||||
|
release_shift();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_L1E: // L1 when held, space when tapped
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(1);
|
||||||
|
key_timer_1 = timer_read(); // if the key is being pressed, we start the timer.
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed(key_timer_1) < KEY_DELAY) {
|
||||||
|
press_enter();
|
||||||
|
}
|
||||||
|
layer_off(1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case L2INS: //activate layer 2, if released before 100ms trigger INS. basicaly equivalent to LT(2, KC_INS) but without delay for activation of layer 2
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(2);
|
||||||
|
key_timer_2 = timer_read(); // if the key is being pressed, we start the timer.
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed(key_timer_2) < KEY_DELAY) {
|
||||||
|
register_code (KC_INS);
|
||||||
|
unregister_code (KC_INS);
|
||||||
|
}
|
||||||
|
l2_locked = 0;
|
||||||
|
layer_off(2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case L2LOC: //lock L2
|
||||||
|
if (record->event.pressed) {
|
||||||
|
key_timer_2 = timer_read(); // if the key is being pressed, we start the timer.
|
||||||
|
layer_on(2);
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed(key_timer_2) < KEY_DELAY && l2_locked == 0) {
|
||||||
|
l2_locked = 1;
|
||||||
|
layer_on(2);
|
||||||
|
} else {
|
||||||
|
l2_locked = 0;
|
||||||
|
layer_off(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_UN: // undo
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_LCTL);
|
||||||
|
register_code(BP_Z);
|
||||||
|
unregister_code(BP_Z);
|
||||||
|
unregister_code(KC_LCTL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_CUT: // cut
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_LCTL);
|
||||||
|
register_code(BP_X);
|
||||||
|
unregister_code(BP_X);
|
||||||
|
unregister_code(KC_LCTL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_CP: // copy
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_LCTL);
|
||||||
|
register_code(BP_C);
|
||||||
|
unregister_code(BP_C);
|
||||||
|
unregister_code(KC_LCTL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_PS: // paste
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_LCTL);
|
||||||
|
register_code(BP_V);
|
||||||
|
unregister_code(BP_V);
|
||||||
|
unregister_code(KC_LCTL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_SE: // search
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_LCTL);
|
||||||
|
register_code(BP_F);
|
||||||
|
unregister_code(BP_F);
|
||||||
|
unregister_code(KC_LCTL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bleah globals need to be initialized.
|
||||||
|
uint8_t old_layer=_BASE;
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
uint8_t layer = biton32(layer_state);
|
||||||
|
|
||||||
|
frenchdev_led_1_off();
|
||||||
|
frenchdev_led_2_off();
|
||||||
|
switch (layer) {
|
||||||
|
case _BASE:
|
||||||
|
frenchdev_led_2_on();
|
||||||
|
break;
|
||||||
|
case _SYMBOLS:
|
||||||
|
frenchdev_led_1_on();
|
||||||
|
break;
|
||||||
|
case _MEDIA:
|
||||||
|
frenchdev_led_1_on();
|
||||||
|
frenchdev_led_2_on();
|
||||||
|
default:
|
||||||
|
// none
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
if (usb_led & (1<<USB_LED_CAPS_LOCK)){
|
||||||
|
frenchdev_led_3_on();
|
||||||
|
} else {
|
||||||
|
frenchdev_led_3_off();
|
||||||
|
}
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
layout :
|
||||||
|
|
||||||
|
[default layout](http://i.imgur.com/r2Nvr4p.png)
|
||||||
|
|
||||||
|
the thing when finished :
|
||||||
|
http://imgur.com/a/6FY8v
|
||||||
|
|
||||||
|
concept and mockup:
|
||||||
|
http://imgur.com/a/R0vvs
|
||||||
|
|
||||||
|
to build :
|
||||||
|
|
||||||
|
docker run --rm -e keymap=default -e keyboard=frenchdev --rm -v D:/Repositories/qmk:/qmk:rw edasque/qmk_firmware
|
||||||
@@ -0,0 +1,396 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Note to self: adapted from ergodox EZ matrix
|
||||||
|
The "column" and "row" in here actually refers to the opposite on the keyboard
|
||||||
|
see definition of KEYMAP in v1.h, the grid is transposed so that a "row" in here is actually a "column" on the physical keyboard
|
||||||
|
Nicolas
|
||||||
|
|
||||||
|
Note for ErgoDox EZ customizers: Here be dragons!
|
||||||
|
This is not a file you want to be messing with.
|
||||||
|
All of the interesting stuff for you is under keymaps/ :)
|
||||||
|
Love, Erez
|
||||||
|
|
||||||
|
Copyright 2013 Oleg Kostyuk <[email protected]>
|
||||||
|
Copyright 2013 Nicolas Poirey <[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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* scan matrix
|
||||||
|
*/
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include "wait.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "print.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include "matrix.h"
|
||||||
|
#include "frenchdev.h"
|
||||||
|
#include "i2cmaster.h"
|
||||||
|
#ifdef DEBUG_MATRIX_SCAN_RATE
|
||||||
|
#include "timer.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This constant define not debouncing time in msecs, but amount of matrix
|
||||||
|
* scan loops which should be made to get stable debounced results.
|
||||||
|
*
|
||||||
|
* On Ergodox matrix scan rate is relatively low, because of slow I2C.
|
||||||
|
* Now it's only 317 scans/second, or about 3.15 msec/scan.
|
||||||
|
* According to Cherry specs, debouncing time is 5 msec.
|
||||||
|
*
|
||||||
|
* And so, there is no sense to have DEBOUNCE higher than 2.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef DEBOUNCE
|
||||||
|
# define DEBOUNCE 5
|
||||||
|
#endif
|
||||||
|
static uint8_t debouncing = DEBOUNCE;
|
||||||
|
|
||||||
|
/* matrix state(1:on, 0:off) */
|
||||||
|
static matrix_row_t matrix[MATRIX_ROWS];
|
||||||
|
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
|
||||||
|
|
||||||
|
static matrix_row_t read_cols(uint8_t row);
|
||||||
|
static void init_cols(void);
|
||||||
|
static void unselect_rows(void);
|
||||||
|
static void select_row(uint8_t row);
|
||||||
|
|
||||||
|
static uint8_t mcp23018_reset_loop;
|
||||||
|
|
||||||
|
#ifdef DEBUG_MATRIX_SCAN_RATE
|
||||||
|
uint32_t matrix_timer;
|
||||||
|
uint32_t matrix_scan_count;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_init_user(void) {}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_scan_user(void) {}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__ ((weak))
|
||||||
|
void matrix_scan_kb(void) {
|
||||||
|
matrix_scan_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
uint8_t matrix_rows(void)
|
||||||
|
{
|
||||||
|
return MATRIX_ROWS;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
uint8_t matrix_cols(void)
|
||||||
|
{
|
||||||
|
return MATRIX_COLS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_init(void)
|
||||||
|
{
|
||||||
|
// initialize row and col
|
||||||
|
debug_enable = true;
|
||||||
|
debug_matrix = true;
|
||||||
|
debug_keyboard = true;
|
||||||
|
debug_mouse = true;
|
||||||
|
|
||||||
|
mcp23018_status = init_mcp23018();
|
||||||
|
|
||||||
|
|
||||||
|
unselect_rows();
|
||||||
|
init_cols();
|
||||||
|
|
||||||
|
// initialize matrix state: all keys off
|
||||||
|
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
|
||||||
|
matrix[i] = 0;
|
||||||
|
matrix_debouncing[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG_MATRIX_SCAN_RATE
|
||||||
|
matrix_timer = timer_read32();
|
||||||
|
matrix_scan_count = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
matrix_init_quantum();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_power_up(void) {
|
||||||
|
mcp23018_status = init_mcp23018();
|
||||||
|
|
||||||
|
unselect_rows();
|
||||||
|
init_cols();
|
||||||
|
|
||||||
|
// initialize matrix state: all keys off
|
||||||
|
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
|
||||||
|
matrix[i] = 0;
|
||||||
|
matrix_debouncing[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG_MATRIX_SCAN_RATE
|
||||||
|
matrix_timer = timer_read32();
|
||||||
|
matrix_scan_count = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t matrix_scan(void)
|
||||||
|
{
|
||||||
|
if (mcp23018_status) { // if there was an error
|
||||||
|
if (++mcp23018_reset_loop == 0) {
|
||||||
|
// since mcp23018_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans
|
||||||
|
// this will be approx bit more frequent than once per second
|
||||||
|
print("trying to reset mcp23018\n");
|
||||||
|
mcp23018_status = init_mcp23018();
|
||||||
|
if (mcp23018_status) {
|
||||||
|
print("left side not responding\n");
|
||||||
|
} else {
|
||||||
|
print("left side attached\n");
|
||||||
|
frenchdev_blink_all_leds();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG_MATRIX_SCAN_RATE
|
||||||
|
matrix_scan_count++;
|
||||||
|
|
||||||
|
uint32_t timer_now = timer_read32();
|
||||||
|
if (TIMER_DIFF_32(timer_now, matrix_timer)>1000) {
|
||||||
|
print("matrix scan frequency: ");
|
||||||
|
pdec(matrix_scan_count);
|
||||||
|
print("\n");
|
||||||
|
|
||||||
|
matrix_timer = timer_now;
|
||||||
|
matrix_scan_count = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||||
|
select_row(i);
|
||||||
|
wait_us(30); // without this wait read unstable value.
|
||||||
|
matrix_row_t cols = read_cols(i);
|
||||||
|
if (matrix_debouncing[i] != cols) {
|
||||||
|
matrix_debouncing[i] = cols;
|
||||||
|
if (debouncing) {
|
||||||
|
debug("bounce!: "); debug_hex(debouncing); debug("\n");
|
||||||
|
}
|
||||||
|
debouncing = DEBOUNCE;
|
||||||
|
}
|
||||||
|
unselect_rows();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (debouncing) {
|
||||||
|
if (--debouncing) {
|
||||||
|
wait_us(1);
|
||||||
|
// this should be wait_ms(1) but has been left as-is at EZ's request
|
||||||
|
} else {
|
||||||
|
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||||
|
matrix[i] = matrix_debouncing[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
matrix_scan_quantum();
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool matrix_is_modified(void)
|
||||||
|
{
|
||||||
|
if (debouncing) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
bool matrix_is_on(uint8_t row, uint8_t col)
|
||||||
|
{
|
||||||
|
return (matrix[row] & ((matrix_row_t)1<<col));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
matrix_row_t matrix_get_row(uint8_t row)
|
||||||
|
{
|
||||||
|
return matrix[row];
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_print(void)
|
||||||
|
{
|
||||||
|
print("\nr/c 0123456789ABCDEF\n");
|
||||||
|
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||||
|
phex(row); print(": ");
|
||||||
|
pbin_reverse16(matrix_get_row(row));
|
||||||
|
print("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t matrix_key_count(void)
|
||||||
|
{
|
||||||
|
uint8_t count = 0;
|
||||||
|
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||||
|
count += bitpop16(matrix[i]);
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Column pin configuration
|
||||||
|
*
|
||||||
|
* Teensy
|
||||||
|
* col: 0 1 2 3 4 5
|
||||||
|
* pin: F0 F1 F4 F5 F6 F7
|
||||||
|
*
|
||||||
|
* MCP23018
|
||||||
|
* col: 0 1 2 3 4 5
|
||||||
|
* pin: B5 B4 B3 B2 B1 B0
|
||||||
|
*/
|
||||||
|
static void init_cols(void)
|
||||||
|
{
|
||||||
|
// init on mcp23018
|
||||||
|
// not needed, already done as part of init_mcp23018()
|
||||||
|
|
||||||
|
// init on teensy
|
||||||
|
// Input with pull-up(DDR:0, PORT:1)
|
||||||
|
DDRF &= ~(1<<7 | 1<<6 | 1<<5 | 1<<4 | 1<<1 | 1<<0);
|
||||||
|
PORTF |= (1<<7 | 1<<6 | 1<<5 | 1<<4 | 1<<1 | 1<<0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static matrix_row_t read_cols(uint8_t row)
|
||||||
|
{
|
||||||
|
if (row < 8) {
|
||||||
|
if (mcp23018_status) { // if there was an error
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
uint8_t data = 0;
|
||||||
|
mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write(GPIOB); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_start(I2C_ADDR_READ); if (mcp23018_status) goto out;
|
||||||
|
data = i2c_readNak();
|
||||||
|
data = ~data;
|
||||||
|
out:
|
||||||
|
i2c_stop();
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// read from teensy
|
||||||
|
return
|
||||||
|
(PINF&(1<<0) ? 0 : (1<<0)) |
|
||||||
|
(PINF&(1<<1) ? 0 : (1<<1)) |
|
||||||
|
(PINF&(1<<4) ? 0 : (1<<2)) |
|
||||||
|
(PINF&(1<<5) ? 0 : (1<<3)) |
|
||||||
|
(PINF&(1<<6) ? 0 : (1<<4)) |
|
||||||
|
(PINF&(1<<7) ? 0 : (1<<5)) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Row pin configuration
|
||||||
|
*
|
||||||
|
* Teensy
|
||||||
|
* row: 7 8 9 10 11 12 13
|
||||||
|
* pin: B0 B1 B2 B3 D2 D3 C6
|
||||||
|
*
|
||||||
|
* MCP23018
|
||||||
|
* row: 0 1 2 3 4 5 6
|
||||||
|
* pin: A0 A1 A2 A3 A4 A5 A6
|
||||||
|
*/
|
||||||
|
static void unselect_rows(void)
|
||||||
|
{
|
||||||
|
// unselect on mcp23018
|
||||||
|
if (mcp23018_status) { // if there was an error
|
||||||
|
// do nothing
|
||||||
|
} else {
|
||||||
|
// set all rows hi-Z : 1
|
||||||
|
mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write(GPIOA); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write( 0xFF
|
||||||
|
& ~(0<<8)
|
||||||
|
); if (mcp23018_status) goto out;
|
||||||
|
out:
|
||||||
|
i2c_stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
// unselect on teensy
|
||||||
|
// Hi-Z(DDR:0, PORT:0) to unselect
|
||||||
|
DDRB &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3);
|
||||||
|
PORTB &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3);
|
||||||
|
DDRD &= ~(1<<2 | 1<<3);
|
||||||
|
PORTD &= ~(1<<2 | 1<<3);
|
||||||
|
DDRC &= ~(1<<6 | 1<<7);
|
||||||
|
PORTC &= ~(1<<6 | 1<<7);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void select_row(uint8_t row)
|
||||||
|
{
|
||||||
|
if (row < 8) {
|
||||||
|
// select on mcp23018
|
||||||
|
if (mcp23018_status) { // if there was an error
|
||||||
|
// do nothing
|
||||||
|
} else {
|
||||||
|
// set active row low : 0
|
||||||
|
// set other rows hi-Z : 1
|
||||||
|
mcp23018_status = i2c_start(I2C_ADDR_WRITE); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write(GPIOA); if (mcp23018_status) goto out;
|
||||||
|
mcp23018_status = i2c_write( 0xFF & ~(1<<row)
|
||||||
|
& ~(0<<8)
|
||||||
|
); if (mcp23018_status) goto out;
|
||||||
|
out:
|
||||||
|
i2c_stop();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// select on teensy
|
||||||
|
// Output low(DDR:1, PORT:0) to select
|
||||||
|
switch (row) {
|
||||||
|
case 8:
|
||||||
|
DDRB |= (1<<0);
|
||||||
|
PORTB &= ~(1<<0);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
DDRB |= (1<<1);
|
||||||
|
PORTB &= ~(1<<1);
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
DDRB |= (1<<2);
|
||||||
|
PORTB &= ~(1<<2);
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
DDRB |= (1<<3);
|
||||||
|
PORTB &= ~(1<<3);
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
DDRD |= (1<<2);
|
||||||
|
PORTD &= ~(1<<3);
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
DDRD |= (1<<3);
|
||||||
|
PORTD &= ~(1<<3);
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
DDRC |= (1<<6);
|
||||||
|
PORTC &= ~(1<<6);
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
DDRC |= (1<<7);
|
||||||
|
PORTC &= ~(1<<7);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
# Frenchdev : My take on a splitted keyboard for dev and french language
|
||||||
|
Concept based on
|
||||||
|
- [ergodox](https://ergodox-ez.com/)
|
||||||
|
- [katy](https://deskthority.net/workshop-f7/katy-keyboard-or-k80cs-key80-contoured-split-t8524.html)
|
||||||
|
|
||||||
|
with the added possibility to connect up to 6 external switches like pedals,
|
||||||
|
and somewhat like the katy, not all keys are on the same level for easier reach.
|
||||||
|
|
||||||
|
###Photos
|
||||||
|
- [default layout](http://i.imgur.com/r2Nvr4p.png)
|
||||||
|
- [editable layout on keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/4480e3ab8026eb7c710a7e22203ef4aa) (keys placement is NOT precise on this)
|
||||||
|
- [the thing when finished](http://imgur.com/a/6FY8v)
|
||||||
|
- [concept and cardboard mockup](http://imgur.com/a/R0vvs)
|
||||||
|
|
||||||
|
##Build instructions
|
||||||
|
|
||||||
|
docker run --rm -e keymap=default -e keyboard=frenchdev --rm -v D:/Repositories/qmk:/qmk:rw edasque/qmk_firmware
|
||||||
|
|
||||||
|
##Laser-cuttable file
|
||||||
|
There is intentionnaly no hole for the TRRS connector, you are supposed to use a drill for it.
|
||||||
|
This way if you don't want to use the pedals you don't have a useless hole. Plus it's cleaner.
|
||||||
|
http://qmk.fm/frenchdev/frenchdev_v1_lasercut_template.svg
|
||||||
|
|
||||||
|
##Side stickers
|
||||||
|
You can find my original file here : http://qmk.fm/frenchdev/example_printable_stickers.svg
|
||||||
|
|
||||||
|
I used it when training but now I use blanks and the layout is different.
|
||||||
|
I still uploaded it because I think it can be a good jumpstart for any temporary stickers on the
|
||||||
|
side of keycaps.
|
||||||
|
|
||||||
|
##List of parts
|
||||||
|
- I2C mcp23018
|
||||||
|
- [teensy 2](https://www.pjrc.com/store/teensy.html)
|
||||||
|
- 3 LED, 5mm tall with flat head
|
||||||
|
- 3 330 ohm resistor
|
||||||
|
- 2 470 ohm resistor
|
||||||
|
- 2 TRRS connectors
|
||||||
|
- 1 [micro usb breakout board](http://www.ebay.com/itm/-/201387922085?)
|
||||||
|
- 88 cherry/gateron switchs
|
||||||
|
- 94 4148 diodes
|
||||||
|
- 34 R4 keys
|
||||||
|
- 14 R3 keys
|
||||||
|
- 20 R2 keys
|
||||||
|
- 22 R1 keys
|
||||||
|
|
||||||
|
if you fancy adding pedals :
|
||||||
|
[these are good enough and cheap](https://www.amazon.fr/gp/product/B00V7WITKI/ref=oh_aui_detailpage_o04_s00?ie=UTF8&psc=1). You also need a RCA connector for each of those to replace the included cable
|
||||||
|
|
||||||
|
If you (or your coworkers) find them too loud you can replace the switch inside them.
|
||||||
|
For once we don't really care about what's inside :)
|
||||||
|
|
||||||
|
##Various indications
|
||||||
|
|
||||||
|
The PHYSICAL rows and columns are connected as such :
|
||||||
|
|
||||||
|
on right hand (slave) :
|
||||||
|
|
||||||
|
I2C mcp23018
|
||||||
|
.------- --------.
|
||||||
|
GND -| 1 VSS \_/ NC 28 |
|
||||||
|
| 2 NC A7 27 |- C15
|
||||||
|
R5 -| 3 B0 A6 26 |- C14
|
||||||
|
R4 -| 4 B1 A5 25 |- C13
|
||||||
|
R3 -| 5 B2 A4 24 |- C12
|
||||||
|
R2 -| 6 B3 A3 23 |- C11
|
||||||
|
R1 -| 7 B4 A2 22 |- C10
|
||||||
|
R0 -| 8 B5 A1 21 |- C9
|
||||||
|
| 9 B6 A0 20 |- C8
|
||||||
|
| 10 B7 INTA 19 |
|
||||||
|
VCC -| 11 VDD INTB 18 |
|
||||||
|
SCL -| 12 SCL NC 17 |
|
||||||
|
SDA -| 13 SDA RST 16 |- VCC
|
||||||
|
| 14 NC ADDR 15 |- GND
|
||||||
|
`------------------'
|
||||||
|
|
||||||
|
and on left hand (main) :
|
||||||
|
|
||||||
|
TEENSY
|
||||||
|
.------------------.
|
||||||
|
| GND VCC |
|
||||||
|
C7 -| B0 F0 |- R5
|
||||||
|
C6 -| B1 F1 |- R4
|
||||||
|
C5 -| B2 F4 |- R3
|
||||||
|
C4 -| B3 F5 |- R2
|
||||||
|
LEDC -| B7 F6 |- R1
|
||||||
|
SCL -| D0 F7 |- R0
|
||||||
|
SDA -| D1 B6 |- LEDB
|
||||||
|
C3 -| D2 B5 |- LEDA
|
||||||
|
C2 -| D3 B4 |
|
||||||
|
C1 -| C6 D7 |
|
||||||
|
C0 -| C7 D6 |- GND
|
||||||
|
| D5 D4 |
|
||||||
|
| VCC RST |
|
||||||
|
| E6 GND |
|
||||||
|
`------------------'
|
||||||
|
|
||||||
|
We use pull up resistor for SCL and VDA, see https://github.com/ErgoDox-EZ/docs/blob/master/ErgoDox%20EZ%20Schematic.pdf for example
|
||||||
|
|
||||||
|
the connector is a standard TRRS (jack with audio + mic)
|
||||||
|
|
||||||
|
Diode direction is row to column
|
||||||
|
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# 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).
|
||||||
|
#
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# # project specific files
|
||||||
|
SRC = twimaster.c \
|
||||||
|
matrix.c
|
||||||
|
|
||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
#
|
||||||
|
# This will be an integer division of F_USB below, as it is sourced by
|
||||||
|
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||||
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
|
# software delays.
|
||||||
|
F_CPU = 16000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# LUFA specific
|
||||||
|
#
|
||||||
|
# Target architecture (see library "Board Types" documentation).
|
||||||
|
ARCH = AVR8
|
||||||
|
|
||||||
|
# Input clock frequency.
|
||||||
|
# This will define a symbol, F_USB, in all source code files equal to the
|
||||||
|
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||||
|
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||||
|
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||||
|
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||||
|
# at the end, this will be done automatically to create a 32-bit value in your
|
||||||
|
# source code.
|
||||||
|
#
|
||||||
|
# If no clock division is performed on the input clock inside the AVR (via the
|
||||||
|
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||||
|
F_USB = $(F_CPU)
|
||||||
|
|
||||||
|
# Interrupt driven control endpoint task(+60)
|
||||||
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
|
||||||
|
# Boot Section Size in *bytes*
|
||||||
|
# Teensy halfKay 512
|
||||||
|
# Teensy++ halfKay 1024
|
||||||
|
# Atmel DFU loader 4096
|
||||||
|
# LUFA bootloader 4096
|
||||||
|
# USBaspLoader 2048
|
||||||
|
OPT_DEFS += -DBOOTLOADER_SIZE=512
|
||||||
|
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# 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 = yes # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
CUSTOM_MATRIX = yes # Custom matrix file (taken and adapted from the ErgoDox EZ to handle custom number of columns)
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
UNICODE_ENABLE = yes # Unicode
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
RGBLIGHT_ENABLE = no
|
||||||
|
API_SYSEX_ENABLE = no
|
||||||
|
|
||||||
|
#ifndef QUANTUM_DIR
|
||||||
|
# include ../../../Makefile
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,208 @@
|
|||||||
|
/*************************************************************************
|
||||||
|
* Title: I2C master library using hardware TWI interface
|
||||||
|
* Author: Peter Fleury <[email protected]> http://jump.to/fleury
|
||||||
|
* File: $Id: twimaster.c,v 1.3 2005/07/02 11:14:21 Peter Exp $
|
||||||
|
* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3
|
||||||
|
* Target: any AVR device with hardware TWI
|
||||||
|
* Usage: API compatible with I2C Software Library i2cmaster.h
|
||||||
|
**************************************************************************/
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <compat/twi.h>
|
||||||
|
|
||||||
|
#include <i2cmaster.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* define CPU frequency in Mhz here if not defined in Makefile */
|
||||||
|
#ifndef F_CPU
|
||||||
|
#define F_CPU 16000000UL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* I2C clock in Hz */
|
||||||
|
#define SCL_CLOCK 400000L
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
Initialization of the I2C bus interface. Need to be called only once
|
||||||
|
*************************************************************************/
|
||||||
|
void i2c_init(void)
|
||||||
|
{
|
||||||
|
/* initialize TWI clock
|
||||||
|
* minimal values in Bit Rate Register (TWBR) and minimal Prescaler
|
||||||
|
* bits in the TWI Status Register should give us maximal possible
|
||||||
|
* I2C bus speed - about 444 kHz
|
||||||
|
*
|
||||||
|
* for more details, see 20.5.2 in ATmega16/32 secification
|
||||||
|
*/
|
||||||
|
|
||||||
|
TWSR = 0; /* no prescaler */
|
||||||
|
TWBR = 10; /* must be >= 10 for stable operation */
|
||||||
|
|
||||||
|
}/* i2c_init */
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
Issues a start condition and sends address and transfer direction.
|
||||||
|
return 0 = device accessible, 1= failed to access device
|
||||||
|
*************************************************************************/
|
||||||
|
unsigned char i2c_start(unsigned char address)
|
||||||
|
{
|
||||||
|
uint8_t twst;
|
||||||
|
|
||||||
|
// send START condition
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
|
||||||
|
|
||||||
|
// wait until transmission completed
|
||||||
|
while(!(TWCR & (1<<TWINT)));
|
||||||
|
|
||||||
|
// check value of TWI Status Register. Mask prescaler bits.
|
||||||
|
twst = TW_STATUS & 0xF8;
|
||||||
|
if ( (twst != TW_START) && (twst != TW_REP_START)) return 1;
|
||||||
|
|
||||||
|
// send device address
|
||||||
|
TWDR = address;
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN);
|
||||||
|
|
||||||
|
// wail until transmission completed and ACK/NACK has been received
|
||||||
|
while(!(TWCR & (1<<TWINT)));
|
||||||
|
|
||||||
|
// check value of TWI Status Register. Mask prescaler bits.
|
||||||
|
twst = TW_STATUS & 0xF8;
|
||||||
|
if ( (twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK) ) return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}/* i2c_start */
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
Issues a start condition and sends address and transfer direction.
|
||||||
|
If device is busy, use ack polling to wait until device is ready
|
||||||
|
|
||||||
|
Input: address and transfer direction of I2C device
|
||||||
|
*************************************************************************/
|
||||||
|
void i2c_start_wait(unsigned char address)
|
||||||
|
{
|
||||||
|
uint8_t twst;
|
||||||
|
|
||||||
|
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
// send START condition
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
|
||||||
|
|
||||||
|
// wait until transmission completed
|
||||||
|
while(!(TWCR & (1<<TWINT)));
|
||||||
|
|
||||||
|
// check value of TWI Status Register. Mask prescaler bits.
|
||||||
|
twst = TW_STATUS & 0xF8;
|
||||||
|
if ( (twst != TW_START) && (twst != TW_REP_START)) continue;
|
||||||
|
|
||||||
|
// send device address
|
||||||
|
TWDR = address;
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN);
|
||||||
|
|
||||||
|
// wail until transmission completed
|
||||||
|
while(!(TWCR & (1<<TWINT)));
|
||||||
|
|
||||||
|
// check value of TWI Status Register. Mask prescaler bits.
|
||||||
|
twst = TW_STATUS & 0xF8;
|
||||||
|
if ( (twst == TW_MT_SLA_NACK )||(twst ==TW_MR_DATA_NACK) )
|
||||||
|
{
|
||||||
|
/* device busy, send stop condition to terminate write operation */
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
|
||||||
|
|
||||||
|
// wait until stop condition is executed and bus released
|
||||||
|
while(TWCR & (1<<TWSTO));
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//if( twst != TW_MT_SLA_ACK) return 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}/* i2c_start_wait */
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
Issues a repeated start condition and sends address and transfer direction
|
||||||
|
|
||||||
|
Input: address and transfer direction of I2C device
|
||||||
|
|
||||||
|
Return: 0 device accessible
|
||||||
|
1 failed to access device
|
||||||
|
*************************************************************************/
|
||||||
|
unsigned char i2c_rep_start(unsigned char address)
|
||||||
|
{
|
||||||
|
return i2c_start( address );
|
||||||
|
|
||||||
|
}/* i2c_rep_start */
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
Terminates the data transfer and releases the I2C bus
|
||||||
|
*************************************************************************/
|
||||||
|
void i2c_stop(void)
|
||||||
|
{
|
||||||
|
/* send stop condition */
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
|
||||||
|
|
||||||
|
// wait until stop condition is executed and bus released
|
||||||
|
while(TWCR & (1<<TWSTO));
|
||||||
|
|
||||||
|
}/* i2c_stop */
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
Send one byte to I2C device
|
||||||
|
|
||||||
|
Input: byte to be transfered
|
||||||
|
Return: 0 write successful
|
||||||
|
1 write failed
|
||||||
|
*************************************************************************/
|
||||||
|
unsigned char i2c_write( unsigned char data )
|
||||||
|
{
|
||||||
|
uint8_t twst;
|
||||||
|
|
||||||
|
// send data to the previously addressed device
|
||||||
|
TWDR = data;
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN);
|
||||||
|
|
||||||
|
// wait until transmission completed
|
||||||
|
while(!(TWCR & (1<<TWINT)));
|
||||||
|
|
||||||
|
// check value of TWI Status Register. Mask prescaler bits
|
||||||
|
twst = TW_STATUS & 0xF8;
|
||||||
|
if( twst != TW_MT_DATA_ACK) return 1;
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}/* i2c_write */
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
Read one byte from the I2C device, request more data from device
|
||||||
|
|
||||||
|
Return: byte read from I2C device
|
||||||
|
*************************************************************************/
|
||||||
|
unsigned char i2c_readAck(void)
|
||||||
|
{
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWEA);
|
||||||
|
while(!(TWCR & (1<<TWINT)));
|
||||||
|
|
||||||
|
return TWDR;
|
||||||
|
|
||||||
|
}/* i2c_readAck */
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
Read one byte from the I2C device, read is followed by a stop condition
|
||||||
|
|
||||||
|
Return: byte read from I2C device
|
||||||
|
*************************************************************************/
|
||||||
|
unsigned char i2c_readNak(void)
|
||||||
|
{
|
||||||
|
TWCR = (1<<TWINT) | (1<<TWEN);
|
||||||
|
while(!(TWCR & (1<<TWINT)));
|
||||||
|
|
||||||
|
return TWDR;
|
||||||
|
|
||||||
|
}/* i2c_readNak */
|
||||||
@@ -51,20 +51,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../Makefile
|
include ../../Makefile
|
||||||
|
|||||||
@@ -51,18 +51,18 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
FAUXCLICKY_ENABLE ?= no # Use buzzer to emulate clicky switches
|
FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
|
||||||
@@ -51,20 +51,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../Makefile
|
include ../../../Makefile
|
||||||
|
|||||||
@@ -50,18 +50,18 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
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
|
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
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
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
|
||||||
RGBLIGHT_ENABLE ?= yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
|
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# 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
|
||||||
@@ -51,20 +51,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../Makefile
|
include ../../../Makefile
|
||||||
|
|||||||
@@ -52,11 +52,11 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||||
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
|
||||||
|
|
||||||
|
|||||||
@@ -51,20 +51,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../Makefile
|
include ../../../Makefile
|
||||||
|
|||||||
@@ -51,17 +51,17 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
@@ -50,27 +50,27 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
# the appropriate keymap folder that will get included automatically
|
# the appropriate keymap folder that will get included automatically
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
MOUSEKEY_ENABLE ?= no # Mouse keys(+4700)
|
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
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
|
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
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
UNICODE_ENABLE ?= no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
UNICODEMAP_ENABLE ?= yes
|
UNICODEMAP_ENABLE = yes
|
||||||
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
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.
|
||||||
PS2_MOUSE_ENABLE ?= yes
|
PS2_MOUSE_ENABLE = yes
|
||||||
PS2_USE_INT ?= yes
|
PS2_USE_INT = yes
|
||||||
API_SYSEX_ENABLE ?= no
|
API_SYSEX_ENABLE = no
|
||||||
CUSTOM_MATRIX ?= yes
|
CUSTOM_MATRIX = yes
|
||||||
BLUETOOTH ?= AdafruitBLE
|
BLUETOOTH = AdafruitBLE
|
||||||
|
|
||||||
# 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
|
||||||
|
|
||||||
SRC += $(QUANTUM_DIR)/light_ws2812.c
|
SRC += $(QUANTUM_DIR)/light_ws2812.c
|
||||||
SRC += rgbsps.c
|
SRC += rgbsps.c
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ MCU = atmega32u4
|
|||||||
F_CPU = 16000000
|
F_CPU = 16000000
|
||||||
|
|
||||||
# for avr upload
|
# for avr upload
|
||||||
USB ?= /dev/cu.usbmodem1421
|
USB = /dev/cu.usbmodem1421
|
||||||
#
|
#
|
||||||
# LUFA specific
|
# LUFA specific
|
||||||
#
|
#
|
||||||
@@ -64,20 +64,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../../Makefile
|
include ../../../Makefile
|
||||||
|
|||||||
@@ -53,16 +53,16 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
|
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||||
# 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 ?= yes # Breathing sleep LED during USB suspend
|
# 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
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
# MIDI_ENABLE ?= YES # MIDI controls
|
# MIDI_ENABLE = YES # MIDI controls
|
||||||
# UNICODE_ENABLE ?= YES # Unicode
|
# UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
@@ -4,21 +4,21 @@ ARCH = AVR8
|
|||||||
F_USB = $(F_CPU)
|
F_USB = $(F_CPU)
|
||||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
OPT_DEFS += -DBOOTLOADER_SIZE=512
|
OPT_DEFS += -DBOOTLOADER_SIZE=512
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
|
||||||
PS2_MOUSE_ENABLE ?= yes
|
PS2_MOUSE_ENABLE = yes
|
||||||
PS2_USE_USART ?= yes
|
PS2_USE_USART = yes
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
include ../../Makefile
|
include ../../Makefile
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ MCU = atmega32u4
|
|||||||
F_CPU = 16000000
|
F_CPU = 16000000
|
||||||
|
|
||||||
# for avr upload
|
# for avr upload
|
||||||
USB ?= /dev/cu.usbmodem1421
|
USB = /dev/cu.usbmodem1421
|
||||||
#
|
#
|
||||||
# LUFA specific
|
# LUFA specific
|
||||||
#
|
#
|
||||||
@@ -64,20 +64,20 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# change yes to no to disable
|
# change yes to no to disable
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
BOOTMAGIC_ENABLE = no # 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)
|
||||||
CONSOLE_ENABLE ?= no # Console for debug(+400)
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
# 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
|
||||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
NKRO_ENABLE ?= no # USB Nkey Rollover
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
|
||||||
MIDI_ENABLE ?= no # MIDI controls
|
MIDI_ENABLE = no # MIDI controls
|
||||||
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
|
||||||
AUDIO_ENABLE ?= no # Audio output on port C6
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
RGBLIGHT_ENABLE = yes
|
RGBLIGHT_ENABLE = yes
|
||||||
|
|
||||||
ifndef QUANTUM_DIR
|
ifndef QUANTUM_DIR
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
TAP_DANCE_ENABLE = no
|
||||||
|
UNICODE_ENABLE = no
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
# QMK HHKB Keymap: blakedietz
|
||||||
|
|
||||||
|
<!-- TODO: Link to Hasu's geekhack page from his name -->
|
||||||
|
<!-- TODO: Link to the ergodox ez layout in this repository -->
|
||||||
|
|
||||||
|
This is my (Blake Dietz's) own take on a QMK keymap for the Happy Hacking Keyboard Pro 2 alternate controller made by Hasu. A lot of the
|
||||||
|
functionality was inspired by the ergodox ez default layout.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
|
||||||
|
```bash
|
||||||
|
brew tap osx-cross/avr
|
||||||
|
brew install avr-libc
|
||||||
|
brew install dfu-programmer
|
||||||
|
```
|
||||||
|
|
||||||
|
### Windows/Linux
|
||||||
|
|
||||||
|
[Build Environment Setup](https://github.com/jackhumbert/qmk_firmware/wiki#build-environment-setup)
|
||||||
|
|
||||||
|
## Flashing
|
||||||
|
|
||||||
|
You will need to make sure that you have something that you can use to press the button on the alternate controller in
|
||||||
|
order to put it into boot mode.
|
||||||
|
|
||||||
|
From the hhkb directory run the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make clean
|
||||||
|
make hhkb-blakedietz-dfu
|
||||||
|
```
|
||||||
|
|
||||||
|
Press the button on the alternate controller to put the board into boot mode.
|
||||||
|
|
||||||
|
You'll see an output similar to the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make hhkb-blakedietz-dfu
|
||||||
|
|
||||||
|
Making hhkb with keymap blakedietz and target dfu
|
||||||
|
|
||||||
|
avr-gcc (GCC) 6.2.0
|
||||||
|
Copyright (C) 2016 Free Software Foundation, Inc.
|
||||||
|
This is free software; see the source for copying conditions. There is NO
|
||||||
|
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
Size before:
|
||||||
|
text data bss dec hex filename
|
||||||
|
0 22162 0 22162 5692 hhkb_blakedietz.hex
|
||||||
|
|
||||||
|
Compiling: keyboards/hhkb/keymaps/blakedietz/keymap.c [OK]
|
||||||
|
Compiling: ./tmk_core/common/command.c [OK]
|
||||||
|
Linking: .build/hhkb_blakedietz.elf [OK]
|
||||||
|
Creating load file for Flash: .build/hhkb_blakedietz.hex [OK]
|
||||||
|
|
||||||
|
Size after:
|
||||||
|
text data bss dec hex filename
|
||||||
|
0 22162 0 22162 5692 hhkb_blakedietz.hex
|
||||||
|
|
||||||
|
dfu-programmer: no device present.
|
||||||
|
Error: Bootloader not found. Trying again in 5s.
|
||||||
|
dfu-programmer: no device present.
|
||||||
|
Error: Bootloader not found. Trying again in 5s.
|
||||||
|
Bootloader Version: 0x00 (0)
|
||||||
|
Erasing flash... Success
|
||||||
|
Checking memory from 0x0 to 0x6FFF... Empty.
|
||||||
|
Checking memory from 0x0 to 0x56FF... Empty.
|
||||||
|
0% 100% Programming 0x5700 bytes...
|
||||||
|
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
|
||||||
|
0% 100% Reading 0x7000 bytes...
|
||||||
|
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
|
||||||
|
Validating... Success
|
||||||
|
0x5700 bytes written into 0x7000 bytes memory (77.68%).
|
||||||
|
```
|
||||||
|
|
||||||
|
### Layers
|
||||||
|
|
||||||
|
#### Default
|
||||||
|
|
||||||
|
##### A more "standard" layout
|
||||||
|
|
||||||
|
This layout places tilde in the standard location. Backspace is moved to the two upper-right-most keys and pipe
|
||||||
|
is put back where it belongs (where backspace is on the default hhkb2 keymapping).
|
||||||
|
|
||||||
|
##### Hyper key
|
||||||
|
|
||||||
|
<!-- TODO: Link to Brett's article about the thyper key -->
|
||||||
|
|
||||||
|
This layout throws out the HHKB's control key in favor of a Hyper key. Ctrl is instead placed on the z and / keys and
|
||||||
|
can be activated with a long press. I find that this is far more ergonomic as it's less of a reach and it allows you to
|
||||||
|
alternate to either hand when you need to use `ctrl` as a modifier.
|
||||||
|
|
||||||
|
The hyper key can be held for hyper and tapped for escape. You'll find that this is quite nice for vim.
|
||||||
|
|
||||||
|
Enter is also a hyper key. This allows for symmetry between control and enter. Hold for hyper, tap for enter.
|
||||||
|
|
||||||
|
##### Tap to Hold
|
||||||
|
|
||||||
|
###### CTL, ALT, GUI
|
||||||
|
|
||||||
|
Since the HHKB does not have three super/meta keys, these keys were moved to pinky, ring and middle finger for ctrl, alt/
|
||||||
|
option and super respectively. This is closer to home row which I've found causes less strain.
|
||||||
|
|
||||||
|
The Alt and Super keys are instead replaced with layer toggle keys to go to dev and mouse mode respectively.
|
||||||
|
|
||||||
|
###### Space
|
||||||
|
|
||||||
|
Hold space to switch to dev mode. This will put you on a layer to have vim like arrow functionality on h,j,k and l. Use
|
||||||
|
this in editors that don't have vim keybindings.
|
||||||
|
|
||||||
|
### Dev
|
||||||
|
|
||||||
|
The Dev layer can be activated holding space or hitting the HHKB's Alt key. This will put you in a mode
|
||||||
|
where all function keys are available and left, right, up and down are mapped to their vim equivalents. The function
|
||||||
|
keys are mapped in such a way that you can use them for debugging. Typically I map debugging functions in all IDEs to
|
||||||
|
the following for a seamless debugging experience (e.g. jumping from Intellij to chrome dev tools and back):
|
||||||
|
|
||||||
|
- f1 -> step over
|
||||||
|
- f2 -> step into
|
||||||
|
- f3 -> step out
|
||||||
|
- f4 -> continue
|
||||||
|
- f5 -> set break point on current line
|
||||||
|
|
||||||
|
### Media
|
||||||
|
|
||||||
|
The media layer can be activated by pressing and holding the semi-colon. I've also placed the play and pause key on the
|
||||||
|
apostrophe key in the media layer. This allows you to easily roll your pinky from the media toggle (semi-colon) to the
|
||||||
|
play/pause key in one fluid motion.
|
||||||
|
|
||||||
|
I've also tried to logically map next/previous track along with volume up/down vim behavior. In vim since middle finger
|
||||||
|
goes up on k and index finger goes down on j, next/prev track is k/j respectively. ,/m changes volume up/down
|
||||||
|
respectively while toggled to the media layer.
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
// Based off of this section:
|
||||||
|
// https://github.com/qmk/qmk_firmware/blob/master/doc/BUILD_GUIDE.md#the-configh-file
|
||||||
|
#ifndef CONFIG_BLAKEDIETZ_H
|
||||||
|
#define CONFIG_BLAKEDIETZ_H
|
||||||
|
|
||||||
|
// Bring in original defaults
|
||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
// Define mousekey settings
|
||||||
|
#define MOUSEKEY_DELAY 0
|
||||||
|
#define MOUSEKEY_INTERVAL 20
|
||||||
|
#define MOUSEKEY_MAX_SPEED 2
|
||||||
|
#define MOUSEKEY_TIME_TO_MAX 5
|
||||||
|
#define MOUSEKEY_WHEEL_DELAY 0
|
||||||
|
|
||||||
|
// Set up tapdance functionality
|
||||||
|
//#define TAPPING_TOGGLE 1
|
||||||
|
// TAPPING_TERM is set in config.h this defaults to 200
|
||||||
|
|
||||||
|
// 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.)
|
||||||
|
#define IGNORE_MOD_TAP_INTERRUPT
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
#include "hhkb.h"
|
||||||
|
|
||||||
|
// Layer names
|
||||||
|
#define BASE 0
|
||||||
|
#define DEV 1
|
||||||
|
#define MOUSE 2
|
||||||
|
#define MEDIA 3
|
||||||
|
|
||||||
|
// Required for leader function. Measured in ms
|
||||||
|
// #define LEADER_TIMEOUT 300
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* BASE Level: Default Layer
|
||||||
|
|-----------+-------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+----|
|
||||||
|
| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bksp |Lead|
|
||||||
|
|-----------+-------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+----|
|
||||||
|
| Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | | \ |
|
||||||
|
|-----------+-------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+----|
|
||||||
|
| Esc/Hyper | A | S | D | F | G | H | J | K | L |;/Media| ' | Enter | | |
|
||||||
|
|-----------+-------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+----|
|
||||||
|
| Shift | Z/Ctl | X/Alt | C/Gui | V | B | N | M | ,/Gui | ./Alt | //Ctl | Shift | Dev | | |
|
||||||
|
|-----------+-------+--------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+------+----|
|
||||||
|
TODO: Maybe add a photoshop layer for when I need to hold spacebar down. Maybe just make it a layer that you
|
||||||
|
|------+------+-----------------------+------+------|
|
||||||
|
| Dev |Mouse | ******* Space ******* | Dev |Mouse |
|
||||||
|
|------+------+-----------------------+------+------|
|
||||||
|
*/
|
||||||
|
|
||||||
|
[BASE] = KEYMAP( // default layer
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_LEAD, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||||
|
ALL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(MEDIA, KC_SCLN), KC_QUOT, ALL_T(KC_ENT), \
|
||||||
|
KC_LSFT, CTL_T(KC_Z), ALT_T(KC_X), GUI_T(KC_C), KC_V, KC_B, KC_N, KC_M, GUI_T(KC_COMM), ALT_T(KC_DOT), CTL_T(KC_SLSH), KC_RSFT, TG(DEV), \
|
||||||
|
TG(DEV), TG(MOUSE), LT(DEV, KC_SPC), TG(MOUSE), TG(DEV)),
|
||||||
|
|
||||||
|
/* Layer DEV: DEV mode (DEV Fn)
|
||||||
|
TODO: Add a cmd/tab function to the developer layer for quick switching between different applications when debugging
|
||||||
|
|------+-----+-----+-----+----+----+--------+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+--------+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+--------+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | F1 | F2 | F3 | F4 | F5 | Left | Down | Up | Right | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+--------+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+--------+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
|
||||||
|
|------+------+----------------------+------+------+
|
||||||
|
| **** | **** | ******************** | **** | **** |
|
||||||
|
|------+------+----------------------+------+------+
|
||||||
|
*/
|
||||||
|
|
||||||
|
[DEV] = KEYMAP(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TG(DEV), \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
|
||||||
|
/* Layer MOUSE: MOUSE mode (MOUSE Fn)
|
||||||
|
|------+-----+-----+-----+----+----+--------+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+--------+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+--------+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+--------+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+--------+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
|
||||||
|
|------+------+----------------------+------+------+
|
||||||
|
| **** | **** | ******************** | **** | **** |
|
||||||
|
|------+------+----------------------+------+------+
|
||||||
|
*/
|
||||||
|
|
||||||
|
[MOUSE] = KEYMAP(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_WH_D, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TG(DEV), \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||||
|
|
||||||
|
/* Layer MEDIA: mode (Hold Semi-colon)
|
||||||
|
|------+-----+-----+-----+----+----+----+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+----+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | | | | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+----+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | Previous | Next | | Play/Pause | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+----+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
| | | | | | | | Volume Down | Volume Up | Mute | | | | | |
|
||||||
|
|------+-----+-----+-----+----+----+----+----------------+--------------+-----------+-------------+-----+-------+-------+-----|
|
||||||
|
|
||||||
|
|------+------+----------------------+------+------+
|
||||||
|
| **** | **** | ******************** | **** | **** |
|
||||||
|
|------+------+----------------------+------+------+
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
[MEDIA] = KEYMAP(
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_MUTE, KC_TRNS, KC_MPLY, KC_TRNS, \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, TG(DEV), \
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_RSFT);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_RSFT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
+12
-12
@@ -58,19 +58,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
CUSTOM_MATRIX ?= yes # Custom matrix file for the HHKB
|
CUSTOM_MATRIX = yes # Custom matrix file for the HHKB
|
||||||
# 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 ?= yes # Breathing sleep LED during USB suspend
|
# 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
|
# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
# MIDI_ENABLE ?= yes # MIDI controls
|
# MIDI_ENABLE = yes # MIDI controls
|
||||||
# UNICODE_ENABLE ?= yes # Unicode
|
# UNICODE_ENABLE = yes # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
|
||||||
debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION
|
debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION
|
||||||
debug-on: all
|
debug-on: all
|
||||||
|
|||||||
@@ -56,12 +56,12 @@ OPT_DEFS = -DCORTEX_VTOR_INIT=0x00001000
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
|
||||||
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
|
## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
|
||||||
MOUSEKEY_ENABLE ?= yes # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE ?= yes # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE ?= yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
|
||||||
NKRO_ENABLE ?= yes # USB Nkey Rollover
|
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||||
CUSTOM_MATRIX ?= yes # Custom matrix file
|
CUSTOM_MATRIX = yes # Custom matrix file
|
||||||
+13
-13
@@ -53,17 +53,17 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||||||
# Build Options
|
# Build Options
|
||||||
# comment out to disable the options.
|
# comment out to disable the options.
|
||||||
#
|
#
|
||||||
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)
|
||||||
# CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
# CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
# COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
# COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
KEYBOARD_LOCK_ENABLE ?= yes # Allow locking of keyboard via magic key
|
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||||
# 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 ?= yes # Breathing sleep LED during USB suspend
|
# 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
|
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality
|
# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
# MIDI_ENABLE ?= YES # MIDI controls
|
# MIDI_ENABLE = YES # MIDI controls
|
||||||
# UNICODE_ENABLE ?= YES # Unicode
|
# UNICODE_ENABLE = YES # Unicode
|
||||||
# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE ?= yes # Enable RGB Underglow
|
RGBLIGHT_ENABLE = yes # Enable RGB Underglow
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
jeebak's JD45 layout
|
||||||
|
=======================
|
||||||
|
NOTE: This is a port of jeebak's planck layout, for jd45.
|
||||||
|
|
||||||
|
This WIP keymap attempts to minimize fingers straying away from the home row.
|
||||||
|
To aid in this endeavor, when additional modifyer keys to switch layers are
|
||||||
|
needed, they will be mapped to home row keys. The `keymap.c` file will contain
|
||||||
|
the exact changes. The diagrams in this README shows the highlights of the
|
||||||
|
changes from the default mappings.
|
||||||
|
|
||||||
|
I also decided to change all calls to `persistant_default_layer_set()` to
|
||||||
|
`default_layer_set()` since this is my personal perference.
|
||||||
|
|
||||||
|
## Macros
|
||||||
|
```
|
||||||
|
#define ALT_TAB M(KC_ALT_TAB)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Base Layers (Qwerty/Colemak/Dvorak)
|
||||||
|
These base layers are mostly the same as the default mappings. The interesting
|
||||||
|
changes are shown below.
|
||||||
|
|
||||||
|
- The `Ctrl/Esc`, will emit an `Escape` when tapped, and act as a `Control` key when held,
|
||||||
|
- `GUI/;` as `;` and `GUI`,
|
||||||
|
- `Alt/"` as `"` and `Alt`,
|
||||||
|
- `Sft/Ent` as `Enter` and `Shift`, and
|
||||||
|
- `Hyper/Tab` as `Tab` and `Hyper`
|
||||||
|
|
||||||
|
A `TODO` item is to see if it can also act as a `CapsLock` when double-tapped.
|
||||||
|
The arrow keys, which have been moved to the
|
||||||
|
[TouchCursor](http://martin-stone.github.io/touchcursor/) layer, have been
|
||||||
|
replaced with the Media keys as shown. The `MC/kc` key activates the
|
||||||
|
`MouseCursor` layer when held, and emits the corresponding `kc` for its layer,
|
||||||
|
when tapped.
|
||||||
|
```
|
||||||
|
,---------+------+------+------+------+------+------+------+------+------+------+------+------.
|
||||||
|
|Hyper/Tab| Q | W | E | R | T | Y | U | I | O | P | [ | Bksp |
|
||||||
|
|---------`------`------`------`------`------`------`------`------`------`------`------`------|
|
||||||
|
| Ctrl/Esc | A | S | MC/D | F | G | H | J | K | L |GUI/; | Alt/" |
|
||||||
|
|----------`------`------`------`------`------`------`------`------`------`------`------------|
|
||||||
|
| Shift | Z | X | C | V | B | N | M | , | . | / | Sft/Ent |
|
||||||
|
|-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
|
||||||
|
| RGUI | Alt | GUI | Lower | TC/Space | TC/Space | Raise | Vol- | Vol+ | Play |
|
||||||
|
`-------+-------+-------+-------+---^^^----+---^^^----+---------+--------+--------+----------'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Lower Layer (Symbols and Function Keys)
|
||||||
|
The symbols and functions keys are essentially the same as the default mapping.
|
||||||
|
The most notable changes are that the symbol keys from the `RAISE` layer have
|
||||||
|
been moved here. The remaining Media keys replace those that are now on the
|
||||||
|
base layers. The `BACKLIT` key has also been moved here.
|
||||||
|
```
|
||||||
|
,---------+------+------+------+------+------+------+------+------+------+------+------+------.
|
||||||
|
| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | Bksp |
|
||||||
|
|---------`------`------`------`------`------`------`------`------`------`------`------`------|
|
||||||
|
| [ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | "|" |
|
||||||
|
|----------`------`------`------`------`------`------`------`------`------`------`------------|
|
||||||
|
| ] | F7 | F8 | F9 | F10 | F11 | F12 | - | = | [ | ] | \ |
|
||||||
|
|-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
|
||||||
|
| Brite | | | | | | | Prev | Next | Mute |
|
||||||
|
`-------+-------+-------+-------+---^^^----+---^^^----+---------+--------+--------+----------'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Raise Layer (Numbers and Arithmetic Operators)
|
||||||
|
All of the numbers and arithmetic operators are available on this layer. Some
|
||||||
|
keys are duplicated for the convenience of their positions. The `0` and `$`
|
||||||
|
keys at the far left are for quick access to beginning and end of line in vim.
|
||||||
|
```
|
||||||
|
,---------+------+------+------+------+------+------+------+------+------+------+------+------.
|
||||||
|
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | Bksp |
|
||||||
|
|---------`------`------`------`------`------`------`------`------`------`------`------`------|
|
||||||
|
| $ | 4 | 5 | 6 | . | + | . | 4 | 5 | 6 | * | "|" |
|
||||||
|
|----------`------`------`------`------`------`------`------`------`------`------`------------|
|
||||||
|
| = | 7 | 8 | 9 | 0 | - | . | 1 | 2 | 3 | / | \ |
|
||||||
|
|-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
|
||||||
|
| Brite | | | | | | | Prev | Next | Mute |
|
||||||
|
`-------+-------+-------+-------+---^^^----+---^^^----+---------+--------+--------+----------'
|
||||||
|
```
|
||||||
|
|
||||||
|
## TouchCursor layer plus personal customizations
|
||||||
|
[TouchCursor](http://martin-stone.github.io/touchcursor/) uses the `Space` key
|
||||||
|
as the modifier, with the `IJKL` home row keys representing the inverted-T of
|
||||||
|
the arrow keys. All of the default TouchCursor keymappings for the right hand
|
||||||
|
are represented below. My personalizations include all of the keys shown for
|
||||||
|
the left hand. Having the `Alt` and `Shift` keys (as well as the `Control` key
|
||||||
|
from the base layers) readily accessible from the home row allows quick word
|
||||||
|
jumps and highlighting when used in conjunction with the arrow keys. The
|
||||||
|
`Alt-Tab` macro is not only useful under Windows, but also under Mac when used
|
||||||
|
with alternative switchers like [HyperSwitch](https://bahoom.com/hyperswitch).
|
||||||
|
The `Cmd-Tab` and `Ctrl-Tab` sequences are duplicated for easy access while in
|
||||||
|
this layer. The `KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_FIND,` and `KC_AGAIN`
|
||||||
|
keycodes do not seem to work. There are macros in place that'll "automatically"
|
||||||
|
choose the correct version (`Cmd-Tab` vs. `Alt-Tab`, `Cmd-C` vs. `Ctrl-C`,
|
||||||
|
etc.) depending on which layout you've currently selected (`AG_NORM` or
|
||||||
|
`AG_SWAP`) in the `_ADJUST` layer. The `Desk_L` and `Desk_R` macros are what I
|
||||||
|
use to switch between Virtual Desktops Left/Right. The `Tab_C`, `Tab_N` and
|
||||||
|
`Tab_R` are for "Close Tab," "New Tab" and "Reopen Closed Tab" for apps such as
|
||||||
|
Google Chrome.
|
||||||
|
```
|
||||||
|
,---------+------+------+------+------+------+------+------+------+------+------+------+------.
|
||||||
|
| AltTab |CmdTab|CtlTab| GUI |Shift | ~ |Insert| Home | Up | End | Bksp | | |
|
||||||
|
|---------`------`------`------`------`------`------`------`------`------`------`------`------|
|
||||||
|
| | Alt |Space |Tab_C | Find |Again | PgUp | Left | Down |Right |Desk_L| Desk_R |
|
||||||
|
|----------`------`------`------`------`------`------`------`------`------`------`------------|
|
||||||
|
| | Undo | Cut | Copy |Paste | ` | PgDn | Del |Tab_N |Tab_R |iTerm2| |
|
||||||
|
|-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
|
||||||
|
| | | | | | | | | | |
|
||||||
|
`-------+-------+-------+-------+---^^^----+---^^^----+---------+--------+--------+----------'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Mouse Layer
|
||||||
|
The Mouse layer, closely mimics the layout/behaviour of the TouchCursor layer.
|
||||||
|
The `D` key (on QWERTY) is used to activate this layer. All 16 keycodes for the
|
||||||
|
mouse from the `doc/keycode.txt` file are represented, and logically located,
|
||||||
|
IMHO. The left and right click buttons are duplicated; on the right hand side,
|
||||||
|
for a quick click here and there, and again on the left hand side for when the
|
||||||
|
buttons need to be held for dragging things or highlighting text, thus allowing
|
||||||
|
the right hand to be free to use the up/down/left/right actions.
|
||||||
|
```
|
||||||
|
,---------+------+------+------+------+------+------+------+------+------+------+------+------.
|
||||||
|
| | |ACCL0 | | | | |WHL_L | Up |WHL_R | BTN2 | | |
|
||||||
|
|---------`------`------`------`------`------`------`------`------`------`------`------`------|
|
||||||
|
| |ACCL2 | BTN2 | | BTN1 |ACCL1 |WHL_Up| Left | Down |Right | BTN4 | BTN5 |
|
||||||
|
|----------`------`------`------`------`------`------`------`------`------`------`------------|
|
||||||
|
| | | | | BTN3 | |WHL_Dn| BTN1 | | | BTN3 | |
|
||||||
|
|-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
|
||||||
|
| | | | | | | | | | |
|
||||||
|
`-------+-------+-------+-------+---^^^----+---^^^----+---------+--------+--------+----------'
|
||||||
|
```
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
```
|
||||||
|
/* Name
|
||||||
|
* ,---------+------+------+------+------+------+------+------+------+------+------+------+------.
|
||||||
|
* | | | | | | | | | | | | | |
|
||||||
|
* |---------`------`------`------`------`------`------`------`------`------`------`------`------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |----------`------`------`------`------`------`------`------`------`------`------`------------|
|
||||||
|
* | | | | | | | | | | | | |
|
||||||
|
* |-----------`------`------`------`------`-----'-------`------`------`------`------`-----------|
|
||||||
|
* | | | | | | | | | | |
|
||||||
|
* `-------+-------+-------+-------+---^^^----+---^^^----+---------+--------+--------+----------'
|
||||||
|
*/
|
||||||
|
```
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#include "../../config.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
*JD45 keymap definition macro
|
||||||
|
*/
|
||||||
|
#define KEYMAP_JD45( \
|
||||||
|
K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
|
||||||
|
K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
|
||||||
|
K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
|
||||||
|
K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
|
||||||
|
) { \
|
||||||
|
{ K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13 }, \
|
||||||
|
{ K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, KC_NO }, \
|
||||||
|
{ K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, KC_NO }, \
|
||||||
|
{ K38, K39, K40, K41, K42, KC_NO, K43, KC_NO, K44, K45, K46, K47, KC_NO } \
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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.)
|
||||||
|
*/
|
||||||
|
#define IGNORE_MOD_TAP_INTERRUPT
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Improve the smootheness of mouse interaction
|
||||||
|
*/
|
||||||
|
#define MOUSEKEY_INTERVAL 20
|
||||||
|
#define MOUSEKEY_DELAY 0
|
||||||
|
#define MOUSEKEY_TIME_TO_MAX 5
|
||||||
|
#define MOUSEKEY_MAX_SPEED 2
|
||||||
|
#define MOUSEKEY_WHEEL_DELAY 0
|
||||||
Loaded 100 of 244 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user