From 96a8e2d5f52c4f9d4c774f820139be726894e70d Mon Sep 17 00:00:00 2001
From: Priyadi Iman Nurcahyo <priyadi@priyadi.net>
Date: Thu, 16 Feb 2017 23:53:09 +0700
Subject: [PATCH 1/7] reposition ins and del key
---
.../promethium/keymaps/priyadi/README.md | 2 +-
.../promethium/keymaps/priyadi/keymap.c | 28 +++++++++++--------
2 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/README.md b/keyboards/handwired/promethium/keymaps/priyadi/README.md
index 37c2be6f99..ddeaed939e 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/README.md
+++ b/keyboards/handwired/promethium/keymaps/priyadi/README.md
@@ -13,7 +13,7 @@ Main layer modifications from default Planck layout:
* Lower & Raise is now called Num and Fun.
* OS & Left keys become another thumb modifier: Empty & Greek (Empty because I used this for another use and my muscle memory is not adapted to it yet)
-On Promethium, Trackpoint is enabled on PD2 and PD2. We impersonate a Thinkpad keyboard to be able to use Thinkpad driver on Windows (still needs verification).
+On Promethium, Trackpoint is enabled on PD2 and PD3. We impersonate a Thinkpad keyboard to be able to use Thinkpad driver on Windows (still needs verification).
AltGr & Compose dual use key. Tap for Compose (mapped to Scroll Lock in hardware) and press for AltGr.
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 2c43f98847..4b9491fae7 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -54,6 +54,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#undef KC_RALT
#define KC_RALT MT(MOD_RALT, KC_SLCK)
+// dual use right-shift & del key
+#undef KC_RSFT
+#define KC_RSFT MT(MOD_RSFT, KC_DEL)
+
bool capslock = false;
#ifdef DOUBLESPACE_LAYER_ENABLE
bool lspace_active = false;
@@ -664,16 +668,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | * | \ | - | = | / | ≠ | ( | ) | < | > | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | & | ^ | | | _ | + | ? | ± | [ | ] | { | } | : |
+ * | & | ^ | | | _ | + | ? | ± | [ | ] | { | } | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |
+ * | | | | | | | | | | : | |
* `-----------------------------------------------------------------------------------'
*/
[_PUNC] = KEYMAP(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, X(LTEQ), X(GTEQ), _______,
KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, X(NOTEQ),KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
- KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, X(PLMIN),KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_COLN,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, X(PLMIN),KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COLN, _______
),
/* Num
@@ -682,23 +686,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | ` | * | \ | - | = | / | B | 4 | 5 | 6 | E | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | & | ^ | | | _ | + | ? | C | 1 | 2 | 3 | F | : |
+ * | & | ^ | | | _ | + | ? | C | 1 | 2 | 3 | F | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | 0 | , | . | x | |
+ * | | | x | | | | | 0 | , | . | : | |
* `-----------------------------------------------------------------------------------'
*/
[_NUM] = KEYMAP(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_7, KC_8, KC_9, S(KC_D), _______,
KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______,
- KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_1, KC_2, KC_3, S(KC_F), KC_COLN,
- _______, _______, _______, _______, _______, _______, _______, FUN0 , KC_COMM, KC_DOT, KC_X, _______
+ KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_1, KC_2, KC_3, S(KC_F), _______,
+ _______, _______, KC_X, _______, _______, _______, _______, FUN0 , KC_COMM, KC_DOT, KC_COLN, _______
),
/* Func
* ,-----------------------------------------------------------------------------------.
- * | | F1 | F2 | F3 | F4 | | | PgUp | Up | PgDn | PgUp | Del |
+ * | | F1 | F2 | F3 | F4 | Ins | | PgUp | Up | PgDn | PgUp | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | F5 | F6 | F7 | F8 |PrtSc | | Left | Down | Right| PgDn | Ins |
+ * | | F5 | F6 | F7 | F8 |PrtSc | | Left | Down | Right| PgDn | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | F9 | F10 | F11 | F12 | | | | Home | End | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -706,8 +710,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_FUN] = KEYMAP(
- XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
- XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_INS,
+ XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, _______,
+ XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
_______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
From e5bd81f0a68948a87ad5279bc2c41a4876466023 Mon Sep 17 00:00:00 2001
From: Priyadi Iman Nurcahyo <priyadi@priyadi.net>
Date: Thu, 16 Feb 2017 23:56:47 +0700
Subject: [PATCH 2/7] Fix integer overflow
---
.../handwired/promethium/keymaps/priyadi/keymap.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 4b9491fae7..8f712ccfed 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -51,12 +51,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define KC_WWWF KC_WWW_FORWARD
// hybrid right-alt & scroll lock (mapped to Compose in OS)
-#undef KC_RALT
-#define KC_RALT MT(MOD_RALT, KC_SLCK)
+#define C_RALT MT(MOD_RALT, KC_SLCK)
// dual use right-shift & del key
-#undef KC_RSFT
-#define KC_RSFT MT(MOD_RSFT, KC_DEL)
+#define C_RSFT MT(MOD_RSFT, KC_DEL)
bool capslock = false;
#ifdef DOUBLESPACE_LAYER_ENABLE
@@ -575,8 +573,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = KEYMAP(
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_QUOT, KC_ENT ,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LALT, KC_LGUI, EMPTY, NUM, LSPACE, RSPACE, FUN, GREEK, KC_RGUI, KC_RALT, KC_RCTL
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, C_RSFT,
+ KC_LCTL, KC_LALT, KC_LGUI, EMPTY, NUM, LSPACE, RSPACE, FUN, GREEK, KC_RGUI, C_RALT, KC_RCTL
),
/* Dvorak
From 77f93636757d32f4e2ce6d7295f3d6293af3b462 Mon Sep 17 00:00:00 2001
From: Priyadi Iman Nurcahyo <priyadi@priyadi.net>
Date: Tue, 21 Feb 2017 03:24:32 +0700
Subject: [PATCH 3/7] Only process Fnumber on key release, and only when layer
is still active
---
.../handwired/promethium/keymaps/priyadi/keymap.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 8f712ccfed..cf486b39f5 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -1046,6 +1046,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
break;
#endif
+ // only process Fnumber on key release, and only when layer switcher is still pressed.
+ // this is to avoid accidental presses
+ case KC_F1 ... KC_F12:
+ if (!record->event.pressed && layer == _FUN) {
+ register_code(keycode);
+ unregister_code(keycode);
+ }
+ return false;
+ break;
+
// layer switcher
//
case GREEK:
From b306f83c6b5ef671917bbc3789297e7344bede99 Mon Sep 17 00:00:00 2001
From: Priyadi Iman Nurcahyo <priyadi@priyadi.net>
Date: Tue, 21 Feb 2017 04:00:05 +0700
Subject: [PATCH 4/7] Move del back to fun+backspce
---
keyboards/handwired/promethium/keymaps/priyadi/keymap.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index cf486b39f5..0c39da8248 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -54,7 +54,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define C_RALT MT(MOD_RALT, KC_SLCK)
// dual use right-shift & del key
-#define C_RSFT MT(MOD_RSFT, KC_DEL)
+// #define C_RSFT MT(MOD_RSFT, KC_DEL)
bool capslock = false;
#ifdef DOUBLESPACE_LAYER_ENABLE
@@ -573,7 +573,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = KEYMAP(
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_QUOT, KC_ENT ,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, C_RSFT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LALT, KC_LGUI, EMPTY, NUM, LSPACE, RSPACE, FUN, GREEK, KC_RGUI, C_RALT, KC_RCTL
),
@@ -708,7 +708,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_FUN] = KEYMAP(
- XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, _______,
+ XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
_______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
From 57623805e8d73aa14adae1e76d5338911dfc31b2 Mon Sep 17 00:00:00 2001
From: Priyadi Iman Nurcahyo <priyadi@priyadi.net>
Date: Tue, 21 Feb 2017 16:36:35 +0700
Subject: [PATCH 5/7] Move caps to FUN layer; add Pause key
---
.../promethium/keymaps/priyadi/keymap.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 0c39da8248..aed5a81eef 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -700,17 +700,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------.
* | | F1 | F2 | F3 | F4 | Ins | | PgUp | Up | PgDn | PgUp | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | F5 | F6 | F7 | F8 |PrtSc | | Left | Down | Right| PgDn | |
+ * | Caps | F5 | F6 | F7 | F8 |PrtSc | | Left | Down | Right| PgDn | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F9 | F10 | F11 | F12 | | | | Home | End | | |
+ * | | F9 | F10 | F11 | F12 |Pause | | | Home | End | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_FUN] = KEYMAP(
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
- XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
- _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
+ KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
+ _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
@@ -935,7 +935,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#endif
// handle greek layer shift
- // handle both shift = capslock
case KC_LSFT:
case KC_RSFT:
;
@@ -949,13 +948,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
layer_off(_GREEKU);
}
}
- } else {
- if (record->event.pressed) {
- if (lshift ^ rshift) { // if only one shift was pressed
- register_code(KC_CAPS);
- unregister_code(KC_CAPS);
- }
- }
}
return true;
break;
From 3dab8a60fca182376d1df07d3f1e25882aa57be4 Mon Sep 17 00:00:00 2001
From: Priyadi Iman Nurcahyo <priyadi@priyadi.net>
Date: Tue, 21 Feb 2017 16:40:38 +0700
Subject: [PATCH 6/7] added pause, prtsc & ins to list of keys to be processed
on release
---
keyboards/handwired/promethium/keymaps/priyadi/keymap.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index aed5a81eef..cf7c67339d 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -1039,9 +1039,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#endif
// only process Fnumber on key release, and only when layer switcher is still pressed.
- // this is to avoid accidental presses
+ // this is to avoid accidental presses on potentially destructive keys
case KC_F1 ... KC_F12:
- if (!record->event.pressed && layer == _FUN) {
+ case KC_PAUS:
+ case KC_PSCR:
+ case KC_INS:
+ if (!record->event.pressed && layer == _FUN) { // key released and still in FUN layer
register_code(keycode);
unregister_code(keycode);
}
From af29d0d0941ccc2aa67788b6eb1cb21116f39412 Mon Sep 17 00:00:00 2001
From: Priyadi Iman Nurcahyo <priyadi@priyadi.net>
Date: Thu, 23 Feb 2017 18:10:00 +0700
Subject: [PATCH 7/7] Fix UNICODE_MAP input_mode problem
---
quantum/process_keycode/process_unicodemap.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/quantum/process_keycode/process_unicodemap.c b/quantum/process_keycode/process_unicodemap.c
index 37f10df866..68a593a186 100644
--- a/quantum/process_keycode/process_unicodemap.c
+++ b/quantum/process_keycode/process_unicodemap.c
@@ -1,25 +1,26 @@
#include "process_unicodemap.h"
+#include "process_unicode_common.h"
__attribute__((weak))
const uint32_t PROGMEM unicode_map[] = {
};
void register_hex32(uint32_t hex) {
- uint8_t onzerostart = 1;
+ bool onzerostart = true;
for(int i = 7; i >= 0; i--) {
if (i <= 3) {
- onzerostart = 0;
+ onzerostart = false;
}
uint8_t digit = ((hex >> (i*4)) & 0xF);
if (digit == 0) {
- if (onzerostart == 0) {
+ if (!onzerostart) {
register_code(hex_to_keycode(digit));
unregister_code(hex_to_keycode(digit));
}
} else {
register_code(hex_to_keycode(digit));
unregister_code(hex_to_keycode(digit));
- onzerostart = 0;
+ onzerostart = false;
}
}
}
@@ -28,6 +29,7 @@ __attribute__((weak))
void unicode_map_input_error() {}
bool process_unicode_map(uint16_t keycode, keyrecord_t *record) {
+ uint8_t input_mode = get_unicode_input_mode();
if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) {
const uint32_t* map = unicode_map;
uint16_t index = keycode - QK_UNICODE_MAP;