diff options
Diffstat (limited to 'android/skin')
-rw-r--r-- | android/skin/keyboard.c | 30 | ||||
-rw-r--r-- | android/skin/keyboard.h | 5 |
2 files changed, 26 insertions, 9 deletions
diff --git a/android/skin/keyboard.c b/android/skin/keyboard.c index 3371799..3ee3366 100644 --- a/android/skin/keyboard.c +++ b/android/skin/keyboard.c @@ -72,6 +72,15 @@ skin_keyboard_set_keyset( SkinKeyboard* keyboard, SkinKeyset* kset ) } +const char* +skin_keyboard_charmap_name( SkinKeyboard* keyboard ) +{ + if (keyboard && keyboard->charmap) + return keyboard->charmap->name; + + return DEFAULT_ANDROID_CHARMAP; +} + void skin_keyboard_set_rotation( SkinKeyboard* keyboard, SkinRotation rotation ) @@ -530,18 +539,25 @@ skin_keyboard_create_from_charmap_name(const char* charmap_name, } SkinKeyboard* -skin_keyboard_create( const char* kcm_file_path, int use_raw_keys ) +skin_keyboard_create_from_aconfig( AConfig* aconfig, int use_raw_keys ) { - const char* charmap_name = DEFAULT_ANDROID_CHARMAP; - char cmap_buff[AKEYCHARMAP_NAME_SIZE]; - - if (kcm_file_path != NULL) { - kcm_extract_charmap_name(kcm_file_path, cmap_buff, sizeof cmap_buff); - charmap_name = cmap_buff; + const char* charmap_name = DEFAULT_ANDROID_CHARMAP; + AConfig* node = aconfig_find( aconfig, "keyboard" ); + if (node != NULL) { + charmap_name = aconfig_str(node, "charmap", charmap_name); } return skin_keyboard_create_from_charmap_name(charmap_name, use_raw_keys); } +SkinKeyboard* +skin_keyboard_create_from_kcm( const char* kcm_file_path, int use_raw_keys ) +{ + char charmap_name[AKEYCHARMAP_NAME_SIZE]; + kcm_extract_charmap_name(kcm_file_path, charmap_name, + sizeof(charmap_name)); + return skin_keyboard_create_from_charmap_name(charmap_name, use_raw_keys); +} + void skin_keyboard_free( SkinKeyboard* keyboard ) { diff --git a/android/skin/keyboard.h b/android/skin/keyboard.h index 1c3b088..a86b132 100644 --- a/android/skin/keyboard.h +++ b/android/skin/keyboard.h @@ -24,8 +24,9 @@ typedef void (*SkinKeyCommandFunc)( void* opaque, SkinKeyCommand command, int typedef void (*SkinKeyEventFunc)( void* opaque, AndroidKeyCode code, int down ); -/* If kcm_file_path is NULL, create a keyboard using the default built-in qwerty2 charmap */ -extern SkinKeyboard* skin_keyboard_create( const char* kcm_file_path, int use_raw_keys ); +extern SkinKeyboard* skin_keyboard_create_from_aconfig( AConfig* aconfig, int use_raw_keys ); + +extern SkinKeyboard* skin_keyboard_create_from_kcm( const char* kcm_file_path, int use_raw_keys ); extern void skin_keyboard_set_keyset( SkinKeyboard* keyboard, SkinKeyset* kset ); |