@ -18,9 +18,7 @@ void set_unicode_input_mode(uint8_t os_target)
input_mode = os_target ;
input_mode = os_target ;
}
}
bool process_unicode ( uint16_t keycode , keyrecord_t * record ) {
void unicode_input_start ( void ) {
if ( keycode > QK_UNICODE & & record - > event . pressed ) {
uint16_t unicode = keycode & 0x7FFF ;
switch ( input_mode ) {
switch ( input_mode ) {
case UC_OSX :
case UC_OSX :
register_code ( KC_LALT ) ;
register_code ( KC_LALT ) ;
@ -30,6 +28,8 @@ bool process_unicode(uint16_t keycode, keyrecord_t *record) {
register_code ( KC_LSFT ) ;
register_code ( KC_LSFT ) ;
register_code ( KC_U ) ;
register_code ( KC_U ) ;
unregister_code ( KC_U ) ;
unregister_code ( KC_U ) ;
unregister_code ( KC_LSFT ) ;
unregister_code ( KC_LCTL ) ;
break ;
break ;
case UC_WIN :
case UC_WIN :
register_code ( KC_LALT ) ;
register_code ( KC_LALT ) ;
@ -37,21 +37,35 @@ bool process_unicode(uint16_t keycode, keyrecord_t *record) {
unregister_code ( KC_PPLS ) ;
unregister_code ( KC_PPLS ) ;
break ;
break ;
}
}
for ( int i = 3 ; i > = 0 ; i - - ) {
}
uint8_t digit = ( ( unicode > > ( i * 4 ) ) & 0xF ) ;
register_code ( hex_to_keycode ( digit ) ) ;
void unicode_input_finish ( void ) {
unregister_code ( hex_to_keycode ( digit ) ) ;
}
switch ( input_mode ) {
switch ( input_mode ) {
case UC_OSX :
case UC_OSX :
case UC_WIN :
case UC_WIN :
unregister_code ( KC_LALT ) ;
unregister_code ( KC_LALT ) ;
break ;
break ;
case UC_LNX :
case UC_LNX :
unregister_code ( KC_LCTL ) ;
register_code ( KC_SPC ) ;
unregister_code ( KC_LSFT ) ;
unregister_code ( KC_SPC ) ;
break ;
break ;
}
}
}
void register_hex ( uint16_t hex ) {
for ( int i = 3 ; i > = 0 ; i - - ) {
uint8_t digit = ( ( hex > > ( i * 4 ) ) & 0xF ) ;
register_code ( hex_to_keycode ( digit ) ) ;
unregister_code ( hex_to_keycode ( digit ) ) ;
}
}
bool process_unicode ( uint16_t keycode , keyrecord_t * record ) {
if ( keycode > QK_UNICODE & & record - > event . pressed ) {
uint16_t unicode = keycode & 0x7FFF ;
unicode_input_start ( ) ;
register_hex ( unicode ) ;
unicode_input_finish ( ) ;
}
}
return true ;
return true ;
}
}