forked from mirrors/qmk_userspace
merging
This commit is contained in:
commit
33e62c080c
104 changed files with 5331 additions and 312 deletions
|
@ -42,6 +42,11 @@ void unicode_input_start (void) {
|
|||
register_code(KC_PPLS);
|
||||
unregister_code(KC_PPLS);
|
||||
break;
|
||||
case UC_WINC:
|
||||
register_code(KC_RALT);
|
||||
unregister_code(KC_RALT);
|
||||
register_code(KC_U);
|
||||
unregister_code(KC_U);
|
||||
}
|
||||
wait_ms(UNICODE_TYPE_DELAY);
|
||||
}
|
||||
|
@ -78,6 +83,52 @@ bool process_unicode(uint16_t keycode, keyrecord_t *record) {
|
|||
return true;
|
||||
}
|
||||
|
||||
#ifdef UNICODEMAP_ENABLE
|
||||
__attribute__((weak))
|
||||
const uint32_t PROGMEM unicode_map[] = {
|
||||
};
|
||||
|
||||
void register_hex32(uint32_t hex) {
|
||||
uint8_t onzerostart = 1;
|
||||
for(int i = 7; i >= 0; i--) {
|
||||
if (i <= 3) {
|
||||
onzerostart = 0;
|
||||
}
|
||||
uint8_t digit = ((hex >> (i*4)) & 0xF);
|
||||
if (digit == 0) {
|
||||
if (onzerostart == 0) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__((weak))
|
||||
void unicode_map_input_error() {}
|
||||
|
||||
bool process_unicode_map(uint16_t keycode, keyrecord_t *record) {
|
||||
if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) {
|
||||
const uint32_t* map = unicode_map;
|
||||
uint16_t index = keycode & 0x7FF;
|
||||
uint32_t code = pgm_read_dword_far(&map[index]);
|
||||
if ((code > 0xFFFF && input_mode == UC_OSX) || (code > 0xFFFFF && input_mode == UC_LNX)) {
|
||||
// when character is out of range supported by the OS
|
||||
unicode_map_input_error();
|
||||
} else {
|
||||
unicode_input_start();
|
||||
register_hex32(code);
|
||||
unicode_input_finish();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef UCIS_ENABLE
|
||||
qk_ucis_state_t qk_ucis_state;
|
||||
|
||||
|
|
|
@ -3,10 +3,11 @@
|
|||
|
||||
#include "quantum.h"
|
||||
|
||||
#define UC_OSX 0
|
||||
#define UC_LNX 1
|
||||
#define UC_WIN 2
|
||||
#define UC_BSD 3
|
||||
#define UC_OSX 0 // Mac OS X
|
||||
#define UC_LNX 1 // Linux
|
||||
#define UC_WIN 2 // Windows 'HexNumpad'
|
||||
#define UC_BSD 3 // BSD (not implemented)
|
||||
#define UC_WINC 4 // WinCompose https://github.com/samhocevar/wincompose
|
||||
|
||||
#ifndef UNICODE_TYPE_DELAY
|
||||
#define UNICODE_TYPE_DELAY 10
|
||||
|
@ -20,6 +21,10 @@ void register_hex(uint16_t hex);
|
|||
|
||||
bool process_unicode(uint16_t keycode, keyrecord_t *record);
|
||||
|
||||
#ifdef UNICODEMAP_ENABLE
|
||||
bool process_unicode_map(uint16_t keycode, keyrecord_t *record);
|
||||
#endif
|
||||
|
||||
#ifdef UCIS_ENABLE
|
||||
#ifndef UCIS_MAX_SYMBOL_LENGTH
|
||||
#define UCIS_MAX_SYMBOL_LENGTH 32
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue