Diverge3 - Workman Layout (#3682)

* Diverge3: Workman Programmers Layout

* Diverge3: Comment Removal

* Diverge3: Image Links Fixed

* Diverge3: Images added

* Diverge3: Images cleaned up

* Diverge3: Images cleaned up

* Diverge3: Removing Images

* Diverge3: Improving readme.md

* Diverge3: Improving readme.md

* Diverge3: Add supporting Comments

* Diverge3: Update readme

* Diverge3: Update readme

* Diverge3: Updates per comments in PR

* Diverge3: Updates per comments in PR

* Diverge3: Updates per comments in PR

* Diverge3: Updates per comments in PR

* Diverge3: Updates per comments in PR

* Diverge3: Updates per comments in PR
This commit is contained in:
Levi Olson 2018-10-22 14:04:28 -05:00 committed by Drashna Jaelre
parent a2b650df47
commit 47dcda1087
7 changed files with 250 additions and 5 deletions

1
keyboards/diverge3/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.vscode

View file

@ -31,7 +31,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
// SERIAL is the only supported
// Only SERIAL is currently supported
// By converting this to use I2C, backlight
// would/should be fully functional as well
#define USE_SERIAL
/*
@ -51,7 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
#define DIODE_DIRECTION ROW2COL
// #define BACKLIGHT_PIN B7
// #define BACKLIGHT_PIN C6
// #define BACKLIGHT_BREATHING
// #define BACKLIGHT_LEVELS 3
@ -62,7 +64,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* number of backlight levels */
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE

View file

@ -0,0 +1,5 @@
#pragma once
// place overrides here
#define PERMISSIVE_HOLD
#define TAPPING_TERM 150

View file

@ -0,0 +1,212 @@
/* Copyright 2017 IslandMan93
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
// KEYMAP
extern keymap_config_t keymap_config;
#define _WORKMAN_P 0
#define _GAME 1
#define _RAISE 2
#define _______ KC_TRNS
#define SHIFT_MOD MOD_BIT(KC_LSFT)
#define SPACE_RAISE LT(_RAISE, KC_SPC)
#define ENT_RAISE LT(_RAISE, KC_ENT)
#define PAGE_PREV S(LCTL(KC_TAB))
#define PAGE_NEXT LCTL(KC_TAB)
enum custom_keycodes
{
LO_BSPC = SAFE_RANGE,
LO_1,
LO_2,
LO_3,
LO_4,
LO_5,
LO_6,
LO_7,
LO_8,
LO_9,
LO_0,
};
bool process_record_user(uint16_t keycode, keyrecord_t* record)
{
if (record->event.pressed) {
switch (keycode) {
case LO_BSPC:
if (record->event.pressed) {
if (get_mods() & SHIFT_MOD) {
uint8_t current_mods = get_mods();
clear_mods();
SEND_STRING(SS_TAP(X_DELETE));
set_mods(current_mods);
} else {
SEND_STRING(SS_TAP(X_BSPACE));
}
}
return false;
case LO_1:
if (record->event.pressed) {
uint8_t current_mods = get_mods();
if (current_mods & SHIFT_MOD) {
clear_mods();
SEND_STRING("1");
set_mods(current_mods);
} else {
SEND_STRING("!");
}
}
return false;
case LO_2:
if (record->event.pressed) {
uint8_t current_mods = get_mods();
if (current_mods & SHIFT_MOD) {
clear_mods();
SEND_STRING("2");
set_mods(current_mods);
} else {
SEND_STRING("@");
}
}
return false;
case LO_3:
if (record->event.pressed) {
uint8_t current_mods = get_mods();
if (current_mods & SHIFT_MOD) {
clear_mods();
SEND_STRING("3");
set_mods(current_mods);
} else {
SEND_STRING("#");
}
}
return false;
case LO_4:
if (record->event.pressed) {
uint8_t current_mods = get_mods();
if (current_mods & SHIFT_MOD) {
clear_mods();
SEND_STRING("4");
set_mods(current_mods);
} else {
SEND_STRING("$");
}
}
return false;
case LO_5:
if (record->event.pressed) {
uint8_t current_mods = get_mods();
if (current_mods & SHIFT_MOD) {
clear_mods();
SEND_STRING("5");
set_mods(current_mods);
} else {
SEND_STRING("%");
}
}
return false;
case LO_6:
if (record->event.pressed) {
uint8_t current_mods = get_mods();
if (current_mods & SHIFT_MOD) {
clear_mods();
SEND_STRING("6");
set_mods(current_mods);
} else {
SEND_STRING("^");
}
}
return false;
case LO_7:
if (record->event.pressed) {
uint8_t current_mods = get_mods();
if (current_mods & SHIFT_MOD) {
clear_mods();
SEND_STRING("7");
set_mods(current_mods);
} else {
SEND_STRING("&");
}
}
return false;
case LO_8:
if (record->event.pressed) {
uint8_t current_mods = get_mods();
if (current_mods & SHIFT_MOD) {
clear_mods();
SEND_STRING("8");
set_mods(current_mods);
} else {
SEND_STRING("*");
}
}
return false;
case LO_9:
if (record->event.pressed) {
uint8_t current_mods = get_mods();
if (current_mods & SHIFT_MOD) {
clear_mods();
SEND_STRING("9");
set_mods(current_mods);
} else {
SEND_STRING("(");
}
}
return false;
case LO_0:
if (record->event.pressed) {
uint8_t current_mods = get_mods();
if (current_mods & SHIFT_MOD) {
clear_mods();
SEND_STRING("0");
set_mods(current_mods);
} else {
SEND_STRING(")");
}
}
return false;
}
}
return true;
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_WORKMAN_P] = LAYOUT(
KC_ESC, LO_1, LO_2, LO_3, LO_4, LO_5, LO_6, LO_6, LO_7, LO_8, LO_9, LO_0, KC_MINS, KC_ESC,
KC_GRV, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_LPRN, KC_RPRN, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_EQL,
KC_TAB, KC_A, KC_S, KC_H, KC_T, KC_G, KC_LCBR, KC_RCBR, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_BSLS,
KC_LCTL, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
KC_LSFT, RESET, PAGE_PREV, PAGE_NEXT, KC_END, KC_LGUI, KC_LALT, TG(_GAME), LO_BSPC, ENT_RAISE, SPACE_RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RCTL),
[_GAME] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_ESC,
KC_GRV, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_LPRN, KC_RPRN, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_EQL,
KC_TAB, KC_A, KC_S, KC_H, KC_T, KC_G, KC_LCBR, KC_RCBR, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_BSLS,
KC_LCTL, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
KC_LSFT, KC_F1, KC_F2, KC_3, KC_F5, KC_SPC, KC_LALT, TG(_GAME), LO_BSPC, ENT_RAISE, SPACE_RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RCTL),
[_RAISE] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, RESET,
_______, _______, _______, _______, _______, _______, BL_INC, KC_VOLU, _______, _______, _______, _______, _______, KC_F12,
_______, _______, _______, _______, _______, _______, BL_DEC, KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
_______, _______, _______, _______, _______, _______, BL_BRTG, KC_MUTE, _______, _______, KC_MPRV, KC_MNXT, KC_MPLY, _______,
_______, _______, _______, _______, _______, _______, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};

View file

@ -0,0 +1,21 @@
# The Workman keymap for diverge3
Basic example of the [Workman Programming Layout](https://github.com/ojbucao/workman) which uses the `SHIFT`ed variants of the number row, by default.
## Layer 1 - Default Layer
Workman programming layout.
![Workman Layout Picture](https://i.imgur.com/IOOmRfI.png)
## Layer 2 - Gaming Layer
Reverts the number row to the normal 1, 2, 3, etc... for better gaming compatibility.
![Gaming Layer Picture](https://i.imgur.com/E0vmEAa.png)
## Layer 3 - Raise Layer
Volume and backlight controls (although backlight is not fully functional using `USE_SERIAL` in `../config.h`).
![Raise Layer Misc Buttons Picture](https://i.imgur.com/50L3O62.png)

View file

@ -0,0 +1 @@

View file

@ -10,7 +10,11 @@ Make example for this keyboard (after setting up your build environment):
make diverge3:default
Or for the [Workman](https://github.com/ojbucao/workman) layout:
make diverge3:workman
See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
# Reflashing Animus
Reflashing the stock firmware is pretty easy. Just follow the same steps in the [original guide](https://imgur.com/a/8UapN). You will have to manually reset the Pro Micro (by shorting the GND and RST) during the upload step. Then reapply your keymap through Arbites.
Reflashing the stock firmware is pretty easy. Just follow the same steps in the [original guide](https://imgur.com/a/8UapN). You will have to manually reset the Pro Micro (by shorting the GND and RST pins) during the upload step. Then reapply your keymap through Arbites.