Merge pull request #165 from deepshitgoeshere/deepshitgoeshere-master

added planck keymap and troubleshooting part in the PCB guide
daktil_thumb_popravljen
Jack Humbert 2016-03-04 10:17:14 -05:00
commit cc46f69843
3 changed files with 189 additions and 1 deletions

4
.gitignore vendored
View File

@ -1,3 +1,4 @@
keyboard/planck/dfu-programmer.exe
.dep
*.o
*.eep
@ -18,4 +19,5 @@ build/
# Eclipse Settings
.cproject
.project
.settings/
.settings/

View File

@ -8,6 +8,7 @@
2. Install [DFU-Programmer][dfu-prog] (the -win one).
3. Start DFU bootloader on the chip first time you will see 'Found New Hardware Wizard' to install driver. If you install device driver properly you can find chip name like 'ATmega32U4' under 'LibUSB-Win32 Devices' tree on 'Device Manager'. If not you will need to update its driver on 'Device Manager' to the `dfu-programmer` driver.
### Mac
If you're using homebrew, you can use the following commands:
@ -52,6 +53,28 @@ Generally, the instructions to flash the PCB are as follows:
4. Press the reset button on the PCB/press the key with the `RESET` keycode
5. `make <arguments> dfu` - use the necessary `KEYMAP=<keymap>` and/or `COMMON=true` arguments here.
## Troubleshooting
If you see something like this
0 [main] sh 13384 sync_with_child: child 9716(0x178) died before initialization with status code 0xC0000142
440 [main] sh 13384 sync_with_child: *** child state waiting for longjmp
/usr/bin/sh: fork: Resource temporarily unavailable
after running 'make' on Windows than you are encountering a very popular issue with WinAVR on Windows 8.1 and 10.
You can easily fix this problem by replacing msys-1.0.dll in WinAVR/utils/bin with [this one](http://www.madwizard.org/download/electronics/msys-1.0-vista64.zip).
Restart your system and everything should work fine!
If you see this
dfu-programmer atmega32u4 erase
process_begin: CreateProcess(NULL, dfu-programmer atmega32u4 erase, ...) failed.
make (e=2): The system cannot find the file specified.
make: *** [dfu] Error 2
when trying to 'make dfu' on Windows you need to copy the dfu-programmer.exe to qmk_firmware/keyboard/planck.
## Quantum MK Firmware
### Keymap

View File

@ -0,0 +1,163 @@
/*
This is the keymap of /u/deepshitgoeshere!
Layer 1 exists so I can have the symbol positions of QWERTY while having my system in german.
The second layer has all the german umlauts I need and with capital and small letters on the
same layer there is no need to press shift+lower.
This keymap is made to work with software implemented QWERTZ.
The "Gaming" layer is mainly customized for CS:GO.
If you have any question about this keymap feel free to shoot me a message on reddit!
*/
#include "keymap_common.h"
#include "keymap_extras/keymap_german.h"
#include "backlight.h"
#include "debug.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = { /* Colemak
* ,-----------------------------------------------------------------------.
* | Esc | q | w | f | p | g | j | l | u | y | ; | - |
* |-----------------------------------------------------------------------|
* | BS | a | r | s | t | d | h | n | e | i | o | ' |
* |-----------------------------------------------------------------------|
* | SFT | z | x | c | v | b | k | m | , | . | / | Ent |
* |-----------------------------------------------------------------------|
* | CTL | GUI | Tab | ALT |Lower| Space |Raise|Left |Down | Up |Right|
* `-----------------------------------------------------------------------'
*/
{KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Z, DE_SCLN, DE_MINS},
{KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, DE_QUOT},
{M(0), KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, DE_COMM, DE_DOT, DE_SLSH, KC_ENT},
{KC_LCTL, KC_LGUI, KC_TAB, KC_LALT, F(2), F(3), F(3), F(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
[1] = { /* Symbols
* ,-----------------------------------------------------------------------.
* | | | | | | | | | | | : | |
* |-----------------------------------------------------------------------|
* | | | | | | | | | | | | " |
* |-----------------------------------------------------------------------|
* | | | | | | | | | < | > | ? | |
* |-----------------------------------------------------------------------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------'
*/
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DOT, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_DQOT},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, M(1), DE_MORE, DE_QST, KC_TRNS},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
[2] = { /* Raise
* ,-----------------------------------------------------------------------.
* | | Ä | | | | | | | Ü | Ö | |Game |
* |-----------------------------------------------------------------------|
* | Del | ä | | ß | | | | | ü | ö | |FVol+|
* |-----------------------------------------------------------------------|
* | | | | | | | | |Stop | Prv | Nxt |FVol-|
* |-----------------------------------------------------------------------|
* |LCTL |LGUI | Tab |LALT |Lower| Space | |Mute |Vol- |Vol+ | P/P |
* `-----------------------------------------------------------------------'
*/
{KC_NO, S(DE_AE), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, S(DE_UE), S(DE_OE), KC_NO, F(4)},
{KC_DEL, DE_AE, KC_NO, DE_SS, KC_NO, KC_NO, KC_NO, KC_NO, DE_UE, DE_OE, KC_NO, RALT(KC_F12)},
{KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MSTP, KC_MPRV, KC_MNXT, RALT(KC_F11)},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY}
},
[3] = { /* Lower
* ,-----------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | + |
* |-----------------------------------------------------------------------|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = |
* |-----------------------------------------------------------------------|
* | | | | | | [ | ] | { | } | | | \ | Ent |
* |-----------------------------------------------------------------------|
* |LCTL |LGUI | Tab |LALT | | Space |Raise|Home |PgDn |PgUp | End |
* `-----------------------------------------------------------------------'
*/
{DE_TILD, DE_EXLM, DE_AT, DE_HASH, DE_DLR, DE_PERC, DE_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, DE_PLUS},
{DE_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, DE_EQL},
{KC_NO, KC_NO, KC_NO, DE_PIPE, DE_LBRC, DE_RBRC, DE_LCBR, DE_RCBR, DE_EURO, KC_NO, DE_BSLS, KC_ENT},
{KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END}
},
[4] = { /* Function
* ,-----------------------------------------------------------------------.
* | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 |
* |-----------------------------------------------------------------------|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-----------------------------------------------------------------------|
* | | | | | | KP- | KP+ | | | | |Reset|
* |-----------------------------------------------------------------------|
* | |Light|BL DN|BL UP| | | | |Mute |Vol- |Vol+ | P/P |
* `-----------------------------------------------------------------------'
*/
{KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24},
{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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PMNS, KC_PPLS, KC_NO, KC_NO, KC_NO, RESET, KC_NO},
{KC_NO, BL_TOGG, BL_DEC, BL_INC, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY}
},
[5] = { /* Gaming
* ,-----------------------------------------------------------------------.
* | Buy | ESC | q | w | e | r | t | y | u | i | o | p |
* |-----------------------------------------------------------------------|
* | ENT | BS | a | s | d | f | g | h | j | k | l | ; |
* |-----------------------------------------------------------------------|
* | CTL | SFT | z | x | c | v | b | n | m | , | Up | / |
* |-----------------------------------------------------------------------|
* | | | Tab | ALT | | Space |CrJmp| GUI |Left |Down |Right|
* `-----------------------------------------------------------------------'
*/
{MO(6), KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, F(4)},
{KC_ENT, KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_SCLN},
{KC_LCTL, KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, DE_DOT, KC_UP, DE_SLSH},
{KC_NO, KC_NO, KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT}
},
[6] = { /* Gaming
/* CS:GO buy binds
* ,-----------------------------------------------------------------------.
* | | | | | | | | | 7 | 8 | 9 | |
* |-----------------------------------------------------------------------|
* | BS | | | | | | | | 6 | 5 | 4 | End |
* |-----------------------------------------------------------------------|
* | CTL | SFT | | | | | | | 1 | 2 | 3 |Pgdn |
* |-----------------------------------------------------------------------|
* | | | Tab | ALT | | Space |CrJmp| | 0 | KP+ |PEnt |
* `-----------------------------------------------------------------------'
*/
{KC_TRNS, KC_NO, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_P7, KC_P8, KC_P9, KC_NO},
{KC_BSPC, KC_NO, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_P4, KC_P5, KC_P6, KC_END},
{KC_LCTL, KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_K, KC_P1, KC_P2, KC_P3, KC_PGDN},
{KC_NO, KC_NO, KC_TAB, KC_LALT, KC_NO, KC_SPC, KC_SPC, LCTL(KC_SPC), KC_NO, KC_P0, KC_PDOT, KC_PENT}
},
};
const uint16_t PROGMEM fn_actions[] = {
[1] = ACTION_LAYER_MOMENTARY(2), // to RAISE
[2] = ACTION_LAYER_MOMENTARY(3), // to LOWER
[3] = ACTION_LAYER_TAP_KEY(4,KC_SPC), // to Function
[4] = ACTION_LAYER_TOGGLE(5), // toggle Gaming
[5] = ACTION_MODS_TAP_KEY(KC_LSFT, KC_CAPS), //Shift on press, Caps on tap
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch(id) {
case 0: // M(0)
if (record->event.pressed) {
register_code(KC_LSFT);
layer_on(1);
} else {
layer_off(1);
unregister_code(KC_LSFT);
}
break;
case 1: // M(1)
if (record->event.pressed) {
unregister_code(KC_LSFT);
register_code(DE_MORE);
} else {
unregister_code(DE_MORE);
}
break;
}
return MACRO_NONE;
};