aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2017-01-15 01:13:15 -0500
committerGitHub <noreply@github.com>2017-01-15 01:13:15 -0500
commit81b89f8b2b38b9cf74f2b5f0b90af9b1573baf2d (patch)
treea1156b3f1ea8e39b1d93c0196720f4a6893ee5aa
parent99d0b54e5ef179f745d92bbb2be945cbad84cb0e (diff)
parent9d4cc2f3f1666fc110506c6a982c53d1df67548b (diff)
downloadqmk_firmware-81b89f8b2b38b9cf74f2b5f0b90af9b1573baf2d.tar.gz
qmk_firmware-81b89f8b2b38b9cf74f2b5f0b90af9b1573baf2d.zip
Merge pull request #996 from milestogo/master
kinesis keyboard with subdirectories for different hardware - matches pull #911
-rw-r--r--keyboards/kinesis/Makefile4
-rw-r--r--keyboards/kinesis/alvicstep/Makefile3
-rw-r--r--keyboards/kinesis/alvicstep/alvicstep.c105
-rw-r--r--keyboards/kinesis/alvicstep/alvicstep.h67
-rw-r--r--keyboards/kinesis/alvicstep/config.h35
-rw-r--r--keyboards/kinesis/alvicstep/docs/kicad/kinesis-cache.lib (renamed from keyboards/kinesis/docs/kicad/kinesis-cache.lib)0
-rw-r--r--keyboards/kinesis/alvicstep/docs/kicad/kinesis.pro (renamed from keyboards/kinesis/docs/kicad/kinesis.pro)0
-rw-r--r--keyboards/kinesis/alvicstep/docs/kicad/kinesis.sch (renamed from keyboards/kinesis/docs/kicad/kinesis.sch)0
-rw-r--r--keyboards/kinesis/alvicstep/docs/photos/P1050573.jpg (renamed from keyboards/kinesis/docs/photos/P1050573.jpg)bin177711 -> 177711 bytes
-rw-r--r--keyboards/kinesis/alvicstep/docs/photos/P1050574.jpg (renamed from keyboards/kinesis/docs/photos/P1050574.jpg)bin343978 -> 343978 bytes
-rw-r--r--keyboards/kinesis/alvicstep/docs/photos/P1050575.jpg (renamed from keyboards/kinesis/docs/photos/P1050575.jpg)bin266771 -> 266771 bytes
-rw-r--r--keyboards/kinesis/alvicstep/docs/readme.txt (renamed from keyboards/kinesis/docs/readme.txt)0
-rw-r--r--keyboards/kinesis/alvicstep/docs/schematic.png (renamed from keyboards/kinesis/docs/schematic.png)bin175014 -> 175014 bytes
-rw-r--r--keyboards/kinesis/alvicstep/matrix.c (renamed from keyboards/kinesis/matrix.c)0
-rw-r--r--keyboards/kinesis/alvicstep/readme.md46
-rw-r--r--keyboards/kinesis/alvicstep/rules.mk10
-rw-r--r--keyboards/kinesis/config.h49
-rw-r--r--keyboards/kinesis/keymaps/default/keymap.c32
-rw-r--r--keyboards/kinesis/keymaps/dvorak/Makefile (renamed from keyboards/kinesis/keymaps/programmer/Makefile)0
-rw-r--r--keyboards/kinesis/keymaps/dvorak/config.h (renamed from keyboards/kinesis/keymaps/programmer/config.h)0
-rw-r--r--keyboards/kinesis/keymaps/dvorak/keymap.c93
-rw-r--r--keyboards/kinesis/keymaps/milestogo/Makefile21
-rw-r--r--keyboards/kinesis/keymaps/milestogo/config.h8
-rw-r--r--keyboards/kinesis/keymaps/milestogo/keymap.c (renamed from keyboards/kinesis/keymaps/programmer/keymap.c)160
-rw-r--r--keyboards/kinesis/keymaps/milestogo/readme.md (renamed from keyboards/kinesis/keymaps/programmer/readme.md)0
-rw-r--r--keyboards/kinesis/kinesis.c105
-rw-r--r--keyboards/kinesis/kinesis.h70
-rw-r--r--keyboards/kinesis/readme.md42
-rw-r--r--keyboards/kinesis/stapelberg/Makefile3
-rw-r--r--keyboards/kinesis/stapelberg/config.h50
-rw-r--r--keyboards/kinesis/stapelberg/images/controller_board.jpgbin0 -> 129312 bytes
-rw-r--r--keyboards/kinesis/stapelberg/images/exterior_reset.jpgbin0 -> 97794 bytes
-rw-r--r--keyboards/kinesis/stapelberg/images/teensy_detail.jpgbin0 -> 119748 bytes
-rw-r--r--keyboards/kinesis/stapelberg/readme.md55
-rw-r--r--keyboards/kinesis/stapelberg/rules.mk10
-rw-r--r--keyboards/kinesis/stapelberg/stapelberg.c28
-rw-r--r--keyboards/kinesis/stapelberg/stapelberg.h72
37 files changed, 765 insertions, 303 deletions
diff --git a/keyboards/kinesis/Makefile b/keyboards/kinesis/Makefile
index 4e2a6f00f..fbf05ca4a 100644
--- a/keyboards/kinesis/Makefile
+++ b/keyboards/kinesis/Makefile
@@ -1,3 +1,5 @@
1SUBPROJECT_DEFAULT = alvicstep
2
1ifndef MAKEFILE_INCLUDED 3ifndef MAKEFILE_INCLUDED
2 include ../../Makefile 4 include ../../Makefile
3endif \ No newline at end of file 5endif
diff --git a/keyboards/kinesis/alvicstep/Makefile b/keyboards/kinesis/alvicstep/Makefile
new file mode 100644
index 000000000..bd09e5885
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../../Makefile
3endif
diff --git a/keyboards/kinesis/alvicstep/alvicstep.c b/keyboards/kinesis/alvicstep/alvicstep.c
new file mode 100644
index 000000000..fba9f5136
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/alvicstep.c
@@ -0,0 +1,105 @@
1#include "kinesis.h"
2
3// begin section origin https://github.com/alvicstep/tmk_keyboard
4
5void all_led_off(void)
6{
7 PORTD = 0b11111111;
8}
9
10void all_led_on(void)
11{
12 PORTD = 0b00000000;
13}
14void num_lock_led_on(void)
15{
16 PORTD = 0b11101111;
17}
18
19void caps_lock_led_on(void)
20{
21 PORTD = 0b01111111;
22}
23
24void scroll_lock_led_on(void)
25{
26 PORTD = 0b11011111;
27}
28void keypad_led_on(void)
29{
30 PORTD = 0b10111111;
31}
32void blink_all_leds(void)
33{
34 all_led_on();
35 _delay_ms(500);
36
37 all_led_off();
38 _delay_ms(100);
39
40 caps_lock_led_on();
41 _delay_ms(100);
42
43 num_lock_led_on();
44 _delay_ms(100);
45
46 scroll_lock_led_on();
47 _delay_ms(100);
48
49 keypad_led_on();
50 _delay_ms(100);
51
52 //back
53
54 scroll_lock_led_on();
55 _delay_ms(100);
56
57 num_lock_led_on();
58 _delay_ms(100);
59
60 caps_lock_led_on();
61 _delay_ms(100);
62
63 all_led_off();
64}
65
66// End section origin https://github.com/alvicstep/tmk_keyboard
67
68 void matrix_init_kb(void) {
69 blink_all_leds();
70 matrix_init_user();
71}
72
73
74void matrix_scan_kb(void) {
75 // put your looping keyboard code here
76 // runs every cycle (a lot)
77
78 matrix_scan_user();
79}
80
81bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
82 // put your per-action keyboard code here
83 // runs for every action, just before processing by the firmware
84
85 return process_record_user(keycode, record);
86}
87
88void led_set_kb(uint8_t usb_led) {
89 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
90
91//Copyright 2014 Warren Janssens <warren.janssens@gmail.com>
92 uint8_t leds = 0xF0;
93 if (usb_led & 1 << USB_LED_NUM_LOCK)
94 leds &= ~0x10;
95 if (usb_led & 1 << USB_LED_CAPS_LOCK)
96 leds &= ~0x80;
97 if (usb_led & 1 << USB_LED_SCROLL_LOCK)
98 leds &= ~0x20;
99 PORTD = (PORTD & 0x0F) | leds;
100
101 led_set_user(usb_led);
102
103}
104
105
diff --git a/keyboards/kinesis/alvicstep/alvicstep.h b/keyboards/kinesis/alvicstep/alvicstep.h
new file mode 100644
index 000000000..f91a52314
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/alvicstep.h
@@ -0,0 +1,67 @@
1#ifndef KINESIS_ALVICSTEP_H
2#define KINESIS_ALVICSTEP_H
3
4#include "../kinesis.h"
5
6
7#define KEYMAP( \
8 k02,k22,k12,k01,k21,k11,k00,k20,k10, \
9 k80,k70,k60,k50,k40,k30, \
10 k81,k71,k61,k51,k41,k31, \
11 k82,k72,k62,k52,k42,k32, \
12 k83,k73,k63,k53,k43,k33, \
13 k74,k64,k54,k34, \
14 k36,k35, \
15 k55, \
16 k56,k46,k75, \
17 k03,k23,k13,k04,k24,k14,k05,k85,k84, \
18 k94,kA4,kB4,kD4,kE4,kF4, \
19 k95,kA5,kB5,kD5,kE5,kF5, \
20 k96,kA6,kB6,kD6,kE6,kF6, \
21 k97,kA7,kB7,kD7,kE7,kF7, \
22 k93,kB3,kD3,kE3, \
23 k47,k66, \
24 k67, \
25 k87,k76,k86 \
26) { \
27 { k00, k01, k02, k03, k04, k05, KC_NO, KC_NO }, \
28 { k10, k11, k12, k13, k14, KC_NO, KC_NO, KC_NO }, \
29 { k20, k21, k22, k23, k24, KC_NO, KC_NO, KC_NO }, \
30 { k30, k31, k32, k33, k34, k35, k36, KC_NO }, \
31 { k40, k41, k42, k43, KC_NO, KC_NO, k46, k47 }, \
32 { k50, k51, k52, k53, k54, k55, k56, KC_NO }, \
33 { k60, k61, k62, k63, k64, KC_NO, k66, k67 }, \
34 { k70, k71, k72, k73, k74, k75, k76, KC_NO }, \
35 { k80, k81, k82, k83, k84, k85, k86, k87}, \
36 { KC_NO, KC_NO ,KC_NO ,k93, k94, k95, k96, k97}, \
37 { KC_NO, KC_NO ,KC_NO ,KC_NO, kA4, kA5, kA6, kA7}, \
38 { KC_NO, KC_NO ,KC_NO ,kB3, kB4, kB5, kB6, kB7}, \
39 { KC_NO, KC_NO ,KC_NO ,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, \
40 { KC_NO, KC_NO ,KC_NO ,kD3, kD4, kD5, kD6, kD7}, \
41 { KC_NO, KC_NO ,KC_NO ,kE3, kE4, kE5, kE6, kE7}, \
42 { KC_NO, KC_NO ,KC_NO ,KC_NO, kF4, kF5, kF6, kF7} \
43}
44
45
46/* Row pin configuration
47PF0 A
48PF1 B
49PF2 C
50PF3 G 0 = U4, 1 = U5
51
52
53 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 rA rB rC rD rE rF
54PB0 c0| f6 f8 f7 5 4 3 2 1 =+
55PB1 c1| f3 f5 f4 t r e w q TAB
56PB2 c2| ESC f2 f1 g f d s a CL
57PB3 c3| f9 f11 f10 b v c x z LS UP DN [{ ]}
58PB4 c4| f12 SL PS RT LT §± `~ 6 7 8 9 0 -_
59PB5 c5| PB PGM KPD y u i o p \
60PB6 c6| LC DL BS RC EN SP h j k l ;: '"
61PB7 c7| RA PU PD n m ,< .> /? RS
62 */
63
64
65
66
67#endif
diff --git a/keyboards/kinesis/alvicstep/config.h b/keyboards/kinesis/alvicstep/config.h
new file mode 100644
index 000000000..88b7e2644
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/config.h
@@ -0,0 +1,35 @@
1#ifndef ALVICSTEP_CONFIG_H
2#define ALVICSTEP_CONFIG_H
3
4#include "../config.h"
5
6/* USB Device descriptor parameter */
7#define PRODUCT_ID 0x6060
8#define DEVICE_VER 0x0001
9
10/* key matrix size */
11#define MATRIX_ROWS 16
12#define MATRIX_COLS 8
13
14/*
15 * Keyboard Matrix Assignments
16 *
17 * Change this to how you wired your keyboard
18 * COLS: AVR pins used for columns, left to right
19 * ROWS: AVR pins used for rows, top to bottom
20 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
21 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
22 *
23*/
24//Passed through the port multipler, so 4 pins =16
25#define MATRIX_ROW_PINS { F0,F1, F2, F3 }
26
27// May be upside down.
28#define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 }
29#define UNUSED_PINS
30
31/* COL2ROW or ROW2COL */
32#define DIODE_DIRECTION COL2ROW
33
34
35#endif
diff --git a/keyboards/kinesis/docs/kicad/kinesis-cache.lib b/keyboards/kinesis/alvicstep/docs/kicad/kinesis-cache.lib
index f798d39d6..f798d39d6 100644
--- a/keyboards/kinesis/docs/kicad/kinesis-cache.lib
+++ b/keyboards/kinesis/alvicstep/docs/kicad/kinesis-cache.lib
diff --git a/keyboards/kinesis/docs/kicad/kinesis.pro b/keyboards/kinesis/alvicstep/docs/kicad/kinesis.pro
index 9f130b509..9f130b509 100644
--- a/keyboards/kinesis/docs/kicad/kinesis.pro
+++ b/keyboards/kinesis/alvicstep/docs/kicad/kinesis.pro
diff --git a/keyboards/kinesis/docs/kicad/kinesis.sch b/keyboards/kinesis/alvicstep/docs/kicad/kinesis.sch
index f75335aa0..f75335aa0 100644
--- a/keyboards/kinesis/docs/kicad/kinesis.sch
+++ b/keyboards/kinesis/alvicstep/docs/kicad/kinesis.sch
diff --git a/keyboards/kinesis/docs/photos/P1050573.jpg b/keyboards/kinesis/alvicstep/docs/photos/P1050573.jpg
index 027ab9efb..027ab9efb 100644
--- a/keyboards/kinesis/docs/photos/P1050573.jpg
+++ b/keyboards/kinesis/alvicstep/docs/photos/P1050573.jpg
Binary files differ
diff --git a/keyboards/kinesis/docs/photos/P1050574.jpg b/keyboards/kinesis/alvicstep/docs/photos/P1050574.jpg
index d49c492b8..d49c492b8 100644
--- a/keyboards/kinesis/docs/photos/P1050574.jpg
+++ b/keyboards/kinesis/alvicstep/docs/photos/P1050574.jpg
Binary files differ
diff --git a/keyboards/kinesis/docs/photos/P1050575.jpg b/keyboards/kinesis/alvicstep/docs/photos/P1050575.jpg
index 50cc9897c..50cc9897c 100644
--- a/keyboards/kinesis/docs/photos/P1050575.jpg
+++ b/keyboards/kinesis/alvicstep/docs/photos/P1050575.jpg
Binary files differ
diff --git a/keyboards/kinesis/docs/readme.txt b/keyboards/kinesis/alvicstep/docs/readme.txt
index af33ac490..af33ac490 100644
--- a/keyboards/kinesis/docs/readme.txt
+++ b/keyboards/kinesis/alvicstep/docs/readme.txt
diff --git a/keyboards/kinesis/docs/schematic.png b/keyboards/kinesis/alvicstep/docs/schematic.png
index fa9405a1f..fa9405a1f 100644
--- a/keyboards/kinesis/docs/schematic.png
+++ b/keyboards/kinesis/alvicstep/docs/schematic.png
Binary files differ
diff --git a/keyboards/kinesis/matrix.c b/keyboards/kinesis/alvicstep/matrix.c
index cb0d5ad7d..cb0d5ad7d 100644
--- a/keyboards/kinesis/matrix.c
+++ b/keyboards/kinesis/alvicstep/matrix.c
diff --git a/keyboards/kinesis/alvicstep/readme.md b/keyboards/kinesis/alvicstep/readme.md
new file mode 100644
index 000000000..974e42e50
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/readme.md
@@ -0,0 +1,46 @@
1kinesis-advantage keyboard firmware
2======================
3
4This directory is called alvicstep because https://github.com/alvicstep did the heavy work and took the photos in the doc directory.
5alvicstep did NOT do anything related to the QMK implementation, so don't bug him/her.
6
7There are other ways of replacing the CPU in the kinesis, this one uses jumper wires from the Teensy to the original DIP socket
8
9
10## Kinesis specific information
11This is a port of https://github.com/alvicstep/tmk_keyboard,
12which is a fork of https://github.com/wjanssens/tmk_keyboard,
13which is based on work from https://github.com/chrisandreae/keyboard-firmware
14
15If you replace the kinesis CPU as described in the doc folder, then this code should allow you to use QMK.
16I've tested with a Teensy 2++, remember to change the CPU if you use a 32u4 instead.
17
18Not yet implemented:
19- Kinesis EEProm reading or writing
20- Audio - this should be simple if we remove hardcoded pins from audio.h and switch to E7
21
22
23
24## Quantum MK Firmware
25
26For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
27
28## Building
29
30Download or clone the whole firmware and navigate to the keyboards/kinesis-advantage folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
31
32Depending on which keymap you would like to use, you will have to compile slightly differently.
33
34### Default
35
36To build with the default keymap, simply run `make`.
37
38### Other Keymaps
39
40Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
41
42To build the firmware binary hex file with a keymap just do `make` with `keymap` option like:
43
44$ make keymap=[default|jack|<name>]
45
46Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
diff --git a/keyboards/kinesis/alvicstep/rules.mk b/keyboards/kinesis/alvicstep/rules.mk
new file mode 100644
index 000000000..fb421a34f
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/rules.mk
@@ -0,0 +1,10 @@
1ifndef QUANTUM_DIR
2 include ../../../Makefile
3endif
4
5# just silently stop, since we need to upload with teensy uploader
6upload: build
7
8
9
10
diff --git a/keyboards/kinesis/config.h b/keyboards/kinesis/config.h
index 8f1fdbdb6..7cb0532c6 100644
--- a/keyboards/kinesis/config.h
+++ b/keyboards/kinesis/config.h
@@ -22,58 +22,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
22 22
23/* USB Device descriptor parameter */ 23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED 24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER You 25#define MANUFACTURER You
28#define PRODUCT kinesis-advantage 26#define PRODUCT kinesis-advantage
29#define DESCRIPTION A custom keyboard 27#define DESCRIPTION A custom keyboard
30 28
31// Mouse 29// Mouse
32#define MOUSEKEY_DELAY 20 30#define MOUSEKEY_DELAY 60
33#define MOUSEKEY_INTERVAL 20 31#define MOUSEKEY_INTERVAL 20
34#define MOUSEKEY_MAX_SPEED 4 32#define MOUSEKEY_MAX_SPEED 4
35#define MOUSEKEY_TIME_TO_MAX 20 33#define MOUSEKEY_TIME_TO_MAX 10
36#define MOUSEKEY_WHEEL_MAX_SPEED 1 34#define MOUSEKEY_WHEEL_MAX_SPEED 1
37#define MOUSEKEY_WHEEL_DELTA 1 35#define MOUSEKEY_WHEEL_DELTA 1
38#define MOUSEKEY_WHEEL_TIME_TO_MAX 1 36#define MOUSEKEY_WHEEL_TIME_TO_MAX 1
39 37
40/* key matrix size */
41#define MATRIX_ROWS 16
42#define MATRIX_COLS 8
43
44/*
45 * Keyboard Matrix Assignments
46 *
47 * Change this to how you wired your keyboard
48 * COLS: AVR pins used for columns, left to right
49 * ROWS: AVR pins used for rows, top to bottom
50 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
51 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
52 *
53*/
54//Passed through the port multipler, so 4 pins =16
55#define MATRIX_ROW_PINS { F0,F1, F2, F3 }
56
57// May be upside down.
58#define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 }
59#define UNUSED_PINS
60
61/* COL2ROW or ROW2COL */
62#define DIODE_DIRECTION COL2ROW
63
64// #define BACKLIGHT_PIN B7
65// #define BACKLIGHT_BREATHING
66// #define BACKLIGHT_LEVELS 3
67
68
69/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ 38/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
70#define DEBOUNCING_DELAY 5 39#define DEBOUNCING_DELAY 5
71 40
72/* define if matrix has ghost (lacks anti-ghosting diodes) */
73//#define MATRIX_HAS_GHOST
74
75/* number of backlight levels */
76
77/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 41/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
78#define LOCKING_SUPPORT_ENABLE 42#define LOCKING_SUPPORT_ENABLE
79/* Locking resynchronize hack */ 43/* Locking resynchronize hack */
@@ -171,4 +135,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
171//#define NO_ACTION_MACRO 135//#define NO_ACTION_MACRO
172//#define NO_ACTION_FUNCTION 136//#define NO_ACTION_FUNCTION
173 137
138
139
140#ifdef SUBPROJECT_alvicstep
141 #include "alvicstep/config.h"
142#endif
143#ifdef SUBPROJECT_stapelberg
144 #include "stapelberg/config.h"
145#endif
146
174#endif 147#endif
diff --git a/keyboards/kinesis/keymaps/default/keymap.c b/keyboards/kinesis/keymaps/default/keymap.c
index 3bf80699c..01a66b5e5 100644
--- a/keyboards/kinesis/keymaps/default/keymap.c
+++ b/keyboards/kinesis/keymaps/default/keymap.c
@@ -1,10 +1,6 @@
1#include "kinesis.h" 1#include "kinesis.h"
2#include "action_layer.h"
3 2
4#define QWERTY 0 // Base qerty 3#define QWERTY 0 // Base qwerty
5#define SYMB 1// Symbol layer
6
7// An almost entirely blank keymap. Test layers with the upper right hand key - 1 in normal mode, reset in layer 2.
8 4
9 5
10/**************************************************************************************************** 6/****************************************************************************************************
@@ -33,7 +29,6 @@
33* `--------------------' `--------------------' 29* `--------------------' `--------------------'
34*/ 30*/
35 31
36
37const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
38[QWERTY] = KEYMAP( 33[QWERTY] = KEYMAP(
39 KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8, 34 KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8,
@@ -45,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
45 KC_LCTL,KC_LALT, 40 KC_LCTL,KC_LALT,
46 KC_HOME, 41 KC_HOME,
47 KC_BSPC,KC_DEL ,KC_END , 42 KC_BSPC,KC_DEL ,KC_END ,
48 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1, 43 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1,
49 KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS, 44 KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
50 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, 45 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
51 KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT, 46 KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
@@ -54,32 +49,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
54 KC_RGUI,KC_RCTL, 49 KC_RGUI,KC_RCTL,
55 KC_PGUP, 50 KC_PGUP,
56 KC_PGDN,KC_ENTER ,KC_SPC 51 KC_PGDN,KC_ENTER ,KC_SPC
57 ),
58[SYMB] = KEYMAP(
59 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
60 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
63 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
64 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
65 KC_TRNS, KC_TRNS,
66 KC_TRNS,
67 KC_TRNS, KC_TRNS, KC_TRNS,
68 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN0, RESET,
69 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
70 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
71 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
72 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
73 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
74 KC_TRNS, KC_TRNS,
75 KC_TRNS,
76 KC_TRNS, KC_TRNS, KC_TRNS
77 ) 52 )
78}; 53};
79 54
80const uint16_t PROGMEM fn_actions[] = {
81 [0] = ACTION_LAYER_TAP_TOGGLE(SYMB) , // FN1 - Momentary Layer 1 (Symbols)
82 55
56const uint16_t PROGMEM fn_actions[] = {
83 57
84}; 58};
85 59
diff --git a/keyboards/kinesis/keymaps/programmer/Makefile b/keyboards/kinesis/keymaps/dvorak/Makefile
index 9d3df5964..9d3df5964 100644
--- a/keyboards/kinesis/keymaps/programmer/Makefile
+++ b/keyboards/kinesis/keymaps/dvorak/Makefile
diff --git a/keyboards/kinesis/keymaps/programmer/config.h b/keyboards/kinesis/keymaps/dvorak/config.h
index 8893d122e..8893d122e 100644
--- a/keyboards/kinesis/keymaps/programmer/config.h
+++ b/keyboards/kinesis/keymaps/dvorak/config.h
diff --git a/keyboards/kinesis/keymaps/dvorak/keymap.c b/keyboards/kinesis/keymaps/dvorak/keymap.c
new file mode 100644
index 000000000..9008bc808
--- /dev/null
+++ b/keyboards/kinesis/keymaps/dvorak/keymap.c
@@ -0,0 +1,93 @@
1#include "kinesis.h"
2
3#define _DVORAK 0 // Base Dvorak layer
4#define _MEDIA 1 // Media layer
5
6const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
7[_DVORAK] = KEYMAP(
8 // left hand
9 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8,
10 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5,
11 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y,
12 KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I,
13 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X,
14 KC_ESC, KC_LBRC, KC_DOWN, KC_UP,
15 // left thumb
16 KC_LGUI, KC_LCTL,
17 KC_LALT,
18 KC_BSPC, KC_DEL, TG(_MEDIA),
19 // right hand
20 KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, KC_1,
21 KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
22 KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
23 KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
24 KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
25 KC_LEFT, KC_RIGHT, KC_RBRC, KC_BSLS,
26 // right thumb
27 KC_RCTL, KC_RGUI,
28 KC_RALT,
29 TG(_MEDIA), KC_ENT, KC_SPC
30 ),
31
32[_MEDIA] = KEYMAP(
33 // left hand
34 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
35 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
36 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
37 KC_NO, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_NO,
38 KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,
39 KC_NO, KC_NO, KC_MS_D, KC_MS_U,
40 // left thumb
41 KC_NO, KC_NO,
42 KC_NO,
43 KC_NO, KC_NO, KC_TRNS,
44 // right hand
45 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
46 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_POWER,
47 KC_NO, KC_VOLU, KC_MS_U, KC_VOLD, KC_NO, KC_NO,
48 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
49 KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO,
50 KC_MS_L, KC_MS_R, KC_NO, KC_NO,
51 // right thumb
52 KC_NO, KC_NO,
53 KC_NO,
54 KC_TRNS, KC_ENT, KC_NO
55)
56};
57
58
59const uint16_t PROGMEM fn_actions[] = {
60
61};
62
63const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
64{
65 // MACRODOWN only works in this function
66 switch(id) {
67 case 0:
68 if (record->event.pressed) {
69 register_code(KC_RSFT);
70 } else {
71 unregister_code(KC_RSFT);
72 }
73 break;
74 }
75 return MACRO_NONE;
76};
77
78
79void matrix_init_user(void) {
80
81}
82
83void matrix_scan_user(void) {
84
85}
86
87bool process_record_user(uint16_t keycode, keyrecord_t *record) {
88 return true;
89}
90
91void led_set_user(uint8_t usb_led) {
92
93}
diff --git a/keyboards/kinesis/keymaps/milestogo/Makefile b/keyboards/kinesis/keymaps/milestogo/Makefile
new file mode 100644
index 000000000..9d3df5964
--- /dev/null
+++ b/keyboards/kinesis/keymaps/milestogo/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif
diff --git a/keyboards/kinesis/keymaps/milestogo/config.h b/keyboards/kinesis/keymaps/milestogo/config.h
new file mode 100644
index 000000000..8893d122e
--- /dev/null
+++ b/keyboards/kinesis/keymaps/milestogo/config.h
@@ -0,0 +1,8 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6// place overrides here
7
8#endif
diff --git a/keyboards/kinesis/keymaps/programmer/keymap.c b/keyboards/kinesis/keymaps/milestogo/keymap.c
index 83fb7bd5f..c2635eefe 100644
--- a/keyboards/kinesis/keymaps/programmer/keymap.c
+++ b/keyboards/kinesis/keymaps/milestogo/keymap.c
@@ -2,10 +2,10 @@
2#include "action_layer.h" 2#include "action_layer.h"
3#include "mousekey.h" 3#include "mousekey.h"
4 4
5#define QWERTY 0 // Base qerty 5#define _QWERTY 0 // Base qerty
6#define SYMB 1// Symbol layer 6#define _SYMB 1// Symbol layer
7#define MOUSE 2// 7#define _MOUSE 2//
8 8#define _TRANS 3//
9 9
10 10
11 11
@@ -20,27 +20,26 @@ enum {
20}; 20};
21 21
22 22
23// Borrowing very heavily from 23// Why so many gui keys, why not just map all the OS X stuff to buttons? Good question.
24// https://github.com/alvicstep/tmk_keyboard
25/**************************************************************************************************** 24/****************************************************************************************************
26* 25*
27* Keymap: Default Layer in Qwerty 26* Keymap: Default Layer in Qwerty
28* 27*
29* ,-------------------------------------------------------------------------------------------------------------------. 28* ,-------------------------------------------------------------------------------------------------------------------.
30* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT | 29* | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT |
31* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| 30* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
32* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ | 31* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ |
33* |--------+------+------+------+------+------| +------+------+------+------+------+--------| 32* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
34* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| | 33* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| |
35* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 34* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
36* |MouseFN1| A | S | D | F | G | | H | J | K | L | ;: | '" | 35* |MouseFN0| A | S | D | F | G | | H | J | K | L | ;: | '" |
37* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 36* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
38* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? | Shift | 37* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? | Shift |
39* `--------+------+------+------+------+------- `------+------+------+------+------+--------' 38* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
40* | `~ | ESC |MOUSE1|MOUSE2| | [{ | ]} | ESC | GUI | 39* | ~` | ESC |GUI/L |L1/RT | | L1/UP|GUI/DN| [{ | ]} |
41* `---------------------------' `---------------------------' 40* `---------------------------' `---------------------------'
42* ,-------------. ,-------------. 41* ,-------------. ,-------------.
43* | Ctrl | Alt | | Gui | Ctrl | 42* | CTRL | GUI | | ALT | GUI |
44* ,------|------|------| |------+------+------. 43* ,------|------|------| |------+------+------.
45* | | | Home | | PgUp | | | 44* | | | Home | | PgUp | | |
46* | BkSp | Del |------| |------|Return| Space| 45* | BkSp | Del |------| |------|Return| Space|
@@ -48,16 +47,15 @@ enum {
48* `--------------------' `--------------------' 47* `--------------------' `--------------------'
49*/ 48*/
50 49
51
52const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 50const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
53[QWERTY] = KEYMAP( 51[_QWERTY] = KEYMAP(
54 KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8, 52 KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8,
55 KC_EQL, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , 53 KC_EQL, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
56 KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , 54 KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
57 KC_FN1 ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , 55 KC_FN0 ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
58 KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , 56 KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,
59 KC_GRV ,KC_ESC, KC_BTN1,KC_BTN2, 57 KC_GRAVE, KC_ESC, KC_FN4, KC_FN5,
60 KC_LCTL,KC_LALT, 58 KC_LCTL,KC_LGUI,
61 KC_HOME, 59 KC_HOME,
62 KC_BSPC,KC_DEL ,KC_FN0 , 60 KC_BSPC,KC_DEL ,KC_FN0 ,
63 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_FN0 ,KC_FN1 ,KC_FN2, KC_NO, RESET, 61 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_FN0 ,KC_FN1 ,KC_FN2, KC_NO, RESET,
@@ -65,18 +63,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
65 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, 63 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
66 KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT, 64 KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
67 KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT, 65 KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT,
68 KC_LBRC,KC_RBRC, KC_ESC, KC_RGUI, 66 KC_FN6, KC_FN7, KC_LBRC ,KC_RBRC,
69 KC_RGUI,KC_RCTL, 67 KC_RALT,KC_RGUI,
70 KC_PGUP, 68 KC_PGUP,
71 KC_PGDN,KC_ENTER ,KC_SPC 69 KC_PGDN,KC_ENTER ,KC_SPC
72 ), 70 ),
73[SYMB] = KEYMAP( 71
72/* _SYMBol level
73*
74* ,-------------------------------------------------------------------------------------------------------------------.
75* | | | | | | | | | | | | | | | | bOOT |
76* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
77* | | | * | # | | | | | | | | | |
78* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
79* | | / | [ | ] | | | | | | | | | |
80* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
81* | | | { | } | | | | | | | | | |
82* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
83* | | = | ( | ) | | | | | | | | | |
84* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
85* | | |GUI/L |L1/RT | | L1/UP|GUI/DN| { | } |
86* `---------------------------' `---------------------------'
87* ,-------------. ,-------------.
88* | CTRL | GUI | | ALT | GUI |
89* ,------|------|------| |------+------+------.
90* | | | Home | | PgUp | | |
91* | BkSp | Del |------| |------|Mouse1|Mouse2|
92* | | | End | | PgDn |LClick|Rclick|
93* `--------------------' `--------------------'
94*/
95
96
97
98[_SYMB] = KEYMAP(
74 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 99 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
75 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 100 KC_TRNS, KC_TRNS, KC_ASTR, KC_HASH, KC_TRNS, KC_TRNS,
76 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 101 KC_TRNS, KC_SLSH, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS,
77 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 102 KC_TRNS, KC_TRNS, RSFT(KC_LBRC), RSFT(KC_RBRC), KC_TRNS, KC_TRNS,
78 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 103 KC_TRNS, KC_EQL, RSFT(KC_9), RSFT(KC_0), KC_TRNS, KC_TRNS,
79 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 104 KC_TRNS, KC_TRNS, KC_FN4, KC_FN5,
80 KC_TRNS, KC_TRNS, 105 KC_TRNS, KC_TRNS,
81 KC_TRNS, 106 KC_TRNS,
82 KC_TRNS, KC_TRNS, KC_TRNS, 107 KC_TRNS, KC_TRNS, KC_TRNS,
@@ -85,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
85 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 110 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
86 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 111 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
87 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 112 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
88 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 113 KC_FN6, KC_FN7, KC_TRNS, KC_TRNS,
89 KC_TRNS, KC_TRNS, 114 KC_TRNS, KC_TRNS,
90 KC_TRNS, 115 KC_TRNS,
91 KC_TRNS, KC_TRNS, KC_TRNS 116 KC_TRNS, KC_TRNS, KC_TRNS
@@ -103,10 +128,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
103* |--------+------+------+------+------+------| |------+------+------+------+------+--------| 128* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
104* | | GuiZ | GUI X| GUI C| GUI_V|PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | | 129* | | GuiZ | GUI X| GUI C| GUI_V|PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | |
105* `--------+------+------+------+------+------- `------+------+------+------+------+--------' 130* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
106* | `~ | ESC | < | > | | { | } | ESC | | 131* | `~ | ESC | | | | | | { | } |
107* `---------------------------' `---------------------------' 132* `---------------------------' `---------------------------'
108* ,-------------. ,-------------. 133* ,-------------. ,-------------.
109* | Ctrl | Alt | | Gui | Ctrl | 134* | CTRL | GUI | | ALT | GUI |
110* ,------|------|------| |------+------+------. 135* ,------|------|------| |------+------+------.
111* | | | Home | | PgUp | | | 136* | | | Home | | PgUp | | |
112* | BkSp | Del |------| |------|Mouse1|Mouse2| 137* | BkSp | Del |------| |------|Mouse1|Mouse2|
@@ -115,13 +140,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
115*/ 140*/
116 141
117 142
118[MOUSE] = KEYMAP( 143[_MOUSE] = KEYMAP(
119 KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 144 KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
120 KC_TRNS, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC , 145 KC_TRNS, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC ,
121 KC_TRNS, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP, 146 KC_TRNS, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP,
122 KC_FN1, LCTL(KC_A),KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E), 147 KC_FN1, LCTL(KC_A),KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E),
123 KC_TRNS, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V),KC_PGDN, 148 KC_TRNS, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V),KC_PGDN,
124 KC_TRNS, KC_TRNS, KC_LABK, KC_RABK, 149 KC_TRNS, KC_TRNS, KC_NO, KC_NO,
125 KC_TRNS, KC_TRNS, 150 KC_TRNS, KC_TRNS,
126 KC_TRNS, 151 KC_TRNS,
127 KC_TRNS, KC_TRNS, KC_TRNS, 152 KC_TRNS, KC_TRNS, KC_TRNS,
@@ -129,22 +154,77 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
129 KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2, 154 KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2,
130 KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1, 155 KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1,
131 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0, 156 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0,
132 KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), KC_TRNS, KC_TRNS, 157 KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), RSFT(KC_LBRC), RSFT(KC_RBRC),
133 KC_LCBR, KC_RCBR, KC_ESC, KC_TRNS, 158 KC_LCBR, KC_RCBR, KC_NO, KC_NO,
134 KC_TRNS, KC_TRNS, 159 KC_TRNS, KC_TRNS,
135 KC_TRNS, 160 KC_TRNS,
136 KC_TRNS, KC_BTN1, KC_BTN2 161 KC_TRNS, KC_BTN1, KC_BTN2
137 ), 162 ),
138 163
139 164
165
166/* EMPTY
167*
168* ,-------------------------------------------------------------------------------------------------------------------.
169* | | | | | | | | | | | | | | | | bOOT |
170* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
171* | | | | | | | | | | | | | |
172* |--------+------+------+------+------+------| +------+------+------+------+------+--------|
173* | | | | | | | | | | | | | |
174* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
175* | | | | | | | | | | | | | |
176* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
177* | | | | | | | | | | | | | |
178* `--------+------+------+------+------+------- `------+------+------+------+------+--------'
179* | | | | | | | | | |
180* `---------------------------' `---------------------------'
181* ,-------------. ,-------------.
182* | Ctrl | Alt | | Gui | Ctrl |
183* ,------|------|------| |------+------+------.
184* | | | Home | | PgUp | | |
185* | BkSp | Del |------| |------|Mouse1|Mouse2|
186* | | | End | | PgDn |LClick|Rclick|
187* `--------------------' `--------------------'
188*/
189
190
191
192[_TRANS] = KEYMAP(
193 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
194 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
195 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
196 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
197 KC_TRNS, KC_TRNS, KC_FN10, KC_FN11, KC_TRNS, KC_TRNS,
198 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
199 KC_TRNS, KC_TRNS,
200 KC_TRNS,
201 KC_TRNS, KC_TRNS, KC_TRNS,
202 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN0, KC_2,
203 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
204 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
205 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
206 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
207 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
208 KC_TRNS, KC_TRNS,
209 KC_TRNS,
210 KC_TRNS, KC_TRNS, KC_TRNS
211 ),
212
213
140}; 214};
141 215
142const uint16_t PROGMEM fn_actions[] = {
143 [0] = ACTION_LAYER_TAP_TOGGLE(MOUSE) , // FN1 - Momentary Layer 1 (Symbols)
144 [1] = ACTION_LAYER_TOGGLE(MOUSE) , // FN1 - Momentary Layer 1 (Symbols)
145 [2] = ACTION_LAYER_TAP_TOGGLE(SYMB) , // FN1 - Momentary Layer 1 (Symbols)
146 216
147 217
218const uint16_t PROGMEM fn_actions[] = {
219 [0] = ACTION_LAYER_TAP_TOGGLE(_MOUSE) ,
220 [1] = ACTION_LAYER_TOGGLE(_MOUSE) ,
221 [2] = ACTION_LAYER_TAP_TOGGLE(_SYMB) ,
222 [5]= ACTION_LAYER_TAP_KEY(_SYMB,KC_RIGHT),
223 [4]= ACTION_MODS_TAP_KEY(MOD_LGUI,KC_LEFT),
224 [6]= ACTION_LAYER_TAP_KEY(_SYMB,KC_UP),
225 [7]= ACTION_MODS_TAP_KEY(MOD_LGUI,KC_DOWN),
226
227
148}; 228};
149 229
150const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 230const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
@@ -214,18 +294,23 @@ void matrix_init_user(void) {
214} 294}
215 295
216void matrix_scan_user(void) { 296void matrix_scan_user(void) {
297
298#ifdef ALVICSTEP_CONFIG_H
217 int8_t layer = biton32(layer_state); 299 int8_t layer = biton32(layer_state);
218 300
219 switch (layer) { 301 switch (layer) {
220 case 1: 302 case 1:
221 all_led_off();
222 break;
223 case 2:
224 if (!(host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK))) { 303 if (!(host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK))) {
225 all_led_off(); 304 all_led_off();
226 caps_lock_led_on(); 305 caps_lock_led_on();
227 } 306 }
228 break; 307 break;
308
309 case 2:
310 if (!(host_keyboard_leds() & (1 << USB_LED_SCROLL_LOCK))) {
311 all_led_off();
312 scroll_lock_led_on();
313 }
229 case 0: 314 case 0:
230 all_led_off(); 315 all_led_off();
231 num_lock_led_on(); 316 num_lock_led_on();
@@ -233,6 +318,7 @@ void matrix_scan_user(void) {
233 default: 318 default:
234 break; 319 break;
235 } 320 }
321#endif
236 322
237} 323}
238 324
diff --git a/keyboards/kinesis/keymaps/programmer/readme.md b/keyboards/kinesis/keymaps/milestogo/readme.md
index 76356a687..76356a687 100644
--- a/keyboards/kinesis/keymaps/programmer/readme.md
+++ b/keyboards/kinesis/keymaps/milestogo/readme.md
diff --git a/keyboards/kinesis/kinesis.c b/keyboards/kinesis/kinesis.c
index 1fee90e6f..7a6a1be54 100644
--- a/keyboards/kinesis/kinesis.c
+++ b/keyboards/kinesis/kinesis.c
@@ -1,106 +1 @@
1#include "kinesis.h" #include "kinesis.h"
2
3// begin section origin https://github.com/alvicstep/tmk_keyboard
4
5
6void all_led_off(void)
7{
8 PORTD = 0b11111111;
9}
10
11void all_led_on(void)
12{
13 PORTD = 0b00000000;
14}
15void num_lock_led_on(void)
16{
17 PORTD = 0b11101111;
18}
19
20void caps_lock_led_on(void)
21{
22 PORTD = 0b01111111;
23}
24
25void scroll_lock_led_on(void)
26{
27 PORTD = 0b11011111;
28}
29void keypad_led_on(void)
30{
31 PORTD = 0b10111111;
32}
33void blink_all_leds(void)
34{
35 all_led_on();
36 _delay_ms(500);
37
38 all_led_off();
39 _delay_ms(100);
40
41 caps_lock_led_on();
42 _delay_ms(100);
43
44 num_lock_led_on();
45 _delay_ms(100);
46
47 scroll_lock_led_on();
48 _delay_ms(100);
49
50 keypad_led_on();
51 _delay_ms(100);
52
53 //back
54
55 scroll_lock_led_on();
56 _delay_ms(100);
57
58 num_lock_led_on();
59 _delay_ms(100);
60
61 caps_lock_led_on();
62 _delay_ms(100);
63
64 all_led_off();
65}
66
67// End section origin https://github.com/alvicstep/tmk_keyboard
68
69 void matrix_init_kb(void) {
70 blink_all_leds();
71 matrix_init_user();
72}
73
74
75void matrix_scan_kb(void) {
76 // put your looping keyboard code here
77 // runs every cycle (a lot)
78
79 matrix_scan_user();
80}
81
82bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
83 // put your per-action keyboard code here
84 // runs for every action, just before processing by the firmware
85
86 return process_record_user(keycode, record);
87}
88
89void led_set_kb(uint8_t usb_led) {
90 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
91
92//Copyright 2014 Warren Janssens <warren.janssens@gmail.com>
93 uint8_t leds = 0xF0;
94 if (usb_led & 1 << USB_LED_NUM_LOCK)
95 leds &= ~0x10;
96 if (usb_led & 1 << USB_LED_CAPS_LOCK)
97 leds &= ~0x80;
98 if (usb_led & 1 << USB_LED_SCROLL_LOCK)
99 leds &= ~0x20;
100 PORTD = (PORTD & 0x0F) | leds;
101
102 led_set_user(usb_led);
103
104}
105
106
diff --git a/keyboards/kinesis/kinesis.h b/keyboards/kinesis/kinesis.h
index c04fbda15..66713731f 100644
--- a/keyboards/kinesis/kinesis.h
+++ b/keyboards/kinesis/kinesis.h
@@ -1,67 +1,23 @@
1#ifndef KINESIS_H 1#ifndef KINESIS_H
2#define KINESIS_H 2#define KINESIS_H
3 3
4#include "quantum.h" 4#ifdef SUBPROJECT_alvicstep
5 5 #include "alvicstep.h"
6 6#endif
7// The first section contains all of the arguements 7#ifdef SUBPROJECT_stapelberg
8// The second converts the arguments into a two-dimensional array 8 #include "stapelberg.h"
9#endif
9 10
10#define KEYMAP( \ 11#include "quantum.h"
11 k02,k22,k12,k01,k21,k11,k00,k20,k10, \
12 k80,k70,k60,k50,k40,k30, \
13 k81,k71,k61,k51,k41,k31, \
14 k82,k72,k62,k52,k42,k32, \
15 k83,k73,k63,k53,k43,k33, \
16 k74,k64,k54,k34, \
17 k36,k35, \
18 k55, \
19 k56,k46,k75, \
20 k03,k23,k13,k04,k24,k14,k05,k85,k84, \
21 k94,kA4,kB4,kD4,kE4,kF4, \
22 k95,kA5,kB5,kD5,kE5,kF5, \
23 k96,kA6,kB6,kD6,kE6,kF6, \
24 k97,kA7,kB7,kD7,kE7,kF7, \
25 k93,kB3,kD3,kE3, \
26 k47,k66, \
27 k67, \
28 k87,k76,k86 \
29) { \
30 { k00, k01, k02, k03, k04, k05, KC_NO, KC_NO }, \
31 { k10, k11, k12, k13, k14, KC_NO, KC_NO, KC_NO }, \
32 { k20, k21, k22, k23, k24, KC_NO, KC_NO, KC_NO }, \
33 { k30, k31, k32, k33, k34, k35, k36, KC_NO }, \
34 { k40, k41, k42, k43, KC_NO, KC_NO, k46, k47 }, \
35 { k50, k51, k52, k53, k54, k55, k56, KC_NO }, \
36 { k60, k61, k62, k63, k64, KC_NO, k66, k67 }, \
37 { k70, k71, k72, k73, k74, k75, k76, KC_NO }, \
38 { k80, k81, k82, k83, KC_NO ,KC_NO, k86, k87}, \
39 { KC_NO, KC_NO ,KC_NO ,k93, k94, k95, k96, k97}, \
40 { KC_NO, KC_NO ,KC_NO ,KC_NO, kA4, kA5, kA6, kA7}, \
41 { KC_NO, KC_NO ,KC_NO ,kB3, kB4, kB5, kB6, kB7}, \
42 { KC_NO, KC_NO ,KC_NO ,KC_NO, KC_NO, KC_NO, k84, k85}, \
43 { KC_NO, KC_NO ,KC_NO ,kD3, kD4, kD5, kD6, kD7}, \
44 { KC_NO, KC_NO ,KC_NO ,kE3, kE4, kE5, kE6, kE7}, \
45 { KC_NO, KC_NO ,KC_NO ,KC_NO, kF4, kF5, kF6, kF7} \
46}
47 12
48 13
49/* 4y0 A 4y1 B 4y2 4y3 D 4y4 E 4y5 F 4y6 G 4y7 H 5y0 I 5y1 J 5y2 K 5y3 L 5y4 M 5y5 N 5y6 O 5y7 P */ 14void all_led_off(void);
15void all_led_on(void);
16void num_lock_led_on(void);
17void caps_lock_led_on(void);
18void scroll_lock_led_on(void);
19void keypad_led_on(void);
50 20
51/*
52 0 1 2 3 4 5 6 7 8 9 A B C D E F
53 A B C D E F G H I J K L M N O P
54 4y0 4y1 4y2 4y3 4y4 4y5 4y6 4y7 5y0 5y1 5y2 5y3 5y4 5y5 5y6 5y7
55 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15
560 PB0 21 c0 f6 f8 f7 5 4 3 2 1 =+
571 PB1 22 c1 f3 f5 f4 t r e w q TAB
582 PB2 23 c2 ESC f2 f1 g f d s a CL
593 PB3 24 c3 f9 f11 f10 b v c x z LS UP DN [{ ]}
604 PB4 25 c4 f12 SL PS RT LT §± `~ 6 7 8 9 0 -_
615 PB5 26 c5 PB PGM KPD LA HM END y u i o p \
626 PB6 27 c6 LC DEL BS RC ENT SP h j k l ;: '"
637 PB7 28 c7 RA PU PD n m ,< .> /? RS
64*/
65 21
66 22
67#endif 23#endif
diff --git a/keyboards/kinesis/readme.md b/keyboards/kinesis/readme.md
index 79c86581e..2813ee273 100644
--- a/keyboards/kinesis/readme.md
+++ b/keyboards/kinesis/readme.md
@@ -1,42 +1,12 @@
1kinesis-advantage keyboard firmware 1# Firmware for the Kinesis advantage keyboard
2======================
3 2
4## Kinesis specific information 3There are at least two different ways to replace the controller in this keyboard.
5This is a port of https://github.com/alvicstep/tmk_keyboard,
6which is a fork of https://github.com/wjanssens/tmk_keyboard,
7which is based on work from https://github.com/chrisandreae/keyboard-firmware
8 4
9If you replace the kinesis CPU as described in the doc folder, then this code should allow you to use QMK. 5The Stapelberg folder contains the docs and configuration for using the custom controller created by Michael Stapelberg.
10I've tested with a Teensy 2++, remember to change the CPU if you use a 32u4 instead.
11 6
12Not yet implemented: 7The alvicstep folder contains docs and configuration for directly wiring a Teensy2++ to the existing controller board. This follows the pinouts described in https://github.com/alvicstep/tmk_keyboard, which is where the name comes from.
13- Kinesis EEProm reading or writing
14- Audio - this should be simple if we remove hardcoded pins from audio.h and switch to E7
15 8
9## Keymaps
10Both hardware solutions should work with the same keymaps
16 11
17 12
18## Quantum MK Firmware
19
20For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
21
22## Building
23
24Download or clone the whole firmware and navigate to the keyboards/kinesis-advantage folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
25
26Depending on which keymap you would like to use, you will have to compile slightly differently.
27
28### Default
29
30To build with the default keymap, simply run `make default`.
31
32### Other Keymaps
33
34Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
35
36To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
37
38```
39$ make [default|jack|<name>]
40```
41
42Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
diff --git a/keyboards/kinesis/stapelberg/Makefile b/keyboards/kinesis/stapelberg/Makefile
new file mode 100644
index 000000000..bd09e5885
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../../Makefile
3endif
diff --git a/keyboards/kinesis/stapelberg/config.h b/keyboards/kinesis/stapelberg/config.h
new file mode 100644
index 000000000..0677e0ade
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/config.h
@@ -0,0 +1,50 @@
1#ifndef STAPELBERG_CONFIG_H
2#define STAPELBERG_CONFIG_H
3
4#include "../config.h"
5
6/* USB Device descriptor parameter */
7#define PRODUCT_ID 0x6060
8#define DEVICE_VER 0x0002
9
10/* key matrix size */
11#define MATRIX_ROWS 15
12#define MATRIX_COLS 7
13
14/*
15 * Keyboard Matrix Assignments
16 *
17 * Change this to how you wired your keyboard
18 * COLS: AVR pins used for columns, left to right
19 * ROWS: AVR pins used for rows, top to bottom
20 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
21 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
22 *
23*/
24#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5, D6, D7, C0, C1, C2, C3, C4, C5, C6 }
25#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6 }
26#define UNUSED_PINS
27
28/* COL2ROW or ROW2COL */
29#define DIODE_DIRECTION COL2ROW
30
31
32/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
33#define DEBOUNCING_DELAY 5
34
35/* don't know if this should be defined at the board or top level. Assuming board
36#define MOUSEKEY_DELAY 100
37#define MOUSEKEY_INTERVAL 20
38#define MOUSEKEY_MAX_SPEED 3
39#define MOUSEKEY_TIME_TO_MAX 10
40*/
41
42#define IGNORE_MOD_TAP_INTERRUPT
43
44/* key combination for magic key command */
45#define IS_COMMAND() ( \
46 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
47)
48
49
50#endif
diff --git a/keyboards/kinesis/stapelberg/images/controller_board.jpg b/keyboards/kinesis/stapelberg/images/controller_board.jpg
new file mode 100644
index 000000000..b18f76f7e
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/images/controller_board.jpg
Binary files differ
diff --git a/keyboards/kinesis/stapelberg/images/exterior_reset.jpg b/keyboards/kinesis/stapelberg/images/exterior_reset.jpg
new file mode 100644
index 000000000..6edda8130
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/images/exterior_reset.jpg
Binary files differ
diff --git a/keyboards/kinesis/stapelberg/images/teensy_detail.jpg b/keyboards/kinesis/stapelberg/images/teensy_detail.jpg
new file mode 100644
index 000000000..12e6c1c8a
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/images/teensy_detail.jpg
Binary files differ
diff --git a/keyboards/kinesis/stapelberg/readme.md b/keyboards/kinesis/stapelberg/readme.md
new file mode 100644
index 000000000..b04a0bd49
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/readme.md
@@ -0,0 +1,55 @@
1# kinesis_stapelberg keyboard firmware
2
3This folder contains the firmware customization required to run QMK on the custom controller for the Kinesis Advantage created by Michael Stapelberg.
4It differs from the `alvicstep keyboard in that the existing QMK Kinesis Advantage project uses the existing controller board provided by Kinesis.
5
6The controller board hardware is described
7[here](http://michael.stapelberg.de/Artikel/kinesis_custom_controller)
8
9Mapping the pin assignments was done using the corresponding matrix description provided at this
10[link](https://github.com/stapelberg/kinesis-firmware/blob/master/kb_kinesis/config.kspec)
11
12This code makes no attempt to drive the four LEDs provided on the controller board.
13
14
15## Building the Hardware
16
17If you want to perform this customization, these parts may be helpful.
18
19| Function | Quantity | Vendor | Part Number |
20| ------------------------------------------------------ | -------- | ------- | ------------ |
21| 13 pin connector for function keys and finger keywells | 4 | Digi-Key | WM14526-ND |
22| 10 pin headers for thumb clusters | 4 | Digi-Key | 609-3250-ND |
23| 8 pin cable for thumb clusters | 2 | Digi-Key | SAM8928-ND |
24| Teensy++ 2.0 | 1 | Digi-Key | 1528-1056-ND |
25| 2 pin right angle header for reset | 1 | Digi-Key | 3M9467-ND |
26| Reset cables | 2 | Sparkfun | PRT-09140 |
27
28The board and connections are shown here
29![](images/controller_board.jpg)
30
31The Teensy mounting detail can be seen here.
32I used a socket for prototyping.
33![](images/teensy_detail.jpg)
34
35
36Since the proper mounting of the Teensy board places the reset button in a tight space, I added a 2-pin header to the reset and ground pins on the edge of the board.
37Shorting these two pins together will reset the board.
38I also put female to male header jumper cables on these so they could be accessed outside the enclosure.
39The exterior cables can be seen here.
40![](images/exterior_reset.jpg)
41
42
43## Keymaps
44
45### Default
46
47To build with the default keymap, run `make default` while in the
48`kinesis_stapelberg` working directory.
49
50### Dvorak
51
52This keymap contains a dvorak implementation as well as media and symbol layers.
53
54Run `make dvorak` while in the `kinesis_stapelberg` working directory.
55
diff --git a/keyboards/kinesis/stapelberg/rules.mk b/keyboards/kinesis/stapelberg/rules.mk
new file mode 100644
index 000000000..fb421a34f
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/rules.mk
@@ -0,0 +1,10 @@
1ifndef QUANTUM_DIR
2 include ../../../Makefile
3endif
4
5# just silently stop, since we need to upload with teensy uploader
6upload: build
7
8
9
10
diff --git a/keyboards/kinesis/stapelberg/stapelberg.c b/keyboards/kinesis/stapelberg/stapelberg.c
new file mode 100644
index 000000000..111db81fe
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/stapelberg.c
@@ -0,0 +1,28 @@
1#include "stapelberg.h"
2
3void matrix_init_kb(void) {
4 // put your keyboard start-up code here
5 // runs once when the firmware starts up
6
7 matrix_init_user();
8}
9
10void matrix_scan_kb(void) {
11 // put your looping keyboard code here
12 // runs every cycle (a lot)
13
14 matrix_scan_user();
15}
16
17bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
18 // put your per-action keyboard code here
19 // runs for every action, just before processing by the firmware
20
21 return process_record_user(keycode, record);
22}
23
24void led_set_kb(uint8_t usb_led) {
25 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
26
27 led_set_user(usb_led);
28}
diff --git a/keyboards/kinesis/stapelberg/stapelberg.h b/keyboards/kinesis/stapelberg/stapelberg.h
new file mode 100644
index 000000000..c90fc3d52
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/stapelberg.h
@@ -0,0 +1,72 @@
1#ifndef KINESIS_STAPELBERG_H
2#define KINESIS_STAPELBERG_H
3
4#include "quantum.h"
5
6// This a shortcut to help you visually see your layout.
7// The first section contains all of the arguments as on the physical keyboard
8// The second converts the arguments into the 2-D scanned array
9
10#define KEYMAP( \
11 kC0,kD0,kE0,kC1,kD1,kE1,kC2,kD2,kE2, \
12 k00,k10,k20,k30,k40,k50, \
13 k01,k11,k21,k31,k41,k51, \
14 k02,k12,k22,k32,k42,k52, \
15 k03,k13,k23,k33,k43,k53, \
16 k14,k24,k34,k54, \
17 k56,k55, \
18 k35, \
19 k36,k46,k25, \
20 kC3,kD3,kE3,kC4,kD4,kE4,kC5,kE5,kD5, \
21 k60,k70,k80,k90,kA0,kB0, \
22 k61,k71,k81,k91,kA1,kB1, \
23 k62,k72,k82,k92,kA2,kB2, \
24 k63,k73,k83,k93,kA3,kB3, \
25 k64,k84,k94,kA4, \
26 k96,k85, \
27 k86, \
28 k66,k75,k65 \
29) { \
30 { k00, k01, k02, k03, KC_NO, KC_NO, KC_NO }, \
31 { k10, k11, k12, k13, k14, KC_NO, KC_NO }, \
32 { k20, k21, k22, k23, k24, k25, KC_NO }, \
33 { k30, k31, k32, k33, k34, k35, k36 }, \
34 { k40, k41, k42, k43, KC_NO, KC_NO, k46 }, \
35 { k50, k51, k52, k53, k54, k55, k56 }, \
36 { k60, k61, k62, k63, k64, k65, k66 }, \
37 { k70, k71, k72, k73, KC_NO, k75, KC_NO }, \
38 { k80, k81, k82, k83, k84, k85, k86 }, \
39 { k90, k91, k92, k93, k94, KC_NO, k96 }, \
40 { kA0, kA1, kA2, kA3, kA4, KC_NO, KC_NO }, \
41 { kB0, kB1, kB2, kB3, KC_NO, KC_NO, KC_NO }, \
42 { kC0, kC1, kC2, kC3, kC4, kC5, KC_NO }, \
43 { kD0, kD1, kD2, kD3, kD4, kD5, KC_NO }, \
44 { kE0, kE1, kE2, kE3, kE4, kE5, KC_NO } \
45}
46
47/*
48This is the Stapelberg matrix as published at
49https://github.com/stapelberg/kinesis-firmware/blob/master/kb_kinesis/config.kspec
50Along with the pins for each row and column
51 PB0 PB1 PB2 PB3 PB4 PB5 PB6
52 kx0 kx1 kx2 kx3 kx4 kx5 kx6
53PD0 k0x Row: EQL TAB CAP LSH X2 -- --
54PD1 k1x Row: 1 Q A Z BQ -- --
55PD2 k2x Row: 2 W S X INS END --
56PD3 k3x Row: 3 E D C LFT HOM BAK
57PD4 k4x Row: 4 R F V -- -- DEL
58PD5 k5x Row: 5 T G B RT LAL LCT
59PD6 k6x Row: 6 Y H N UP SPC PGD
60PD7 k7x Row: 7 U J M -- RET --
61PB0 k8x Row: 8 I K COM DWN RCT PGU
62PB1 k9x Row: 9 O L PER LBR -- RAL
63PB2 kAx Row: 0 P SEM SLA RBR -- --
64PB3 kBx Row: MIN BSL APO RSH X1 -- --
65PB4 kCx Row: ESC F3 F6 F9 F12 PAU --
66PB5 kDx Row: F1 F4 F7 F10 PRT PRG --
67PB6 kEx Row: F2 F5 F8 F11 SLK KEY --
68*/
69
70
71
72#endif