diff options
author | The Android Open-Source Project <initial-contribution@android.com> | 2011-08-11 18:13:40 -0700 |
---|---|---|
committer | The Android Open-Source Project <initial-contribution@android.com> | 2011-08-11 18:13:40 -0700 |
commit | c462eb94f5e4f8b9dcb101ce4e4fcc714ddd7410 (patch) | |
tree | 60518c48dcf7f6aac791f58948e6a1bbfaaba948 /android | |
parent | 9d304115183fffcd5acb0882b70b1a5791ebe1cd (diff) | |
parent | 852434e616aba0607e71143022e8b7cb2362e639 (diff) | |
download | external_qemu-c462eb94f5e4f8b9dcb101ce4e4fcc714ddd7410.zip external_qemu-c462eb94f5e4f8b9dcb101ce4e4fcc714ddd7410.tar.gz external_qemu-c462eb94f5e4f8b9dcb101ce4e4fcc714ddd7410.tar.bz2 |
merge from tools_r13
Change-Id: Iabd0b49a5c3ad991da1b4f636ecdf881b1c271aa
Diffstat (limited to 'android')
-rw-r--r-- | android/avd/hardware-properties.ini | 12 | ||||
-rw-r--r-- | android/avd/info.c | 19 | ||||
-rw-r--r-- | android/avd/info.h | 6 | ||||
-rw-r--r-- | android/main-common.c | 5 | ||||
-rw-r--r-- | android/main.c | 25 | ||||
-rw-r--r-- | android/qemulator.c | 12 | ||||
-rw-r--r-- | android/skin/keyboard.c | 30 | ||||
-rw-r--r-- | android/skin/keyboard.h | 5 |
8 files changed, 44 insertions, 70 deletions
diff --git a/android/avd/hardware-properties.ini b/android/avd/hardware-properties.ini index 0e650bb..dabf166 100644 --- a/android/avd/hardware-properties.ini +++ b/android/avd/hardware-properties.ini @@ -83,18 +83,6 @@ default = yes abstract = Keyboard lid support description = Whether the QWERTY keyboard can be opened/closed. -# The name of the hardware charmap for this device. -# -# NOTE: This should always be the default 'qwerty2' unless you have -# modified the system image accordingly. This name is sent to -# the kernel at boot time. Using an incorrect name will result -# in an unusable machine. -name = hw.keyboard.charmap -type = string -default = qwerty2 -abstract = Keyboard charmap name -description = Name of the system keyboard charmap file. - # DPad keys name = hw.dPad type = boolean diff --git a/android/avd/info.c b/android/avd/info.c index 7e4f93e..f1514f2 100644 --- a/android/avd/info.c +++ b/android/avd/info.c @@ -1183,22 +1183,3 @@ avdInfo_getSkinInfo( AvdInfo* i, char** pSkinName, char** pSkinDir ) AFREE(skinPath); return; } - -char* -avdInfo_getCharmapFile( AvdInfo* i, const char* charmapName ) -{ - char fileNameBuff[PATH_MAX]; - const char* fileName; - - if (charmapName == NULL || charmapName[0] == '\0') - return NULL; - - if (strstr(charmapName, ".kcm") == NULL) { - snprintf(fileNameBuff, sizeof fileNameBuff, "%s.kcm", charmapName); - fileName = fileNameBuff; - } else { - fileName = charmapName; - } - - return _avdInfo_getContentOrSdkFilePath(i, fileName); -} diff --git a/android/avd/info.h b/android/avd/info.h index 34997b4..5192bb9 100644 --- a/android/avd/info.h +++ b/android/avd/info.h @@ -215,12 +215,6 @@ const char* avdInfo_getContentPath( AvdInfo* i ); */ void avdInfo_getSkinInfo( AvdInfo* i, char** pSkinName, char** pSkinDir ); -/* Find a charmap file named <charmapName>.kcm for this AVD. - * Returns the path of the file on success, or NULL if not found. - * The result string must be freed by the caller. - */ -char* avdInfo_getCharmapFile( AvdInfo* i, const char* charmapName ); - /* Returns TRUE iff in the Android build system */ int avdInfo_inAndroidBuild( AvdInfo* i ); diff --git a/android/main-common.c b/android/main-common.c index a662907..a0e5f56 100644 --- a/android/main-common.c +++ b/android/main-common.c @@ -335,6 +335,9 @@ static const struct { { NULL, NULL } }; +/* this is used by hw/events_device.c to send the charmap name to the system */ +const char* android_skin_keycharmap = NULL; + void parse_skin_files(const char* skinDirPath, const char* skinName, @@ -560,6 +563,8 @@ init_sdl_ui(AConfig* skinConfig, exit(1); } + android_skin_keycharmap = skin_keyboard_charmap_name(qemulator_get()->keyboard); + /* add an onion overlay image if needed */ if (opts->onion) { SkinImage* onion = skin_image_find_simple( opts->onion ); diff --git a/android/main.c b/android/main.c index f20ea7b..814d2ec 100644 --- a/android/main.c +++ b/android/main.c @@ -1032,30 +1032,9 @@ int main(int argc, char **argv) args[n++] = opts->http_proxy; } - if (!opts->charmap) { - /* Try to find a valid charmap name */ - char* charmap = avdInfo_getCharmapFile(avd, hw->hw_keyboard_charmap); - if (charmap != NULL) { - D("autoconfig: -charmap %s", charmap); - opts->charmap = charmap; - } - } - if (opts->charmap) { - char charmap_name[AKEYCHARMAP_NAME_SIZE]; - - if (!path_exists(opts->charmap)) { - derror("Charmap file does not exist: %s", opts->charmap); - exit(1); - } - /* We need to store the charmap name in the hardware configuration. - * However, the charmap file itself is only used by the UI component - * and doesn't need to be set to the emulation engine. - */ - kcm_extract_charmap_name(opts->charmap, charmap_name, - sizeof(charmap_name)); - AFREE(hw->hw_keyboard_charmap); - hw->hw_keyboard_charmap = ASTRDUP(charmap_name); + args[n++] = "-charmap"; + args[n++] = opts->charmap; } if (opts->memcheck) { diff --git a/android/qemulator.c b/android/qemulator.c index 35587ff..9e88356 100644 --- a/android/qemulator.c +++ b/android/qemulator.c @@ -137,7 +137,17 @@ qemulator_init( QEmulator* emulator, emulator->aconfig = aconfig; emulator->layout_file = skin_file_create_from_aconfig(aconfig, basepath); emulator->layout = emulator->layout_file->layouts; - emulator->keyboard = skin_keyboard_create(opts->charmap, opts->raw_keys); + // If we have a custom charmap use it to initialize keyboard. + // Otherwise initialize keyboard from configuration settings. + // Another way to configure keyboard to use a custom charmap would + // be saving a custom charmap name into AConfig's keyboard->charmap + // property, and calling single skin_keyboard_create_from_aconfig + // routine to initialize keyboard. + if (NULL != opts->charmap) { + emulator->keyboard = skin_keyboard_create_from_kcm(opts->charmap, opts->raw_keys); + } else { + emulator->keyboard = skin_keyboard_create_from_aconfig(aconfig, opts->raw_keys); + } emulator->window = NULL; emulator->win_x = x; emulator->win_y = y; 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 ); |