fix weirdness with arm and mods

This commit is contained in:
Jack Humbert 2017-02-15 23:20:35 -05:00
parent f89499e255
commit 58823b4e03
2 changed files with 20 additions and 19 deletions

View file

@ -1,5 +1,7 @@
#include "process_unicode_common.h" #include "process_unicode_common.h"
uint8_t mods;
void set_unicode_input_mode(uint8_t os_target) void set_unicode_input_mode(uint8_t os_target)
{ {
input_mode = os_target; input_mode = os_target;
@ -12,17 +14,17 @@ uint8_t get_unicode_input_mode(void) {
__attribute__((weak)) __attribute__((weak))
void unicode_input_start (void) { void unicode_input_start (void) {
// save current mods // save current mods
unicode_mods = keyboard_report->mods; mods = keyboard_report->mods;
// unregister all mods to start from clean state // unregister all mods to start from clean state
if (unicode_mods & MOD_BIT(KC_LSFT)) unregister_code(KC_LSFT); if (mods & MOD_BIT(KC_LSFT)) unregister_code(KC_LSFT);
if (unicode_mods & MOD_BIT(KC_RSFT)) unregister_code(KC_RSFT); if (mods & MOD_BIT(KC_RSFT)) unregister_code(KC_RSFT);
if (unicode_mods & MOD_BIT(KC_LCTL)) unregister_code(KC_LCTL); if (mods & MOD_BIT(KC_LCTL)) unregister_code(KC_LCTL);
if (unicode_mods & MOD_BIT(KC_RCTL)) unregister_code(KC_RCTL); if (mods & MOD_BIT(KC_RCTL)) unregister_code(KC_RCTL);
if (unicode_mods & MOD_BIT(KC_LALT)) unregister_code(KC_LALT); if (mods & MOD_BIT(KC_LALT)) unregister_code(KC_LALT);
if (unicode_mods & MOD_BIT(KC_RALT)) unregister_code(KC_RALT); if (mods & MOD_BIT(KC_RALT)) unregister_code(KC_RALT);
if (unicode_mods & MOD_BIT(KC_LGUI)) unregister_code(KC_LGUI); if (mods & MOD_BIT(KC_LGUI)) unregister_code(KC_LGUI);
if (unicode_mods & MOD_BIT(KC_RGUI)) unregister_code(KC_RGUI); if (mods & MOD_BIT(KC_RGUI)) unregister_code(KC_RGUI);
switch(input_mode) { switch(input_mode) {
case UC_OSX: case UC_OSX:
@ -63,15 +65,15 @@ void unicode_input_finish (void) {
break; break;
} }
// reregister previously set unicode_mods // reregister previously set mods
if (unicode_mods & MOD_BIT(KC_LSFT)) register_code(KC_LSFT); if (mods & MOD_BIT(KC_LSFT)) register_code(KC_LSFT);
if (unicode_mods & MOD_BIT(KC_RSFT)) register_code(KC_RSFT); if (mods & MOD_BIT(KC_RSFT)) register_code(KC_RSFT);
if (unicode_mods & MOD_BIT(KC_LCTL)) register_code(KC_LCTL); if (mods & MOD_BIT(KC_LCTL)) register_code(KC_LCTL);
if (unicode_mods & MOD_BIT(KC_RCTL)) register_code(KC_RCTL); if (mods & MOD_BIT(KC_RCTL)) register_code(KC_RCTL);
if (unicode_mods & MOD_BIT(KC_LALT)) register_code(KC_LALT); if (mods & MOD_BIT(KC_LALT)) register_code(KC_LALT);
if (unicode_mods & MOD_BIT(KC_RALT)) register_code(KC_RALT); if (mods & MOD_BIT(KC_RALT)) register_code(KC_RALT);
if (unicode_mods & MOD_BIT(KC_LGUI)) register_code(KC_LGUI); if (mods & MOD_BIT(KC_LGUI)) register_code(KC_LGUI);
if (unicode_mods & MOD_BIT(KC_RGUI)) register_code(KC_RGUI); if (mods & MOD_BIT(KC_RGUI)) register_code(KC_RGUI);
} }
void register_hex(uint16_t hex) { void register_hex(uint16_t hex) {

View file

@ -8,7 +8,6 @@
#endif #endif
static uint8_t input_mode; static uint8_t input_mode;
uint8_t unicode_mods;
void set_unicode_input_mode(uint8_t os_target); void set_unicode_input_mode(uint8_t os_target);
uint8_t get_unicode_input_mode(void); uint8_t get_unicode_input_mode(void);