From 5987f67989c1b8f5fbd108d4dae21a227bc2f99c Mon Sep 17 00:00:00 2001 From: Joe Wasson Date: Wed, 26 Jul 2017 14:41:39 -0700 Subject: [PATCH 01/89] Add TX Bolt protocol support for Stenography Requires virtser; Allows QMK to speak the TX BOlt protocol used by stenography machines and software (such as Plover). The upside is that Plover can be configured to listen only to TX Bolt allow the keyboard to switch layers without need to enable/disable the Plover software, or to have a second non-Steno keyboard work concurrently. --- common_features.mk | 6 + .../planck/keymaps/experimental/Makefile | 5 +- .../planck/keymaps/experimental/config.h | 1 + .../planck/keymaps/experimental/keymap.c | 26 +- keyboards/planck/keymaps/steno/Makefile | 7 + keyboards/planck/keymaps/steno/config.h | 44 +++ keyboards/planck/keymaps/steno/keymap.c | 253 ++++++++++++++++++ keyboards/planck/keymaps/steno/readme.md | 4 + quantum/keymap_extras/keymap_steno.h | 71 +++++ quantum/process_keycode/process_steno.c | 82 ++++++ quantum/process_keycode/process_steno.h | 12 + quantum/quantum.c | 9 +- quantum/quantum.h | 4 + quantum/quantum_keycodes.h | 4 + 14 files changed, 506 insertions(+), 22 deletions(-) create mode 100644 keyboards/planck/keymaps/steno/Makefile create mode 100644 keyboards/planck/keymaps/steno/config.h create mode 100644 keyboards/planck/keymaps/steno/keymap.c create mode 100644 keyboards/planck/keymaps/steno/readme.md create mode 100644 quantum/keymap_extras/keymap_steno.h create mode 100644 quantum/process_keycode/process_steno.c create mode 100644 quantum/process_keycode/process_steno.h diff --git a/common_features.mk b/common_features.mk index 5eb56ccbfc..0adf81afac 100644 --- a/common_features.mk +++ b/common_features.mk @@ -54,6 +54,12 @@ ifeq ($(strip $(COMBO_ENABLE)), yes) SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c endif +ifeq ($(strip $(STENO_ENABLE)), yes) + OPT_DEFS += -DSTENO_ENABLE + VIRTSER_ENABLE := yes + SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c +endif + ifeq ($(strip $(VIRTSER_ENABLE)), yes) OPT_DEFS += -DVIRTSER_ENABLE endif diff --git a/keyboards/planck/keymaps/experimental/Makefile b/keyboards/planck/keymaps/experimental/Makefile index 3a8250a9b5..29108e522b 100644 --- a/keyboards/planck/keymaps/experimental/Makefile +++ b/keyboards/planck/keymaps/experimental/Makefile @@ -1,11 +1,11 @@ # Build Options -# change to "no" to disable the options, or define them in the Makefile in +# change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +MOUSEKEY_ENABLE = no # 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 @@ -17,6 +17,7 @@ UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. ONEHAND_ENABLE = yes # Enable one-hand typing +STENO_ENABLE = yes # Enable TX Bolt protocol for Stenography, requires VIRTSER and may not work with mouse keys # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/planck/keymaps/experimental/config.h b/keyboards/planck/keymaps/experimental/config.h index 492490ca1c..0864b5fbc9 100644 --- a/keyboards/planck/keymaps/experimental/config.h +++ b/keyboards/planck/keymaps/experimental/config.h @@ -5,6 +5,7 @@ #define LEADER_TIMEOUT 300 #define BACKLIGHT_BREATHING +#define PREVENT_STUCK_MODIFIERS /* ws2812 RGB LED */ diff --git a/keyboards/planck/keymaps/experimental/keymap.c b/keyboards/planck/keymaps/experimental/keymap.c index 17fad784e7..2d648b211a 100644 --- a/keyboards/planck/keymaps/experimental/keymap.c +++ b/keyboards/planck/keymaps/experimental/keymap.c @@ -3,6 +3,7 @@ #include "planck.h" #include "action_layer.h" +#include "keymap_steno.h" #ifdef AUDIO_ENABLE #include "audio.h" #endif @@ -49,7 +50,7 @@ enum planck_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = { - {KC_NO, KC_NO, KC_NO, KC_NO, RGBLED_TOGGLE, RGBLED_STEP_MODE, RGBLED_INCREASE_HUE, RGBLED_DECREASE_HUE, RGBLED_INCREASE_SAT, RGBLED_DECREASE_SAT, RGBLED_INCREASE_VAL, RGBLED_DECREASE_VAL}, + {QWERTY, KC_NO, KC_NO, KC_NO, RGBLED_TOGGLE, RGBLED_STEP_MODE, RGBLED_INCREASE_HUE, RGBLED_DECREASE_HUE, RGBLED_INCREASE_SAT, RGBLED_DECREASE_SAT, RGBLED_INCREASE_VAL, RGBLED_DECREASE_VAL}, {KC_NO, KC_NO, KC_NO, KC_NO, RGBLED_TOGGLE, RGBLED_STEP_MODE, RGBLED_INCREASE_HUE, RGBLED_DECREASE_HUE, RGBLED_INCREASE_SAT, RGBLED_DECREASE_SAT, RGBLED_INCREASE_VAL, RGBLED_DECREASE_VAL}, {KC_NO, KC_NO, KC_NO, KC_NO, RGBLED_TOGGLE, RGBLED_STEP_MODE, RGBLED_INCREASE_HUE, RGBLED_DECREASE_HUE, RGBLED_INCREASE_SAT, RGBLED_DECREASE_SAT, RGBLED_INCREASE_VAL, RGBLED_DECREASE_VAL}, {KC_NO, KC_NO, KC_NO, KC_NO, RGBLED_TOGGLE, RGBLED_STEP_MODE, RGBLED_INCREASE_HUE, RGBLED_DECREASE_HUE, RGBLED_INCREASE_SAT, RGBLED_DECREASE_SAT, RGBLED_INCREASE_VAL, RGBLED_DECREASE_VAL} @@ -158,10 +159,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_PLOVER] = { - {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, - {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, - {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, - {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} + {STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC }, + {STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR }, + {XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR }, + {EXT_PLV, XXXXXXX, XXXXXXX, STN_A, STN_O, XXXXXXX, XXXXXXX, STN_E, STN_U, STN_PWR, STN_RE1, STN_RE2} }, /* Adjust (Lower + Raise) @@ -279,21 +280,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; return false; case PLOVER: - if (record->event.pressed) { + if (!record->event.pressed) { #ifdef AUDIO_ENABLE stop_all_notes(); PLAY_NOTE_ARRAY(tone_plover, false, 0); #endif - layer_off(_RAISE); - layer_off(_LOWER); - layer_off(_ADJUST); layer_on(_PLOVER); - if (!eeconfig_is_enabled()) { - eeconfig_init(); - } - keymap_config.raw = eeconfig_read_keymap(); - keymap_config.nkro = 1; - eeconfig_update_keymap(keymap_config.raw); } break; return false; @@ -397,9 +389,9 @@ void music_scale_user(void) LEADER_EXTERNS(); void matrix_scan_user(void) { - LEADER_DICTIONARY() { + LEADER_DICTIONARY() { leading = false; - leader_end(); + leader_end(); SEQ_ONE_KEY (KC_R) { tap_random_base64(); diff --git a/keyboards/planck/keymaps/steno/Makefile b/keyboards/planck/keymaps/steno/Makefile new file mode 100644 index 0000000000..3ed9d2db45 --- /dev/null +++ b/keyboards/planck/keymaps/steno/Makefile @@ -0,0 +1,7 @@ +ifndef QUANTUM_DIR + include ../../../../Makefile +endif + +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +STENO_ENABLE = yes # Enable TX Bolt protocol for Stenography, requires VIRTSER and may not work with mouse keys + diff --git a/keyboards/planck/keymaps/steno/config.h b/keyboards/planck/keymaps/steno/config.h new file mode 100644 index 0000000000..1879ab007f --- /dev/null +++ b/keyboards/planck/keymaps/steno/config.h @@ -0,0 +1,44 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(PLANCK_SOUND) + // #define STARTUP_SONG SONG(NO_SOUND) + + #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(COLEMAK_SOUND), \ + SONG(DVORAK_SOUND) \ + } +#endif + +#define MUSIC_MASK (keycode != KC_NO) + +#define PREVENT_STUCK_MODIFIERS + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +#endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/steno/keymap.c b/keyboards/planck/keymaps/steno/keymap.c new file mode 100644 index 0000000000..b4e30169fb --- /dev/null +++ b/keyboards/planck/keymaps/steno/keymap.c @@ -0,0 +1,253 @@ +/* Copyright 2015-2017 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "planck.h" +#include "action_layer.h" +#include "keymap_steno.h" + +extern keymap_config_t keymap_config; + +enum planck_layers { + _QWERTY, + _COLEMAK, + _DVORAK, + _LOWER, + _RAISE, + _PLOVER, + _ADJUST +}; + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + LOWER, + RAISE, + BACKLIT, + EXT_PLV +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | FN | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | PWR | RES1 | RES2 | + * `-----------------------------------------------------------------------------------' + */ + +[_PLOVER] = { + {STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC }, + {STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR }, + {XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR }, + {EXT_PLV, XXXXXXX, XXXXXXX, STN_A, STN_O, XXXXXXX, XXXXXXX, STN_E, STN_U, STN_PWR, STN_RE1, STN_RE2} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | |TXBOLT|GEM RP| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL }, + {_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE + float plover_song[][2] = SONG(PLOVER_SOUND); + float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + case PLOVER: + if (!record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(plover_song); + #endif + layer_on(_PLOVER); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(plover_gb_song); + #endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} \ No newline at end of file diff --git a/keyboards/planck/keymaps/steno/readme.md b/keyboards/planck/keymaps/steno/readme.md new file mode 100644 index 0000000000..e8ffd97565 --- /dev/null +++ b/keyboards/planck/keymaps/steno/readme.md @@ -0,0 +1,4 @@ +# The Default Planck Layout with TX Bolt for the Plover Layer + +To use set Plover to TX Bolt and select the COM port that represents your keyboard. + diff --git a/quantum/keymap_extras/keymap_steno.h b/quantum/keymap_extras/keymap_steno.h new file mode 100644 index 0000000000..4eb1c7477a --- /dev/null +++ b/quantum/keymap_extras/keymap_steno.h @@ -0,0 +1,71 @@ +/* Copyright 2017 Joseph Wasson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#ifndef KEYMAP_STENO_H +#define KEYMAP_STENO_H + +#include "keymap.h" + +enum steno_keycodes { + STN_FN = QK_STENO, + STN_NUM, + STN_N1 = STN_NUM, + STN_N2, + STN_N3, + STN_N4, + STN_N5, + STN_N6, + STN_SL, + STN_S1 = STN_SL, + STN_S2, + STN_TL, + STN_KL, + STN_PL, + STN_WL, + STN_HL, + STN_RL, + STN_A, + STN_O, + STN_STR, + STN_ST1 = STN_STR, + STN_ST2, + STN_RES1, + STN_RE1 = STN_RES1, + STN_RES2, + STN_RE2 = STN_RES2, + STN_PWR, + STN_ST3, + STN_ST4, + STN_E, + STN_U, + STN_FR, + STN_RR, + STN_PR, + STN_BR, + STN_LR, + STN_GR, + STN_TR, + STN_SR, + STN_DR, + STN_N7, + STN_N8, + STN_N9, + STN_NA, + STN_NB, + STN_NC, + STN_ZR +}; + +#endif diff --git a/quantum/process_keycode/process_steno.c b/quantum/process_keycode/process_steno.c new file mode 100644 index 0000000000..211f00a5a2 --- /dev/null +++ b/quantum/process_keycode/process_steno.c @@ -0,0 +1,82 @@ +#include "process_steno.h" +#include "quantum_keycodes.h" +#include "keymap_steno.h" +#include "virtser.h" + +uint8_t state[4] = {0}; +uint8_t pressed = 0; + + +// TxBolt Codes +#define TXB_NUL 0 +#define TXB_S_L 0b00000001 +#define TXB_T_L 0b00000010 +#define TXB_K_L 0b00000100 +#define TXB_P_L 0b00001000 +#define TXB_W_L 0b00010000 +#define TXB_H_L 0b00100000 +#define TXB_R_L 0b01000001 +#define TXB_A_L 0b01000010 +#define TXB_O_L 0b01000100 +#define TXB_STR 0b01001000 +#define TXB_E_R 0b01010000 +#define TXB_U_R 0b01100000 +#define TXB_F_R 0b10000001 +#define TXB_R_R 0b10000010 +#define TXB_P_R 0b10000100 +#define TXB_B_R 0b10001000 +#define TXB_L_R 0b10010000 +#define TXB_G_R 0b10100000 +#define TXB_T_R 0b11000001 +#define TXB_S_R 0b11000010 +#define TXB_D_R 0b11000100 +#define TXB_Z_R 0b11001000 +#define TXB_NUM 0b11010000 + +#define TXB_GRP0 0b00000000 +#define TXB_GRP1 0b01000000 +#define TXB_GRP2 0b10000000 +#define TXB_GRP3 0b11000000 +#define TXB_GRPMASK 0b11000000 + +#define TXB_GET_GROUP(code) ((code & TXB_GRPMASK) >> 6) + +uint8_t boltmap[64] = { + TXB_NUL, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, + TXB_S_L, TXB_S_L, TXB_T_L, TXB_K_L, TXB_P_L, TXB_W_L, TXB_H_L, + TXB_R_L, TXB_A_L, TXB_O_L, TXB_STR, TXB_STR, TXB_NUL, TXB_NUL, + TXB_NUL, TXB_STR, TXB_STR, TXB_E_R, TXB_U_R, TXB_F_R, TXB_R_R, + TXB_P_R, TXB_B_R, TXB_L_R, TXB_G_R, TXB_T_R, TXB_S_R, TXB_D_R, + TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_Z_R +}; + +#define BOLTMAP_MASK (sizeof(boltmap) - 1) + +void send_steno_state(void) { + for (uint8_t i = 0; i < 4; ++i) { + if (state[i]) { + virtser_send(state[i]); + state[i] = 0; + } + } + virtser_send(0); +} + +bool process_steno(uint16_t keycode, keyrecord_t *record) { + if(keycode >= QK_STENO && keycode <= QK_STENO_MAX) { + if(IS_PRESSED(record->event)) { + uint8_t boltcode = boltmap[keycode & BOLTMAP_MASK]; + ++pressed; + state[TXB_GET_GROUP(boltcode)] |= boltcode; + } else { + --pressed; + if (pressed <= 0) { + pressed = 0; // protect against spurious up keys + send_steno_state(); + } + } + return false; + } + + return true; +} diff --git a/quantum/process_keycode/process_steno.h b/quantum/process_keycode/process_steno.h new file mode 100644 index 0000000000..fb9b8e8adc --- /dev/null +++ b/quantum/process_keycode/process_steno.h @@ -0,0 +1,12 @@ +#ifndef PROCESS_STENO_H +#define PROCESS_STENO_H + +#include "quantum.h" + +#if defined(STENO_ENABLE) && !defined(VIRTSER_ENABLE) + #error "must have virtser enabled to use steno" +#endif + +bool process_steno(uint16_t keycode, keyrecord_t *record); + +#endif \ No newline at end of file diff --git a/quantum/quantum.c b/quantum/quantum.c index b76a114186..1f8ce6c46f 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -200,6 +200,9 @@ bool process_record_quantum(keyrecord_t *record) { #ifdef AUDIO_ENABLE process_audio(keycode, record) && #endif + #ifdef STENO_ENABLE + process_steno(keycode, record) && + #endif #if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) process_music(keycode, record) && #endif @@ -722,14 +725,14 @@ void backlight_set(uint8_t level) // _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); // #endif #endif - } + } #ifndef NO_BACKLIGHT_CLOCK else if ( level == BACKLIGHT_LEVELS ) { // Turn on PWM control of backlight pin TCCR1A |= _BV(COM1x1); // Set the brightness OCR1x = 0xFFFF; - } + } else { // Turn on PWM control of backlight pin TCCR1A |= _BV(COM1x1); @@ -747,7 +750,7 @@ uint8_t backlight_tick = 0; void backlight_task(void) { #ifdef NO_BACKLIGHT_CLOCK - if ((0xFFFF >> ((BACKLIGHT_LEVELS - backlight_config.level) * ((BACKLIGHT_LEVELS + 1) / 2))) & (1 << backlight_tick)) { + if ((0xFFFF >> ((BACKLIGHT_LEVELS - backlight_config.level) * ((BACKLIGHT_LEVELS + 1) / 2))) & (1 << backlight_tick)) { #if BACKLIGHT_ON_STATE == 0 // PORTx &= ~n _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); diff --git a/quantum/quantum.h b/quantum/quantum.h index 6c0e465732..453cb43f88 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -60,6 +60,10 @@ extern uint32_t default_layer_state; #include "process_audio.h" #endif +#ifdef STENO_ENABLE + #include "process_steno.h" +#endif + #if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_BASIC)) #include "process_music.h" #endif diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 06ab6d18db..f0937628e8 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -71,6 +71,10 @@ enum quantum_keycodes { QK_TAP_DANCE_MAX = 0x57FF, QK_LAYER_TAP_TOGGLE = 0x5800, QK_LAYER_TAP_TOGGLE_MAX = 0x58FF, +#ifdef STENO_ENABLE + QK_STENO = 0x5900, + QK_STENO_MAX = 0x593F, +#endif QK_MOD_TAP = 0x6000, QK_MOD_TAP_MAX = 0x7FFF, #if defined(UNICODEMAP_ENABLE) && defined(UNICODE_ENABLE) From f30f12ec8122b7c025ff83c5e38e171c4107052b Mon Sep 17 00:00:00 2001 From: Joe Wasson Date: Wed, 26 Jul 2017 21:51:41 -0700 Subject: [PATCH 02/89] Add support for GeminiPR steno protocol. This protocol breaks out "duplicate" keys into their own entry in the packet so that more complicated logic can be done on the software side, including support for additional languages and alternative theories. --- keyboards/planck/keymaps/steno/Makefile | 4 +- keyboards/planck/keymaps/steno/keymap.c | 5 +- quantum/keymap_extras/keymap_steno.h | 9 +- quantum/process_keycode/process_steno.c | 115 +++++++++++++++++++----- quantum/process_keycode/process_steno.h | 4 + quantum/quantum_keycodes.h | 2 + tmk_core/common/eeconfig.c | 3 + tmk_core/common/eeconfig.h | 1 + tmk_core/common/keyboard.c | 6 ++ 9 files changed, 121 insertions(+), 28 deletions(-) diff --git a/keyboards/planck/keymaps/steno/Makefile b/keyboards/planck/keymaps/steno/Makefile index 3ed9d2db45..874154af63 100644 --- a/keyboards/planck/keymaps/steno/Makefile +++ b/keyboards/planck/keymaps/steno/Makefile @@ -3,5 +3,5 @@ ifndef QUANTUM_DIR endif MOUSEKEY_ENABLE = no # Mouse keys(+4700) -STENO_ENABLE = yes # Enable TX Bolt protocol for Stenography, requires VIRTSER and may not work with mouse keys - +STENO_ENABLE = yes # Additional protocols for Stenography(+1700), requires VIRTSER +AUDIO_ENABLE = no # Audio output on port C6 diff --git a/keyboards/planck/keymaps/steno/keymap.c b/keyboards/planck/keymaps/steno/keymap.c index b4e30169fb..38540a2613 100644 --- a/keyboards/planck/keymaps/steno/keymap.c +++ b/keyboards/planck/keymaps/steno/keymap.c @@ -41,6 +41,9 @@ enum planck_keycodes { EXT_PLV }; +#define ST_BOLT QK_STENO_BOLT +#define ST_GEM QK_STENO_GEMINI + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty @@ -166,7 +169,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL }, {_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, - {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, ST_BOLT, ST_GEM}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } diff --git a/quantum/keymap_extras/keymap_steno.h b/quantum/keymap_extras/keymap_steno.h index 4eb1c7477a..4ce91cc135 100644 --- a/quantum/keymap_extras/keymap_steno.h +++ b/quantum/keymap_extras/keymap_steno.h @@ -18,8 +18,12 @@ #include "keymap.h" +// List of keycodes for the steno keyboard. To prevent +// errors, this must be <= 42 total entries in order to +// support the GeminiPR protocol. enum steno_keycodes { - STN_FN = QK_STENO, + STN__MIN = QK_STENO, + STN_FN = STN__MIN, STN_NUM, STN_N1 = STN_NUM, STN_N2, @@ -65,7 +69,8 @@ enum steno_keycodes { STN_NA, STN_NB, STN_NC, - STN_ZR + STN_ZR, + STN__MAX = STN_ZR, // must be less than QK_STENO_BOLT }; #endif diff --git a/quantum/process_keycode/process_steno.c b/quantum/process_keycode/process_steno.c index 211f00a5a2..a912686660 100644 --- a/quantum/process_keycode/process_steno.c +++ b/quantum/process_keycode/process_steno.c @@ -1,12 +1,8 @@ -#include "process_steno.h" + #include "process_steno.h" #include "quantum_keycodes.h" #include "keymap_steno.h" #include "virtser.h" -uint8_t state[4] = {0}; -uint8_t pressed = 0; - - // TxBolt Codes #define TXB_NUL 0 #define TXB_S_L 0b00000001 @@ -41,6 +37,13 @@ uint8_t pressed = 0; #define TXB_GET_GROUP(code) ((code & TXB_GRPMASK) >> 6) +#define BOLT_STATE_SIZE 4 +#define GEMINI_STATE_SIZE 6 + +uint8_t state[MAX(BOLT_STATE_SIZE, GEMINI_STATE_SIZE)] = {0}; +uint8_t pressed = 0; +steno_mode_t mode; + uint8_t boltmap[64] = { TXB_NUL, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_S_L, TXB_S_L, TXB_T_L, TXB_K_L, TXB_P_L, TXB_W_L, TXB_H_L, @@ -52,31 +55,97 @@ uint8_t boltmap[64] = { #define BOLTMAP_MASK (sizeof(boltmap) - 1) -void send_steno_state(void) { - for (uint8_t i = 0; i < 4; ++i) { - if (state[i]) { + +void steno_clear_state(void) { + memset(state, 0, sizeof(state)); +} + +void steno_init() { + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + mode = eeprom_read_byte(EECONFIG_STENOMODE); +} + +void steno_set_mode(steno_mode_t new_mode) { + steno_clear_state(); + mode = new_mode; + eeprom_update_byte(EECONFIG_STENOMODE, mode); +} + +void send_steno_state(uint8_t size, bool send_empty) { + for (uint8_t i = 0; i < size; ++i) { + if (state[i] || send_empty) { virtser_send(state[i]); - state[i] = 0; } } - virtser_send(0); + steno_clear_state(); +} + +bool update_state_bolt(uint8_t key) { + uint8_t boltcode = boltmap[key]; + state[TXB_GET_GROUP(boltcode)] |= boltcode; + return false; +} + +bool send_state_bolt(void) { + send_steno_state(BOLT_STATE_SIZE, false); + virtser_send(0); // terminating byte + return false; +} + +bool update_state_gemini(uint8_t key) { + state[key / 7] |= 1 << (6 - (key % 7)); + return false; +} + +bool send_state_gemini(void) { + state[0] |= 0x80; // Indicate start of packet + send_steno_state(GEMINI_STATE_SIZE, true); + return false; } bool process_steno(uint16_t keycode, keyrecord_t *record) { - if(keycode >= QK_STENO && keycode <= QK_STENO_MAX) { - if(IS_PRESSED(record->event)) { - uint8_t boltcode = boltmap[keycode & BOLTMAP_MASK]; - ++pressed; - state[TXB_GET_GROUP(boltcode)] |= boltcode; - } else { - --pressed; - if (pressed <= 0) { - pressed = 0; // protect against spurious up keys - send_steno_state(); + switch (keycode) { + case QK_STENO_BOLT: + if (IS_PRESSED(record->event)) { + steno_set_mode(STENO_MODE_BOLT); } - } - return false; - } + return false; + case QK_STENO_GEMINI: + if (IS_PRESSED(record->event)) { + steno_set_mode(STENO_MODE_GEMINI); + } + return false; + + case STN__MIN...STN__MAX: + if (IS_PRESSED(record->event)) { + uint8_t key = keycode - QK_STENO; + ++pressed; + switch(mode) { + case STENO_MODE_BOLT: + return update_state_bolt(key); + case STENO_MODE_GEMINI: + return update_state_gemini(key); + default: + return false; + } + } else { + --pressed; + if (pressed <= 0) { + pressed = 0; + switch(mode) { + case STENO_MODE_BOLT: + return send_state_bolt(); + case STENO_MODE_GEMINI: + return send_state_gemini(); + default: + return false; + } + } + } + + } return true; } diff --git a/quantum/process_keycode/process_steno.h b/quantum/process_keycode/process_steno.h index fb9b8e8adc..abd1d466cc 100644 --- a/quantum/process_keycode/process_steno.h +++ b/quantum/process_keycode/process_steno.h @@ -7,6 +7,10 @@ #error "must have virtser enabled to use steno" #endif +typedef enum { STENO_MODE_BOLT, STENO_MODE_GEMINI } steno_mode_t; + bool process_steno(uint16_t keycode, keyrecord_t *record); +void steno_init(void); +void steno_set_mode(steno_mode_t mode); #endif \ No newline at end of file diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index f0937628e8..ee2fac0385 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -73,6 +73,8 @@ enum quantum_keycodes { QK_LAYER_TAP_TOGGLE_MAX = 0x58FF, #ifdef STENO_ENABLE QK_STENO = 0x5900, + QK_STENO_BOLT = 0x5930, + QK_STENO_GEMINI = 0x5931, QK_STENO_MAX = 0x593F, #endif QK_MOD_TAP = 0x6000, diff --git a/tmk_core/common/eeconfig.c b/tmk_core/common/eeconfig.c index 140d2b85bb..e2eb4a38e3 100644 --- a/tmk_core/common/eeconfig.c +++ b/tmk_core/common/eeconfig.c @@ -19,6 +19,9 @@ void eeconfig_init(void) #ifdef RGBLIGHT_ENABLE eeprom_update_dword(EECONFIG_RGBLIGHT, 0); #endif +#ifdef STENO_ENABLE + eeprom_update_byte(EECONFIG_STENOMODE, 0); +#endif } void eeconfig_enable(void) diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h index 280dc7ab67..ce60ca8661 100644 --- a/tmk_core/common/eeconfig.h +++ b/tmk_core/common/eeconfig.h @@ -34,6 +34,7 @@ along with this program. If not, see . #define EECONFIG_AUDIO (uint8_t *)7 #define EECONFIG_RGBLIGHT (uint32_t *)8 #define EECONFIG_UNICODEMODE (uint8_t *)12 +#define EECONFIG_STENOMODE (uint8_t *)13 /* debug bit */ diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index 97a8f1cd8c..9466e10e2d 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -51,6 +51,9 @@ along with this program. If not, see . #ifdef RGBLIGHT_ENABLE # include "rgblight.h" #endif +#ifdef STENO_ENABLE +# include "process_steno.h" +#endif #ifdef FAUXCLICKY_ENABLE # include "fauxclicky.h" #endif @@ -139,6 +142,9 @@ void keyboard_init(void) { #ifdef RGBLIGHT_ENABLE rgblight_init(); #endif +#ifdef STENO_ENABLE + steno_init(); +#endif #ifdef FAUXCLICKY_ENABLE fauxclicky_init(); #endif From c0f63ca9dc2ec4083e000c5f059def40940cc465 Mon Sep 17 00:00:00 2001 From: Joe Wasson Date: Thu, 27 Jul 2017 01:35:17 -0700 Subject: [PATCH 03/89] Add documentation for Steno. --- docs/stenography.md | 108 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 docs/stenography.md diff --git a/docs/stenography.md b/docs/stenography.md new file mode 100644 index 0000000000..11fa851268 --- /dev/null +++ b/docs/stenography.md @@ -0,0 +1,108 @@ +# Stenography in QMK + +[Stenography](https://en.wikipedia.org/wiki/Stenotype) is a method of writing most often used by court reports, closed-captioning, and real-time transcription for the deaf. In stenography words are chorded syllable by syllable with a mixture of spelling, phonetic, and shortcut (briefs) strokes. Professional stenographers can reach 200-300 WPM without any of the strain usually found in standard typing and with far fewer errors (>99.9% accuracy). + +The [Open Steno Project](http://www.openstenoproject.org/) has built an open-source program called Plover that provides real-time translation of steno strokes into words and commands. It has an established dictionary and supports + +## Plover with QWERTY Keyboard + +Plover can work with any standard QWERTY keyboard, although it is more efficient if the keyboard supports NKRO (n-key rollover) to allow Plover to see all the pressed keys at once. An example keymap for Plover can be found in `planck/keymaps/default`. Switching to the `PLOVER` layer adjusts the position of the keyboard to support the number bar. + +To use Plover with QMK just enable NKRO and optionally adjust your layout if you have anything other than a standard layout. You may also want to purchase some steno-friendly keycaps to make it easier to hit multiple keys. + +## Plover with Steno Protocol + +Plover also understands the language of several steno machines. QMK can speak a couple of these languages, TX Bolt and GeminiRP. An example layout can be found in `planck/keymaps/steno`. + +When QMK speaks to Plover over a steno protocol Plover will not use the keyboard as input. This means that you can switch back and forth between a standard keyboard and your steno keyboard, or even switch layers from Plover to standard and back without needing to activate/deactive Plover. + +In this mode Plover expects to speak with a steno machine over a serial port so QMK will present itself to the operating system as a virtual serial port in addition to a keyboard. By default QMK will speak the TX Bolt protocol but can be switched to GeminiRP; the last protocol used is stored in non-volatile memory so QMK will use the same protocol on restart. + +> Note: Due to hardware limitations you may not be able to run both a virtual serial port and mouse emulation at the same time. + +### TX Bolt + +TX Bolt communicates the status of 24 keys over a very simple protocol in variable-sized (1-5 byte) packets. + +### GeminiRP + +GeminiRP encodes 42 keys into a 6-byte packet. While TX Bolt contains everything that is necessary for standard stenography, GeminiRP opens up many more options, including supporting non-English theories. + +## Configuring QMK for Steno + +Firstly, enable steno in your keymap's Makefile. You should also diable mousekeys to prevent conflicts. + +```Makefile +STENO_ENABLE = yes +MOUSEKEY_ENABLE = no +``` + +In your keymap create a new layer for Plover. You will need to include `keymap_steno.h`. See `planck/keymaps/steno/keymap.c` for an example. Remember to create a key to switch to the layer as well as a key for exiting the layer. If you would like to switch modes on the fly you can use the keycodes `QK_STENO_BOLT` and `QK_STENO_GEMINI`. If you only want to use one of the protocols you may set it up in your initialization function: + +```C +void matrix_init_user() { + steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT +} +``` + +Once you have your keyboard flashed launch Plover. Click the 'Configure...' button. In the 'Machine' tab select the Stenotype Machine that corresponds to your desired protocol. Click the 'Configure...' button on this tab and enter the serial port or click 'Scan'. Baud rate is fine at 9600 (although you should be able to set as high as 115200 with no issues). Use the default settings for everything else (Data Bits: 8, Stop Bits: 1, Parity: N, no flow control). + +On the display tab click 'Open stroke display'. With Plover disables you should be able to hit keys on your keyboard and see them show up in the stroke display window. Use this to make sure you have set up your keymap correctly. You are now ready to steno! + +## Learning Stenography + +* [Learn Plover!](https://sites.google.com/site/ploverdoc/) +* [QWERTY Steno](http://qwertysteno.com/Home/) +* [Steno Jig](https://joshuagrams.github.io/steno-jig/) +* More resources at the Plover [Learning Stenography](https://github.com/openstenoproject/plover/wiki/Learning-Stenography) wiki + +## Keycode Reference + +As defined in `keymap_steno.h`. + +> Note: TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiRP keys to the nearest TX Bolt key so that one key map will work for both. + +|GeminiRP|TX Bolt|Steno Key| +|--------|-------|-----------| +|`STN_N1`|`STN_NUM`|Number bar #1| +|`STN_N2`|`STN_NUM`|Number bar #2| +|`STN_N3`|`STN_NUM`|Number bar #3| +|`STN_N4`|`STN_NUM`|Number bar #4| +|`STN_N5`|`STN_NUM`|Number bar #5| +|`STN_N6`|`STN_NUM`|Number bar #6| +|`STN_N7`|`STN_NUM`|Number bar #7| +|`STN_N8`|`STN_NUM`|Number bar #8| +|`STN_N9`|`STN_NUM`|Number bar #9| +|`STN_NA`|`STN_NUM`|Number bar #A| +|`STN_NB`|`STN_NUM`|Number bar #B| +|`STN_NC`|`STN_NUM`|Number bar #C| +|`STN_S1`|`STN_SL`| `S-` upper| +|`STN_S2`|`STN_SL`| `S-` lower| +|`STN_TL`|`STN_TL`| `T-`| +|`STN_KL`|`STN_KL`| `K-`| +|`STN_PL`|`STN_PL`| `P-`| +|`STN_WL`|`STN_WL`| `W-`| +|`STN_HL`|`STN_HL`| `H-`| +|`STN_RL`|`STN_RL`| `R-`| +|`STN_A`|`STN_A`| `A` vowel| +|`STN_O`|`STN_O`| `O` vowel| +|`STN_ST1`|`STN_STR`| `*` upper-left | +|`STN_ST2`|`STN_STR`| `*` lower-left| +|`STN_ST3`|`STN_STR`| `*` upper-right| +|`STN_ST4`|`STN_STR`| `*` lower-right| +|`STN_E`|`STN_E`| `E` vowel| +|`STN_U`|`STN_U`| `U` vowel| +|`STN_FR`|`STN_FR`| `-F`| +|`STN_PR`|`STN_PR`| `-P`| +|`STN_RR`|`STN_RR`| `-R`| +|`STN_BR`|`STN_BR`| `-B`| +|`STN_LR`|`STN_LR`| `-L`| +|`STN_GR`|`STN_GR`| `-G`| +|`STN_TR`|`STN_TR`| `-T`| +|`STN_SR`|`STN_SR`| `-S`| +|`STN_DR`|`STN_DR`| `-D`| +|`STN_ZR`|`STN_ZR`| `-Z`| +|`STN_FN`|| (GeminiRP only)| +|`STN_RES1`||(GeminiRP only)| +|`STN_RES2`||(GeminiRP only)| +|`STN_PWR`||(GeminiRP only)| From 3e96e8a6a14adb8b77d170e336a0665a7eb77905 Mon Sep 17 00:00:00 2001 From: Joe Wasson Date: Thu, 27 Jul 2017 11:56:50 -0700 Subject: [PATCH 04/89] Add copyright to steno files. --- quantum/process_keycode/process_steno.c | 17 ++++++++++++++++- quantum/process_keycode/process_steno.h | 15 +++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/quantum/process_keycode/process_steno.c b/quantum/process_keycode/process_steno.c index a912686660..71e5e8ff1c 100644 --- a/quantum/process_keycode/process_steno.c +++ b/quantum/process_keycode/process_steno.c @@ -1,4 +1,19 @@ - #include "process_steno.h" +/* Copyright 2017 Joseph Wasson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "process_steno.h" #include "quantum_keycodes.h" #include "keymap_steno.h" #include "virtser.h" diff --git a/quantum/process_keycode/process_steno.h b/quantum/process_keycode/process_steno.h index abd1d466cc..3bbcbeaaf8 100644 --- a/quantum/process_keycode/process_steno.h +++ b/quantum/process_keycode/process_steno.h @@ -1,3 +1,18 @@ +/* Copyright 2017 Joseph Wasson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #ifndef PROCESS_STENO_H #define PROCESS_STENO_H From e81e75c14783a13d7bccb3b7174d9987acc12fe0 Mon Sep 17 00:00:00 2001 From: Joe Wasson Date: Thu, 27 Jul 2017 11:59:07 -0700 Subject: [PATCH 05/89] Move steno keycodes due to conflict with another PR. --- quantum/quantum_keycodes.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index ee2fac0385..acdb9248d6 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -72,10 +72,10 @@ enum quantum_keycodes { QK_LAYER_TAP_TOGGLE = 0x5800, QK_LAYER_TAP_TOGGLE_MAX = 0x58FF, #ifdef STENO_ENABLE - QK_STENO = 0x5900, - QK_STENO_BOLT = 0x5930, - QK_STENO_GEMINI = 0x5931, - QK_STENO_MAX = 0x593F, + QK_STENO = 0x5A00, + QK_STENO_BOLT = 0x5A30, + QK_STENO_GEMINI = 0x5A31, + QK_STENO_MAX = 0x5A3F, #endif QK_MOD_TAP = 0x6000, QK_MOD_TAP_MAX = 0x7FFF, From 26fb063be3b38cf76908163c6dad3168c738886c Mon Sep 17 00:00:00 2001 From: Joe Wasson Date: Thu, 27 Jul 2017 11:59:17 -0700 Subject: [PATCH 06/89] Link to steno docs from summary page. --- docs/_summary.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/_summary.md b/docs/_summary.md index 162cad7873..723377de98 100644 --- a/docs/_summary.md +++ b/docs/_summary.md @@ -1,4 +1,4 @@ -* [Getting started](README.md) +* [Getting started](README.md) * [QMK Overview](qmk_overview.md) * [Build Environment Setup](build_environment_setup.md) * [Vagrant Guide](vagrant_guide.md) @@ -16,6 +16,7 @@ * [Tap Dance](tap_dance.md) * [Mouse keys](mouse_keys.md) * [Unicode](unicode.md) + * [Stenography](stenography.md) * Reference * [Glossary](glossary.md) @@ -27,7 +28,7 @@ * [Customizing Functionality](custom_quantum_functions.md) * [Documentation Best Practices](documentation_best_practices.md) * [Unit Testing](unit_testing.md) - + * For Makers and Modders * [Adding a keyboard to QMK](adding_a_keyboard_to_qmk.md) * [Adding features to QMK](adding_features_to_qmk.md) @@ -39,7 +40,7 @@ * For a Deeper Understanding * [How Keyboards Work](basic_how_keyboards_work.md) * [Understanding QMK](understanding_qmk.md) - + * Other Topics * [General FAQ](faq.md) * [Using Eclipse with QMK](eclipse.md) From c5780647d8f95fc8c51e2864498fa602c49c90e5 Mon Sep 17 00:00:00 2001 From: Joe Wasson Date: Thu, 27 Jul 2017 12:08:26 -0700 Subject: [PATCH 07/89] Fix typo in docs. --- docs/stenography.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/stenography.md b/docs/stenography.md index 11fa851268..fcac512016 100644 --- a/docs/stenography.md +++ b/docs/stenography.md @@ -47,7 +47,7 @@ void matrix_init_user() { Once you have your keyboard flashed launch Plover. Click the 'Configure...' button. In the 'Machine' tab select the Stenotype Machine that corresponds to your desired protocol. Click the 'Configure...' button on this tab and enter the serial port or click 'Scan'. Baud rate is fine at 9600 (although you should be able to set as high as 115200 with no issues). Use the default settings for everything else (Data Bits: 8, Stop Bits: 1, Parity: N, no flow control). -On the display tab click 'Open stroke display'. With Plover disables you should be able to hit keys on your keyboard and see them show up in the stroke display window. Use this to make sure you have set up your keymap correctly. You are now ready to steno! +On the display tab click 'Open stroke display'. With Plover disabled you should be able to hit keys on your keyboard and see them show up in the stroke display window. Use this to make sure you have set up your keymap correctly. You are now ready to steno! ## Learning Stenography From be2c7aac31c956caacaba44531463c8083f5199e Mon Sep 17 00:00:00 2001 From: xyxjj Date: Wed, 31 May 2017 14:34:28 +0800 Subject: [PATCH 08/89] Add files via upload --- keyboards/DeltaSplit75/DeltaSplit75.c | 1 + keyboards/DeltaSplit75/DeltaSplit75.h | 13 + keyboards/DeltaSplit75/Makefile | 5 + keyboards/DeltaSplit75/ProtoSplit/Makefile | 3 + .../DeltaSplit75/ProtoSplit/ProtoSplit.c | 32 ++ .../DeltaSplit75/ProtoSplit/ProtoSplit.h | 37 ++ keyboards/DeltaSplit75/ProtoSplit/config.h | 90 +++++ keyboards/DeltaSplit75/ProtoSplit/rules.mk | 5 + keyboards/DeltaSplit75/V2/Makefile | 3 + keyboards/DeltaSplit75/V2/V2.c | 32 ++ keyboards/DeltaSplit75/V2/V2.h | 37 ++ keyboards/DeltaSplit75/V2/config.h | 90 +++++ keyboards/DeltaSplit75/V2/rules.mk | 5 + keyboards/DeltaSplit75/config.h | 29 ++ keyboards/DeltaSplit75/eeprom-lefthand.eep | 2 + keyboards/DeltaSplit75/eeprom-righthand.eep | 2 + keyboards/DeltaSplit75/i2c.c | 162 ++++++++ keyboards/DeltaSplit75/i2c.h | 31 ++ .../DeltaSplit75/keymaps/Default/config.h | 31 ++ .../DeltaSplit75/keymaps/Default/keymap.c | 30 ++ keyboards/DeltaSplit75/matrix.c | 318 +++++++++++++++ keyboards/DeltaSplit75/pro_micro.h | 362 ++++++++++++++++++ keyboards/DeltaSplit75/readme.md | 119 ++++++ keyboards/DeltaSplit75/rules.mk | 87 +++++ keyboards/DeltaSplit75/serial.c | 228 +++++++++++ keyboards/DeltaSplit75/serial.h | 26 ++ keyboards/DeltaSplit75/split_util.c | 81 ++++ keyboards/DeltaSplit75/split_util.h | 22 ++ 28 files changed, 1883 insertions(+) create mode 100644 keyboards/DeltaSplit75/DeltaSplit75.c create mode 100644 keyboards/DeltaSplit75/DeltaSplit75.h create mode 100644 keyboards/DeltaSplit75/Makefile create mode 100644 keyboards/DeltaSplit75/ProtoSplit/Makefile create mode 100644 keyboards/DeltaSplit75/ProtoSplit/ProtoSplit.c create mode 100644 keyboards/DeltaSplit75/ProtoSplit/ProtoSplit.h create mode 100644 keyboards/DeltaSplit75/ProtoSplit/config.h create mode 100644 keyboards/DeltaSplit75/ProtoSplit/rules.mk create mode 100644 keyboards/DeltaSplit75/V2/Makefile create mode 100644 keyboards/DeltaSplit75/V2/V2.c create mode 100644 keyboards/DeltaSplit75/V2/V2.h create mode 100644 keyboards/DeltaSplit75/V2/config.h create mode 100644 keyboards/DeltaSplit75/V2/rules.mk create mode 100644 keyboards/DeltaSplit75/config.h create mode 100644 keyboards/DeltaSplit75/eeprom-lefthand.eep create mode 100644 keyboards/DeltaSplit75/eeprom-righthand.eep create mode 100644 keyboards/DeltaSplit75/i2c.c create mode 100644 keyboards/DeltaSplit75/i2c.h create mode 100644 keyboards/DeltaSplit75/keymaps/Default/config.h create mode 100644 keyboards/DeltaSplit75/keymaps/Default/keymap.c create mode 100644 keyboards/DeltaSplit75/matrix.c create mode 100644 keyboards/DeltaSplit75/pro_micro.h create mode 100644 keyboards/DeltaSplit75/readme.md create mode 100644 keyboards/DeltaSplit75/rules.mk create mode 100644 keyboards/DeltaSplit75/serial.c create mode 100644 keyboards/DeltaSplit75/serial.h create mode 100644 keyboards/DeltaSplit75/split_util.c create mode 100644 keyboards/DeltaSplit75/split_util.h diff --git a/keyboards/DeltaSplit75/DeltaSplit75.c b/keyboards/DeltaSplit75/DeltaSplit75.c new file mode 100644 index 0000000000..b3d162ba9d --- /dev/null +++ b/keyboards/DeltaSplit75/DeltaSplit75.c @@ -0,0 +1 @@ +#include "DeltaSplit75.h" \ No newline at end of file diff --git a/keyboards/DeltaSplit75/DeltaSplit75.h b/keyboards/DeltaSplit75/DeltaSplit75.h new file mode 100644 index 0000000000..8931f73a5e --- /dev/null +++ b/keyboards/DeltaSplit75/DeltaSplit75.h @@ -0,0 +1,13 @@ +#ifndef DeltaSplit75_H +#define DeltaSplit75_H + +#ifdef SUBPROJECT_V2 + #include "V2.h" +#endif +#ifdef SUBPROJECT_ProtoSplit + #include "ProtoSplit.h" +#endif + +#include "quantum.h" + +#endif \ No newline at end of file diff --git a/keyboards/DeltaSplit75/Makefile b/keyboards/DeltaSplit75/Makefile new file mode 100644 index 0000000000..9b7c3a6024 --- /dev/null +++ b/keyboards/DeltaSplit75/Makefile @@ -0,0 +1,5 @@ +SUBPROJECT_DEFAULT = RightB + +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif diff --git a/keyboards/DeltaSplit75/ProtoSplit/Makefile b/keyboards/DeltaSplit75/ProtoSplit/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/DeltaSplit75/ProtoSplit/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/DeltaSplit75/ProtoSplit/ProtoSplit.c b/keyboards/DeltaSplit75/ProtoSplit/ProtoSplit.c new file mode 100644 index 0000000000..1199257d04 --- /dev/null +++ b/keyboards/DeltaSplit75/ProtoSplit/ProtoSplit.c @@ -0,0 +1,32 @@ +#include "DeltaSplit75.h" + +#ifdef AUDIO_ENABLE + float tone_startup[][2] = SONG(STARTUP_SOUND); + float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +void matrix_init_kb(void) { + + #ifdef AUDIO_ENABLE + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + + // // green led on + // DDRD |= (1<<5); + // PORTD &= ~(1<<5); + + // // orange led on + // DDRB |= (1<<0); + // PORTB &= ~(1<<0); + + matrix_init_user(); +}; + +void shutdown_user(void) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); + #endif +} diff --git a/keyboards/DeltaSplit75/ProtoSplit/ProtoSplit.h b/keyboards/DeltaSplit75/ProtoSplit/ProtoSplit.h new file mode 100644 index 0000000000..20aa5cbe85 --- /dev/null +++ b/keyboards/DeltaSplit75/ProtoSplit/ProtoSplit.h @@ -0,0 +1,37 @@ +#ifndef ProtoSplit_H +#define ProtoSplit_H + +#include "../DeltaSplit75.h" + +//void promicro_bootloader_jmp(bool program); +#include "quantum.h" + +//void promicro_bootloader_jmp(bool program); +//matrix is defined in a weird way here; the layout on both sides are asymmetrical, but the "matrix" is symmetrical but with empty gaps +//the last column is defined as a separate row because the firmware currently doesnt support more than 8 columns (this layout has 9 columns per side) K45 and K110 are the Bs on both sides +#define KEYMAP( \ + K00, K01, K02, K03, K04, K05, K06, K70, K71, K72, K73, K74, K75, K76, K77, K132, \ + K10, K11, K12, K13, K14, K15, K16, K80, K81, K82, K83, K84, K85, K86, K87, K133, \ + K20, K21, K22, K23, K24, K25, K90, K91, K92, K93, K94, K95, K96, K97, K134, \ + K30, K31, K32, K33, K34, K35, K100, K101, K102, K103, K104, K105, K107, K135, \ + K40, K41, K42, K43, K44, K45, K110, K111, K112, K113, K114, K115, K116, K117, K136, \ + K50, K51, K52, K54, K55, K120, K121, K122, K123, K126, K127, K137 \ + ) \ + { \ + { K00, K01, K02, K03, K04, K05, K06, KC_NO}, \ + { K10, K11, K12, K13, K14, K15, K16, KC_NO}, \ + { K20, K21, K22, K23, K24, K25, KC_NO, KC_NO}, \ + { K30, K31, K32, K33, K34, K35, KC_NO, KC_NO}, \ + { K40, K41, K42, K43, K44, K45, KC_NO, KC_NO}, \ + { K50, K51, K52, KC_NO, K54, K55, KC_NO, KC_NO}, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, \ + { K70 , K71, K72, K73, K74, K75, K76, K77}, \ + { K80, K81, K82, K83, K84, K85, K86, K87}, \ + { K90, K91, K92, K93, K94, K95, K96, K97}, \ + { K100, K101, K102, K103, K104, K105, KC_NO, K107}, \ + { K110, K111, K112, K113, K114, K115, K116, K117}, \ + { K120, K121, K122, K123, KC_NO, KC_NO, K126, K127}, \ + { KC_NO, KC_NO, K132, K133, K134, K135, K136, K137} \ + } + +#endif \ No newline at end of file diff --git a/keyboards/DeltaSplit75/ProtoSplit/config.h b/keyboards/DeltaSplit75/ProtoSplit/config.h new file mode 100644 index 0000000000..0f4b806e2d --- /dev/null +++ b/keyboards/DeltaSplit75/ProtoSplit/config.h @@ -0,0 +1,90 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER xyxjj +#define PRODUCT DeltaSplit75 +#define DESCRIPTION 75% split keyboard + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 14 +#define MATRIX_COLS 8 + +// wiring of each half +#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3, B2 } +#define MATRIX_COL_PINS { B6, B5, B4, E6, D7, C6, D4, D1} + +#define CATERINA_BOOTLOADER + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D3 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 12 // Number of LEDs +#define ws2812_PORTREG PORTD +#define ws2812_DDRREG DDRD + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + + +#endif \ No newline at end of file diff --git a/keyboards/DeltaSplit75/ProtoSplit/rules.mk b/keyboards/DeltaSplit75/ProtoSplit/rules.mk new file mode 100644 index 0000000000..80a942d06f --- /dev/null +++ b/keyboards/DeltaSplit75/ProtoSplit/rules.mk @@ -0,0 +1,5 @@ +BACKLIGHT_ENABLE = no + +ifndef QUANTUM_DIR + include ../../../Makefile +endif diff --git a/keyboards/DeltaSplit75/V2/Makefile b/keyboards/DeltaSplit75/V2/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/DeltaSplit75/V2/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/DeltaSplit75/V2/V2.c b/keyboards/DeltaSplit75/V2/V2.c new file mode 100644 index 0000000000..1199257d04 --- /dev/null +++ b/keyboards/DeltaSplit75/V2/V2.c @@ -0,0 +1,32 @@ +#include "DeltaSplit75.h" + +#ifdef AUDIO_ENABLE + float tone_startup[][2] = SONG(STARTUP_SOUND); + float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +void matrix_init_kb(void) { + + #ifdef AUDIO_ENABLE + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + + // // green led on + // DDRD |= (1<<5); + // PORTD &= ~(1<<5); + + // // orange led on + // DDRB |= (1<<0); + // PORTB &= ~(1<<0); + + matrix_init_user(); +}; + +void shutdown_user(void) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); + #endif +} diff --git a/keyboards/DeltaSplit75/V2/V2.h b/keyboards/DeltaSplit75/V2/V2.h new file mode 100644 index 0000000000..84503e6b4c --- /dev/null +++ b/keyboards/DeltaSplit75/V2/V2.h @@ -0,0 +1,37 @@ +#ifndef V2_H +#define V2_H + +#include "../DeltaSplit75.h" + +//void promicro_bootloader_jmp(bool program); +#include "quantum.h" + +//void promicro_bootloader_jmp(bool program); +//matrix is defined in a weird way here; the layout on both sides are asymmetrical, but the "matrix" is symmetrical but with empty gaps +//the last column is defined as a separate row because the firmware currently doesnt support more than 8 columns (this layout has 9 columns per side) K45 and K110 are the Bs on both sides; K53 and K106 are extra keys for ISO +#define KEYMAP( \ + K00, K01, K02, K03, K04, K05, K06, K70, K71, K72, K73, K74, K75, K76, K77, K132, \ + K10, K11, K12, K13, K14, K15, K16, K80, K81, K82, K83, K84, K85, K86, K87, K133, \ + K20, K21, K22, K23, K24, K25, K90, K91, K92, K93, K94, K95, K96, K97, K134, \ + K30, K31, K32, K33, K34, K35, K100, K101, K102, K103, K104, K105, K106, K107, K135, \ + K40, K53, K41, K42, K43, K44, K45, K110, K111, K112, K113, K114, K115, K116, K117, K136, \ + K50, K51, K52, K54, K55, K120, K121, K122, K123, K126, K127, K137 \ + ) \ + { \ + { K00, K01, K02, K03, K04, K05, K06, KC_NO}, \ + { K10, K11, K12, K13, K14, K15, K16, KC_NO}, \ + { K20, K21, K22, K23, K24, K25, KC_NO, KC_NO}, \ + { K30, K31, K32, K33, K34, K35, KC_NO, KC_NO}, \ + { K40, K41, K42, K43, K44, K45, KC_NO, KC_NO}, \ + { K50, K51, K52, K53, K54, K55, KC_NO, KC_NO}, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO}, \ + { K70 , K71, K72, K73, K74, K75, K76, K77}, \ + { K80, K81, K82, K83, K84, K85, K86, K87}, \ + { K90, K91, K92, K93, K94, K95, K96, K97}, \ + { K100, K101, K102, K103, K104, K105, K106, K107}, \ + { K110, K111, K112, K113, K114, K115, K116, K117}, \ + { K120, K121, K122, K123, KC_NO, KC_NO, K126, K127}, \ + { KC_NO, KC_NO, K132, K133, K134, K135, K136, K137} \ + } + +#endif \ No newline at end of file diff --git a/keyboards/DeltaSplit75/V2/config.h b/keyboards/DeltaSplit75/V2/config.h new file mode 100644 index 0000000000..0f4b806e2d --- /dev/null +++ b/keyboards/DeltaSplit75/V2/config.h @@ -0,0 +1,90 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER xyxjj +#define PRODUCT DeltaSplit75 +#define DESCRIPTION 75% split keyboard + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 14 +#define MATRIX_COLS 8 + +// wiring of each half +#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3, B2 } +#define MATRIX_COL_PINS { B6, B5, B4, E6, D7, C6, D4, D1} + +#define CATERINA_BOOTLOADER + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D3 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 12 // Number of LEDs +#define ws2812_PORTREG PORTD +#define ws2812_DDRREG DDRD + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + + +#endif \ No newline at end of file diff --git a/keyboards/DeltaSplit75/V2/rules.mk b/keyboards/DeltaSplit75/V2/rules.mk new file mode 100644 index 0000000000..80a942d06f --- /dev/null +++ b/keyboards/DeltaSplit75/V2/rules.mk @@ -0,0 +1,5 @@ +BACKLIGHT_ENABLE = no + +ifndef QUANTUM_DIR + include ../../../Makefile +endif diff --git a/keyboards/DeltaSplit75/config.h b/keyboards/DeltaSplit75/config.h new file mode 100644 index 0000000000..ea0498c504 --- /dev/null +++ b/keyboards/DeltaSplit75/config.h @@ -0,0 +1,29 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +#ifdef SUBPROJECT_RightB + #include "RightB/config.h" +#endif +#ifdef SUBPROJECT_V2 + #include "V2/config.h" +#endif +#endif diff --git a/keyboards/DeltaSplit75/eeprom-lefthand.eep b/keyboards/DeltaSplit75/eeprom-lefthand.eep new file mode 100644 index 0000000000..b9666a74c0 --- /dev/null +++ b/keyboards/DeltaSplit75/eeprom-lefthand.eep @@ -0,0 +1,2 @@ +:0B0000000000000000000000000001F4 +:00000001FF diff --git a/keyboards/DeltaSplit75/eeprom-righthand.eep b/keyboards/DeltaSplit75/eeprom-righthand.eep new file mode 100644 index 0000000000..94cc5be7fc --- /dev/null +++ b/keyboards/DeltaSplit75/eeprom-righthand.eep @@ -0,0 +1,2 @@ +:0B0000000000000000000000000000F5 +:00000001FF diff --git a/keyboards/DeltaSplit75/i2c.c b/keyboards/DeltaSplit75/i2c.c new file mode 100644 index 0000000000..084c890c40 --- /dev/null +++ b/keyboards/DeltaSplit75/i2c.c @@ -0,0 +1,162 @@ +#include +#include +#include +#include +#include +#include +#include "i2c.h" + +#ifdef USE_I2C + +// Limits the amount of we wait for any one i2c transaction. +// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is +// 9 bits, a single transaction will take around 90μs to complete. +// +// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit +// poll loop takes at least 8 clock cycles to execute +#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8 + +#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE) + +volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE]; + +static volatile uint8_t slave_buffer_pos; +static volatile bool slave_has_register_set = false; + +// Wait for an i2c operation to finish +inline static +void i2c_delay(void) { + uint16_t lim = 0; + while(!(TWCR & (1<10. + // Check datasheets for more info. + TWBR = ((F_CPU/SCL_CLOCK)-16)/2; +} + +// Start a transaction with the given i2c slave address. The direction of the +// transfer is set with I2C_READ and I2C_WRITE. +// returns: 0 => success +// 1 => error +uint8_t i2c_master_start(uint8_t address) { + TWCR = (1< slave ACK +// 1 => slave NACK +uint8_t i2c_master_write(uint8_t data) { + TWDR = data; + TWCR = (1<= SLAVE_BUFFER_SIZE ) { + ack = 0; + slave_buffer_pos = 0; + } + slave_has_register_set = true; + } else { + i2c_slave_buffer[slave_buffer_pos] = TWDR; + BUFFER_POS_INC(); + } + break; + + case TW_ST_SLA_ACK: + case TW_ST_DATA_ACK: + // master has addressed this device as a slave transmitter and is + // requesting data. + TWDR = i2c_slave_buffer[slave_buffer_pos]; + BUFFER_POS_INC(); + break; + + case TW_BUS_ERROR: // something went wrong, reset twi state + TWCR = 0; + default: + break; + } + // Reset everything, so we are ready for the next TWI interrupt + TWCR |= (1< + +#ifndef F_CPU +#define F_CPU 16000000UL +#endif + +#define I2C_READ 1 +#define I2C_WRITE 0 + +#define I2C_ACK 1 +#define I2C_NACK 0 + +#define SLAVE_BUFFER_SIZE 0x10 + +// i2c SCL clock frequency +#define SCL_CLOCK 100000L + +extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE]; + +void i2c_master_init(void); +uint8_t i2c_master_start(uint8_t address); +void i2c_master_stop(void); +uint8_t i2c_master_write(uint8_t data); +uint8_t i2c_master_read(int); +void i2c_reset_state(void); +void i2c_slave_init(uint8_t address); + +#endif diff --git a/keyboards/DeltaSplit75/keymaps/Default/config.h b/keyboards/DeltaSplit75/keymaps/Default/config.h new file mode 100644 index 0000000000..12a1402d98 --- /dev/null +++ b/keyboards/DeltaSplit75/keymaps/Default/config.h @@ -0,0 +1,31 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + + +#define USE_SERIAL + +#define MASTER_LEFT +// #define _MASTER_RIGHT +// #define EE_HANDS + + +#ifdef SUBPROJECT_V2 + #include "../../V2/config.h" +#endif +#ifdef SUBPROJECT_ProtoSplit + #include "../../ProtoSplit/config.h" +#endif diff --git a/keyboards/DeltaSplit75/keymaps/Default/keymap.c b/keyboards/DeltaSplit75/keymaps/Default/keymap.c new file mode 100644 index 0000000000..563bcca586 --- /dev/null +++ b/keyboards/DeltaSplit75/keymaps/Default/keymap.c @@ -0,0 +1,30 @@ +#include "DeltaSplit75.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +// Fillers to make layering more clear + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + KEYMAP( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, KC_END, KC_PGDN, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_SLCK, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_TRNS, KC_ENT, KC_PAUS, //modify KC_TRNS to enable ISO Support + KC_LSFT, KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PSCR, //modify KC_TRNS to enable ISO Support + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + 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, RESET, + KC_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_VOLU, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + M(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_VOLD, M(0), KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), +}; \ No newline at end of file diff --git a/keyboards/DeltaSplit75/matrix.c b/keyboards/DeltaSplit75/matrix.c new file mode 100644 index 0000000000..1389690042 --- /dev/null +++ b/keyboards/DeltaSplit75/matrix.c @@ -0,0 +1,318 @@ +/* +Copyright 2012 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +/* + * scan matrix + */ +#include +#include +#include +#include +#include +#include +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" +#include "split_util.h" +#include "pro_micro.h" +#include "config.h" + +#ifdef USE_I2C +# include "i2c.h" +#else // USE_SERIAL +# include "serial.h" +#endif + +#ifndef DEBOUNCE +# define DEBOUNCE 5 +#endif + +#define ERROR_DISCONNECT_COUNT 5 + +static uint8_t debouncing = DEBOUNCE; +static const int ROWS_PER_HAND = MATRIX_ROWS/2; +static uint8_t error_count = 0; + +static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_ROWS]; + +static matrix_row_t read_cols(void); +static void init_cols(void); +static void unselect_rows(void); +static void select_row(uint8_t row); + +__attribute__ ((weak)) +void matrix_init_quantum(void) { + matrix_init_kb(); +} + +__attribute__ ((weak)) +void matrix_scan_quantum(void) { + matrix_scan_kb(); +} + +__attribute__ ((weak)) +void matrix_init_kb(void) { + matrix_init_user(); +} + +__attribute__ ((weak)) +void matrix_scan_kb(void) { + matrix_scan_user(); +} + +__attribute__ ((weak)) +void matrix_init_user(void) { +} + +__attribute__ ((weak)) +void matrix_scan_user(void) { +} + +inline +uint8_t matrix_rows(void) +{ + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) +{ + return MATRIX_COLS; +} + +void matrix_init(void) +{ + debug_enable = true; + debug_matrix = true; + debug_mouse = true; + // initialize row and col + unselect_rows(); + init_cols(); + + TX_RX_LED_INIT; + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + matrix_debouncing[i] = 0; + } + + matrix_init_quantum(); +} + +uint8_t _matrix_scan(void) +{ + // Right hand is stored after the left in the matirx so, we need to offset it + int offset = isLeftHand ? 0 : (ROWS_PER_HAND); + + for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { + select_row(i); + _delay_us(30); // without this wait read unstable value. + matrix_row_t cols = read_cols(); + if (matrix_debouncing[i+offset] != cols) { + matrix_debouncing[i+offset] = cols; + debouncing = DEBOUNCE; + } + unselect_rows(); + } + + if (debouncing) { + if (--debouncing) { + _delay_ms(1); + } else { + for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { + matrix[i+offset] = matrix_debouncing[i+offset]; + } + } + } + + return 1; +} + +#ifdef USE_I2C + +// Get rows from other half over i2c +int i2c_transaction(void) { + int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; + + int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE); + if (err) goto i2c_error; + + // start of matrix stored at 0x00 + err = i2c_master_write(0x00); + if (err) goto i2c_error; + + // Start read + err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ); + if (err) goto i2c_error; + + if (!err) { + int i; + for (i = 0; i < ROWS_PER_HAND-1; ++i) { + matrix[slaveOffset+i] = i2c_master_read(I2C_ACK); + } + matrix[slaveOffset+i] = i2c_master_read(I2C_NACK); + i2c_master_stop(); + } else { +i2c_error: // the cable is disconnceted, or something else went wrong + i2c_reset_state(); + return err; + } + + return 0; +} + +#else // USE_SERIAL + +int serial_transaction(void) { + int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; + + if (serial_update_buffers()) { + return 1; + } + + for (int i = 0; i < ROWS_PER_HAND; ++i) { + matrix[slaveOffset+i] = serial_slave_buffer[i]; + } + return 0; +} +#endif + +uint8_t matrix_scan(void) +{ + int ret = _matrix_scan(); + + + +#ifdef USE_I2C + if( i2c_transaction() ) { +#else // USE_SERIAL + if( serial_transaction() ) { +#endif + // turn on the indicator led when halves are disconnected + TXLED1; + + error_count++; + + if (error_count > ERROR_DISCONNECT_COUNT) { + // reset other half if disconnected + int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; + for (int i = 0; i < ROWS_PER_HAND; ++i) { + matrix[slaveOffset+i] = 0; + } + } + } else { + // turn off the indicator led on no error + TXLED0; + error_count = 0; + } + + matrix_scan_quantum(); + + return ret; +} + +void matrix_slave_scan(void) { + _matrix_scan(); + + int offset = (isLeftHand) ? 0 : (MATRIX_ROWS / 2); + +#ifdef USE_I2C + for (int i = 0; i < ROWS_PER_HAND; ++i) { + /* i2c_slave_buffer[i] = matrix[offset+i]; */ + i2c_slave_buffer[i] = matrix[offset+i]; + } +#else // USE_SERIAL + for (int i = 0; i < ROWS_PER_HAND; ++i) { + serial_slave_buffer[i] = matrix[offset+i]; + } +#endif +} + +bool matrix_is_modified(void) +{ + if (debouncing) return false; + return true; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & ((matrix_row_t)1<> 4) + 1) &= ~_BV(col_pins[x] & 0xF); + _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF); + } +} + +static matrix_row_t read_cols(void) +{ + matrix_row_t result = 0; + for(int x = 0; x < MATRIX_COLS; x++) { + result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x); + } + return result; +} + +static void unselect_rows(void) +{ + for(int x = 0; x < ROWS_PER_HAND; x++) { + _SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF); + _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF); + } +} + +static void select_row(uint8_t row) +{ + _SFR_IO8((row_pins[row] >> 4) + 1) |= _BV(row_pins[row] & 0xF); + _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF); +} diff --git a/keyboards/DeltaSplit75/pro_micro.h b/keyboards/DeltaSplit75/pro_micro.h new file mode 100644 index 0000000000..f9e7ed75d9 --- /dev/null +++ b/keyboards/DeltaSplit75/pro_micro.h @@ -0,0 +1,362 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +// Workaround for wrong definitions in "iom32u4.h". +// This should be fixed in the AVR toolchain. +#undef UHCON +#undef UHINT +#undef UHIEN +#undef UHADDR +#undef UHFNUM +#undef UHFNUML +#undef UHFNUMH +#undef UHFLEN +#undef UPINRQX +#undef UPINTX +#undef UPNUM +#undef UPRST +#undef UPCONX +#undef UPCFG0X +#undef UPCFG1X +#undef UPSTAX +#undef UPCFG2X +#undef UPIENX +#undef UPDATX +#undef TCCR2A +#undef WGM20 +#undef WGM21 +#undef COM2B0 +#undef COM2B1 +#undef COM2A0 +#undef COM2A1 +#undef TCCR2B +#undef CS20 +#undef CS21 +#undef CS22 +#undef WGM22 +#undef FOC2B +#undef FOC2A +#undef TCNT2 +#undef TCNT2_0 +#undef TCNT2_1 +#undef TCNT2_2 +#undef TCNT2_3 +#undef TCNT2_4 +#undef TCNT2_5 +#undef TCNT2_6 +#undef TCNT2_7 +#undef OCR2A +#undef OCR2_0 +#undef OCR2_1 +#undef OCR2_2 +#undef OCR2_3 +#undef OCR2_4 +#undef OCR2_5 +#undef OCR2_6 +#undef OCR2_7 +#undef OCR2B +#undef OCR2_0 +#undef OCR2_1 +#undef OCR2_2 +#undef OCR2_3 +#undef OCR2_4 +#undef OCR2_5 +#undef OCR2_6 +#undef OCR2_7 + +#define NUM_DIGITAL_PINS 30 +#define NUM_ANALOG_INPUTS 12 + +#define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0) +#define TXLED0 PORTD |= (1<<5) +#define TXLED1 PORTD &= ~(1<<5) +#define RXLED0 PORTB |= (1<<0) +#define RXLED1 PORTB &= ~(1<<0) + +static const uint8_t SDA = 2; +static const uint8_t SCL = 3; +#define LED_BUILTIN 13 + +// Map SPI port to 'new' pins D14..D17 +static const uint8_t SS = 17; +static const uint8_t MOSI = 16; +static const uint8_t MISO = 14; +static const uint8_t SCK = 15; + +// Mapping of analog pins as digital I/O +// A6-A11 share with digital pins +static const uint8_t ADC0 = 18; +static const uint8_t ADC1 = 19; +static const uint8_t ADC2 = 20; +static const uint8_t ADC3 = 21; +static const uint8_t ADC4 = 22; +static const uint8_t ADC5 = 23; +static const uint8_t ADC6 = 24; // D4 +static const uint8_t ADC7 = 25; // D6 +static const uint8_t ADC8 = 26; // D8 +static const uint8_t ADC9 = 27; // D9 +static const uint8_t ADC10 = 28; // D10 +static const uint8_t ADC11 = 29; // D12 + +#define digitalPinToPCICR(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0)) +#define digitalPinToPCICRbit(p) 0 +#define digitalPinToPCMSK(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0)) +#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4)))))) + +// __AVR_ATmega32U4__ has an unusual mapping of pins to channels +extern const uint8_t PROGMEM analog_pin_to_channel_PGM[]; +#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) ) + +#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT))))) + +#ifdef ARDUINO_MAIN + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA32U4 / ARDUINO LEONARDO +// +// D0 PD2 RXD1/INT2 +// D1 PD3 TXD1/INT3 +// D2 PD1 SDA SDA/INT1 +// D3# PD0 PWM8/SCL OC0B/SCL/INT0 +// D4 A6 PD4 ADC8 +// D5# PC6 ??? OC3A/#OC4A +// D6# A7 PD7 FastPWM #OC4D/ADC10 +// D7 PE6 INT6/AIN0 +// +// D8 A8 PB4 ADC11/PCINT4 +// D9# A9 PB5 PWM16 OC1A/#OC4B/ADC12/PCINT5 +// D10# A10 PB6 PWM16 OC1B/0c4B/ADC13/PCINT6 +// D11# PB7 PWM8/16 0C0A/OC1C/#RTS/PCINT7 +// D12 A11 PD6 T1/#OC4D/ADC9 +// D13# PC7 PWM10 CLK0/OC4A +// +// A0 D18 PF7 ADC7 +// A1 D19 PF6 ADC6 +// A2 D20 PF5 ADC5 +// A3 D21 PF4 ADC4 +// A4 D22 PF1 ADC1 +// A5 D23 PF0 ADC0 +// +// New pins D14..D17 to map SPI port to digital pins +// +// MISO D14 PB3 MISO,PCINT3 +// SCK D15 PB1 SCK,PCINT1 +// MOSI D16 PB2 MOSI,PCINT2 +// SS D17 PB0 RXLED,SS/PCINT0 +// +// Connected LEDs on board for TX and RX +// TXLED D24 PD5 XCK1 +// RXLED D17 PB0 +// HWB PE2 HWB + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, + (uint16_t) &DDRE, + (uint16_t) &DDRF, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, + (uint16_t) &PORTE, + (uint16_t) &PORTF, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, + (uint16_t) &PINE, + (uint16_t) &PINF, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, // D0 - PD2 + PD, // D1 - PD3 + PD, // D2 - PD1 + PD, // D3 - PD0 + PD, // D4 - PD4 + PC, // D5 - PC6 + PD, // D6 - PD7 + PE, // D7 - PE6 + + PB, // D8 - PB4 + PB, // D9 - PB5 + PB, // D10 - PB6 + PB, // D11 - PB7 + PD, // D12 - PD6 + PC, // D13 - PC7 + + PB, // D14 - MISO - PB3 + PB, // D15 - SCK - PB1 + PB, // D16 - MOSI - PB2 + PB, // D17 - SS - PB0 + + PF, // D18 - A0 - PF7 + PF, // D19 - A1 - PF6 + PF, // D20 - A2 - PF5 + PF, // D21 - A3 - PF4 + PF, // D22 - A4 - PF1 + PF, // D23 - A5 - PF0 + + PD, // D24 - PD5 + PD, // D25 / D6 - A7 - PD7 + PB, // D26 / D8 - A8 - PB4 + PB, // D27 / D9 - A9 - PB5 + PB, // D28 / D10 - A10 - PB6 + PD, // D29 / D12 - A11 - PD6 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(2), // D0 - PD2 + _BV(3), // D1 - PD3 + _BV(1), // D2 - PD1 + _BV(0), // D3 - PD0 + _BV(4), // D4 - PD4 + _BV(6), // D5 - PC6 + _BV(7), // D6 - PD7 + _BV(6), // D7 - PE6 + + _BV(4), // D8 - PB4 + _BV(5), // D9 - PB5 + _BV(6), // D10 - PB6 + _BV(7), // D11 - PB7 + _BV(6), // D12 - PD6 + _BV(7), // D13 - PC7 + + _BV(3), // D14 - MISO - PB3 + _BV(1), // D15 - SCK - PB1 + _BV(2), // D16 - MOSI - PB2 + _BV(0), // D17 - SS - PB0 + + _BV(7), // D18 - A0 - PF7 + _BV(6), // D19 - A1 - PF6 + _BV(5), // D20 - A2 - PF5 + _BV(4), // D21 - A3 - PF4 + _BV(1), // D22 - A4 - PF1 + _BV(0), // D23 - A5 - PF0 + + _BV(5), // D24 - PD5 + _BV(7), // D25 / D6 - A7 - PD7 + _BV(4), // D26 / D8 - A8 - PB4 + _BV(5), // D27 / D9 - A9 - PB5 + _BV(6), // D28 / D10 - A10 - PB6 + _BV(6), // D29 / D12 - A11 - PD6 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + TIMER0B, /* 3 */ + NOT_ON_TIMER, + TIMER3A, /* 5 */ + TIMER4D, /* 6 */ + NOT_ON_TIMER, + + NOT_ON_TIMER, + TIMER1A, /* 9 */ + TIMER1B, /* 10 */ + TIMER0A, /* 11 */ + + NOT_ON_TIMER, + TIMER4A, /* 13 */ + + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, +}; + +const uint8_t PROGMEM analog_pin_to_channel_PGM[] = { + 7, // A0 PF7 ADC7 + 6, // A1 PF6 ADC6 + 5, // A2 PF5 ADC5 + 4, // A3 PF4 ADC4 + 1, // A4 PF1 ADC1 + 0, // A5 PF0 ADC0 + 8, // A6 D4 PD4 ADC8 + 10, // A7 D6 PD7 ADC10 + 11, // A8 D8 PB4 ADC11 + 12, // A9 D9 PB5 ADC12 + 13, // A10 D10 PB6 ADC13 + 9 // A11 D12 PD6 ADC9 +}; + +#endif /* ARDUINO_MAIN */ + +// These serial port names are intended to allow libraries and architecture-neutral +// sketches to automatically default to the correct port name for a particular type +// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, +// the first hardware serial port whose RX/TX pins are not dedicated to another use. +// +// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor +// +// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial +// +// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library +// +// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. +// +// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX +// pins are NOT connected to anything by default. +#define SERIAL_PORT_MONITOR Serial +#define SERIAL_PORT_USBVIRTUAL Serial +#define SERIAL_PORT_HARDWARE Serial1 +#define SERIAL_PORT_HARDWARE_OPEN Serial1 + +#endif /* Pins_Arduino_h */ diff --git a/keyboards/DeltaSplit75/readme.md b/keyboards/DeltaSplit75/readme.md new file mode 100644 index 0000000000..b8c5fa1fdb --- /dev/null +++ b/keyboards/DeltaSplit75/readme.md @@ -0,0 +1,119 @@ +DeltaSplit75 +====== + +This readme and most of the code are from https://github.com/ahtn/tmk_keyboard/ and https://github.com/qmk/qmk_firmware/tree/master/keyboards/lets_split +Credit to ahtn and wootpatoot for work on the split keyboard firmware + +Split keyboard firmware for Arduino Pro Micro or other ATmega32u4 +based boards. + + +## First Time Setup + +Download or clone the whole firmware and navigate to the keyboards/DeltaSplit75 directory. Once your dev env is setup, you'll be able to generate the default .hex using: + +``` +$ make V2 +or +$ make ProtoSplit (if you have one of the prototype PCBs) +``` + +You will see a lot of output and if everything worked correctly you will see the built hex files: + +``` +DeltaSplit75_ProtoSplit_Default +or +DeltaSplit75_V2_Default.hex +``` + + +``` + +For more information on customizing keymaps, take a look at the primary documentation for [Customizing Your Keymap](/readme.md##customizing-your-keymap) in the main readme.md. + +### DeltaSplit75 V2 +The PCBs available in groupbuy are all v2, if you've bought one of my prototype PCBs (it says DeltaSplit65 on the silkscreen instead of 75), use the code $make ProtoSplit instead + +Features +-------- + +For the full Quantum Mechanical Keyboard feature list, see [the parent readme.md](/readme.md). + +Some features supported by the firmware: + +* Either half can connect to the computer via USB, or both halves can be used + independently. +* 75% formfactor +* Support for multiple Bottom Rows +* RGB underglow support +* Split Backspace and ISO support + + + Flashing +------- +I personally use xLoader to upload my hex files to the keyboard, though any other working software is fine too + + +Choosing which board to plug the USB cable into (choosing Master) +-------- +Because the two boards are identical, the firmware has logic to differentiate the left and right board. + +It uses two strategies to figure things out: look at the EEPROM (memory on the chip) or looks if the current board has the usb cable. + +The EEPROM approach requires additional setup (flashing the eeeprom) but allows you to swap the usb cable to either side. + +The USB cable approach is easier to setup and if you just want the usb cable on the left board, you do not need to do anything extra. + +### Setting the left hand as master +If you always plug the usb cable into the left board, nothing extra is needed as this is the default. Comment out `EE_HANDS` and comment out `I2C_MASTER_RIGHT` or `MASTER_RIGHT` if for some reason it was set. + +### Setting the right hand as master +If you always plug the usb cable into the right board, add an extra flag to your `config.h` +``` + #define MASTER_RIGHT +``` + +### Setting EE_hands to use either hands as master +If you define `EE_HANDS` in your `config.h`, you will need to set the +EEPROM for the left and right halves. + +The EEPROM is used to store whether the +half is left handed or right handed. This makes it so that the same firmware +file will run on both hands instead of having to flash left and right handed +versions of the firmware to each half. To flash the EEPROM file for the left +half run: +``` +avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:eeprom-lefthand.eep +// or the equivalent in dfu-programmer + +``` +and similarly for right half +``` +avrdude -p atmega32u4 -P $(COM_PORT) -c avr109 -U eeprom:w:eeprom-righhand.eep +// or the equivalent in dfu-programmer +``` + +NOTE: replace `$(COM_PORT)` with the port of your device (e.g. `/dev/ttyACM0`) + +After you have flashed the EEPROM, you then need to set `EE_HANDS` in your config.h, rebuild the hex files and reflash. + +Note that you need to program both halves, but you have the option of using +different keymaps for each half. You could program the left half with a QWERTY +layout and the right half with a Colemak layout using bootmagic's default layout option. +Then if you connect the left half to a computer by USB the keyboard will use QWERTY and Colemak when the +right half is connected. + + +Notes on Using Pro Micro 3.3V +----------------------------- + +Do update the `F_CPU` parameter in `rules.mk` to `8000000` which reflects +the frequency on the 3.3V board. + +Also, if the slave board is producing weird characters in certain columns, +update the following line in `matrix.c` to the following: + +``` +// _delay_us(30); // without this wait read unstable value. +_delay_us(300); // without this wait read unstable value. +``` diff --git a/keyboards/DeltaSplit75/rules.mk b/keyboards/DeltaSplit75/rules.mk new file mode 100644 index 0000000000..0efa785505 --- /dev/null +++ b/keyboards/DeltaSplit75/rules.mk @@ -0,0 +1,87 @@ +SRC += matrix.c \ + i2c.c \ + split_util.c \ + serial.c + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + +# 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 ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +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. +SUBPROJECT_rev1 ?= yes +USE_I2C ?= yes +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend + +CUSTOM_MATRIX = yes + +avrdude: build + ls /dev/tty* > /tmp/1; \ + echo "Reset your Pro Micro now"; \ + while [[ -z $$USB ]]; do \ + sleep 1; \ + ls /dev/tty* > /tmp/2; \ + USB=`diff /tmp/1 /tmp/2 | grep -o '/dev/tty.*'`; \ + done; \ + avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex + +.PHONY: avrdude diff --git a/keyboards/DeltaSplit75/serial.c b/keyboards/DeltaSplit75/serial.c new file mode 100644 index 0000000000..6faed09ce0 --- /dev/null +++ b/keyboards/DeltaSplit75/serial.c @@ -0,0 +1,228 @@ +/* + * WARNING: be careful changing this code, it is very timing dependent + */ + +#ifndef F_CPU +#define F_CPU 16000000 +#endif + +#include +#include +#include +#include +#include "serial.h" + +#ifdef USE_SERIAL + +// Serial pulse period in microseconds. Its probably a bad idea to lower this +// value. +#define SERIAL_DELAY 24 + +uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0}; +uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0}; + +#define SLAVE_DATA_CORRUPT (1<<0) +volatile uint8_t status = 0; + +inline static +void serial_delay(void) { + _delay_us(SERIAL_DELAY); +} + +inline static +void serial_output(void) { + SERIAL_PIN_DDR |= SERIAL_PIN_MASK; +} + +// make the serial pin an input with pull-up resistor +inline static +void serial_input(void) { + SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK; + SERIAL_PIN_PORT |= SERIAL_PIN_MASK; +} + +inline static +uint8_t serial_read_pin(void) { + return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK); +} + +inline static +void serial_low(void) { + SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK; +} + +inline static +void serial_high(void) { + SERIAL_PIN_PORT |= SERIAL_PIN_MASK; +} + +void serial_master_init(void) { + serial_output(); + serial_high(); +} + +void serial_slave_init(void) { + serial_input(); + + // Enable INT0 + EIMSK |= _BV(INT0); + // Trigger on falling edge of INT0 + EICRA &= ~(_BV(ISC00) | _BV(ISC01)); +} + +// Used by the master to synchronize timing with the slave. +static +void sync_recv(void) { + serial_input(); + // This shouldn't hang if the slave disconnects because the + // serial line will float to high if the slave does disconnect. + while (!serial_read_pin()); + serial_delay(); +} + +// Used by the slave to send a synchronization signal to the master. +static +void sync_send(void) { + serial_output(); + + serial_low(); + serial_delay(); + + serial_high(); +} + +// Reads a byte from the serial line +static +uint8_t serial_read_byte(void) { + uint8_t byte = 0; + serial_input(); + for ( uint8_t i = 0; i < 8; ++i) { + byte = (byte << 1) | serial_read_pin(); + serial_delay(); + _delay_us(1); + } + + return byte; +} + +// Sends a byte with MSB ordering +static +void serial_write_byte(uint8_t data) { + uint8_t b = 8; + serial_output(); + while( b-- ) { + if(data & (1 << b)) { + serial_high(); + } else { + serial_low(); + } + serial_delay(); + } +} + +// interrupt handle to be used by the slave device +ISR(SERIAL_PIN_INTERRUPT) { + sync_send(); + + uint8_t checksum = 0; + for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) { + serial_write_byte(serial_slave_buffer[i]); + sync_send(); + checksum += serial_slave_buffer[i]; + } + serial_write_byte(checksum); + sync_send(); + + // wait for the sync to finish sending + serial_delay(); + + // read the middle of pulses + _delay_us(SERIAL_DELAY/2); + + uint8_t checksum_computed = 0; + for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) { + serial_master_buffer[i] = serial_read_byte(); + sync_send(); + checksum_computed += serial_master_buffer[i]; + } + uint8_t checksum_received = serial_read_byte(); + sync_send(); + + serial_input(); // end transaction + + if ( checksum_computed != checksum_received ) { + status |= SLAVE_DATA_CORRUPT; + } else { + status &= ~SLAVE_DATA_CORRUPT; + } +} + +inline +bool serial_slave_DATA_CORRUPT(void) { + return status & SLAVE_DATA_CORRUPT; +} + +// Copies the serial_slave_buffer to the master and sends the +// serial_master_buffer to the slave. +// +// Returns: +// 0 => no error +// 1 => slave did not respond +int serial_update_buffers(void) { + // this code is very time dependent, so we need to disable interrupts + cli(); + + // signal to the slave that we want to start a transaction + serial_output(); + serial_low(); + _delay_us(1); + + // wait for the slaves response + serial_input(); + serial_high(); + _delay_us(SERIAL_DELAY); + + // check if the slave is present + if (serial_read_pin()) { + // slave failed to pull the line low, assume not present + sei(); + return 1; + } + + // if the slave is present syncronize with it + sync_recv(); + + uint8_t checksum_computed = 0; + // receive data from the slave + for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) { + serial_slave_buffer[i] = serial_read_byte(); + sync_recv(); + checksum_computed += serial_slave_buffer[i]; + } + uint8_t checksum_received = serial_read_byte(); + sync_recv(); + + if (checksum_computed != checksum_received) { + sei(); + return 1; + } + + uint8_t checksum = 0; + // send data to the slave + for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) { + serial_write_byte(serial_master_buffer[i]); + sync_recv(); + checksum += serial_master_buffer[i]; + } + serial_write_byte(checksum); + sync_recv(); + + // always, release the line when not in use + serial_output(); + serial_high(); + + sei(); + return 0; +} + +#endif diff --git a/keyboards/DeltaSplit75/serial.h b/keyboards/DeltaSplit75/serial.h new file mode 100644 index 0000000000..6ef52019a8 --- /dev/null +++ b/keyboards/DeltaSplit75/serial.h @@ -0,0 +1,26 @@ +#ifndef MY_SERIAL_H +#define MY_SERIAL_H + +#include "config.h" +#include + +/* TODO: some defines for interrupt setup */ +#define SERIAL_PIN_DDR DDRD +#define SERIAL_PIN_PORT PORTD +#define SERIAL_PIN_INPUT PIND +#define SERIAL_PIN_MASK _BV(PD0) +#define SERIAL_PIN_INTERRUPT INT0_vect + +#define SERIAL_SLAVE_BUFFER_LENGTH ((MATRIX_COLS+7)/8 *MATRIX_ROWS/2) +#define SERIAL_MASTER_BUFFER_LENGTH 1 + +// Buffers for master - slave communication +extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH]; +extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH]; + +void serial_master_init(void); +void serial_slave_init(void); +int serial_update_buffers(void); +bool serial_slave_data_corrupt(void); + +#endif diff --git a/keyboards/DeltaSplit75/split_util.c b/keyboards/DeltaSplit75/split_util.c new file mode 100644 index 0000000000..226dc18816 --- /dev/null +++ b/keyboards/DeltaSplit75/split_util.c @@ -0,0 +1,81 @@ +#include +#include +#include +#include +#include +#include +#include "split_util.h" +#include "matrix.h" +#include "keyboard.h" +#include "config.h" + +#ifdef USE_I2C +# include "i2c.h" +#else +# include "serial.h" +#endif + +volatile bool isLeftHand = true; + +static void setup_handedness(void) { + #ifdef EE_HANDS + isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS); + #else + // I2C_MASTER_RIGHT is deprecated use MASTER_RIGHT instead since this works for both serial and i2c + #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT) + isLeftHand = !has_usb(); + #else + isLeftHand = has_usb(); + #endif + #endif +} + +static void keyboard_master_setup(void) { +#ifdef USE_I2C + i2c_master_init(); +#else + serial_master_init(); +#endif +} + +static void keyboard_slave_setup(void) { +#ifdef USE_I2C + i2c_slave_init(SLAVE_I2C_ADDRESS); +#else + serial_slave_init(); +#endif +} + +bool has_usb(void) { + USBCON |= (1 << OTGPADE); //enables VBUS pad + _delay_us(5); + return (USBSTA & (1< + +#ifdef EE_HANDS + #define EECONFIG_BOOTMAGIC_END (uint8_t *)10 + #define EECONFIG_HANDEDNESS EECONFIG_BOOTMAGIC_END +#endif + +#define SLAVE_I2C_ADDRESS 0x32 + +extern volatile bool isLeftHand; + +// slave version of matix scan, defined in matrix.c +void matrix_slave_scan(void); + +void split_keyboard_setup(void); +bool has_usb(void); +void keyboard_slave_loop(void); + +#endif From e9daf0606ffa2492b50f48748f09158adb7d5171 Mon Sep 17 00:00:00 2001 From: xyxjj Date: Wed, 31 May 2017 14:36:35 +0800 Subject: [PATCH 09/89] Update readme.md --- keyboards/DeltaSplit75/readme.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/keyboards/DeltaSplit75/readme.md b/keyboards/DeltaSplit75/readme.md index b8c5fa1fdb..ef845521d1 100644 --- a/keyboards/DeltaSplit75/readme.md +++ b/keyboards/DeltaSplit75/readme.md @@ -2,6 +2,7 @@ DeltaSplit75 ====== This readme and most of the code are from https://github.com/ahtn/tmk_keyboard/ and https://github.com/qmk/qmk_firmware/tree/master/keyboards/lets_split + Credit to ahtn and wootpatoot for work on the split keyboard firmware Split keyboard firmware for Arduino Pro Micro or other ATmega32u4 @@ -14,7 +15,9 @@ Download or clone the whole firmware and navigate to the keyboards/DeltaSplit75 ``` $ make V2 + or + $ make ProtoSplit (if you have one of the prototype PCBs) ``` @@ -22,8 +25,11 @@ You will see a lot of output and if everything worked correctly you will see the ``` DeltaSplit75_ProtoSplit_Default + or + DeltaSplit75_V2_Default.hex + ``` From 42ea9460fe865e6114c73112338ff68b0e8fd35b Mon Sep 17 00:00:00 2001 From: xyxjj Date: Wed, 31 May 2017 14:37:43 +0800 Subject: [PATCH 10/89] Update readme.md --- keyboards/DeltaSplit75/readme.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/keyboards/DeltaSplit75/readme.md b/keyboards/DeltaSplit75/readme.md index ef845521d1..957e13c585 100644 --- a/keyboards/DeltaSplit75/readme.md +++ b/keyboards/DeltaSplit75/readme.md @@ -33,8 +33,6 @@ DeltaSplit75_V2_Default.hex ``` -``` - For more information on customizing keymaps, take a look at the primary documentation for [Customizing Your Keymap](/readme.md##customizing-your-keymap) in the main readme.md. ### DeltaSplit75 V2 From 0c2b0c7cc1cd4bad70cee95c26c131446f131682 Mon Sep 17 00:00:00 2001 From: xyxjj Date: Wed, 31 May 2017 14:38:18 +0800 Subject: [PATCH 11/89] Update readme.md --- keyboards/DeltaSplit75/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/DeltaSplit75/readme.md b/keyboards/DeltaSplit75/readme.md index 957e13c585..9ac9cb36d5 100644 --- a/keyboards/DeltaSplit75/readme.md +++ b/keyboards/DeltaSplit75/readme.md @@ -53,7 +53,7 @@ Some features supported by the firmware: * Split Backspace and ISO support - Flashing +Flashing ------- I personally use xLoader to upload my hex files to the keyboard, though any other working software is fine too From 7a31ef82843b4209f9bc605876253d3960c627fa Mon Sep 17 00:00:00 2001 From: xyxjj Date: Wed, 31 May 2017 15:04:47 +0800 Subject: [PATCH 12/89] Add files via upload --- .../case files/BEZEL/top bezel - Standard.bak | Bin 0 -> 82716 bytes .../case files/BEZEL/top bezel - Standard.dwg | Bin 0 -> 82957 bytes .../BEZEL/top bezel - blocked corner.bak | Bin 0 -> 70790 bytes .../BEZEL/top bezel - blocked corner.dwg | Bin 0 -> 70954 bytes .../Left B/Bottom Layer - LEFT B.dwg | Bin 0 -> 39679 bytes .../Left B/Middle layers - LEFT B.dwg | Bin 0 -> 123141 bytes .../Left B/Plates/ALPS+MX LEFT B.dwg | Bin 0 -> 135732 bytes .../case files/Left B/Plates/MX LEFT B.dwg | Bin 0 -> 125702 bytes .../DeltaSplit75/case files/PCB Dimesnsion.dwg | Bin 0 -> 152232 bytes .../Right B/Plates/ALPS+MX RIGHT B.dwg | Bin 0 -> 113177 bytes .../case files/Right B/Plates/MX RIGHT B.dwg | Bin 0 -> 69231 bytes .../Right B/bottom layers - RIGHT B.dwg | Bin 0 -> 84172 bytes .../Right B/middle layers - RIGHT B.dwg | Bin 0 -> 108537 bytes 13 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 keyboards/DeltaSplit75/case files/BEZEL/top bezel - Standard.bak create mode 100644 keyboards/DeltaSplit75/case files/BEZEL/top bezel - Standard.dwg create mode 100644 keyboards/DeltaSplit75/case files/BEZEL/top bezel - blocked corner.bak create mode 100644 keyboards/DeltaSplit75/case files/BEZEL/top bezel - blocked corner.dwg create mode 100644 keyboards/DeltaSplit75/case files/Left B/Bottom Layer - LEFT B.dwg create mode 100644 keyboards/DeltaSplit75/case files/Left B/Middle layers - LEFT B.dwg create mode 100644 keyboards/DeltaSplit75/case files/Left B/Plates/ALPS+MX LEFT B.dwg create mode 100644 keyboards/DeltaSplit75/case files/Left B/Plates/MX LEFT B.dwg create mode 100644 keyboards/DeltaSplit75/case files/PCB Dimesnsion.dwg create mode 100644 keyboards/DeltaSplit75/case files/Right B/Plates/ALPS+MX RIGHT B.dwg create mode 100644 keyboards/DeltaSplit75/case files/Right B/Plates/MX RIGHT B.dwg create mode 100644 keyboards/DeltaSplit75/case files/Right B/bottom layers - RIGHT B.dwg create mode 100644 keyboards/DeltaSplit75/case files/Right B/middle layers - RIGHT B.dwg diff --git a/keyboards/DeltaSplit75/case files/BEZEL/top bezel - Standard.bak b/keyboards/DeltaSplit75/case files/BEZEL/top bezel - Standard.bak new file mode 100644 index 0000000000000000000000000000000000000000..222337773da0feb24409d959637b9fc8179c1bff GIT binary patch literal 82716 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

W;Jj# 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 IW$Y3c0W9)4rT_o{ literal 0 HcmV?d00001 diff --git a/keyboards/DeltaSplit75/case files/BEZEL/top bezel - blocked corner.bak b/keyboards/DeltaSplit75/case files/BEZEL/top bezel - blocked corner.bak new file mode 100644 index 0000000000000000000000000000000000000000..d36ffa5ec26bf645de10dc2b57341fcb4942ea05 GIT binary patch literal 70790 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 XV7r?2LZ!z_6X!ncmcMm<|0M|k>bPW% literal 0 HcmV?d00001 diff --git a/keyboards/DeltaSplit75/case files/BEZEL/top bezel - blocked corner.dwg b/keyboards/DeltaSplit75/case files/BEZEL/top bezel - blocked corner.dwg new file mode 100644 index 0000000000000000000000000000000000000000..59eaa2724a8d9a66c9b005c39ee6f0ebf704f2f4 GIT binary patch literal 70954 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