diff options
author | Vladimir Chtchetkine <vchtchetkine@google.com> | 2010-07-07 15:57:00 -0700 |
---|---|---|
committer | Vladimir Chtchetkine <vchtchetkine@google.com> | 2010-07-07 16:49:12 -0700 |
commit | 71bb14f826775867d16e7d382cfdc48e6ca46ccb (patch) | |
tree | 9e533673a8c4f7e8bc4b2b1f83589196e0957c0f /android/console.c | |
parent | a21ac6912568a1d36a2919669f905bc58be21244 (diff) | |
download | external_qemu-71bb14f826775867d16e7d382cfdc48e6ca46ccb.zip external_qemu-71bb14f826775867d16e7d382cfdc48e6ca46ccb.tar.gz external_qemu-71bb14f826775867d16e7d382cfdc48e6ca46ccb.tar.bz2 |
Move key event generation out of the UI realm into neutral space.
Abstracted keycode event array into keycode_array.[hc],
Moved key to keycode translation into charmap.c
Change-Id: I4de0c9853fa93d675895fc361e62ee36c1c0a652
Diffstat (limited to 'android/console.c')
-rw-r--r-- | android/console.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/android/console.c b/android/console.c index c6b8a4e..8dc8c98 100644 --- a/android/console.c +++ b/android/console.c @@ -46,8 +46,9 @@ #include <unistd.h> #include <fcntl.h> #include "android/hw-events.h" -#include "android/skin/keyboard.h" #include "user-events.h" +#include "android/keycode-array.h" +#include "android/charmap.h" #if defined(CONFIG_SLIRP) #include "libslirp.h" @@ -701,7 +702,7 @@ do_network_speed( ControlClient client, char* args ) netshaper_set_rate( slirp_shaper_out, qemu_net_upload_speed ); if (android_modem) { - amodem_set_data_network_type( android_modem, + amodem_set_data_network_type( android_modem, android_parse_network_type( args ) ); } return 0; @@ -1793,21 +1794,26 @@ utf8_next( unsigned char* *pp, unsigned char* end ) static int do_event_text( ControlClient client, char* args ) { - SkinKeyboard* keyboard; + AKeycodeBuffer keycodes; unsigned char* p = (unsigned char*) args; unsigned char* end = p + strlen(args); int textlen; + const AKeyCharmap* charmap; if (!args) { control_write( client, "KO: argument missing, try 'event text <message>'\r\n" ); return -1; } - keyboard = android_emulator_get_keyboard(); - if (keyboard == NULL) { - control_write( client, "KO: no keyboard active in current device layout/config\r\n" ); + + /* Get default charmap. */ + charmap = android_get_charmap_by_index(0); + if (charmap == NULL) { + control_write( client, "KO: no character map active in current device layout/config\r\n" ); return -1; } + keycodes.keycode_count = 0; + /* un-secape message text into proper utf-8 (conversion happens in-site) */ textlen = strlen((char*)p); textlen = sms_utf8_from_message_str( args, textlen, (unsigned char*)p, textlen ); @@ -1828,9 +1834,9 @@ do_event_text( ControlClient client, char* args ) if (c <= 0) break; - skin_keyboard_process_unicode_event( keyboard, (unsigned)c, 1 ); - skin_keyboard_process_unicode_event( keyboard, (unsigned)c, 0 ); - skin_keyboard_flush( keyboard ); + android_charmap_reverse_map_unicode( NULL, (unsigned)c, 1, &keycodes ); + android_charmap_reverse_map_unicode( NULL, (unsigned)c, 0, &keycodes ); + android_keycodes_flush( &keycodes ); } return 0; |