diff options
author | coderkun <olli@coderkun.de> | 2017-04-01 10:56:29 +0200 |
---|---|---|
committer | coderkun <olli@coderkun.de> | 2017-04-01 10:56:29 +0200 |
commit | 605c4129cc89e8fe647881108b0c9c79d4da1aea (patch) | |
tree | 9af55a60d567bd66b5c8572c04ab63b62abb5a02 /keyboards/kinesis | |
parent | b0ade6dc9838d4112cbc3093ac3033aa81ef172d (diff) | |
parent | 3448d5d4874a2775f85320a2be69edd241575d46 (diff) | |
download | qmk_firmware-605c4129cc89e8fe647881108b0c9c79d4da1aea.tar.gz qmk_firmware-605c4129cc89e8fe647881108b0c9c79d4da1aea.zip |
Merge branch 'master' into coderkun_neo2
Diffstat (limited to 'keyboards/kinesis')
39 files changed, 1028 insertions, 513 deletions
diff --git a/keyboards/kinesis/Makefile b/keyboards/kinesis/Makefile index 4e2a6f00fd..fbf05ca4a2 100644 --- a/keyboards/kinesis/Makefile +++ b/keyboards/kinesis/Makefile @@ -1,3 +1,5 @@ +SUBPROJECT_DEFAULT = alvicstep + ifndef MAKEFILE_INCLUDED include ../../Makefile -endif
\ No newline at end of file +endif diff --git a/keyboards/kinesis/alvicstep/Makefile b/keyboards/kinesis/alvicstep/Makefile new file mode 100644 index 0000000000..bd09e5885d --- /dev/null +++ b/keyboards/kinesis/alvicstep/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif diff --git a/keyboards/kinesis/alvicstep/alvicstep.c b/keyboards/kinesis/alvicstep/alvicstep.c new file mode 100644 index 0000000000..fba9f5136f --- /dev/null +++ b/keyboards/kinesis/alvicstep/alvicstep.c @@ -0,0 +1,105 @@ +#include "kinesis.h" + +// begin section origin https://github.com/alvicstep/tmk_keyboard + +void all_led_off(void) +{ + PORTD = 0b11111111; +} + +void all_led_on(void) +{ + PORTD = 0b00000000; +} +void num_lock_led_on(void) +{ + PORTD = 0b11101111; +} + +void caps_lock_led_on(void) +{ + PORTD = 0b01111111; +} + +void scroll_lock_led_on(void) +{ + PORTD = 0b11011111; +} +void keypad_led_on(void) +{ + PORTD = 0b10111111; +} +void blink_all_leds(void) +{ + all_led_on(); + _delay_ms(500); + + all_led_off(); + _delay_ms(100); + + caps_lock_led_on(); + _delay_ms(100); + + num_lock_led_on(); + _delay_ms(100); + + scroll_lock_led_on(); + _delay_ms(100); + + keypad_led_on(); + _delay_ms(100); + + //back + + scroll_lock_led_on(); + _delay_ms(100); + + num_lock_led_on(); + _delay_ms(100); + + caps_lock_led_on(); + _delay_ms(100); + + all_led_off(); +} + +// End section origin https://github.com/alvicstep/tmk_keyboard + + void matrix_init_kb(void) { + blink_all_leds(); + matrix_init_user(); +} + + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + +//Copyright 2014 Warren Janssens <warren.janssens@gmail.com> + uint8_t leds = 0xF0; + if (usb_led & 1 << USB_LED_NUM_LOCK) + leds &= ~0x10; + if (usb_led & 1 << USB_LED_CAPS_LOCK) + leds &= ~0x80; + if (usb_led & 1 << USB_LED_SCROLL_LOCK) + leds &= ~0x20; + PORTD = (PORTD & 0x0F) | leds; + + led_set_user(usb_led); + +} + + diff --git a/keyboards/kinesis/alvicstep/alvicstep.h b/keyboards/kinesis/alvicstep/alvicstep.h new file mode 100644 index 0000000000..f91a523148 --- /dev/null +++ b/keyboards/kinesis/alvicstep/alvicstep.h @@ -0,0 +1,67 @@ +#ifndef KINESIS_ALVICSTEP_H +#define KINESIS_ALVICSTEP_H + +#include "../kinesis.h" + + +#define KEYMAP( \ + k02,k22,k12,k01,k21,k11,k00,k20,k10, \ + k80,k70,k60,k50,k40,k30, \ + k81,k71,k61,k51,k41,k31, \ + k82,k72,k62,k52,k42,k32, \ + k83,k73,k63,k53,k43,k33, \ + k74,k64,k54,k34, \ + k36,k35, \ + k55, \ + k56,k46,k75, \ + k03,k23,k13,k04,k24,k14,k05,k85,k84, \ + k94,kA4,kB4,kD4,kE4,kF4, \ + k95,kA5,kB5,kD5,kE5,kF5, \ + k96,kA6,kB6,kD6,kE6,kF6, \ + k97,kA7,kB7,kD7,kE7,kF7, \ + k93,kB3,kD3,kE3, \ + k47,k66, \ + k67, \ + k87,k76,k86 \ +) { \ + { k00, k01, k02, k03, k04, k05, KC_NO, KC_NO }, \ + { k10, k11, k12, k13, k14, KC_NO, KC_NO, KC_NO }, \ + { k20, k21, k22, k23, k24, KC_NO, KC_NO, KC_NO }, \ + { k30, k31, k32, k33, k34, k35, k36, KC_NO }, \ + { k40, k41, k42, k43, KC_NO, KC_NO, k46, k47 }, \ + { k50, k51, k52, k53, k54, k55, k56, KC_NO }, \ + { k60, k61, k62, k63, k64, KC_NO, k66, k67 }, \ + { k70, k71, k72, k73, k74, k75, k76, KC_NO }, \ + { k80, k81, k82, k83, k84, k85, k86, k87}, \ + { KC_NO, KC_NO ,KC_NO ,k93, k94, k95, k96, k97}, \ + { KC_NO, KC_NO ,KC_NO ,KC_NO, kA4, kA5, kA6, kA7}, \ + { KC_NO, KC_NO ,KC_NO ,kB3, kB4, kB5, kB6, kB7}, \ + { KC_NO, KC_NO ,KC_NO ,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, \ + { KC_NO, KC_NO ,KC_NO ,kD3, kD4, kD5, kD6, kD7}, \ + { KC_NO, KC_NO ,KC_NO ,kE3, kE4, kE5, kE6, kE7}, \ + { KC_NO, KC_NO ,KC_NO ,KC_NO, kF4, kF5, kF6, kF7} \ +} + + +/* Row pin configuration +PF0 A +PF1 B +PF2 C +PF3 G 0 = U4, 1 = U5 + + + r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 rA rB rC rD rE rF +PB0 c0| f6 f8 f7 5 4 3 2 1 =+ +PB1 c1| f3 f5 f4 t r e w q TAB +PB2 c2| ESC f2 f1 g f d s a CL +PB3 c3| f9 f11 f10 b v c x z LS UP DN [{ ]} +PB4 c4| f12 SL PS RT LT §± `~ 6 7 8 9 0 -_ +PB5 c5| PB PGM KPD y u i o p \ +PB6 c6| LC DL BS RC EN SP h j k l ;: '" +PB7 c7| RA PU PD n m ,< .> /? RS + */ + + + + +#endif diff --git a/keyboards/kinesis/alvicstep/config.h b/keyboards/kinesis/alvicstep/config.h new file mode 100644 index 0000000000..88b7e2644a --- /dev/null +++ b/keyboards/kinesis/alvicstep/config.h @@ -0,0 +1,35 @@ +#ifndef ALVICSTEP_CONFIG_H +#define ALVICSTEP_CONFIG_H + +#include "../config.h" + +/* USB Device descriptor parameter */ +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 + +/* key matrix size */ +#define MATRIX_ROWS 16 +#define MATRIX_COLS 8 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +//Passed through the port multipler, so 4 pins =16 +#define MATRIX_ROW_PINS { F0,F1, F2, F3 } + +// May be upside down. +#define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + + +#endif diff --git a/keyboards/kinesis/docs/kicad/kinesis-cache.lib b/keyboards/kinesis/alvicstep/docs/kicad/kinesis-cache.lib index f798d39d6c..f798d39d6c 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 9f130b5092..9f130b5092 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 f75335aa08..f75335aa08 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 Binary files differindex 027ab9efb2..027ab9efb2 100644 --- a/keyboards/kinesis/docs/photos/P1050573.jpg +++ b/keyboards/kinesis/alvicstep/docs/photos/P1050573.jpg diff --git a/keyboards/kinesis/docs/photos/P1050574.jpg b/keyboards/kinesis/alvicstep/docs/photos/P1050574.jpg Binary files differindex d49c492b8a..d49c492b8a 100644 --- a/keyboards/kinesis/docs/photos/P1050574.jpg +++ b/keyboards/kinesis/alvicstep/docs/photos/P1050574.jpg diff --git a/keyboards/kinesis/docs/photos/P1050575.jpg b/keyboards/kinesis/alvicstep/docs/photos/P1050575.jpg Binary files differindex 50cc9897c4..50cc9897c4 100644 --- a/keyboards/kinesis/docs/photos/P1050575.jpg +++ b/keyboards/kinesis/alvicstep/docs/photos/P1050575.jpg diff --git a/keyboards/kinesis/docs/readme.txt b/keyboards/kinesis/alvicstep/docs/readme.txt index af33ac4907..af33ac4907 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 Binary files differindex fa9405a1fa..fa9405a1fa 100644 --- a/keyboards/kinesis/docs/schematic.png +++ b/keyboards/kinesis/alvicstep/docs/schematic.png diff --git a/keyboards/kinesis/matrix.c b/keyboards/kinesis/alvicstep/matrix.c index cb0d5ad7df..cb0d5ad7df 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 0000000000..974e42e506 --- /dev/null +++ b/keyboards/kinesis/alvicstep/readme.md @@ -0,0 +1,46 @@ +kinesis-advantage keyboard firmware +====================== + +This directory is called alvicstep because https://github.com/alvicstep did the heavy work and took the photos in the doc directory. +alvicstep did NOT do anything related to the QMK implementation, so don't bug him/her. + +There are other ways of replacing the CPU in the kinesis, this one uses jumper wires from the Teensy to the original DIP socket + + +## Kinesis specific information +This is a port of https://github.com/alvicstep/tmk_keyboard, +which is a fork of https://github.com/wjanssens/tmk_keyboard, +which is based on work from https://github.com/chrisandreae/keyboard-firmware + +If you replace the kinesis CPU as described in the doc folder, then this code should allow you to use QMK. +I've tested with a Teensy 2++, remember to change the CPU if you use a 32u4 instead. + +Not yet implemented: +- Kinesis EEProm reading or writing +- Audio - this should be simple if we remove hardcoded pins from audio.h and switch to E7 + + + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). + +## Building + +Download 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. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make`. + +### 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 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. + +To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: + +$ make keymap=[default|jack|<name>] + +Keymaps 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 0000000000..fb421a34fc --- /dev/null +++ b/keyboards/kinesis/alvicstep/rules.mk @@ -0,0 +1,10 @@ +ifndef QUANTUM_DIR + include ../../../Makefile +endif + +# just silently stop, since we need to upload with teensy uploader +upload: build + + + + diff --git a/keyboards/kinesis/config.h b/keyboards/kinesis/config.h index 8f1fdbdb6c..7cb0532c64 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/>. /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 #define MANUFACTURER You #define PRODUCT kinesis-advantage #define DESCRIPTION A custom keyboard // Mouse -#define MOUSEKEY_DELAY 20 +#define MOUSEKEY_DELAY 60 #define MOUSEKEY_INTERVAL 20 #define MOUSEKEY_MAX_SPEED 4 -#define MOUSEKEY_TIME_TO_MAX 20 +#define MOUSEKEY_TIME_TO_MAX 10 #define MOUSEKEY_WHEEL_MAX_SPEED 1 #define MOUSEKEY_WHEEL_DELTA 1 #define MOUSEKEY_WHEEL_TIME_TO_MAX 1 -/* key matrix size */ -#define MATRIX_ROWS 16 -#define MATRIX_COLS 8 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -//Passed through the port multipler, so 4 pins =16 -#define MATRIX_ROW_PINS { F0,F1, F2, F3 } - -// May be upside down. -#define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 } -#define UNUSED_PINS - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -// #define BACKLIGHT_PIN B7 -// #define BACKLIGHT_BREATHING -// #define BACKLIGHT_LEVELS 3 - - /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCING_DELAY 5 -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ @@ -171,4 +135,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION + + +#ifdef SUBPROJECT_alvicstep + #include "alvicstep/config.h" +#endif +#ifdef SUBPROJECT_stapelberg + #include "stapelberg/config.h" +#endif + #endif diff --git a/keyboards/kinesis/keymaps/default/keymap.c b/keyboards/kinesis/keymaps/default/keymap.c index 3bf80699ce..01a66b5e5a 100644 --- a/keyboards/kinesis/keymaps/default/keymap.c +++ b/keyboards/kinesis/keymaps/default/keymap.c @@ -1,10 +1,6 @@ #include "kinesis.h" -#include "action_layer.h" -#define QWERTY 0 // Base qerty -#define SYMB 1// Symbol layer - -// An almost entirely blank keymap. Test layers with the upper right hand key - 1 in normal mode, reset in layer 2. +#define QWERTY 0 // Base qwerty /**************************************************************************************************** @@ -33,7 +29,6 @@ * `--------------------' `--------------------' */ - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [QWERTY] = KEYMAP( 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] = { KC_LCTL,KC_LALT, KC_HOME, KC_BSPC,KC_DEL ,KC_END , - KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1, + KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_FN0, KC_1, KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS, KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, 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] = { KC_RGUI,KC_RCTL, KC_PGUP, KC_PGDN,KC_ENTER ,KC_SPC - ), -[SYMB] = 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_FN0, RESET, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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[] = { - [0] = ACTION_LAYER_TAP_TOGGLE(SYMB) , // FN1 - Momentary Layer 1 (Symbols) +const uint16_t PROGMEM fn_actions[] = { }; diff --git a/keyboards/kinesis/keymaps/programmer/Makefile b/keyboards/kinesis/keymaps/dvorak/Makefile index 9d3df5964f..9d3df5964f 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 8893d122e0..8893d122e0 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 0000000000..9008bc8086 --- /dev/null +++ b/keyboards/kinesis/keymaps/dvorak/keymap.c @@ -0,0 +1,93 @@ +#include "kinesis.h" + +#define _DVORAK 0 // Base Dvorak layer +#define _MEDIA 1 // Media layer + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_DVORAK] = KEYMAP( + // left hand + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, + KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, + KC_ESC, KC_LBRC, KC_DOWN, KC_UP, + // left thumb + KC_LGUI, KC_LCTL, + KC_LALT, + KC_BSPC, KC_DEL, TG(_MEDIA), + // right hand + KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_FN0, KC_1, + KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_LEFT, KC_RIGHT, KC_RBRC, KC_BSLS, + // right thumb + KC_RCTL, KC_RGUI, + KC_RALT, + TG(_MEDIA), KC_ENT, KC_SPC + ), + +[_MEDIA] = KEYMAP( + // left hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_NO, + KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, + KC_NO, KC_NO, KC_MS_D, KC_MS_U, + // left thumb + KC_NO, KC_NO, + KC_NO, + KC_NO, KC_NO, KC_TRNS, + // right hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_POWER, + KC_NO, KC_VOLU, KC_MS_U, KC_VOLD, KC_NO, KC_NO, + KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, + KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, + KC_MS_L, KC_MS_R, KC_NO, KC_NO, + // right thumb + KC_NO, KC_NO, + KC_NO, + KC_TRNS, KC_ENT, KC_NO +) +}; + + +const uint16_t PROGMEM fn_actions[] = { + +}; + +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; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +} diff --git a/keyboards/kinesis/keymaps/milestogo/Makefile b/keyboards/kinesis/keymaps/milestogo/Makefile new file mode 100644 index 0000000000..9d3df5964f --- /dev/null +++ b/keyboards/kinesis/keymaps/milestogo/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = 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 +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/kinesis/keymaps/milestogo/config.h b/keyboards/kinesis/keymaps/milestogo/config.h new file mode 100644 index 0000000000..8893d122e0 --- /dev/null +++ b/keyboards/kinesis/keymaps/milestogo/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif diff --git a/keyboards/kinesis/keymaps/milestogo/keymap.c b/keyboards/kinesis/keymaps/milestogo/keymap.c new file mode 100644 index 0000000000..bf1f9c5910 --- /dev/null +++ b/keyboards/kinesis/keymaps/milestogo/keymap.c @@ -0,0 +1,384 @@ +#include "kinesis.h" +#include "action_layer.h" +#include "mousekey.h" + +#define _QWERTY 0 // Base qerty +#define _SYMB 1// Symbol layer +#define _MOUSE 2// +#define _TRANS 3// +#define _SYMB2 4// old symbol level, more ergodox like + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +/* Macros */ +enum { + NONE = 0, + // Diagonal mouse movement + A_MUL, + A_MUR, + A_MDL, + A_MDR, +}; + + +// Train out of using uncomfortable esc and GUI keys. +/**************************************************************************************************** +* +* Keymap: Default Layer in Qwerty +* +* ,-------------------------------------------------------------------------------------------------------------------. +* | no | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT | +* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| +* | `~ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ | +* |--------+------+------+------+------+------| +------+------+------+------+------+--------| +* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* |MouseFN0| A | S | D | F | G | | H | J | K | L | ;: | '" | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | Shift | Z | X | C | V | B | | N | M | ,< | .> | /? | Shift | +* `--------+------+------+------+------+------- `------+------+------+------+------+--------' +* | ~` | ESC |GUI/L |L1/RT | | L1/UP|GUI/DN| [{ | ]} | +* `---------------------------' `---------------------------' +* ,-------------. ,-------------. +* | CTRL | ALT | | ALT | GUI | +* ,------|------|------| |------+------+------. +* | | | Del | | PgUp | | | +* | BkSp | BkSp |------| |------|Return| Space| +* | | | FN0 | | PgDn | | | +* `--------------------' `--------------------' +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_QWERTY] = KEYMAP( + XXXXXXX, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8, + KC_GRAVE, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , + KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , + KC_FN0 ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , + KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , + KC_GRAVE, KC_ESC, KC_FN4, KC_FN5, + KC_LCTL,KC_LALT, + KC_DEL, + KC_BSPC, KC_DEL ,KC_FN0 , + KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_FN0 ,KC_FN1 ,KC_FN2, KC_NO, RESET, + KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS, + KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, + KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT, + KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT, + KC_FN6, KC_FN7, KC_LBRC ,KC_RBRC, + KC_RALT,KC_RGUI, + KC_PGUP, + KC_PGDN,KC_ENTER ,KC_SPC + ), + + +/* _SYMB level, more planck like. Much work to make sequences into multi-finger rolls. eg ([1,0]), !=0 +* Also sorted by frequency / strength of finger. +* +* ,-------------------------------------------------------------------------------------------------------------------. +* | | | | | | | | | | | | | | | | | +* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| +* | | | | | | | | | | | | | | +* |--------+------+------+------+------+------| +------+------+------+------+------+--------| +* | | ^ | { | } | @ | % | | & | [ | ( | ) | _ | \ | +* |--------+------+------+------+------+------| +------+------+------+------+------+--------| +* | | ! | # | 0 | = | ~ | | * | + | 1 | - | ] | ` | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | | 6 | 7 | 8 | 9 | pipe | | $ | 2 | 3 | 4 | 5 | | +* `--------+------+------+------+------+------- `------+------+------+------+------+--------' +* | | : |GUI/L |L1/RT | | L1/UP|GUI/DN| \ | | +* `---------------------------' `---------------------------' +* ,-------------. ,-------------. +* | CTRL | | | ALT | GUI | +* ,------|------|------| |------+------+------. +* | | | | | | | | +* | Cut | Paste|------| |------| | | +* | | |Reset | | | | | +* `--------------------' `--------------------' +*/ + + + +[_SYMB] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, KC_CIRC, KC_LCBR, KC_RCBR, KC_AT, KC_PERC, + _______, KC_EXLM, KC_HASH, KC_0, KC_EQL, KC_TILD, + _______, KC_6, KC_7, KC_8, KC_9, KC_PIPE, + _______, KC_COLON, KC_FN4, KC_FN5, + _______, _______, + _______, + _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, KC_FN0, KC_2, + _______, _______, _______, _______, _______, _______, + KC_AMPR, KC_LBRC, KC_LPRN, KC_RPRN, KC_UNDS, _______, + KC_ASTR, KC_PLUS, KC_1, KC_MINS, KC_RBRC, KC_GRV, + KC_DLR, KC_2, KC_3, KC_4, KC_5, XXXXXXX, + KC_FN6, KC_FN7, KC_BSLS, XXXXXXX, + _______, _______, + _______, + _______, _______, _______ + ), + + +/* _SYMB2ol level, more ergodox like +* +* ,-------------------------------------------------------------------------------------------------------------------. +* | | | | | | | | | | | | | | | | | +* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| +* | | | * | # | | | | | | | | | | +* |--------+------+------+------+------+------| +------+------+------+------+------+--------| +* | | / | < | > | | | | | | + | * | | | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | | | { | } | | | | | | = | - | | | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | | = | ( | ) | | | | | | | | | | | +* `--------+------+------+------+------+------- `------+------+------+------+------+--------' +* | | |GUI/L |L1/RT | | L1/UP|GUI/DN| { | } | +* `---------------------------' `---------------------------' +* ,-------------. ,-------------. +* | CTRL | | | ALT | GUI | +* ,------|------|------| |------+------+------. +* | | | | | | | | +* | BkSp | Del |------| |------|Mouse1|Mouse2| +* | | |Reset | | |LClick|Rclick| +* `--------------------' `--------------------' +*/ + + + +[_SYMB2] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_ASTR, KC_HASH, _______, _______, + _______, KC_SLSH, RSFT(KC_COMM), RSFT(KC_DOT), _______, _______, + _______, _______, RSFT(KC_LBRC), RSFT(KC_RBRC), _______, _______, + _______, KC_EQL, RSFT(KC_9), RSFT(KC_0), _______, _______, + _______, _______, KC_FN4, KC_FN5, + _______, _______, + _______, + _______, _______, RESET, + _______, _______, _______, _______, _______, _______, _______, KC_FN0, KC_2, + _______, _______, _______, KC_ASTR, _______, _______, + _______, _______, KC_PLUS, KC_MINS, _______, _______, + _______, _______, KC_EQL, KC_PIPE, _______, _______, + _______, _______, _______, _______, _______, _______, + KC_FN6, KC_FN7, _______, _______, + _______, _______, + _______, + _______, _______, _______ + ), +/* Keymap: Movement and function layer +* +* ,-------------------------------------------------------------------------------------------------------------------. +* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | Tada | bOOT | +* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| +* | =+ | ! | @ | # | $ | % | | ^ | & | * | ( | ) |MS Fast | +* |--------+------+------+------+------+------| +------+------+------+------+------+--------| +* | Tab | | | | |PgUp | | MwU |MS_UL | MS_U |MS_UR | | Ms Norm| +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* |MouseFN1|GUI_V |GUI X |GUI C |GUI_V | | | | MS_L |Mouse1| MS_R | |MS Slow | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | | | | | |PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | | +* `--------+------+------+------+------+------- `------+------+------+------+------+--------' +* | `~ | ESC | | | | | | { | } | +* `---------------------------' `---------------------------' +* ,-------------. ,-------------. +* | CTRL | GUI | | ALT | GUI | +* ,------|------|------| |------+------+------. +* | | | Home | | PgUp | | | +* | BkSp | Del |------| |------|Mouse1|Mouse2| +* | | | End | | PgDn |LClick|Rclick| +* `--------------------' `--------------------' +*/ + + +[_MOUSE] = KEYMAP( + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC , + _______, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP, + KC_FN1, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V), KC_NO, + _______, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGDN, + _______, _______, KC_NO, KC_NO, + _______, _______, + _______, + _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_FN0,RESET, + KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2, + KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1, + KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0, + KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), RSFT(KC_LBRC), RSFT(KC_RBRC), + KC_LCBR, KC_RCBR, KC_NO, KC_NO, + _______, _______, + _______, + _______, KC_BTN1, KC_BTN2 + ), + + + +/* EMPTY +* +* ,-------------------------------------------------------------------------------------------------------------------. +* | | | | | | | | | | | | | | | | bOOT | +* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| +* | | | | | | | | | | | | | | +* |--------+------+------+------+------+------| +------+------+------+------+------+--------| +* | | | | | | | | | | | | | | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | | | | | | | | | | | | | | +* |--------+------+------+------+------+------| |------+------+------+------+------+--------| +* | | | | | | | | | | | | | | +* `--------+------+------+------+------+------- `------+------+------+------+------+--------' +* | | | | | | | | | | +* `---------------------------' `---------------------------' +* ,-------------. ,-------------. +* | Ctrl | Alt | | Gui | Ctrl | +* ,------|------|------| |------+------+------. +* | | | Home | | PgUp | | | +* | BkSp | Del |------| |------|Mouse1|Mouse2| +* | | | End | | PgDn |LClick|Rclick| +* `--------------------' `--------------------' +*/ + + + +[_TRANS] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, + _______, + _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, KC_FN0, KC_2, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, + _______, + _______, _______, _______ + ), + + +}; + + + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_LAYER_TAP_TOGGLE(_MOUSE) , + [1] = ACTION_LAYER_TOGGLE(_MOUSE) , + [2] = ACTION_LAYER_TAP_TOGGLE(_SYMB) , + [5]= ACTION_LAYER_TAP_KEY(_SYMB,KC_RIGHT), + [4]= ACTION_MODS_TAP_KEY(MOD_LGUI,KC_LEFT), + [6]= ACTION_LAYER_TAP_KEY(_SYMB,KC_UP), + [7]= ACTION_MODS_TAP_KEY(MOD_LGUI,KC_DOWN), + + +}; + +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; + + // from algernon's ErgoDox EZ layout, + case A_MUL: + if (record->event.pressed) { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_LEFT); + } else { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_LEFT); + } + mousekey_send(); + break; + + case A_MUR: + if (record->event.pressed) { + mousekey_on(KC_MS_UP); + mousekey_on(KC_MS_RIGHT); + } else { + mousekey_off(KC_MS_UP); + mousekey_off(KC_MS_RIGHT); + } + mousekey_send(); + break; + + case A_MDL: + if (record->event.pressed) { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_LEFT); + } else { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_LEFT); + } + mousekey_send(); + break; + + case A_MDR: + if (record->event.pressed) { + mousekey_on(KC_MS_DOWN); + mousekey_on(KC_MS_RIGHT); + } else { + mousekey_off(KC_MS_DOWN); + mousekey_off(KC_MS_RIGHT); + } + mousekey_send(); + break; + } + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + + +} + +void matrix_scan_user(void) { + +#ifdef ALVICSTEP_CONFIG_H + int8_t layer = biton32(layer_state); + + switch (layer) { + case 1: + if (!(host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK))) { + all_led_off(); + caps_lock_led_on(); + } + break; + + case 2: + if (!(host_keyboard_leds() & (1 << USB_LED_SCROLL_LOCK))) { + all_led_off(); + scroll_lock_led_on(); + } + case 0: + all_led_off(); + num_lock_led_on(); + break; + default: + break; + } +#endif + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +} diff --git a/keyboards/kinesis/keymaps/programmer/readme.md b/keyboards/kinesis/keymaps/milestogo/readme.md index 76356a6871..76356a6871 100644 --- a/keyboards/kinesis/keymaps/programmer/readme.md +++ b/keyboards/kinesis/keymaps/milestogo/readme.md diff --git a/keyboards/kinesis/keymaps/programmer/keymap.c b/keyboards/kinesis/keymaps/programmer/keymap.c deleted file mode 100644 index 83fb7bd5f5..0000000000 --- a/keyboards/kinesis/keymaps/programmer/keymap.c +++ /dev/null @@ -1,245 +0,0 @@ -#include "kinesis.h" -#include "action_layer.h" -#include "mousekey.h" - -#define QWERTY 0 // Base qerty -#define SYMB 1// Symbol layer -#define MOUSE 2// - - - - -/* Macros */ -enum { - NONE = 0, - // Diagonal mouse movement - A_MUL, - A_MUR, - A_MDL, - A_MDR, -}; - - -// Borrowing very heavily from -// https://github.com/alvicstep/tmk_keyboard -/**************************************************************************************************** -* -* Keymap: Default Layer in Qwerty -* -* ,-------------------------------------------------------------------------------------------------------------------. -* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT | -* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| -* | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ | -* |--------+------+------+------+------+------| +------+------+------+------+------+--------| -* | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| | -* |--------+------+------+------+------+------| |------+------+------+------+------+--------| -* |MouseFN1| A | S | D | F | G | | H | J | K | L | ;: | '" | -* |--------+------+------+------+------+------| |------+------+------+------+------+--------| -* | Shift | Z | X | C | V | B | | N | M | ,. | .> | /? | Shift | -* `--------+------+------+------+------+------- `------+------+------+------+------+--------' -* | `~ | ESC |MOUSE1|MOUSE2| | [{ | ]} | ESC | GUI | -* `---------------------------' `---------------------------' -* ,-------------. ,-------------. -* | Ctrl | Alt | | Gui | Ctrl | -* ,------|------|------| |------+------+------. -* | | | Home | | PgUp | | | -* | BkSp | Del |------| |------|Return| Space| -* | | | End | | PgDn | | | -* `--------------------' `--------------------' -*/ - - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[QWERTY] = KEYMAP( - KC_ESC, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8, - KC_EQL, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , - KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , - KC_FN1 ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , - KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , - KC_GRV ,KC_ESC, KC_BTN1,KC_BTN2, - KC_LCTL,KC_LALT, - KC_HOME, - KC_BSPC,KC_DEL ,KC_FN0 , - KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_FN0 ,KC_FN1 ,KC_FN2, KC_NO, RESET, - KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS, - KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS, - KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT, - KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT, - KC_LBRC,KC_RBRC, KC_ESC, KC_RGUI, - KC_RGUI,KC_RCTL, - KC_PGUP, - KC_PGDN,KC_ENTER ,KC_SPC - ), -[SYMB] = 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_FN0, KC_2, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS - ), -/* Keymap: Movement and function layer -* -* ,-------------------------------------------------------------------------------------------------------------------. -* | Caps | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | Tada | bOOT | -* |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------| -* | =+ | ! | @ | # | $ | % | | ^ | & | * | ( | ) |MS Fast | -* |--------+------+------+------+------+------| +------+------+------+------+------+--------| -* | Tab | | | Up | |PgUp | | MwU |MS_UL | MS_U |MS_UR | | Ms Norm| -* |--------+------+------+------+------+------| |------+------+------+------+------+--------| -* |MouseFN1| C^A | Left | Down |Right | C^E | | | MS_L |Mouse1| MS_R | |MS Slow | -* |--------+------+------+------+------+------| |------+------+------+------+------+--------| -* | | GuiZ | GUI X| GUI C| GUI_V|PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | | -* `--------+------+------+------+------+------- `------+------+------+------+------+--------' -* | `~ | ESC | < | > | | { | } | ESC | | -* `---------------------------' `---------------------------' -* ,-------------. ,-------------. -* | Ctrl | Alt | | Gui | Ctrl | -* ,------|------|------| |------+------+------. -* | | | Home | | PgUp | | | -* | BkSp | Del |------| |------|Mouse1|Mouse2| -* | | | End | | PgDn |LClick|Rclick| -* `--------------------' `--------------------' -*/ - - -[MOUSE] = KEYMAP( - KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC , - KC_TRNS, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP, - KC_FN1, LCTL(KC_A),KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_E), - KC_TRNS, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V),KC_PGDN, - KC_TRNS, KC_TRNS, KC_LABK, KC_RABK, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN0,RESET, - KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2, - KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1, - KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0, - KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), KC_TRNS, KC_TRNS, - KC_LCBR, KC_RCBR, KC_ESC, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_BTN1, KC_BTN2 - ), - - -}; - -const uint16_t PROGMEM fn_actions[] = { - [0] = ACTION_LAYER_TAP_TOGGLE(MOUSE) , // FN1 - Momentary Layer 1 (Symbols) - [1] = ACTION_LAYER_TOGGLE(MOUSE) , // FN1 - Momentary Layer 1 (Symbols) - [2] = 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) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - - // from algernon's ErgoDox EZ layout, - case A_MUL: - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_LEFT); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_LEFT); - } - mousekey_send(); - break; - - case A_MUR: - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_RIGHT); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_RIGHT); - } - mousekey_send(); - break; - - case A_MDL: - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_LEFT); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_LEFT); - } - mousekey_send(); - break; - - case A_MDR: - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_RIGHT); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_RIGHT); - } - mousekey_send(); - break; - } - return MACRO_NONE; -}; - - -void matrix_init_user(void) { - - -} - -void matrix_scan_user(void) { - int8_t layer = biton32(layer_state); - - switch (layer) { - case 1: - all_led_off(); - break; - case 2: - if (!(host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK))) { - all_led_off(); - caps_lock_led_on(); - } - break; - case 0: - all_led_off(); - num_lock_led_on(); - break; - default: - break; - } - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} diff --git a/keyboards/kinesis/kinesis.c b/keyboards/kinesis/kinesis.c index 1fee90e6f9..7a6a1be544 100644 --- a/keyboards/kinesis/kinesis.c +++ b/keyboards/kinesis/kinesis.c @@ -1,106 +1 @@ #include "kinesis.h" - -// begin section origin https://github.com/alvicstep/tmk_keyboard - - -void all_led_off(void) -{ - PORTD = 0b11111111; -} - -void all_led_on(void) -{ - PORTD = 0b00000000; -} -void num_lock_led_on(void) -{ - PORTD = 0b11101111; -} - -void caps_lock_led_on(void) -{ - PORTD = 0b01111111; -} - -void scroll_lock_led_on(void) -{ - PORTD = 0b11011111; -} -void keypad_led_on(void) -{ - PORTD = 0b10111111; -} -void blink_all_leds(void) -{ - all_led_on(); - _delay_ms(500); - - all_led_off(); - _delay_ms(100); - - caps_lock_led_on(); - _delay_ms(100); - - num_lock_led_on(); - _delay_ms(100); - - scroll_lock_led_on(); - _delay_ms(100); - - keypad_led_on(); - _delay_ms(100); - - //back - - scroll_lock_led_on(); - _delay_ms(100); - - num_lock_led_on(); - _delay_ms(100); - - caps_lock_led_on(); - _delay_ms(100); - - all_led_off(); -} - -// End section origin https://github.com/alvicstep/tmk_keyboard - - void matrix_init_kb(void) { - blink_all_leds(); - matrix_init_user(); -} - - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - -//Copyright 2014 Warren Janssens <warren.janssens@gmail.com> - uint8_t leds = 0xF0; - if (usb_led & 1 << USB_LED_NUM_LOCK) - leds &= ~0x10; - if (usb_led & 1 << USB_LED_CAPS_LOCK) - leds &= ~0x80; - if (usb_led & 1 << USB_LED_SCROLL_LOCK) - leds &= ~0x20; - PORTD = (PORTD & 0x0F) | leds; - - led_set_user(usb_led); - -} - - diff --git a/keyboards/kinesis/kinesis.h b/keyboards/kinesis/kinesis.h index c04fbda155..66713731fa 100644 --- a/keyboards/kinesis/kinesis.h +++ b/keyboards/kinesis/kinesis.h @@ -1,67 +1,23 @@ #ifndef KINESIS_H #define KINESIS_H -#include "quantum.h" - - -// The first section contains all of the arguements -// The second converts the arguments into a two-dimensional array +#ifdef SUBPROJECT_alvicstep + #include "alvicstep.h" +#endif +#ifdef SUBPROJECT_stapelberg + #include "stapelberg.h" +#endif -#define KEYMAP( \ - k02,k22,k12,k01,k21,k11,k00,k20,k10, \ - k80,k70,k60,k50,k40,k30, \ - k81,k71,k61,k51,k41,k31, \ - k82,k72,k62,k52,k42,k32, \ - k83,k73,k63,k53,k43,k33, \ - k74,k64,k54,k34, \ - k36,k35, \ - k55, \ - k56,k46,k75, \ - k03,k23,k13,k04,k24,k14,k05,k85,k84, \ - k94,kA4,kB4,kD4,kE4,kF4, \ - k95,kA5,kB5,kD5,kE5,kF5, \ - k96,kA6,kB6,kD6,kE6,kF6, \ - k97,kA7,kB7,kD7,kE7,kF7, \ - k93,kB3,kD3,kE3, \ - k47,k66, \ - k67, \ - k87,k76,k86 \ -) { \ - { k00, k01, k02, k03, k04, k05, KC_NO, KC_NO }, \ - { k10, k11, k12, k13, k14, KC_NO, KC_NO, KC_NO }, \ - { k20, k21, k22, k23, k24, KC_NO, KC_NO, KC_NO }, \ - { k30, k31, k32, k33, k34, k35, k36, KC_NO }, \ - { k40, k41, k42, k43, KC_NO, KC_NO, k46, k47 }, \ - { k50, k51, k52, k53, k54, k55, k56, KC_NO }, \ - { k60, k61, k62, k63, k64, KC_NO, k66, k67 }, \ - { k70, k71, k72, k73, k74, k75, k76, KC_NO }, \ - { k80, k81, k82, k83, KC_NO ,KC_NO, k86, k87}, \ - { KC_NO, KC_NO ,KC_NO ,k93, k94, k95, k96, k97}, \ - { KC_NO, KC_NO ,KC_NO ,KC_NO, kA4, kA5, kA6, kA7}, \ - { KC_NO, KC_NO ,KC_NO ,kB3, kB4, kB5, kB6, kB7}, \ - { KC_NO, KC_NO ,KC_NO ,KC_NO, KC_NO, KC_NO, k84, k85}, \ - { KC_NO, KC_NO ,KC_NO ,kD3, kD4, kD5, kD6, kD7}, \ - { KC_NO, KC_NO ,KC_NO ,kE3, kE4, kE5, kE6, kE7}, \ - { KC_NO, KC_NO ,KC_NO ,KC_NO, kF4, kF5, kF6, kF7} \ -} +#include "quantum.h" -/* 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 */ +void all_led_off(void); +void all_led_on(void); +void num_lock_led_on(void); +void caps_lock_led_on(void); +void scroll_lock_led_on(void); +void keypad_led_on(void); -/* - 0 1 2 3 4 5 6 7 8 9 A B C D E F - A B C D E F G H I J K L M N O P - 4y0 4y1 4y2 4y3 4y4 4y5 4y6 4y7 5y0 5y1 5y2 5y3 5y4 5y5 5y6 5y7 - r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 -0 PB0 21 c0 f6 f8 f7 5 4 3 2 1 =+ -1 PB1 22 c1 f3 f5 f4 t r e w q TAB -2 PB2 23 c2 ESC f2 f1 g f d s a CL -3 PB3 24 c3 f9 f11 f10 b v c x z LS UP DN [{ ]} -4 PB4 25 c4 f12 SL PS RT LT §± `~ 6 7 8 9 0 -_ -5 PB5 26 c5 PB PGM KPD LA HM END y u i o p \ -6 PB6 27 c6 LC DEL BS RC ENT SP h j k l ;: '" -7 PB7 28 c7 RA PU PD n m ,< .> /? RS -*/ #endif diff --git a/keyboards/kinesis/readme.md b/keyboards/kinesis/readme.md index 79c86581e6..2813ee273b 100644 --- a/keyboards/kinesis/readme.md +++ b/keyboards/kinesis/readme.md @@ -1,42 +1,12 @@ -kinesis-advantage keyboard firmware -====================== +# Firmware for the Kinesis advantage keyboard -## Kinesis specific information -This is a port of https://github.com/alvicstep/tmk_keyboard, -which is a fork of https://github.com/wjanssens/tmk_keyboard, -which is based on work from https://github.com/chrisandreae/keyboard-firmware +There are at least two different ways to replace the controller in this keyboard. -If you replace the kinesis CPU as described in the doc folder, then this code should allow you to use QMK. -I've tested with a Teensy 2++, remember to change the CPU if you use a 32u4 instead. +The Stapelberg folder contains the docs and configuration for using the custom controller created by Michael Stapelberg. -Not yet implemented: -- Kinesis EEProm reading or writing -- Audio - this should be simple if we remove hardcoded pins from audio.h and switch to E7 +The 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. +## Keymaps +Both hardware solutions should work with the same keymaps -## Quantum MK Firmware - -For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). - -## Building - -Download 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. - -Depending on which keymap you would like to use, you will have to compile slightly differently. - -### Default - -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 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. - -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 **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` diff --git a/keyboards/kinesis/rules.mk b/keyboards/kinesis/rules.mk index a4a2b7d156..956a64bdd8 100644 --- a/keyboards/kinesis/rules.mk +++ b/keyboards/kinesis/rules.mk @@ -46,11 +46,11 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # Boot Section Size in *bytes* # Teensy halfKay 512 -# Teensy++ halfKay 1024 +# Teensy++ halfKay 2048 # Atmel DFU loader 4096 # LUFA bootloader 4096 # USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=1024 +OPT_DEFS += -DBOOTLOADER_SIZE=2048 # Build Options diff --git a/keyboards/kinesis/stapelberg/Makefile b/keyboards/kinesis/stapelberg/Makefile new file mode 100644 index 0000000000..bd09e5885d --- /dev/null +++ b/keyboards/kinesis/stapelberg/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif diff --git a/keyboards/kinesis/stapelberg/config.h b/keyboards/kinesis/stapelberg/config.h new file mode 100644 index 0000000000..0677e0adeb --- /dev/null +++ b/keyboards/kinesis/stapelberg/config.h @@ -0,0 +1,50 @@ +#ifndef STAPELBERG_CONFIG_H +#define STAPELBERG_CONFIG_H + +#include "../config.h" + +/* USB Device descriptor parameter */ +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0002 + +/* key matrix size */ +#define MATRIX_ROWS 15 +#define MATRIX_COLS 7 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5, D6, D7, C0, C1, C2, C3, C4, C5, C6 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* don't know if this should be defined at the board or top level. Assuming board +#define MOUSEKEY_DELAY 100 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_MAX_SPEED 3 +#define MOUSEKEY_TIME_TO_MAX 10 +*/ + +#define IGNORE_MOD_TAP_INTERRUPT + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + + +#endif diff --git a/keyboards/kinesis/stapelberg/images/controller_board.jpg b/keyboards/kinesis/stapelberg/images/controller_board.jpg Binary files differnew file mode 100644 index 0000000000..b18f76f7ef --- /dev/null +++ b/keyboards/kinesis/stapelberg/images/controller_board.jpg diff --git a/keyboards/kinesis/stapelberg/images/exterior_reset.jpg b/keyboards/kinesis/stapelberg/images/exterior_reset.jpg Binary files differnew file mode 100644 index 0000000000..6edda81306 --- /dev/null +++ b/keyboards/kinesis/stapelberg/images/exterior_reset.jpg diff --git a/keyboards/kinesis/stapelberg/images/teensy_detail.jpg b/keyboards/kinesis/stapelberg/images/teensy_detail.jpg Binary files differnew file mode 100644 index 0000000000..12e6c1c8ae --- /dev/null +++ b/keyboards/kinesis/stapelberg/images/teensy_detail.jpg diff --git a/keyboards/kinesis/stapelberg/readme.md b/keyboards/kinesis/stapelberg/readme.md new file mode 100644 index 0000000000..b04a0bd49c --- /dev/null +++ b/keyboards/kinesis/stapelberg/readme.md @@ -0,0 +1,55 @@ +# kinesis_stapelberg keyboard firmware + +This folder contains the firmware customization required to run QMK on the custom controller for the Kinesis Advantage created by Michael Stapelberg. +It differs from the `alvicstep keyboard in that the existing QMK Kinesis Advantage project uses the existing controller board provided by Kinesis. + +The controller board hardware is described +[here](http://michael.stapelberg.de/Artikel/kinesis_custom_controller) + +Mapping the pin assignments was done using the corresponding matrix description provided at this +[link](https://github.com/stapelberg/kinesis-firmware/blob/master/kb_kinesis/config.kspec) + +This code makes no attempt to drive the four LEDs provided on the controller board. + + +## Building the Hardware + +If you want to perform this customization, these parts may be helpful. + +| Function | Quantity | Vendor | Part Number | +| ------------------------------------------------------ | -------- | ------- | ------------ | +| 13 pin connector for function keys and finger keywells | 4 | Digi-Key | WM14526-ND | +| 10 pin headers for thumb clusters | 4 | Digi-Key | 609-3250-ND | +| 8 pin cable for thumb clusters | 2 | Digi-Key | SAM8928-ND | +| Teensy++ 2.0 | 1 | Digi-Key | 1528-1056-ND | +| 2 pin right angle header for reset | 1 | Digi-Key | 3M9467-ND | +| Reset cables | 2 | Sparkfun | PRT-09140 | + +The board and connections are shown here +![](images/controller_board.jpg) + +The Teensy mounting detail can be seen here. +I used a socket for prototyping. +![](images/teensy_detail.jpg) + + +Since 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. +Shorting these two pins together will reset the board. +I also put female to male header jumper cables on these so they could be accessed outside the enclosure. +The exterior cables can be seen here. +![](images/exterior_reset.jpg) + + +## Keymaps + +### Default + +To build with the default keymap, run `make default` while in the +`kinesis_stapelberg` working directory. + +### Dvorak + +This keymap contains a dvorak implementation as well as media and symbol layers. + +Run `make dvorak` while in the `kinesis_stapelberg` working directory. + diff --git a/keyboards/kinesis/stapelberg/rules.mk b/keyboards/kinesis/stapelberg/rules.mk new file mode 100644 index 0000000000..fb421a34fc --- /dev/null +++ b/keyboards/kinesis/stapelberg/rules.mk @@ -0,0 +1,10 @@ +ifndef QUANTUM_DIR + include ../../../Makefile +endif + +# just silently stop, since we need to upload with teensy uploader +upload: build + + + + diff --git a/keyboards/kinesis/stapelberg/stapelberg.c b/keyboards/kinesis/stapelberg/stapelberg.c new file mode 100644 index 0000000000..111db81feb --- /dev/null +++ b/keyboards/kinesis/stapelberg/stapelberg.c @@ -0,0 +1,28 @@ +#include "stapelberg.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/kinesis/stapelberg/stapelberg.h b/keyboards/kinesis/stapelberg/stapelberg.h new file mode 100644 index 0000000000..c90fc3d52d --- /dev/null +++ b/keyboards/kinesis/stapelberg/stapelberg.h @@ -0,0 +1,72 @@ +#ifndef KINESIS_STAPELBERG_H +#define KINESIS_STAPELBERG_H + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The first section contains all of the arguments as on the physical keyboard +// The second converts the arguments into the 2-D scanned array + +#define KEYMAP( \ + kC0,kD0,kE0,kC1,kD1,kE1,kC2,kD2,kE2, \ + k00,k10,k20,k30,k40,k50, \ + k01,k11,k21,k31,k41,k51, \ + k02,k12,k22,k32,k42,k52, \ + k03,k13,k23,k33,k43,k53, \ + k14,k24,k34,k54, \ + k56,k55, \ + k35, \ + k36,k46,k25, \ + kC3,kD3,kE3,kC4,kD4,kE4,kC5,kE5,kD5, \ + k60,k70,k80,k90,kA0,kB0, \ + k61,k71,k81,k91,kA1,kB1, \ + k62,k72,k82,k92,kA2,kB2, \ + k63,k73,k83,k93,kA3,kB3, \ + k64,k84,k94,kA4, \ + k96,k85, \ + k86, \ + k66,k75,k65 \ +) { \ + { k00, k01, k02, k03, KC_NO, KC_NO, KC_NO }, \ + { k10, k11, k12, k13, k14, KC_NO, KC_NO }, \ + { k20, k21, k22, k23, k24, k25, KC_NO }, \ + { k30, k31, k32, k33, k34, k35, k36 }, \ + { k40, k41, k42, k43, KC_NO, KC_NO, k46 }, \ + { k50, k51, k52, k53, k54, k55, k56 }, \ + { k60, k61, k62, k63, k64, k65, k66 }, \ + { k70, k71, k72, k73, KC_NO, k75, KC_NO }, \ + { k80, k81, k82, k83, k84, k85, k86 }, \ + { k90, k91, k92, k93, k94, KC_NO, k96 }, \ + { kA0, kA1, kA2, kA3, kA4, KC_NO, KC_NO }, \ + { kB0, kB1, kB2, kB3, KC_NO, KC_NO, KC_NO }, \ + { kC0, kC1, kC2, kC3, kC4, kC5, KC_NO }, \ + { kD0, kD1, kD2, kD3, kD4, kD5, KC_NO }, \ + { kE0, kE1, kE2, kE3, kE4, kE5, KC_NO } \ +} + +/* +This is the Stapelberg matrix as published at +https://github.com/stapelberg/kinesis-firmware/blob/master/kb_kinesis/config.kspec +Along with the pins for each row and column + PB0 PB1 PB2 PB3 PB4 PB5 PB6 + kx0 kx1 kx2 kx3 kx4 kx5 kx6 +PD0 k0x Row: EQL TAB CAP LSH X2 -- -- +PD1 k1x Row: 1 Q A Z BQ -- -- +PD2 k2x Row: 2 W S X INS END -- +PD3 k3x Row: 3 E D C LFT HOM BAK +PD4 k4x Row: 4 R F V -- -- DEL +PD5 k5x Row: 5 T G B RT LAL LCT +PD6 k6x Row: 6 Y H N UP SPC PGD +PD7 k7x Row: 7 U J M -- RET -- +PB0 k8x Row: 8 I K COM DWN RCT PGU +PB1 k9x Row: 9 O L PER LBR -- RAL +PB2 kAx Row: 0 P SEM SLA RBR -- -- +PB3 kBx Row: MIN BSL APO RSH X1 -- -- +PB4 kCx Row: ESC F3 F6 F9 F12 PAU -- +PB5 kDx Row: F1 F4 F7 F10 PRT PRG -- +PB6 kEx Row: F2 F5 F8 F11 SLK KEY -- +*/ + + + +#endif |