aboutsummaryrefslogtreecommitdiffstats
path: root/quantum/process_keycode
diff options
context:
space:
mode:
authorGergely Nagy <algernon@madhouse-project.org>2016-08-13 11:11:22 +0200
committerGergely Nagy <algernon@madhouse-project.org>2016-08-15 10:08:53 +0200
commit0b6861827faea747345ea38202d64c8004ab128c (patch)
tree8791abe3dec280fbbf6a6be30d461bc1ada25110 /quantum/process_keycode
parentfa06a163607e8c6c4bd0968c2de96a9a298b777c (diff)
downloadfirmware-0b6861827faea747345ea38202d64c8004ab128c.tar.gz
firmware-0b6861827faea747345ea38202d64c8004ab128c.tar.bz2
firmware-0b6861827faea747345ea38202d64c8004ab128c.zip
process_unicode: Handle too long UCIS symbol names
If the symbol name being entered is longer than the max, stop recording it, and stop processing keycodes apart from the ones that can delete, finish or cancel the sequence. Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
Diffstat (limited to 'quantum/process_keycode')
-rw-r--r--quantum/process_keycode/process_unicode.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c
index 8a6509300..851a96eaa 100644
--- a/quantum/process_keycode/process_unicode.c
+++ b/quantum/process_keycode/process_unicode.c
@@ -110,7 +110,15 @@ void qk_ucis_symbol_fallback (void) {
bool process_record_ucis (uint16_t keycode, keyrecord_t *record) {
uint8_t i;
- if (!qk_ucis_state.in_progress || !record->event.pressed)
+ if (!qk_ucis_state.in_progress)
+ return true;
+
+ if (qk_ucis_state.count >= UCIS_MAX_SYMBOL_LENGTH &&
+ !(keycode == KC_BSPC || keycode == KC_ESC || keycode == KC_SPC || keycode == KC_ENT)) {
+ return false;
+ }
+
+ if (!record->event.pressed)
return true;
qk_ucis_state.codes[qk_ucis_state.count] = keycode;