forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' of https://github.com/qmk/qmk_firmware
- Loading branch information
Showing
128 changed files
with
7,839 additions
and
501 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,160 @@ | ||
# Auto Shift: Why do we need a shift key? | ||
|
||
Tap a key and you get its character. Tap a key, but hold it *slightly* longer | ||
and you get its shifted state. Viola! No shift key needed! | ||
|
||
## Why Auto Shift? | ||
|
||
Many people suffer from various forms of RSI. A common cause is stretching your | ||
fingers repetitively long distances. For us on the keyboard, the pinky does that | ||
all too often when reaching for the shift key. Auto Shift looks to alleviate that | ||
problem. | ||
|
||
## How does it work? | ||
|
||
When you tap a key, it stays depressed for a short period of time before it is | ||
then released. This depressed time is a different length for everyone. Auto Shift | ||
defines a constant `AUTO_SHIFT_TIMEOUT` which is typically set to twice your | ||
normal pressed state time. When you press a key, a timer starts and then stops | ||
when you release the key. If the time depressed is greater than or equal to the | ||
`AUTO_SHIFT_TIMEOUT`, then a shifted version of the key is emitted. If the time | ||
is less than the `AUTO_SHIFT_TIMEOUT` time, then the normal state is emitted. | ||
|
||
## Are there limitations to Auto Shift? | ||
|
||
Yes, unfortunately. | ||
|
||
1. Key repeat will cease to work. For example, before if you wanted 20 'a' | ||
characters, you could press and hold the 'a' key for a second or two. This no | ||
longer works with Auto Shift because it is timing your depressed time instead | ||
of emitting a depressed key state to your operating system. | ||
2. Auto Shift is disabled for any key press that is accompanied by one or more | ||
modifiers. Thus, Ctrl+A that you hold for a really long time is not the same | ||
as Ctrl+Shift+A. | ||
3. You will have characters that are shifted when you did not intend on shifting, and | ||
other characters you wanted shifted, but were not. This simply comes down to | ||
practice. As we get in a hurry, we think we have hit the key long enough | ||
for a shifted version, but we did not. On the other hand, we may think we are | ||
tapping the keys, but really we have held it for a little longer than | ||
anticipated. | ||
|
||
## How do I enable Auto Shift? | ||
|
||
Add to your `rules.mk` in the keymap folder: | ||
|
||
AUTO_SHIFT_ENABLE = YES | ||
|
||
If no `rules.mk` exists, you can create one. | ||
|
||
Then compile and install your new firmware with Auto Key enabled! That's it! | ||
|
||
## Configuring Auto Shift | ||
|
||
If desired, there is some configuration that can be done to change the | ||
behavior of Auto Shift. This is done by setting various variables the | ||
`config.h` file located in your keymap folder. If no `config.h` file exists, you can create one. | ||
|
||
A sample is | ||
|
||
#ifndef CONFIG_USER_H | ||
#define CONFIG_USER_H | ||
|
||
#include "../../config.h" | ||
|
||
#define AUTO_SHIFT_TIMEOUT 150 | ||
#define NO_AUTO_SHIFT_SPECIAL | ||
|
||
#endif | ||
|
||
### AUTO_SHIFT_TIMEOUT (value in ms) | ||
|
||
This controls how long you have to hold a key before you get the shifted state. | ||
Obviously, this is different for everyone. For the common person, a setting of | ||
135 to 150 works great. However, one should start with a value of at least 175, which | ||
is the default value. Then work down from there. The idea is to have the shortest time required to get the shifted state without having false positives. | ||
|
||
Play with this value until things are perfect. Many find that all will work well | ||
at a given value, but one or two keys will still emit the shifted state on | ||
occassion. This is simply due to habit and holding some keys a little longer | ||
than others. Once you find this value, work on tapping your problem keys a little | ||
quicker than normal and you will be set. | ||
|
||
{% hint style='info' %} | ||
Auto Shift has three special keys that can help you get this value right very | ||
quick. See "Auto Shift Setup" for more details! | ||
{% endhint %} | ||
|
||
### NO_AUTO_SHIFT_SPECIAL (simple define) | ||
|
||
Do not Auto Shift special keys, which include -_, =+, [{, ]}, ;:, '", ,<, .>, | ||
and /? | ||
|
||
### NO_AUTO_SHIFT_NUMERIC (simple define) | ||
|
||
Do not Auto Shift numeric keys, zero through nine. | ||
|
||
### NO_AUTO_SHIFT_ALPHA (simple define) | ||
|
||
Do not Auto Shift alpha characters, which include A through Z. | ||
|
||
## Using Auto Shift Setup | ||
|
||
This will enable you to define three keys temporailiy to increase, decrease and report your `AUTO_SHIFT_TIMEOUT`. | ||
|
||
### Setup | ||
|
||
Map three keys temporarily in your keymap: | ||
|
||
| Key Name | Description | | ||
|----------|-----------------------------------------------------| | ||
| KC_ASDN | Lower the Auto Shift timeout variable (down) | | ||
| KC_ASUP | Raise the Auto Shift timeout variable (up) | | ||
| KC_ASRP | Report your current Auto Shift timeout value | | ||
|
||
Compile and upload your new firmware. | ||
|
||
### Use | ||
|
||
It is important to note that during these tests, you should be typing | ||
completely normal and with no intention of shifted keys. | ||
|
||
1. Type multiple sentences of alphabetical letters. | ||
2. Observe any upper case letters. | ||
3. If there are none, press the key you have mapped to `KC_ASDN` to decrease | ||
time Auto Shift timeout value and go back to step 1. | ||
4. If there are some upper case letters, decide if you need to work on tapping | ||
those keys with less down time, or if you need to increase the timeout. | ||
5. If you decide to increase the timeout, press the key you have mapped to | ||
`KC_ASUP` and go back to step 1. | ||
6. Once you are happy with your results, press the key you have mapped to | ||
`KC_ASRP`. The keyboard will type by itself the value of your | ||
`AUTO_SHIFT_TIMEOUT`. | ||
7. Update `AUTO_SHIFT_TIMEOUT` in your `config.h` with the value reported. | ||
8. Remove `AUTO_SHIFT_SETUP` from your `config.h`. | ||
9. Remove the key bindings `KC_ASDN`, `KC_ASUP` and `KC_ASRP`. | ||
10. Compile and upload your new firmware. | ||
|
||
#### An example run | ||
|
||
''' | ||
hello world. my name is john doe. i am a computer programmer playing with | ||
keyboards right now. | ||
|
||
[PRESS KC_ASDN quite a few times] | ||
|
||
heLLo woRLd. mY nAMe is JOHn dOE. i AM A compUTeR proGRaMMER PlAYiNG witH | ||
KEYboArDS RiGHT NOw. | ||
|
||
[PRESS KC_ASUP a few times] | ||
|
||
hello world. my name is john Doe. i am a computer programmer playing with | ||
keyboarDs right now. | ||
|
||
[PRESS KC_ASRP] | ||
|
||
115 | ||
''' | ||
|
||
The keyboard typed `115` which represents your current `AUTO_SHIFT_TIMEOUT` | ||
value. You are now set! Practice on the *D* key a little bit that showed up | ||
in the testing and you'll be golden. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
Overview | ||
======== | ||
|
||
This is a dvorak based layout for the Atreus. Its basic key layout is similar to the ergodox_ez "dvorak_42_key" layout. In fact this layout was created for seamless switching between the Ergodox EZ and Atreus. | ||
|
||
How to build and flash | ||
---------------------- | ||
|
||
to build; | ||
make atreus-dvorak_42_key | ||
|
||
to flash: | ||
avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_dvorak_42_key.hex -P COM7 | ||
|
||
Layers | ||
------ | ||
* BASE: basic dvorak layout | ||
* KEYNAV: arrow-key navigation. Momentary toggle held by thumb allows the right hand to navigate through text as well as copy/paste/cut, page up/page down | ||
* KEYSEL: similar to KEYNAV, except for shift-selection | ||
* COMBINED: this is a layer that combines numbers, brackets and special characters. !@#$%^&*( can be type by shift+COMBINED+1/2/3/etc.. | ||
* MOUSE: mouse navigation, as well as browser tab-left/tab-right shortcuts |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
/* | ||
Copyright 2012 Jun Wako <[email protected]> | ||
This program is free software: you can redistribute it and/or modify | ||
it under the terms of the GNU General Public License as published by | ||
the Free Software Foundation, either version 2 of the License, or | ||
(at your option) any later version. | ||
This program is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
GNU General Public License for more details. | ||
You should have received a copy of the GNU General Public License | ||
along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#ifndef CONFIG_H | ||
#define CONFIG_H | ||
|
||
|
||
#include "config_common.h" | ||
|
||
|
||
// mouse speed | ||
|
||
#define MOUSEKEY_INTERVAL 15 | ||
#define MOUSEKEY_DELAY 100 | ||
#define MOUSEKEY_TIME_TO_MAX 100 | ||
#define MOUSEKEY_MAX_SPEED 3 | ||
|
||
#define MOUSEKEY_WHEEL_DELAY 500 | ||
#define MOUSEKEY_WHEEL_DELTA 1 | ||
#define MOUSEKEY_WHEEL_MAX_SPEED 1 | ||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 | ||
|
||
/* USB Device descriptor parameter */ | ||
|
||
#define VENDOR_ID 0xFEED | ||
#define PRODUCT_ID 0x6060 | ||
#define DEVICE_VER 0x0001 | ||
#define MANUFACTURER Technomancy | ||
#define PRODUCT Atreus | ||
#define DESCRIPTION q.m.k. keyboard firmware for Atreus | ||
|
||
/* key matrix size */ | ||
#define MATRIX_ROWS 4 | ||
#define MATRIX_COLS 11 | ||
|
||
// Change this to how you wired your keyboard | ||
// COLS: Left to right, ROWS: Top to bottom | ||
#if defined(ATREUS_ASTAR) | ||
# define MATRIX_ROW_PINS { D0, D1, D3, D2 } | ||
#if defined(PCBDOWN) | ||
# define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 } | ||
#else | ||
# define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } | ||
#endif | ||
# define UNUSED_PINS | ||
#elif defined(ATREUS_TEENSY2) | ||
# define MATRIX_ROW_PINS { D0, D1, D2, D3 } | ||
# define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 } | ||
# define UNUSED_PINS | ||
#endif | ||
|
||
/* COL2ROW or ROW2COL */ | ||
#define DIODE_DIRECTION COL2ROW | ||
|
||
/* define if matrix has ghost */ | ||
//#define MATRIX_HAS_GHOST | ||
|
||
/* number of backlight levels */ | ||
//#define BACKLIGHT_LEVELS 3 | ||
|
||
/* Set 0 if debouncing isn't needed */ | ||
#define DEBOUNCING_DELAY 5 | ||
|
||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||
#define LOCKING_SUPPORT_ENABLE | ||
/* Locking resynchronize hack */ | ||
#define LOCKING_RESYNC_ENABLE | ||
|
||
/* key combination for command */ | ||
#define IS_COMMAND() ( \ | ||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ | ||
) | ||
|
||
/* | ||
* Feature disable options | ||
* These options are also useful to firmware size reduction. | ||
*/ | ||
|
||
/* disable debug print */ | ||
//#define NO_DEBUG | ||
|
||
/* disable print */ | ||
//#define NO_PRINT | ||
|
||
/* disable action features */ | ||
//#define NO_ACTION_LAYER | ||
//#define NO_ACTION_TAPPING | ||
//#define NO_ACTION_ONESHOT | ||
//#define NO_ACTION_MACRO | ||
//#define NO_ACTION_FUNCTION | ||
|
||
#endif |
Oops, something went wrong.