diff options
author | Junichi Monma <monma@google.com> | 2012-04-24 16:13:54 +0900 |
---|---|---|
committer | Junichi Monma <monma@google.com> | 2012-04-25 16:54:42 +0900 |
commit | 59aefa242169b7a51c2381daee58ff22fd1834ce (patch) | |
tree | 32891e5b422a366654d5ac8893cf2d83e50a05ac | |
parent | 5a7493236fe08b352f8b975e841de4c5357caa08 (diff) | |
download | OpenWnn-o-iot-preview-5.tar.gz |
Update OpenWnn based on ICS.android-wear-o-preview-4android-wear-o-preview-3android-wear-n-preview-3android-wear-n-preview-2android-wear-n-preview-1android-wear-7.1.1_r1android-wear-5.1.1_r1android-wear-5.1.0_r1android-wear-5.0.0_r1android-sdk-support_r11android-sdk-4.4.2_r1.0.1android-sdk-4.4.2_r1android-o-preview-4android-o-preview-3android-o-preview-2android-o-preview-1android-o-iot-preview-5android-n-preview-5android-n-preview-4android-n-preview-3android-n-preview-2android-n-preview-1android-n-mr2-preview-2android-n-mr2-preview-1android-n-mr1-preview-2android-n-mr1-preview-1android-n-iot-preview-4android-n-iot-preview-2android-m-preview-2android-m-preview-1android-m-previewandroid-l-preview_r2android-cts_7.1_r1android-cts-7.1_r9android-cts-7.1_r8android-cts-7.1_r7android-cts-7.1_r6android-cts-7.1_r5android-cts-7.1_r4android-cts-7.1_r3android-cts-7.1_r29android-cts-7.1_r28android-cts-7.1_r27android-cts-7.1_r26android-cts-7.1_r25android-cts-7.1_r24android-cts-7.1_r23android-cts-7.1_r22android-cts-7.1_r21android-cts-7.1_r20android-cts-7.1_r2android-cts-7.1_r19android-cts-7.1_r18android-cts-7.1_r17android-cts-7.1_r16android-cts-7.1_r15android-cts-7.1_r14android-cts-7.1_r13android-cts-7.1_r12android-cts-7.1_r11android-cts-7.1_r10android-cts-7.1_r1android-cts-7.0_r9android-cts-7.0_r8android-cts-7.0_r7android-cts-7.0_r6android-cts-7.0_r5android-cts-7.0_r4android-cts-7.0_r33android-cts-7.0_r32android-cts-7.0_r31android-cts-7.0_r30android-cts-7.0_r3android-cts-7.0_r29android-cts-7.0_r28android-cts-7.0_r27android-cts-7.0_r26android-cts-7.0_r25android-cts-7.0_r24android-cts-7.0_r23android-cts-7.0_r22android-cts-7.0_r21android-cts-7.0_r20android-cts-7.0_r2android-cts-7.0_r19android-cts-7.0_r18android-cts-7.0_r17android-cts-7.0_r16android-cts-7.0_r15android-cts-7.0_r14android-cts-7.0_r13android-cts-7.0_r12android-cts-7.0_r11android-cts-7.0_r10android-cts-7.0_r1android-cts-6.0_r9android-cts-6.0_r8android-cts-6.0_r7android-cts-6.0_r6android-cts-6.0_r5android-cts-6.0_r4android-cts-6.0_r32android-cts-6.0_r31android-cts-6.0_r30android-cts-6.0_r3android-cts-6.0_r29android-cts-6.0_r28android-cts-6.0_r27android-cts-6.0_r26android-cts-6.0_r25android-cts-6.0_r24android-cts-6.0_r23android-cts-6.0_r22android-cts-6.0_r21android-cts-6.0_r20android-cts-6.0_r2android-cts-6.0_r19android-cts-6.0_r18android-cts-6.0_r17android-cts-6.0_r16android-cts-6.0_r15android-cts-6.0_r14android-cts-6.0_r13android-cts-6.0_r12android-cts-6.0_r1android-cts-5.1_r9android-cts-5.1_r8android-cts-5.1_r7android-cts-5.1_r6android-cts-5.1_r5android-cts-5.1_r4android-cts-5.1_r3android-cts-5.1_r28android-cts-5.1_r27android-cts-5.1_r26android-cts-5.1_r25android-cts-5.1_r24android-cts-5.1_r23android-cts-5.1_r22android-cts-5.1_r21android-cts-5.1_r20android-cts-5.1_r2android-cts-5.1_r19android-cts-5.1_r18android-cts-5.1_r17android-cts-5.1_r16android-cts-5.1_r15android-cts-5.1_r14android-cts-5.1_r13android-cts-5.1_r10android-cts-5.1_r1android-cts-5.0_r9android-cts-5.0_r8android-cts-5.0_r7android-cts-5.0_r6android-cts-5.0_r5android-cts-5.0_r4android-cts-5.0_r3android-cts-4.4_r4android-cts-4.4_r1android-cts-4.2_r2android-cts-4.2_r1android-cts-4.1_r4android-cts-4.1_r2android-cts-4.1_r1android-7.1.2_r9android-7.1.2_r8android-7.1.2_r6android-7.1.2_r5android-7.1.2_r4android-7.1.2_r39android-7.1.2_r38android-7.1.2_r37android-7.1.2_r36android-7.1.2_r33android-7.1.2_r32android-7.1.2_r30android-7.1.2_r3android-7.1.2_r29android-7.1.2_r28android-7.1.2_r27android-7.1.2_r25android-7.1.2_r24android-7.1.2_r23android-7.1.2_r2android-7.1.2_r19android-7.1.2_r18android-7.1.2_r17android-7.1.2_r16android-7.1.2_r15android-7.1.2_r14android-7.1.2_r13android-7.1.2_r12android-7.1.2_r11android-7.1.2_r10android-7.1.2_r1android-7.1.1_r9android-7.1.1_r8android-7.1.1_r7android-7.1.1_r61android-7.1.1_r60android-7.1.1_r6android-7.1.1_r59android-7.1.1_r58android-7.1.1_r57android-7.1.1_r56android-7.1.1_r55android-7.1.1_r54android-7.1.1_r53android-7.1.1_r52android-7.1.1_r51android-7.1.1_r50android-7.1.1_r49android-7.1.1_r48android-7.1.1_r47android-7.1.1_r46android-7.1.1_r45android-7.1.1_r44android-7.1.1_r43android-7.1.1_r42android-7.1.1_r41android-7.1.1_r40android-7.1.1_r4android-7.1.1_r39android-7.1.1_r38android-7.1.1_r35android-7.1.1_r33android-7.1.1_r32android-7.1.1_r31android-7.1.1_r3android-7.1.1_r28android-7.1.1_r27android-7.1.1_r26android-7.1.1_r25android-7.1.1_r24android-7.1.1_r23android-7.1.1_r22android-7.1.1_r21android-7.1.1_r20android-7.1.1_r2android-7.1.1_r17android-7.1.1_r16android-7.1.1_r15android-7.1.1_r14android-7.1.1_r13android-7.1.1_r12android-7.1.1_r11android-7.1.1_r10android-7.1.1_r1android-7.1.0_r7android-7.1.0_r6android-7.1.0_r5android-7.1.0_r4android-7.1.0_r3android-7.1.0_r2android-7.1.0_r1android-7.0.0_r9android-7.0.0_r8android-7.0.0_r7android-7.0.0_r6android-7.0.0_r5android-7.0.0_r4android-7.0.0_r36android-7.0.0_r35android-7.0.0_r34android-7.0.0_r33android-7.0.0_r32android-7.0.0_r31android-7.0.0_r30android-7.0.0_r3android-7.0.0_r29android-7.0.0_r28android-7.0.0_r27android-7.0.0_r24android-7.0.0_r21android-7.0.0_r19android-7.0.0_r17android-7.0.0_r15android-7.0.0_r14android-7.0.0_r13android-7.0.0_r12android-7.0.0_r11android-7.0.0_r10android-7.0.0_r1android-6.0.1_r9android-6.0.1_r81android-6.0.1_r80android-6.0.1_r8android-6.0.1_r79android-6.0.1_r78android-6.0.1_r77android-6.0.1_r74android-6.0.1_r73android-6.0.1_r72android-6.0.1_r70android-6.0.1_r7android-6.0.1_r69android-6.0.1_r68android-6.0.1_r67android-6.0.1_r66android-6.0.1_r65android-6.0.1_r63android-6.0.1_r62android-6.0.1_r61android-6.0.1_r60android-6.0.1_r59android-6.0.1_r58android-6.0.1_r57android-6.0.1_r56android-6.0.1_r55android-6.0.1_r54android-6.0.1_r53android-6.0.1_r52android-6.0.1_r51android-6.0.1_r50android-6.0.1_r5android-6.0.1_r49android-6.0.1_r48android-6.0.1_r47android-6.0.1_r46android-6.0.1_r45android-6.0.1_r43android-6.0.1_r42android-6.0.1_r41android-6.0.1_r40android-6.0.1_r4android-6.0.1_r33android-6.0.1_r32android-6.0.1_r31android-6.0.1_r30android-6.0.1_r3android-6.0.1_r28android-6.0.1_r27android-6.0.1_r26android-6.0.1_r25android-6.0.1_r24android-6.0.1_r22android-6.0.1_r21android-6.0.1_r20android-6.0.1_r18android-6.0.1_r17android-6.0.1_r16android-6.0.1_r13android-6.0.1_r12android-6.0.1_r11android-6.0.1_r10android-6.0.1_r1android-6.0.0_r7android-6.0.0_r6android-6.0.0_r5android-6.0.0_r41android-6.0.0_r4android-6.0.0_r3android-6.0.0_r26android-6.0.0_r25android-6.0.0_r24android-6.0.0_r23android-6.0.0_r2android-6.0.0_r13android-6.0.0_r12android-6.0.0_r11android-6.0.0_r1android-5.1.1_r9android-5.1.1_r8android-5.1.1_r7android-5.1.1_r6android-5.1.1_r5android-5.1.1_r4android-5.1.1_r38android-5.1.1_r37android-5.1.1_r36android-5.1.1_r35android-5.1.1_r34android-5.1.1_r33android-5.1.1_r30android-5.1.1_r3android-5.1.1_r29android-5.1.1_r28android-5.1.1_r26android-5.1.1_r25android-5.1.1_r24android-5.1.1_r23android-5.1.1_r22android-5.1.1_r20android-5.1.1_r2android-5.1.1_r19android-5.1.1_r18android-5.1.1_r17android-5.1.1_r16android-5.1.1_r15android-5.1.1_r14android-5.1.1_r13android-5.1.1_r12android-5.1.1_r10android-5.1.1_r1android-5.1.0_r5android-5.1.0_r4android-5.1.0_r3android-5.1.0_r1android-5.0.2_r3android-5.0.2_r1android-5.0.1_r1android-5.0.0_r7android-5.0.0_r6android-5.0.0_r5.1android-5.0.0_r5android-5.0.0_r4android-5.0.0_r3android-5.0.0_r2android-5.0.0_r1android-4.4w_r1android-4.4_r1.2.0.1android-4.4_r1.2android-4.4_r1.1.0.1android-4.4_r1.1android-4.4_r1.0.1android-4.4_r1android-4.4_r0.9android-4.4_r0.8android-4.4_r0.7android-4.4.4_r2.0.1android-4.4.4_r2android-4.4.4_r1.0.1android-4.4.4_r1android-4.4.3_r1.1.0.1android-4.4.3_r1.1android-4.4.3_r1.0.1android-4.4.3_r1android-4.4.2_r2.0.1android-4.4.2_r2android-4.4.2_r1.0.1android-4.4.2_r1android-4.4.1_r1.0.1android-4.4.1_r1android-4.3_r3.1android-4.3_r3android-4.3_r2.3android-4.3_r2.2android-4.3_r2.1android-4.3_r2android-4.3_r1.1android-4.3_r1android-4.3_r0.9.1android-4.3_r0.9android-4.3.1_r1android-4.2_r1android-4.2.2_r1.2android-4.2.2_r1.1android-4.2.2_r1android-4.2.1_r1.2android-4.2.1_r1.1android-4.2.1_r1android-4.1.2_r2.1android-4.1.2_r2android-4.1.2_r1android-4.1.1_r6.1android-4.1.1_r6android-4.1.1_r5android-4.1.1_r4android-4.1.1_r3android-4.1.1_r2android-4.1.1_r1.1android-4.1.1_r1tools_r22.2tools_r22tools_r21o-previewo-iot-preview-5nougat-releasenougat-mr2.3-releasenougat-mr2.2-releasenougat-mr2.1-releasenougat-mr2-security-releasenougat-mr2-releasenougat-mr2-pixel-releasenougat-mr2-devnougat-mr1.8-releasenougat-mr1.7-releasenougat-mr1.6-releasenougat-mr1.5-releasenougat-mr1.4-releasenougat-mr1.3-releasenougat-mr1.2-releasenougat-mr1.1-releasenougat-mr1-wear-releasenougat-mr1-volantis-releasenougat-mr1-security-releasenougat-mr1-releasenougat-mr1-flounder-releasenougat-mr1-devnougat-mr1-cts-releasenougat-mr0.5-releasenougat-dr1-releasenougat-devnougat-cts-releasenougat-bugfix-releasen-iot-preview-4n-iot-preview-2master-soongmarshmallow-releasemarshmallow-mr3-releasemarshmallow-mr2-releasemarshmallow-mr1-releasemarshmallow-mr1-devmarshmallow-dr1.6-releasemarshmallow-dr1.5-releasemarshmallow-dr1.5-devmarshmallow-dr-releasemarshmallow-dr-dragon-releasemarshmallow-dr-devmarshmallow-devmarshmallow-cts-releaselollipop-wear-releaselollipop-releaselollipop-mr1-wfc-releaselollipop-mr1-releaselollipop-mr1-fi-releaselollipop-mr1-devlollipop-mr1-cts-releaselollipop-devlollipop-cts-releaselinaro-android-6.0l-previewkitkat-wearkitkat-releasekitkat-mr2.2-releasekitkat-mr2.1-releasekitkat-mr2-releasekitkat-mr1.1-releasekitkat-mr1-releasekitkat-devkitkat-cts-releasekitkat-cts-devjb-releasejb-mr2.0.0-releasejb-mr2.0-releasejb-mr2-releasejb-mr2-devjb-mr1.1-releasejb-mr1.1-dev-plus-aospjb-mr1.1-devjb-mr1-releasejb-mr1-dev-plus-aospjb-mr1-devjb-mr0-releasejb-devidea133-weekly-releaseidea133
- Support multi screen size
- Common UI with Android IME
- Feature improvements
- Hardware keybord support
- etc.
Change-Id: Iec1dff5be9d62b8338a32e6ae3444a7cc8613c4b
570 files changed, 12969 insertions, 1419 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 2ce1ae6..f79c324 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,5 +1,5 @@ <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/ChangeLog.txt b/ChangeLog.txt new file mode 100644 index 0000000..73d6b3c --- /dev/null +++ b/ChangeLog.txt @@ -0,0 +1,98 @@ +------------------------------------------------------------------------------ + [OpenWnn ChangeLog] + + (C) Copyright OMRON SOFTWARE Co., Ltd. 2008-2012 All Rights Reserved. +------------------------------------------------------------------------------ + +[Version 1.3.6 release] Apr 12, 2012 +------------------------------------ + Update features: + * Android 4.0 (ICS) support. + * Improving Large Qwerty. + - Display style of the candidates view is changed. + * Improving usability. + - Focus in the candidate list can move arround using keyboard operation. + - Layout of soft keyboard is changed. + - Layout of symbol list is changed. + - Layout of emoticon list is changed. + - Support for H/W12key + - Support for Bluetooth Keyboard + + Bug fix: + * If the ICS, bug when displaying the user dictionary, Exception occurs. + * Corresponding vulnerability of DB files + +[Version 1.3.5 release] Dec 25, 2009 +------------------------------------ + Update features: + * Importing some improvement from iWnn IME. + + Bug fix: + * Bug of Romaji-to-Kana conversion on phonetic text field is fixed. + * Some minor bugs are fixed. + +[Version 1.3.4 release] Oct 29, 2009 +------------------------------------ + Bug fix: + * User Dictionary's bug on WVGA is fixed. + * Hardware keyboard support on Android 2.0 (eclair) + +[Version 1.3.3 release] Sep 30, 2009 +------------------------------------ + Update features: + * Android 2.0 (eclair) support. + +[Version 1.3.2 internal version] Sep 25, 2009 +--------------------------------------------- + Update features: + * Android 1.6 (donut) support. + * Adding images for 240dpi display. + * Japanese input on E-mail address field is allowed. + +[Version 1.3.1 release] Jun 12, 2009 +------------------------------------ + Update features: + * Emoji is disabled. + * Improving display size compatibility. + +[Version 1.3 release] May 14, 2009 +------------------------------------ + Update features: + * Improving usability. + - Layout of software keyboards are changed. + - Display style of the candidates view is changed. + - Simple tutorial is added. + * Improving speed of registering to the learning dictionary. + + Bug fix: + * Some minor bugs are fixed. + +[Version 1.2 release] Mar 27, 2009 +------------------------------------ + The first release implemented following features: + * (Simplified) Chinese input method + + Update features: + * Switcher of "Auto Capitalization" to the setting menu is added. + * Changer of the keyboard image to the setting menu is added. + * User dictionary manager's user interface is changed. + * Changes for improving usability. + + Bug fix: + * Some minor bugs are fixed. + +------------------------------------------------------------------------------ +[Version 1.1 release] Feb. 23, 2009 +------------------------------------- + The first release implemented following features: + * Japanese input method + * English input method + +------------------------------------------------------------------------------ +[Version 1.0 release] Dec 04, 2008 +------------------------------------- + The first release implemented following features: + * Dictionary search library + * English dictionary + +------------------------------------------------------------------------------ @@ -1,9 +1,9 @@ ------------------------------------------------------------------------------- OpenWnn Japnese README - Version 1.3.5 - - (C) Copyright OMRON SOFTWARE Co., Ltd. 2008,2009 All Rights Reserved. + Version 1.3.6 + + (C) Copyright OMRON SOFTWARE Co., Ltd. 2008-2012 All Rights Reserved. ------------------------------------------------------------------------------- 1. About OpenWnn @@ -83,18 +83,38 @@ *.png | drawable-ja/ | *.png | + drawable-xlarge/ | + *.xml | + *.png | + drawable-xlarge-hdpi/ | + *.xml | + *.png | + drawable-xlarge-land-hdpi/ | + *.png | layout/ | *.xml | + layout-xlarge/ | + *.xml | raw/ | type.ogg | values/ | *.xml | values-ja/ | *.xml | + values-land/ | + *.xml | + values-xlarge/ | + *.xml | + values-xlarge-land/ | + *.xml | values-zh-rCN | *.xml | xml/ | *.xml | + xml-land/ | + *.xml | + xml-xlarge/ | + *.xml | src/ IME source code (Java) jp/ | diff --git a/libs/libwnnDictionary/Android.mk b/libs/libwnnDictionary/Android.mk index e14069f..b7b88b2 100644 --- a/libs/libwnnDictionary/Android.mk +++ b/libs/libwnnDictionary/Android.mk @@ -30,6 +30,4 @@ LOCAL_C_INCLUDES += \ LOCAL_CFLAGS += \ -O - - include $(BUILD_SHARED_LIBRARY) diff --git a/libs/libwnnDictionary/OpenWnnDictionaryImplJni.c b/libs/libwnnDictionary/OpenWnnDictionaryImplJni.c index 133888d..b112baa 100644 --- a/libs/libwnnDictionary/OpenWnnDictionaryImplJni.c +++ b/libs/libwnnDictionary/OpenWnnDictionaryImplJni.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/OpenWnnJni.h b/libs/libwnnDictionary/OpenWnnJni.h index 360d558..bd35999 100644 --- a/libs/libwnnDictionary/OpenWnnJni.h +++ b/libs/libwnnDictionary/OpenWnnJni.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/engine/ndapi.c b/libs/libwnnDictionary/engine/ndapi.c index a41cdab..55971c6 100644 --- a/libs/libwnnDictionary/engine/ndapi.c +++ b/libs/libwnnDictionary/engine/ndapi.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/engine/ndbdic.c b/libs/libwnnDictionary/engine/ndbdic.c index fbb387f..6cf73da 100644 --- a/libs/libwnnDictionary/engine/ndbdic.c +++ b/libs/libwnnDictionary/engine/ndbdic.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/engine/ndcommon.c b/libs/libwnnDictionary/engine/ndcommon.c index d3d493f..fc1c25a 100644 --- a/libs/libwnnDictionary/engine/ndcommon.c +++ b/libs/libwnnDictionary/engine/ndcommon.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/engine/ndfdic.c b/libs/libwnnDictionary/engine/ndfdic.c index a737943..65a842e 100644 --- a/libs/libwnnDictionary/engine/ndfdic.c +++ b/libs/libwnnDictionary/engine/ndfdic.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/engine/ndldic.c b/libs/libwnnDictionary/engine/ndldic.c index f7658d2..d140ea2 100644 --- a/libs/libwnnDictionary/engine/ndldic.c +++ b/libs/libwnnDictionary/engine/ndldic.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/engine/ndrdic.c b/libs/libwnnDictionary/engine/ndrdic.c index 15c5712..b8fe634 100644 --- a/libs/libwnnDictionary/engine/ndrdic.c +++ b/libs/libwnnDictionary/engine/ndrdic.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/engine/neapi.c b/libs/libwnnDictionary/engine/neapi.c index 49d5aed..4b59aac 100644 --- a/libs/libwnnDictionary/engine/neapi.c +++ b/libs/libwnnDictionary/engine/neapi.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/engine/necode.c b/libs/libwnnDictionary/engine/necode.c index 9bab3fa..ca33186 100644 --- a/libs/libwnnDictionary/engine/necode.c +++ b/libs/libwnnDictionary/engine/necode.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/engine/nj_str.c b/libs/libwnnDictionary/engine/nj_str.c index d450e85..1892458 100644 --- a/libs/libwnnDictionary/engine/nj_str.c +++ b/libs/libwnnDictionary/engine/nj_str.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/include/nj_dic.h b/libs/libwnnDictionary/include/nj_dic.h index c2c4b98..47b54ac 100644 --- a/libs/libwnnDictionary/include/nj_dic.h +++ b/libs/libwnnDictionary/include/nj_dic.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/include/nj_err.h b/libs/libwnnDictionary/include/nj_err.h index 4f7a214..3b4010c 100644 --- a/libs/libwnnDictionary/include/nj_err.h +++ b/libs/libwnnDictionary/include/nj_err.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/include/nj_ext.h b/libs/libwnnDictionary/include/nj_ext.h index 1a08bbf..c2e7356 100644 --- a/libs/libwnnDictionary/include/nj_ext.h +++ b/libs/libwnnDictionary/include/nj_ext.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/include/nj_lib.h b/libs/libwnnDictionary/include/nj_lib.h index 3a89200..d4dae0d 100644 --- a/libs/libwnnDictionary/include/nj_lib.h +++ b/libs/libwnnDictionary/include/nj_lib.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/include/njd.h b/libs/libwnnDictionary/include/njd.h index ae3b338..937a009 100644 --- a/libs/libwnnDictionary/include/njd.h +++ b/libs/libwnnDictionary/include/njd.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/include/njx_lib.h b/libs/libwnnDictionary/include/njx_lib.h index 8ff6b03..91755e7 100644 --- a/libs/libwnnDictionary/include/njx_lib.h +++ b/libs/libwnnDictionary/include/njx_lib.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/jp_co_omronsoft_openwnn_OpenWnnDictionaryImplJni.h b/libs/libwnnDictionary/jp_co_omronsoft_openwnn_OpenWnnDictionaryImplJni.h index 45700bf..bf5f7df 100644 --- a/libs/libwnnDictionary/jp_co_omronsoft_openwnn_OpenWnnDictionaryImplJni.h +++ b/libs/libwnnDictionary/jp_co_omronsoft_openwnn_OpenWnnDictionaryImplJni.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnDictionary/predef_table.h b/libs/libwnnDictionary/predef_table.h index 703777d..34b6b66 100644 --- a/libs/libwnnDictionary/predef_table.h +++ b/libs/libwnnDictionary/predef_table.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnEngDic/Android.mk b/libs/libwnnEngDic/Android.mk index a71c82e..85d452a 100644 --- a/libs/libwnnEngDic/Android.mk +++ b/libs/libwnnEngDic/Android.mk @@ -20,6 +20,4 @@ LOCAL_C_INCLUDES += \ LOCAL_CFLAGS += \ -O - - include $(BUILD_SHARED_LIBRARY) diff --git a/libs/libwnnEngDic/WnnEngDic.c b/libs/libwnnEngDic/WnnEngDic.c index 4b92fac..9b19411 100644 --- a/libs/libwnnEngDic/WnnEngDic.c +++ b/libs/libwnnEngDic/WnnEngDic.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/libs/libwnnJpnDic/Android.mk b/libs/libwnnJpnDic/Android.mk index c2310d6..0ba69c6 100644 --- a/libs/libwnnJpnDic/Android.mk +++ b/libs/libwnnJpnDic/Android.mk @@ -20,6 +20,4 @@ LOCAL_C_INCLUDES += \ LOCAL_CFLAGS += \ -O - - include $(BUILD_SHARED_LIBRARY) diff --git a/libs/libwnnJpnDic/WnnJpnDic.c b/libs/libwnnJpnDic/WnnJpnDic.c index c019d30..d392959 100644 --- a/libs/libwnnJpnDic/WnnJpnDic.c +++ b/libs/libwnnJpnDic/WnnJpnDic.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/res/drawable-hdpi/btn_close.xml b/res/drawable-hdpi/btn_close.xml new file mode 100644 index 0000000..5af18f3 --- /dev/null +++ b/res/drawable-hdpi/btn_close.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <item android:state_pressed="false" + android:drawable="@drawable/btn_close_normal" /> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_close_pressed" /> + +</selector> diff --git a/res/drawable-hdpi/btn_close_normal.png b/res/drawable-hdpi/btn_close_normal.png Binary files differnew file mode 100644 index 0000000..ecc4dde --- /dev/null +++ b/res/drawable-hdpi/btn_close_normal.png diff --git a/res/drawable-hdpi/btn_close_pressed.png b/res/drawable-hdpi/btn_close_pressed.png Binary files differnew file mode 100644 index 0000000..49223c5 --- /dev/null +++ b/res/drawable-hdpi/btn_close_pressed.png diff --git a/res/drawable-hdpi/btn_keyboard_key.xml b/res/drawable-hdpi/btn_keyboard_key.xml new file mode 100644 index 0000000..5b3b4b1 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- Toggle keys. Use checkable/checked state. --> + + <!-- Normal keys --> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed" /> + <item + android:drawable="@drawable/btn_keyboard_key_normal" /> + +</selector> diff --git a/res/drawable-hdpi/btn_keyboard_key_2nd.xml b/res/drawable-hdpi/btn_keyboard_key_2nd.xml new file mode 100644 index 0000000..991634f --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_2nd.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- Toggle keys. Use checkable/checked state. --> + + <item android:state_checkable="true" android:state_checked="true" + android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed_on_2nd" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/btn_keyboard_key_normal_on_2nd" /> + + <!-- Normal keys --> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed_2nd" /> + <item + android:drawable="@drawable/btn_keyboard_key_normal_2nd" /> + +</selector> diff --git a/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png b/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png Binary files differnew file mode 100644 index 0000000..9fed21e --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png b/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png Binary files differnew file mode 100644 index 0000000..e6a1dce --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/res/drawable-hdpi/btn_keyboard_key_normal.9.png Binary files differnew file mode 100644 index 0000000..32168a3 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_normal.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_normal_2nd.9.png b/res/drawable-hdpi/btn_keyboard_key_normal_2nd.9.png Binary files differnew file mode 100644 index 0000000..0f43c2e --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_normal_2nd.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_normal_on_2nd.9.png b/res/drawable-hdpi/btn_keyboard_key_normal_on_2nd.9.png Binary files differnew file mode 100644 index 0000000..fe125f3 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_normal_on_2nd.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/res/drawable-hdpi/btn_keyboard_key_pressed.9.png Binary files differnew file mode 100644 index 0000000..5e52bb2 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_pressed.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed_2nd.9.png b/res/drawable-hdpi/btn_keyboard_key_pressed_2nd.9.png Binary files differnew file mode 100644 index 0000000..9a79706 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_pressed_2nd.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_pressed_on_2nd.9.png b/res/drawable-hdpi/btn_keyboard_key_pressed_on_2nd.9.png Binary files differnew file mode 100644 index 0000000..0e12b9f --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_pressed_on_2nd.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_std.xml b/res/drawable-hdpi/btn_keyboard_key_std.xml new file mode 100644 index 0000000..b30ba33 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_std.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- Copyright (C) 2008 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- Toggle keys. Use checkable/checked state. --> + + <item android:state_checkable="true" android:state_checked="true" + android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_std_pressed_on" /> + <item android:state_checkable="true" android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_std_pressed_off" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/btn_keyboard_key_std_normal_on" /> + <item android:state_checkable="true" + android:drawable="@drawable/btn_keyboard_key_std_normal_off" /> + + <!-- Normal keys --> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_std_pressed" /> + <item + android:drawable="@drawable/btn_keyboard_key_std_normal" /> + +</selector> diff --git a/res/drawable-hdpi/btn_keyboard_key_std_normal.9.png b/res/drawable-hdpi/btn_keyboard_key_std_normal.9.png Binary files differnew file mode 100644 index 0000000..42c7c14 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_std_normal.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_std_normal_off.9.png b/res/drawable-hdpi/btn_keyboard_key_std_normal_off.9.png Binary files differnew file mode 100644 index 0000000..01e2506 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_std_normal_off.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_std_normal_on.9.png b/res/drawable-hdpi/btn_keyboard_key_std_normal_on.9.png Binary files differnew file mode 100644 index 0000000..83c6eb3 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_std_normal_on.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_std_pressed.9.png b/res/drawable-hdpi/btn_keyboard_key_std_pressed.9.png Binary files differnew file mode 100644 index 0000000..e047eaf --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_std_pressed.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_std_pressed_off.9.png b/res/drawable-hdpi/btn_keyboard_key_std_pressed_off.9.png Binary files differnew file mode 100644 index 0000000..218a2d2 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_std_pressed_off.9.png diff --git a/res/drawable-hdpi/btn_keyboard_key_std_pressed_on.9.png b/res/drawable-hdpi/btn_keyboard_key_std_pressed_on.9.png Binary files differnew file mode 100644 index 0000000..afe4951 --- /dev/null +++ b/res/drawable-hdpi/btn_keyboard_key_std_pressed_on.9.png diff --git a/res/drawable-hdpi/cand_back.xml b/res/drawable-hdpi/cand_back.xml new file mode 100644 index 0000000..7033505 --- /dev/null +++ b/res/drawable-hdpi/cand_back.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" + android:drawable="@drawable/cand_back_pressed" /> + <item android:state_focused="true" + android:drawable="@drawable/cand_back_focused" /> + <item android:state_pressed="false" + android:drawable="@drawable/cand_back_normal" /> +</selector> diff --git a/res/drawable-hdpi/cand_back_1line.xml b/res/drawable-hdpi/cand_back_1line.xml new file mode 100644 index 0000000..018eddb --- /dev/null +++ b/res/drawable-hdpi/cand_back_1line.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" + android:drawable="@drawable/cand_back_pressed" /> + <item android:state_focused="true" + android:drawable="@drawable/cand_back_focused" /> + <item android:state_pressed="false" + android:drawable="@drawable/cand_back_normal_1line" /> +</selector> diff --git a/res/drawable-hdpi/cand_back_focuse.xml b/res/drawable-hdpi/cand_back_focuse.xml new file mode 100644 index 0000000..9f48c62 --- /dev/null +++ b/res/drawable-hdpi/cand_back_focuse.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" + android:drawable="@drawable/cand_back_pressed" /> + <item android:state_pressed="false" + android:drawable="@drawable/cand_back_focused" /> +</selector> diff --git a/res/drawable-hdpi/cand_back_focused.9.png b/res/drawable-hdpi/cand_back_focused.9.png Binary files differnew file mode 100644 index 0000000..0803b70 --- /dev/null +++ b/res/drawable-hdpi/cand_back_focused.9.png diff --git a/res/drawable-hdpi/cand_back_normal.9.png b/res/drawable-hdpi/cand_back_normal.9.png Binary files differindex c5c8d04..6b829f5 100644 --- a/res/drawable-hdpi/cand_back_normal.9.png +++ b/res/drawable-hdpi/cand_back_normal.9.png diff --git a/res/drawable-hdpi/cand_back_normal_1line.9.png b/res/drawable-hdpi/cand_back_normal_1line.9.png Binary files differnew file mode 100644 index 0000000..523e905 --- /dev/null +++ b/res/drawable-hdpi/cand_back_normal_1line.9.png diff --git a/res/drawable-hdpi/cand_down.png b/res/drawable-hdpi/cand_down.png Binary files differindex 4122bdf..3a8e2e9 100644 --- a/res/drawable-hdpi/cand_down.png +++ b/res/drawable-hdpi/cand_down.png diff --git a/res/drawable-hdpi/cand_down_press.png b/res/drawable-hdpi/cand_down_press.png Binary files differindex 4d38c28..1a61074 100644 --- a/res/drawable-hdpi/cand_down_press.png +++ b/res/drawable-hdpi/cand_down_press.png diff --git a/res/drawable-hdpi/cand_left.png b/res/drawable-hdpi/cand_left.png Binary files differnew file mode 100644 index 0000000..e375f26 --- /dev/null +++ b/res/drawable-hdpi/cand_left.png diff --git a/res/drawable-hdpi/cand_right.png b/res/drawable-hdpi/cand_right.png Binary files differnew file mode 100644 index 0000000..d38ae75 --- /dev/null +++ b/res/drawable-hdpi/cand_right.png diff --git a/res/drawable-hdpi/cand_tab.xml b/res/drawable-hdpi/cand_tab.xml new file mode 100644 index 0000000..aed0a42 --- /dev/null +++ b/res/drawable-hdpi/cand_tab.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" + android:drawable="@drawable/tab_press" /> + <item android:state_pressed="false" + android:drawable="@drawable/tab_select" /> +</selector> diff --git a/res/drawable-hdpi/cand_tab_noselect.xml b/res/drawable-hdpi/cand_tab_noselect.xml new file mode 100644 index 0000000..761da6e --- /dev/null +++ b/res/drawable-hdpi/cand_tab_noselect.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" + android:drawable="@drawable/tab_press" /> + <item android:state_pressed="false" + android:drawable="@drawable/tab_no_select" /> +</selector> diff --git a/res/drawable-hdpi/cand_up.png b/res/drawable-hdpi/cand_up.png Binary files differindex ce8b563..5774597 100644 --- a/res/drawable-hdpi/cand_up.png +++ b/res/drawable-hdpi/cand_up.png diff --git a/res/drawable-hdpi/cand_up_press.png b/res/drawable-hdpi/cand_up_press.png Binary files differindex cedbc9f..34a7979 100644 --- a/res/drawable-hdpi/cand_up_press.png +++ b/res/drawable-hdpi/cand_up_press.png diff --git a/res/drawable-hdpi/candidate.png b/res/drawable-hdpi/candidate.png Binary files differnew file mode 100644 index 0000000..e8f8f3f --- /dev/null +++ b/res/drawable-hdpi/candidate.png diff --git a/res/drawable-hdpi/candidate_top.9.png b/res/drawable-hdpi/candidate_top.9.png Binary files differnew file mode 100644 index 0000000..fb6018f --- /dev/null +++ b/res/drawable-hdpi/candidate_top.9.png diff --git a/res/drawable-hdpi/key_12key_alpha0.png b/res/drawable-hdpi/key_12key_alpha0.png Binary files differindex e3360d7..6b93bd0 100644 --- a/res/drawable-hdpi/key_12key_alpha0.png +++ b/res/drawable-hdpi/key_12key_alpha0.png diff --git a/res/drawable-hdpi/key_12key_alpha0_b.png b/res/drawable-hdpi/key_12key_alpha0_b.png Binary files differindex 2392459..2b0032f 100644 --- a/res/drawable-hdpi/key_12key_alpha0_b.png +++ b/res/drawable-hdpi/key_12key_alpha0_b.png diff --git a/res/drawable-hdpi/key_12key_alpha1.png b/res/drawable-hdpi/key_12key_alpha1.png Binary files differindex 559a0d5..1e3a2a4 100644 --- a/res/drawable-hdpi/key_12key_alpha1.png +++ b/res/drawable-hdpi/key_12key_alpha1.png diff --git a/res/drawable-hdpi/key_12key_alpha1_b.png b/res/drawable-hdpi/key_12key_alpha1_b.png Binary files differindex af2466e..4ac7bd3 100644 --- a/res/drawable-hdpi/key_12key_alpha1_b.png +++ b/res/drawable-hdpi/key_12key_alpha1_b.png diff --git a/res/drawable-hdpi/key_12key_alpha2.png b/res/drawable-hdpi/key_12key_alpha2.png Binary files differindex 970c4e4..3e37d05 100644 --- a/res/drawable-hdpi/key_12key_alpha2.png +++ b/res/drawable-hdpi/key_12key_alpha2.png diff --git a/res/drawable-hdpi/key_12key_alpha2_b.png b/res/drawable-hdpi/key_12key_alpha2_b.png Binary files differindex 2dd2897..2a23205 100644 --- a/res/drawable-hdpi/key_12key_alpha2_b.png +++ b/res/drawable-hdpi/key_12key_alpha2_b.png diff --git a/res/drawable-hdpi/key_12key_alpha3.png b/res/drawable-hdpi/key_12key_alpha3.png Binary files differindex c4c031f..e6212f0 100644 --- a/res/drawable-hdpi/key_12key_alpha3.png +++ b/res/drawable-hdpi/key_12key_alpha3.png diff --git a/res/drawable-hdpi/key_12key_alpha3_b.png b/res/drawable-hdpi/key_12key_alpha3_b.png Binary files differindex 2c12a40..51eefdf 100644 --- a/res/drawable-hdpi/key_12key_alpha3_b.png +++ b/res/drawable-hdpi/key_12key_alpha3_b.png diff --git a/res/drawable-hdpi/key_12key_alpha4.png b/res/drawable-hdpi/key_12key_alpha4.png Binary files differindex cd4d00c..60faf68 100644 --- a/res/drawable-hdpi/key_12key_alpha4.png +++ b/res/drawable-hdpi/key_12key_alpha4.png diff --git a/res/drawable-hdpi/key_12key_alpha4_b.png b/res/drawable-hdpi/key_12key_alpha4_b.png Binary files differindex 5b98435..b125b17 100644 --- a/res/drawable-hdpi/key_12key_alpha4_b.png +++ b/res/drawable-hdpi/key_12key_alpha4_b.png diff --git a/res/drawable-hdpi/key_12key_alpha5.png b/res/drawable-hdpi/key_12key_alpha5.png Binary files differindex 9f0e92b..3a597ca 100644 --- a/res/drawable-hdpi/key_12key_alpha5.png +++ b/res/drawable-hdpi/key_12key_alpha5.png diff --git a/res/drawable-hdpi/key_12key_alpha5_b.png b/res/drawable-hdpi/key_12key_alpha5_b.png Binary files differindex f214550..27d1bd9 100644 --- a/res/drawable-hdpi/key_12key_alpha5_b.png +++ b/res/drawable-hdpi/key_12key_alpha5_b.png diff --git a/res/drawable-hdpi/key_12key_alpha6.png b/res/drawable-hdpi/key_12key_alpha6.png Binary files differindex 10d970b..65cb606 100644 --- a/res/drawable-hdpi/key_12key_alpha6.png +++ b/res/drawable-hdpi/key_12key_alpha6.png diff --git a/res/drawable-hdpi/key_12key_alpha6_b.png b/res/drawable-hdpi/key_12key_alpha6_b.png Binary files differindex d3beae0..8a9b47f 100644 --- a/res/drawable-hdpi/key_12key_alpha6_b.png +++ b/res/drawable-hdpi/key_12key_alpha6_b.png diff --git a/res/drawable-hdpi/key_12key_alpha7.png b/res/drawable-hdpi/key_12key_alpha7.png Binary files differindex cbe3cc1..50eed41 100644 --- a/res/drawable-hdpi/key_12key_alpha7.png +++ b/res/drawable-hdpi/key_12key_alpha7.png diff --git a/res/drawable-hdpi/key_12key_alpha7_b.png b/res/drawable-hdpi/key_12key_alpha7_b.png Binary files differindex 6584b60..2de0fc3 100644 --- a/res/drawable-hdpi/key_12key_alpha7_b.png +++ b/res/drawable-hdpi/key_12key_alpha7_b.png diff --git a/res/drawable-hdpi/key_12key_alpha8.png b/res/drawable-hdpi/key_12key_alpha8.png Binary files differindex 793c005..a953908 100644 --- a/res/drawable-hdpi/key_12key_alpha8.png +++ b/res/drawable-hdpi/key_12key_alpha8.png diff --git a/res/drawable-hdpi/key_12key_alpha8_b.png b/res/drawable-hdpi/key_12key_alpha8_b.png Binary files differindex f8eed53..357c51d 100644 --- a/res/drawable-hdpi/key_12key_alpha8_b.png +++ b/res/drawable-hdpi/key_12key_alpha8_b.png diff --git a/res/drawable-hdpi/key_12key_alpha9.png b/res/drawable-hdpi/key_12key_alpha9.png Binary files differindex afb0d92..dd680c5 100644 --- a/res/drawable-hdpi/key_12key_alpha9.png +++ b/res/drawable-hdpi/key_12key_alpha9.png diff --git a/res/drawable-hdpi/key_12key_alpha9_b.png b/res/drawable-hdpi/key_12key_alpha9_b.png Binary files differindex 7bdf491..1bdc3bc 100644 --- a/res/drawable-hdpi/key_12key_alpha9_b.png +++ b/res/drawable-hdpi/key_12key_alpha9_b.png diff --git a/res/drawable-hdpi/key_12key_caps.png b/res/drawable-hdpi/key_12key_caps.png Binary files differindex a4f2885..1072b52 100644 --- a/res/drawable-hdpi/key_12key_caps.png +++ b/res/drawable-hdpi/key_12key_caps.png diff --git a/res/drawable-hdpi/key_12key_caps_b.png b/res/drawable-hdpi/key_12key_caps_b.png Binary files differindex a4922e5..1072b52 100644 --- a/res/drawable-hdpi/key_12key_caps_b.png +++ b/res/drawable-hdpi/key_12key_caps_b.png diff --git a/res/drawable-hdpi/key_12key_dakuten.png b/res/drawable-hdpi/key_12key_dakuten.png Binary files differindex 6bbf010..03d71da 100644 --- a/res/drawable-hdpi/key_12key_dakuten.png +++ b/res/drawable-hdpi/key_12key_dakuten.png diff --git a/res/drawable-hdpi/key_12key_dakuten_b.png b/res/drawable-hdpi/key_12key_dakuten_b.png Binary files differindex d6e7505..dbc5224 100644 --- a/res/drawable-hdpi/key_12key_dakuten_b.png +++ b/res/drawable-hdpi/key_12key_dakuten_b.png diff --git a/res/drawable-hdpi/key_12key_del.png b/res/drawable-hdpi/key_12key_del.png Binary files differdeleted file mode 100644 index fda82fa..0000000 --- a/res/drawable-hdpi/key_12key_del.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_del_b.png b/res/drawable-hdpi/key_12key_del_b.png Binary files differdeleted file mode 100644 index e93f2e0..0000000 --- a/res/drawable-hdpi/key_12key_del_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_del_b_landscape.png b/res/drawable-hdpi/key_12key_del_b_landscape.png Binary files differdeleted file mode 100644 index e183c93..0000000 --- a/res/drawable-hdpi/key_12key_del_b_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_del_landscape.png b/res/drawable-hdpi/key_12key_del_landscape.png Binary files differdeleted file mode 100644 index b227fd4..0000000 --- a/res/drawable-hdpi/key_12key_del_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_eisukana.png b/res/drawable-hdpi/key_12key_eisukana.png Binary files differindex 0cb9637..a025bcf 100644 --- a/res/drawable-hdpi/key_12key_eisukana.png +++ b/res/drawable-hdpi/key_12key_eisukana.png diff --git a/res/drawable-hdpi/key_12key_eisukana_b.png b/res/drawable-hdpi/key_12key_eisukana_b.png Binary files differindex d6d8d30..5e84935 100644 --- a/res/drawable-hdpi/key_12key_eisukana_b.png +++ b/res/drawable-hdpi/key_12key_eisukana_b.png diff --git a/res/drawable-hdpi/key_12key_enter.png b/res/drawable-hdpi/key_12key_enter.png Binary files differdeleted file mode 100644 index 4dae5b6..0000000 --- a/res/drawable-hdpi/key_12key_enter.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_enter_b.png b/res/drawable-hdpi/key_12key_enter_b.png Binary files differdeleted file mode 100644 index 6899036..0000000 --- a/res/drawable-hdpi/key_12key_enter_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_enter_jp.png b/res/drawable-hdpi/key_12key_enter_jp.png Binary files differdeleted file mode 100644 index 59ccc07..0000000 --- a/res/drawable-hdpi/key_12key_enter_jp.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_enter_jp_b.png b/res/drawable-hdpi/key_12key_enter_jp_b.png Binary files differdeleted file mode 100644 index 3bb83f4..0000000 --- a/res/drawable-hdpi/key_12key_enter_jp_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_enter_landscape.png b/res/drawable-hdpi/key_12key_enter_landscape.png Binary files differdeleted file mode 100644 index 9bf47ab..0000000 --- a/res/drawable-hdpi/key_12key_enter_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_enter_landscape_b.png b/res/drawable-hdpi/key_12key_enter_landscape_b.png Binary files differdeleted file mode 100644 index 98b2d99..0000000 --- a/res/drawable-hdpi/key_12key_enter_landscape_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_enter_landscape_jp.png b/res/drawable-hdpi/key_12key_enter_landscape_jp.png Binary files differdeleted file mode 100644 index fd98c6b..0000000 --- a/res/drawable-hdpi/key_12key_enter_landscape_jp.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_enter_landscape_jp_b.png b/res/drawable-hdpi/key_12key_enter_landscape_jp_b.png Binary files differdeleted file mode 100644 index af60064..0000000 --- a/res/drawable-hdpi/key_12key_enter_landscape_jp_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_hiragana0.png b/res/drawable-hdpi/key_12key_hiragana0.png Binary files differindex eb25b1c..ee91793 100644 --- a/res/drawable-hdpi/key_12key_hiragana0.png +++ b/res/drawable-hdpi/key_12key_hiragana0.png diff --git a/res/drawable-hdpi/key_12key_hiragana0_b.png b/res/drawable-hdpi/key_12key_hiragana0_b.png Binary files differindex 2144788..87d2d46 100644 --- a/res/drawable-hdpi/key_12key_hiragana0_b.png +++ b/res/drawable-hdpi/key_12key_hiragana0_b.png diff --git a/res/drawable-hdpi/key_12key_hiragana1.png b/res/drawable-hdpi/key_12key_hiragana1.png Binary files differindex 32b51fa..c9dc92a 100644 --- a/res/drawable-hdpi/key_12key_hiragana1.png +++ b/res/drawable-hdpi/key_12key_hiragana1.png diff --git a/res/drawable-hdpi/key_12key_hiragana1_b.png b/res/drawable-hdpi/key_12key_hiragana1_b.png Binary files differindex f5f21f0..8e4ed36 100644 --- a/res/drawable-hdpi/key_12key_hiragana1_b.png +++ b/res/drawable-hdpi/key_12key_hiragana1_b.png diff --git a/res/drawable-hdpi/key_12key_hiragana2.png b/res/drawable-hdpi/key_12key_hiragana2.png Binary files differindex f9ba3c6..ef4d7b6 100644 --- a/res/drawable-hdpi/key_12key_hiragana2.png +++ b/res/drawable-hdpi/key_12key_hiragana2.png diff --git a/res/drawable-hdpi/key_12key_hiragana2_b.png b/res/drawable-hdpi/key_12key_hiragana2_b.png Binary files differindex d12cb7c..ba9713c 100644 --- a/res/drawable-hdpi/key_12key_hiragana2_b.png +++ b/res/drawable-hdpi/key_12key_hiragana2_b.png diff --git a/res/drawable-hdpi/key_12key_hiragana3.png b/res/drawable-hdpi/key_12key_hiragana3.png Binary files differindex 0b68d99..ae65c10 100644 --- a/res/drawable-hdpi/key_12key_hiragana3.png +++ b/res/drawable-hdpi/key_12key_hiragana3.png diff --git a/res/drawable-hdpi/key_12key_hiragana3_b.png b/res/drawable-hdpi/key_12key_hiragana3_b.png Binary files differindex 13f7c56..bc212fc 100644 --- a/res/drawable-hdpi/key_12key_hiragana3_b.png +++ b/res/drawable-hdpi/key_12key_hiragana3_b.png diff --git a/res/drawable-hdpi/key_12key_hiragana4.png b/res/drawable-hdpi/key_12key_hiragana4.png Binary files differindex 5e8a855..c745d54 100644 --- a/res/drawable-hdpi/key_12key_hiragana4.png +++ b/res/drawable-hdpi/key_12key_hiragana4.png diff --git a/res/drawable-hdpi/key_12key_hiragana4_b.png b/res/drawable-hdpi/key_12key_hiragana4_b.png Binary files differindex 3b9e352..b448f65 100644 --- a/res/drawable-hdpi/key_12key_hiragana4_b.png +++ b/res/drawable-hdpi/key_12key_hiragana4_b.png diff --git a/res/drawable-hdpi/key_12key_hiragana5.png b/res/drawable-hdpi/key_12key_hiragana5.png Binary files differindex 8c9361e..05d944b 100644 --- a/res/drawable-hdpi/key_12key_hiragana5.png +++ b/res/drawable-hdpi/key_12key_hiragana5.png diff --git a/res/drawable-hdpi/key_12key_hiragana5_b.png b/res/drawable-hdpi/key_12key_hiragana5_b.png Binary files differindex 616b43d..118c56c 100644 --- a/res/drawable-hdpi/key_12key_hiragana5_b.png +++ b/res/drawable-hdpi/key_12key_hiragana5_b.png diff --git a/res/drawable-hdpi/key_12key_hiragana6.png b/res/drawable-hdpi/key_12key_hiragana6.png Binary files differindex 4912b4f..4447e2b 100644 --- a/res/drawable-hdpi/key_12key_hiragana6.png +++ b/res/drawable-hdpi/key_12key_hiragana6.png diff --git a/res/drawable-hdpi/key_12key_hiragana6_b.png b/res/drawable-hdpi/key_12key_hiragana6_b.png Binary files differindex e92957a..5fcdfc2 100644 --- a/res/drawable-hdpi/key_12key_hiragana6_b.png +++ b/res/drawable-hdpi/key_12key_hiragana6_b.png diff --git a/res/drawable-hdpi/key_12key_hiragana7.png b/res/drawable-hdpi/key_12key_hiragana7.png Binary files differindex dbc5bc3..bc8d5e9 100644 --- a/res/drawable-hdpi/key_12key_hiragana7.png +++ b/res/drawable-hdpi/key_12key_hiragana7.png diff --git a/res/drawable-hdpi/key_12key_hiragana7_b.png b/res/drawable-hdpi/key_12key_hiragana7_b.png Binary files differindex 2eab3f6..fff76cb 100644 --- a/res/drawable-hdpi/key_12key_hiragana7_b.png +++ b/res/drawable-hdpi/key_12key_hiragana7_b.png diff --git a/res/drawable-hdpi/key_12key_hiragana8.png b/res/drawable-hdpi/key_12key_hiragana8.png Binary files differindex 63e02c9..52c9e3b 100644 --- a/res/drawable-hdpi/key_12key_hiragana8.png +++ b/res/drawable-hdpi/key_12key_hiragana8.png diff --git a/res/drawable-hdpi/key_12key_hiragana8_b.png b/res/drawable-hdpi/key_12key_hiragana8_b.png Binary files differindex 9389ced..1da4c2e 100644 --- a/res/drawable-hdpi/key_12key_hiragana8_b.png +++ b/res/drawable-hdpi/key_12key_hiragana8_b.png diff --git a/res/drawable-hdpi/key_12key_hiragana9.png b/res/drawable-hdpi/key_12key_hiragana9.png Binary files differindex 76fcf40..307509d 100644 --- a/res/drawable-hdpi/key_12key_hiragana9.png +++ b/res/drawable-hdpi/key_12key_hiragana9.png diff --git a/res/drawable-hdpi/key_12key_hiragana9_b.png b/res/drawable-hdpi/key_12key_hiragana9_b.png Binary files differindex 15471e6..a09572a 100644 --- a/res/drawable-hdpi/key_12key_hiragana9_b.png +++ b/res/drawable-hdpi/key_12key_hiragana9_b.png diff --git a/res/drawable-hdpi/key_12key_left.png b/res/drawable-hdpi/key_12key_left.png Binary files differindex 8adfc19..b04d095 100644 --- a/res/drawable-hdpi/key_12key_left.png +++ b/res/drawable-hdpi/key_12key_left.png diff --git a/res/drawable-hdpi/key_12key_left_b.png b/res/drawable-hdpi/key_12key_left_b.png Binary files differindex 767f2d4..4df6446 100644 --- a/res/drawable-hdpi/key_12key_left_b.png +++ b/res/drawable-hdpi/key_12key_left_b.png diff --git a/res/drawable-hdpi/key_12key_mode_full_alpha.png b/res/drawable-hdpi/key_12key_mode_full_alpha.png Binary files differdeleted file mode 100644 index c875bf5..0000000 --- a/res/drawable-hdpi/key_12key_mode_full_alpha.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_full_alpha_landscape.png b/res/drawable-hdpi/key_12key_mode_full_alpha_landscape.png Binary files differdeleted file mode 100644 index 927d56b..0000000 --- a/res/drawable-hdpi/key_12key_mode_full_alpha_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_full_kata.png b/res/drawable-hdpi/key_12key_mode_full_kata.png Binary files differdeleted file mode 100644 index 6786f1c..0000000 --- a/res/drawable-hdpi/key_12key_mode_full_kata.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_full_kata_landscape.png b/res/drawable-hdpi/key_12key_mode_full_kata_landscape.png Binary files differdeleted file mode 100644 index edd502c..0000000 --- a/res/drawable-hdpi/key_12key_mode_full_kata_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_full_num.png b/res/drawable-hdpi/key_12key_mode_full_num.png Binary files differdeleted file mode 100644 index d0699b5..0000000 --- a/res/drawable-hdpi/key_12key_mode_full_num.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_full_num_landscape.png b/res/drawable-hdpi/key_12key_mode_full_num_landscape.png Binary files differdeleted file mode 100644 index 7e286c5..0000000 --- a/res/drawable-hdpi/key_12key_mode_full_num_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_half_alpha.png b/res/drawable-hdpi/key_12key_mode_half_alpha.png Binary files differdeleted file mode 100644 index 3f6d081..0000000 --- a/res/drawable-hdpi/key_12key_mode_half_alpha.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_half_alpha_landscape.png b/res/drawable-hdpi/key_12key_mode_half_alpha_landscape.png Binary files differdeleted file mode 100644 index c6f5245..0000000 --- a/res/drawable-hdpi/key_12key_mode_half_alpha_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_half_kata.png b/res/drawable-hdpi/key_12key_mode_half_kata.png Binary files differdeleted file mode 100644 index 296731a..0000000 --- a/res/drawable-hdpi/key_12key_mode_half_kata.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_half_kata_landscape.png b/res/drawable-hdpi/key_12key_mode_half_kata_landscape.png Binary files differdeleted file mode 100644 index c8acb6d..0000000 --- a/res/drawable-hdpi/key_12key_mode_half_kata_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_half_num.png b/res/drawable-hdpi/key_12key_mode_half_num.png Binary files differdeleted file mode 100644 index 6172775..0000000 --- a/res/drawable-hdpi/key_12key_mode_half_num.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_half_num_landscape.png b/res/drawable-hdpi/key_12key_mode_half_num_landscape.png Binary files differdeleted file mode 100644 index fb2f61a..0000000 --- a/res/drawable-hdpi/key_12key_mode_half_num_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_hira.png b/res/drawable-hdpi/key_12key_mode_hira.png Binary files differdeleted file mode 100644 index ea62e79..0000000 --- a/res/drawable-hdpi/key_12key_mode_hira.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_mode_hira_landscape.png b/res/drawable-hdpi/key_12key_mode_hira_landscape.png Binary files differdeleted file mode 100644 index 9fd9d08..0000000 --- a/res/drawable-hdpi/key_12key_mode_hira_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_12key_period_comma.png b/res/drawable-hdpi/key_12key_period_comma.png Binary files differindex 8a4c7fc..71c2edc 100644 --- a/res/drawable-hdpi/key_12key_period_comma.png +++ b/res/drawable-hdpi/key_12key_period_comma.png diff --git a/res/drawable-hdpi/key_12key_period_comma_b.png b/res/drawable-hdpi/key_12key_period_comma_b.png Binary files differindex 29fc223..ae0b110 100644 --- a/res/drawable-hdpi/key_12key_period_comma_b.png +++ b/res/drawable-hdpi/key_12key_period_comma_b.png diff --git a/res/drawable-hdpi/key_12key_pict_sym.png b/res/drawable-hdpi/key_12key_pict_sym.png Binary files differindex 1121b98..a3f8105 100644 --- a/res/drawable-hdpi/key_12key_pict_sym.png +++ b/res/drawable-hdpi/key_12key_pict_sym.png diff --git a/res/drawable-hdpi/key_12key_reverse.png b/res/drawable-hdpi/key_12key_reverse.png Binary files differindex f1e18c3..27d4635 100644 --- a/res/drawable-hdpi/key_12key_reverse.png +++ b/res/drawable-hdpi/key_12key_reverse.png diff --git a/res/drawable-hdpi/key_12key_reverse_b.png b/res/drawable-hdpi/key_12key_reverse_b.png Binary files differindex 184c694..06bc8e9 100644 --- a/res/drawable-hdpi/key_12key_reverse_b.png +++ b/res/drawable-hdpi/key_12key_reverse_b.png diff --git a/res/drawable-hdpi/key_12key_right.png b/res/drawable-hdpi/key_12key_right.png Binary files differindex 8cb8ee9..fdbb7d8 100644 --- a/res/drawable-hdpi/key_12key_right.png +++ b/res/drawable-hdpi/key_12key_right.png diff --git a/res/drawable-hdpi/key_12key_right_b.png b/res/drawable-hdpi/key_12key_right_b.png Binary files differindex 61402c5..d0b2c75 100644 --- a/res/drawable-hdpi/key_12key_right_b.png +++ b/res/drawable-hdpi/key_12key_right_b.png diff --git a/res/drawable-hdpi/key_12key_space.png b/res/drawable-hdpi/key_12key_space.png Binary files differindex 5ddbc1e..d1fd1b4 100644 --- a/res/drawable-hdpi/key_12key_space.png +++ b/res/drawable-hdpi/key_12key_space.png diff --git a/res/drawable-hdpi/key_12key_space_b.png b/res/drawable-hdpi/key_12key_space_b.png Binary files differindex d51f357..729f558 100644 --- a/res/drawable-hdpi/key_12key_space_b.png +++ b/res/drawable-hdpi/key_12key_space_b.png diff --git a/res/drawable-hdpi/key_12key_space_jp.png b/res/drawable-hdpi/key_12key_space_jp.png Binary files differindex 22932e5..cd05723 100644 --- a/res/drawable-hdpi/key_12key_space_jp.png +++ b/res/drawable-hdpi/key_12key_space_jp.png diff --git a/res/drawable-hdpi/key_12key_space_jp_b.png b/res/drawable-hdpi/key_12key_space_jp_b.png Binary files differindex 54e8b19..95ed7ab 100644 --- a/res/drawable-hdpi/key_12key_space_jp_b.png +++ b/res/drawable-hdpi/key_12key_space_jp_b.png diff --git a/res/drawable-hdpi/key_12key_ten.png b/res/drawable-hdpi/key_12key_ten.png Binary files differindex 62f6fc4..947686f 100644 --- a/res/drawable-hdpi/key_12key_ten.png +++ b/res/drawable-hdpi/key_12key_ten.png diff --git a/res/drawable-hdpi/key_12key_ten_b.png b/res/drawable-hdpi/key_12key_ten_b.png Binary files differindex a6a4d37..c8c2e0c 100644 --- a/res/drawable-hdpi/key_12key_ten_b.png +++ b/res/drawable-hdpi/key_12key_ten_b.png diff --git a/res/drawable-hdpi/key_del.png b/res/drawable-hdpi/key_del.png Binary files differnew file mode 100644 index 0000000..0b1bdf6 --- /dev/null +++ b/res/drawable-hdpi/key_del.png diff --git a/res/drawable-hdpi/key_del_b.png b/res/drawable-hdpi/key_del_b.png Binary files differnew file mode 100644 index 0000000..efa0204 --- /dev/null +++ b/res/drawable-hdpi/key_del_b.png diff --git a/res/drawable-hdpi/key_enter.png b/res/drawable-hdpi/key_enter.png Binary files differnew file mode 100644 index 0000000..87f37c5 --- /dev/null +++ b/res/drawable-hdpi/key_enter.png diff --git a/res/drawable-hdpi/key_enter_b.png b/res/drawable-hdpi/key_enter_b.png Binary files differnew file mode 100644 index 0000000..37b6b01 --- /dev/null +++ b/res/drawable-hdpi/key_enter_b.png diff --git a/res/drawable-hdpi/key_mode_change_b.png b/res/drawable-hdpi/key_mode_change_b.png Binary files differindex 24abfd4..f8dda2a 100644 --- a/res/drawable-hdpi/key_mode_change_b.png +++ b/res/drawable-hdpi/key_mode_change_b.png diff --git a/res/drawable-hdpi/key_mode_full_alpha.png b/res/drawable-hdpi/key_mode_full_alpha.png Binary files differnew file mode 100644 index 0000000..cf263ef --- /dev/null +++ b/res/drawable-hdpi/key_mode_full_alpha.png diff --git a/res/drawable-hdpi/key_mode_full_kata.png b/res/drawable-hdpi/key_mode_full_kata.png Binary files differnew file mode 100644 index 0000000..400e2ca --- /dev/null +++ b/res/drawable-hdpi/key_mode_full_kata.png diff --git a/res/drawable-hdpi/key_mode_full_num.png b/res/drawable-hdpi/key_mode_full_num.png Binary files differnew file mode 100644 index 0000000..8e97c4b --- /dev/null +++ b/res/drawable-hdpi/key_mode_full_num.png diff --git a/res/drawable-hdpi/key_mode_half_alpha.png b/res/drawable-hdpi/key_mode_half_alpha.png Binary files differnew file mode 100644 index 0000000..440a9d3 --- /dev/null +++ b/res/drawable-hdpi/key_mode_half_alpha.png diff --git a/res/drawable-hdpi/key_mode_half_kata.png b/res/drawable-hdpi/key_mode_half_kata.png Binary files differnew file mode 100644 index 0000000..8cff2db --- /dev/null +++ b/res/drawable-hdpi/key_mode_half_kata.png diff --git a/res/drawable-hdpi/key_mode_half_num.png b/res/drawable-hdpi/key_mode_half_num.png Binary files differnew file mode 100644 index 0000000..2e34935 --- /dev/null +++ b/res/drawable-hdpi/key_mode_half_num.png diff --git a/res/drawable-hdpi/key_mode_hira.png b/res/drawable-hdpi/key_mode_hira.png Binary files differnew file mode 100644 index 0000000..3de2cf2 --- /dev/null +++ b/res/drawable-hdpi/key_mode_hira.png diff --git a/res/drawable-hdpi/key_mode_panel_kbd_12key_b.png b/res/drawable-hdpi/key_mode_panel_kbd_12key_b.png Binary files differindex 7b0f7f0..2ed8f3d 100644 --- a/res/drawable-hdpi/key_mode_panel_kbd_12key_b.png +++ b/res/drawable-hdpi/key_mode_panel_kbd_12key_b.png diff --git a/res/drawable-hdpi/key_pict_sym_b.png b/res/drawable-hdpi/key_pict_sym_b.png Binary files differnew file mode 100644 index 0000000..e528ef9 --- /dev/null +++ b/res/drawable-hdpi/key_pict_sym_b.png diff --git a/res/drawable-hdpi/key_qwerty_del.png b/res/drawable-hdpi/key_qwerty_del.png Binary files differdeleted file mode 100644 index c02e66c..0000000 --- a/res/drawable-hdpi/key_qwerty_del.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_del_b.png b/res/drawable-hdpi/key_qwerty_del_b.png Binary files differdeleted file mode 100644 index df084c1..0000000 --- a/res/drawable-hdpi/key_qwerty_del_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_del_b_landscape.png b/res/drawable-hdpi/key_qwerty_del_b_landscape.png Binary files differdeleted file mode 100644 index db71256..0000000 --- a/res/drawable-hdpi/key_qwerty_del_b_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_del_landscape.png b/res/drawable-hdpi/key_qwerty_del_landscape.png Binary files differdeleted file mode 100644 index 2855634..0000000 --- a/res/drawable-hdpi/key_qwerty_del_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_enter.png b/res/drawable-hdpi/key_qwerty_enter.png Binary files differdeleted file mode 100644 index 6243499..0000000 --- a/res/drawable-hdpi/key_qwerty_enter.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_enter_b.png b/res/drawable-hdpi/key_qwerty_enter_b.png Binary files differdeleted file mode 100644 index 2d38865..0000000 --- a/res/drawable-hdpi/key_qwerty_enter_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_enter_jp.png b/res/drawable-hdpi/key_qwerty_enter_jp.png Binary files differdeleted file mode 100644 index 54c82b5..0000000 --- a/res/drawable-hdpi/key_qwerty_enter_jp.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_enter_jp_b.png b/res/drawable-hdpi/key_qwerty_enter_jp_b.png Binary files differdeleted file mode 100644 index b2fad3e..0000000 --- a/res/drawable-hdpi/key_qwerty_enter_jp_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_enter_landscape.png b/res/drawable-hdpi/key_qwerty_enter_landscape.png Binary files differdeleted file mode 100644 index fd0231c..0000000 --- a/res/drawable-hdpi/key_qwerty_enter_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_enter_landscape_b.png b/res/drawable-hdpi/key_qwerty_enter_landscape_b.png Binary files differdeleted file mode 100644 index 574c896..0000000 --- a/res/drawable-hdpi/key_qwerty_enter_landscape_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_enter_landscape_jp.png b/res/drawable-hdpi/key_qwerty_enter_landscape_jp.png Binary files differdeleted file mode 100644 index bb9d835..0000000 --- a/res/drawable-hdpi/key_qwerty_enter_landscape_jp.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_enter_landscape_jp_b.png b/res/drawable-hdpi/key_qwerty_enter_landscape_jp_b.png Binary files differdeleted file mode 100644 index a43e717..0000000 --- a/res/drawable-hdpi/key_qwerty_enter_landscape_jp_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_left.png b/res/drawable-hdpi/key_qwerty_left.png Binary files differnew file mode 100644 index 0000000..1e6de0e --- /dev/null +++ b/res/drawable-hdpi/key_qwerty_left.png diff --git a/res/drawable-hdpi/key_qwerty_left_b.png b/res/drawable-hdpi/key_qwerty_left_b.png Binary files differnew file mode 100644 index 0000000..1ef2ff4 --- /dev/null +++ b/res/drawable-hdpi/key_qwerty_left_b.png diff --git a/res/drawable-hdpi/key_qwerty_mode_full_alpha.png b/res/drawable-hdpi/key_qwerty_mode_full_alpha.png Binary files differdeleted file mode 100644 index 004cd36..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_full_alpha.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_full_alpha_landscape.png b/res/drawable-hdpi/key_qwerty_mode_full_alpha_landscape.png Binary files differdeleted file mode 100644 index a7152ad..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_full_alpha_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_full_kata.png b/res/drawable-hdpi/key_qwerty_mode_full_kata.png Binary files differdeleted file mode 100644 index 1a37099..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_full_kata.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_full_kata_landscape.png b/res/drawable-hdpi/key_qwerty_mode_full_kata_landscape.png Binary files differdeleted file mode 100644 index d3a537e..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_full_kata_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_full_num.png b/res/drawable-hdpi/key_qwerty_mode_full_num.png Binary files differdeleted file mode 100644 index 442b93d..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_full_num.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_full_num_landscape.png b/res/drawable-hdpi/key_qwerty_mode_full_num_landscape.png Binary files differdeleted file mode 100644 index b0e530e..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_full_num_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_half_alpha.png b/res/drawable-hdpi/key_qwerty_mode_half_alpha.png Binary files differdeleted file mode 100644 index 7d58689..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_half_alpha.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_half_alpha_landscape.png b/res/drawable-hdpi/key_qwerty_mode_half_alpha_landscape.png Binary files differdeleted file mode 100644 index f87d42b..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_half_alpha_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_half_kata.png b/res/drawable-hdpi/key_qwerty_mode_half_kata.png Binary files differdeleted file mode 100644 index 4c219a3..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_half_kata.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_half_kata_landscape.png b/res/drawable-hdpi/key_qwerty_mode_half_kata_landscape.png Binary files differdeleted file mode 100644 index 05eee0a..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_half_kata_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_half_num.png b/res/drawable-hdpi/key_qwerty_mode_half_num.png Binary files differdeleted file mode 100644 index a181e33..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_half_num.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_half_num_landscape.png b/res/drawable-hdpi/key_qwerty_mode_half_num_landscape.png Binary files differdeleted file mode 100644 index 2aec40b..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_half_num_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_hira.png b/res/drawable-hdpi/key_qwerty_mode_hira.png Binary files differdeleted file mode 100644 index 077d7da..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_hira.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_mode_hira_landscape.png b/res/drawable-hdpi/key_qwerty_mode_hira_landscape.png Binary files differdeleted file mode 100644 index 5d3fd29..0000000 --- a/res/drawable-hdpi/key_qwerty_mode_hira_landscape.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_pict_sym.png b/res/drawable-hdpi/key_qwerty_pict_sym.png Binary files differindex 276fc9d..befaecb 100644 --- a/res/drawable-hdpi/key_qwerty_pict_sym.png +++ b/res/drawable-hdpi/key_qwerty_pict_sym.png diff --git a/res/drawable-hdpi/key_qwerty_pict_sym_b.png b/res/drawable-hdpi/key_qwerty_pict_sym_b.png Binary files differdeleted file mode 100644 index 43472f2..0000000 --- a/res/drawable-hdpi/key_qwerty_pict_sym_b.png +++ /dev/null diff --git a/res/drawable-hdpi/key_qwerty_return.png b/res/drawable-hdpi/key_qwerty_return.png Binary files differnew file mode 100644 index 0000000..99fa13c --- /dev/null +++ b/res/drawable-hdpi/key_qwerty_return.png diff --git a/res/drawable-hdpi/key_qwerty_right.png b/res/drawable-hdpi/key_qwerty_right.png Binary files differnew file mode 100644 index 0000000..0bf054c --- /dev/null +++ b/res/drawable-hdpi/key_qwerty_right.png diff --git a/res/drawable-hdpi/key_qwerty_right_b.png b/res/drawable-hdpi/key_qwerty_right_b.png Binary files differnew file mode 100644 index 0000000..2a9d807 --- /dev/null +++ b/res/drawable-hdpi/key_qwerty_right_b.png diff --git a/res/drawable-hdpi/key_qwerty_shift_b.png b/res/drawable-hdpi/key_qwerty_shift_b.png Binary files differindex 73cbec8..8d9d8ed 100644 --- a/res/drawable-hdpi/key_qwerty_shift_b.png +++ b/res/drawable-hdpi/key_qwerty_shift_b.png diff --git a/res/drawable-hdpi/key_qwerty_shift_locked.png b/res/drawable-hdpi/key_qwerty_shift_locked.png Binary files differnew file mode 100644 index 0000000..930a799 --- /dev/null +++ b/res/drawable-hdpi/key_qwerty_shift_locked.png diff --git a/res/drawable-hdpi/key_qwerty_space.png b/res/drawable-hdpi/key_qwerty_space.png Binary files differindex a9bbdbe..74c4f3d 100644 --- a/res/drawable-hdpi/key_qwerty_space.png +++ b/res/drawable-hdpi/key_qwerty_space.png diff --git a/res/drawable-hdpi/key_qwerty_space_b.png b/res/drawable-hdpi/key_qwerty_space_b.png Binary files differindex 0cbaf57..b0b9acf 100644 --- a/res/drawable-hdpi/key_qwerty_space_b.png +++ b/res/drawable-hdpi/key_qwerty_space_b.png diff --git a/res/drawable-hdpi/key_qwerty_space_conv.png b/res/drawable-hdpi/key_qwerty_space_conv.png Binary files differindex e120c85..e66a564 100644 --- a/res/drawable-hdpi/key_qwerty_space_conv.png +++ b/res/drawable-hdpi/key_qwerty_space_conv.png diff --git a/res/drawable-hdpi/key_qwerty_space_conv_b.png b/res/drawable-hdpi/key_qwerty_space_conv_b.png Binary files differindex f79e545..30f65f0 100644 --- a/res/drawable-hdpi/key_qwerty_space_conv_b.png +++ b/res/drawable-hdpi/key_qwerty_space_conv_b.png diff --git a/res/drawable-hdpi/keybg_ice_bg.png b/res/drawable-hdpi/keybg_ice_bg.png Binary files differnew file mode 100644 index 0000000..3b5f87a --- /dev/null +++ b/res/drawable-hdpi/keybg_ice_bg.png diff --git a/res/drawable-hdpi/keyboard_background.png b/res/drawable-hdpi/keyboard_background.png Binary files differnew file mode 100644 index 0000000..8b8bb8c --- /dev/null +++ b/res/drawable-hdpi/keyboard_background.png diff --git a/res/drawable-hdpi/keyboard_key_feedback_background.9.png b/res/drawable-hdpi/keyboard_key_feedback_background.9.png Binary files differnew file mode 100644 index 0000000..af33c73 --- /dev/null +++ b/res/drawable-hdpi/keyboard_key_feedback_background.9.png diff --git a/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png b/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png Binary files differnew file mode 100644 index 0000000..428fa90 --- /dev/null +++ b/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png diff --git a/res/drawable-hdpi/keyboard_popup_panel_background.9.png b/res/drawable-hdpi/keyboard_popup_panel_background.9.png Binary files differnew file mode 100644 index 0000000..36d75df --- /dev/null +++ b/res/drawable-hdpi/keyboard_popup_panel_background.9.png diff --git a/res/drawable-hdpi/tab_no_select.9.png b/res/drawable-hdpi/tab_no_select.9.png Binary files differnew file mode 100644 index 0000000..d5f4ba4 --- /dev/null +++ b/res/drawable-hdpi/tab_no_select.9.png diff --git a/res/drawable-hdpi/tab_press.9.png b/res/drawable-hdpi/tab_press.9.png Binary files differnew file mode 100644 index 0000000..4eeda4d --- /dev/null +++ b/res/drawable-hdpi/tab_press.9.png diff --git a/res/drawable-hdpi/tab_select.9.png b/res/drawable-hdpi/tab_select.9.png Binary files differnew file mode 100644 index 0000000..20f9b5f --- /dev/null +++ b/res/drawable-hdpi/tab_select.9.png diff --git a/res/drawable-hdpi/tutorial_12key_enter.png b/res/drawable-hdpi/tutorial_12key_enter.png Binary files differindex 283883f..a30a8f3 100644 --- a/res/drawable-hdpi/tutorial_12key_enter.png +++ b/res/drawable-hdpi/tutorial_12key_enter.png diff --git a/res/drawable-hdpi/tutorial_12key_mode.png b/res/drawable-hdpi/tutorial_12key_mode.png Binary files differindex 05066f9..d5cb55a 100644 --- a/res/drawable-hdpi/tutorial_12key_mode.png +++ b/res/drawable-hdpi/tutorial_12key_mode.png diff --git a/res/drawable-ja/tutorial_12key_mode.png b/res/drawable-ja/tutorial_12key_mode.png Binary files differindex d287c13..15d9a4c 100644 --- a/res/drawable-ja/tutorial_12key_mode.png +++ b/res/drawable-ja/tutorial_12key_mode.png diff --git a/res/drawable-sw768dp-hdpi/cand_tab.xml b/res/drawable-sw768dp-hdpi/cand_tab.xml new file mode 100644 index 0000000..aed0a42 --- /dev/null +++ b/res/drawable-sw768dp-hdpi/cand_tab.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" + android:drawable="@drawable/tab_press" /> + <item android:state_pressed="false" + android:drawable="@drawable/tab_select" /> +</selector> diff --git a/res/drawable-sw768dp-hdpi/cand_tab_noselect.xml b/res/drawable-sw768dp-hdpi/cand_tab_noselect.xml new file mode 100644 index 0000000..761da6e --- /dev/null +++ b/res/drawable-sw768dp-hdpi/cand_tab_noselect.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true" + android:drawable="@drawable/tab_press" /> + <item android:state_pressed="false" + android:drawable="@drawable/tab_no_select" /> +</selector> diff --git a/res/drawable-sw768dp-hdpi/key_del.png b/res/drawable-sw768dp-hdpi/key_del.png Binary files differnew file mode 100644 index 0000000..7c12f79 --- /dev/null +++ b/res/drawable-sw768dp-hdpi/key_del.png diff --git a/res/drawable-sw768dp-hdpi/key_qwerty_shift.png b/res/drawable-sw768dp-hdpi/key_qwerty_shift.png Binary files differnew file mode 100644 index 0000000..ade2134 --- /dev/null +++ b/res/drawable-sw768dp-hdpi/key_qwerty_shift.png diff --git a/res/drawable-sw768dp-hdpi/key_qwerty_shift_locked.png b/res/drawable-sw768dp-hdpi/key_qwerty_shift_locked.png Binary files differnew file mode 100644 index 0000000..9e9b999 --- /dev/null +++ b/res/drawable-sw768dp-hdpi/key_qwerty_shift_locked.png diff --git a/res/drawable-sw768dp-hdpi/tab_no_select.9.png b/res/drawable-sw768dp-hdpi/tab_no_select.9.png Binary files differnew file mode 100644 index 0000000..d1179e4 --- /dev/null +++ b/res/drawable-sw768dp-hdpi/tab_no_select.9.png diff --git a/res/drawable-sw768dp-hdpi/tab_press.9.png b/res/drawable-sw768dp-hdpi/tab_press.9.png Binary files differnew file mode 100644 index 0000000..2f491b1 --- /dev/null +++ b/res/drawable-sw768dp-hdpi/tab_press.9.png diff --git a/res/drawable-sw768dp-hdpi/tab_select.9.png b/res/drawable-sw768dp-hdpi/tab_select.9.png Binary files differnew file mode 100644 index 0000000..de538cc --- /dev/null +++ b/res/drawable-sw768dp-hdpi/tab_select.9.png diff --git a/res/drawable-sw768dp-land-hdpi/key_qwerty_shift.png b/res/drawable-sw768dp-land-hdpi/key_qwerty_shift.png Binary files differnew file mode 100644 index 0000000..906b713 --- /dev/null +++ b/res/drawable-sw768dp-land-hdpi/key_qwerty_shift.png diff --git a/res/drawable-sw768dp-land-hdpi/key_qwerty_shift_locked.png b/res/drawable-sw768dp-land-hdpi/key_qwerty_shift_locked.png Binary files differnew file mode 100644 index 0000000..376f584 --- /dev/null +++ b/res/drawable-sw768dp-land-hdpi/key_qwerty_shift_locked.png diff --git a/res/drawable-sw768dp/btn_keyboard_key.xml b/res/drawable-sw768dp/btn_keyboard_key.xml new file mode 100644 index 0000000..2708442 --- /dev/null +++ b/res/drawable-sw768dp/btn_keyboard_key.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- Toggle keys. Use checkable/checked state. --> + + <!-- Normal keys --> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_light_pressed_holo" /> + <item + android:drawable="@drawable/btn_keyboard_key_normal" /> + +</selector> diff --git a/res/drawable-sw768dp/btn_keyboard_key_2nd.xml b/res/drawable-sw768dp/btn_keyboard_key_2nd.xml new file mode 100644 index 0000000..e9b116e --- /dev/null +++ b/res/drawable-sw768dp/btn_keyboard_key_2nd.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- Toggle keys. Use checkable/checked state. --> + + <item android:state_checkable="true" android:state_checked="true" + android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_dark_pressed_holo" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/btn_keyboard_key_normal_on_2nd" /> + + <!-- Normal keys --> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_dark_pressed_holo" /> + <item + android:drawable="@drawable/btn_keyboard_key_normal_2nd" /> + +</selector> diff --git a/res/drawable-sw768dp/btn_keyboard_key_normal.9.png b/res/drawable-sw768dp/btn_keyboard_key_normal.9.png Binary files differnew file mode 100644 index 0000000..cae8062 --- /dev/null +++ b/res/drawable-sw768dp/btn_keyboard_key_normal.9.png diff --git a/res/drawable-sw768dp/cand_back_normal.9.png b/res/drawable-sw768dp/cand_back_normal.9.png Binary files differnew file mode 100644 index 0000000..523e905 --- /dev/null +++ b/res/drawable-sw768dp/cand_back_normal.9.png diff --git a/res/drawable-sw768dp/cand_back_pressed.9.png b/res/drawable-sw768dp/cand_back_pressed.9.png Binary files differnew file mode 100644 index 0000000..2c4f82c --- /dev/null +++ b/res/drawable-sw768dp/cand_back_pressed.9.png diff --git a/res/drawable-sw768dp/key_mode_full_num.png b/res/drawable-sw768dp/key_mode_full_num.png Binary files differnew file mode 100644 index 0000000..4f7125b --- /dev/null +++ b/res/drawable-sw768dp/key_mode_full_num.png diff --git a/res/drawable-sw768dp/key_mode_half_alpha.png b/res/drawable-sw768dp/key_mode_half_alpha.png Binary files differnew file mode 100644 index 0000000..c035b55 --- /dev/null +++ b/res/drawable-sw768dp/key_mode_half_alpha.png diff --git a/res/drawable-sw768dp/key_mode_half_num.png b/res/drawable-sw768dp/key_mode_half_num.png Binary files differnew file mode 100644 index 0000000..b709eed --- /dev/null +++ b/res/drawable-sw768dp/key_mode_half_num.png diff --git a/res/drawable-sw768dp/key_mode_hira.png b/res/drawable-sw768dp/key_mode_hira.png Binary files differnew file mode 100644 index 0000000..7c9442f --- /dev/null +++ b/res/drawable-sw768dp/key_mode_hira.png diff --git a/res/drawable-sw768dp/keyboard_background.png b/res/drawable-sw768dp/keyboard_background.png Binary files differnew file mode 100644 index 0000000..250d1e9 --- /dev/null +++ b/res/drawable-sw768dp/keyboard_background.png diff --git a/res/drawable/btn_close.xml b/res/drawable/btn_close.xml new file mode 100644 index 0000000..5af18f3 --- /dev/null +++ b/res/drawable/btn_close.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <item android:state_pressed="false" + android:drawable="@drawable/btn_close_normal" /> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_close_pressed" /> + +</selector> diff --git a/res/drawable/btn_close_normal.png b/res/drawable/btn_close_normal.png Binary files differnew file mode 100644 index 0000000..06639c4 --- /dev/null +++ b/res/drawable/btn_close_normal.png diff --git a/res/drawable/btn_close_pressed.png b/res/drawable/btn_close_pressed.png Binary files differnew file mode 100644 index 0000000..3791da4 --- /dev/null +++ b/res/drawable/btn_close_pressed.png diff --git a/res/drawable/btn_keyboard_key.xml b/res/drawable/btn_keyboard_key.xml new file mode 100644 index 0000000..5b3b4b1 --- /dev/null +++ b/res/drawable/btn_keyboard_key.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- Toggle keys. Use checkable/checked state. --> + + <!-- Normal keys --> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed" /> + <item + android:drawable="@drawable/btn_keyboard_key_normal" /> + +</selector> diff --git a/res/drawable/btn_keyboard_key_2nd.xml b/res/drawable/btn_keyboard_key_2nd.xml new file mode 100644 index 0000000..8f3ff83 --- /dev/null +++ b/res/drawable/btn_keyboard_key_2nd.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- Toggle keys. Use checkable/checked state. --> + + <item android:state_checkable="true" android:state_checked="true" + android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed_on_2nd" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/btn_keyboard_key_normal_on_2nd" /> + + <!-- Normal keys --> + + <item android:state_pressed="true" + android:drawable="@drawable/btn_keyboard_key_pressed_2nd" /> + <item + android:drawable="@drawable/btn_keyboard_key_normal_2nd" /> + +</selector> diff --git a/res/drawable/cand_back.xml b/res/drawable/cand_back.xml index a06d2b3..1049d58 100644 --- a/res/drawable/cand_back.xml +++ b/res/drawable/cand_back.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,10 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. --> - <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/cand_back_pressed" /> + <item android:state_focused="true" + android:drawable="@drawable/cand_back_focused" /> <item android:state_pressed="false" android:drawable="@drawable/cand_back_normal" /> </selector> diff --git a/res/drawable/cand_back_normal.9.png b/res/drawable/cand_back_normal.9.png Binary files differindex 4ed524b..6b829f5 100644 --- a/res/drawable/cand_back_normal.9.png +++ b/res/drawable/cand_back_normal.9.png diff --git a/res/drawable/cand_down.png b/res/drawable/cand_down.png Binary files differdeleted file mode 100644 index e73aad2..0000000 --- a/res/drawable/cand_down.png +++ /dev/null diff --git a/res/drawable/cand_down_press.png b/res/drawable/cand_down_press.png Binary files differdeleted file mode 100644 index cb72e57..0000000 --- a/res/drawable/cand_down_press.png +++ /dev/null diff --git a/res/drawable/cand_up.png b/res/drawable/cand_up.png Binary files differdeleted file mode 100644 index 17b59f4..0000000 --- a/res/drawable/cand_up.png +++ /dev/null diff --git a/res/drawable/cand_up_press.png b/res/drawable/cand_up_press.png Binary files differdeleted file mode 100644 index e89d647..0000000 --- a/res/drawable/cand_up_press.png +++ /dev/null diff --git a/res/drawable/candidate.png b/res/drawable/candidate.png Binary files differindex e8f8f3f..a08b624 100644 --- a/res/drawable/candidate.png +++ b/res/drawable/candidate.png diff --git a/res/drawable/candidate_top.9.png b/res/drawable/candidate_top.9.png Binary files differnew file mode 100644 index 0000000..fb6018f --- /dev/null +++ b/res/drawable/candidate_top.9.png diff --git a/res/drawable/key_12key_alpha0.png b/res/drawable/key_12key_alpha0.png Binary files differindex af50aae..b410229 100644 --- a/res/drawable/key_12key_alpha0.png +++ b/res/drawable/key_12key_alpha0.png diff --git a/res/drawable/key_12key_alpha0_b.png b/res/drawable/key_12key_alpha0_b.png Binary files differindex ee99d6c..412be11 100644 --- a/res/drawable/key_12key_alpha0_b.png +++ b/res/drawable/key_12key_alpha0_b.png diff --git a/res/drawable/key_12key_alpha1.png b/res/drawable/key_12key_alpha1.png Binary files differindex ede30b2..a7f5a15 100644 --- a/res/drawable/key_12key_alpha1.png +++ b/res/drawable/key_12key_alpha1.png diff --git a/res/drawable/key_12key_alpha1_b.png b/res/drawable/key_12key_alpha1_b.png Binary files differindex 430bec9..6ff54c6 100644 --- a/res/drawable/key_12key_alpha1_b.png +++ b/res/drawable/key_12key_alpha1_b.png diff --git a/res/drawable/key_12key_alpha2.png b/res/drawable/key_12key_alpha2.png Binary files differindex 6c549fc..a26b135 100644 --- a/res/drawable/key_12key_alpha2.png +++ b/res/drawable/key_12key_alpha2.png diff --git a/res/drawable/key_12key_alpha2_b.png b/res/drawable/key_12key_alpha2_b.png Binary files differindex 83f5924..914b3a3 100644 --- a/res/drawable/key_12key_alpha2_b.png +++ b/res/drawable/key_12key_alpha2_b.png diff --git a/res/drawable/key_12key_alpha3.png b/res/drawable/key_12key_alpha3.png Binary files differindex 2690655..4f35c42 100644 --- a/res/drawable/key_12key_alpha3.png +++ b/res/drawable/key_12key_alpha3.png diff --git a/res/drawable/key_12key_alpha3_b.png b/res/drawable/key_12key_alpha3_b.png Binary files differindex 7bd55a8..d1c0221 100644 --- a/res/drawable/key_12key_alpha3_b.png +++ b/res/drawable/key_12key_alpha3_b.png diff --git a/res/drawable/key_12key_alpha4.png b/res/drawable/key_12key_alpha4.png Binary files differindex 6f0cfb8..296d379 100644 --- a/res/drawable/key_12key_alpha4.png +++ b/res/drawable/key_12key_alpha4.png diff --git a/res/drawable/key_12key_alpha4_b.png b/res/drawable/key_12key_alpha4_b.png Binary files differindex 2c5a17c..b77e854 100644 --- a/res/drawable/key_12key_alpha4_b.png +++ b/res/drawable/key_12key_alpha4_b.png diff --git a/res/drawable/key_12key_alpha5.png b/res/drawable/key_12key_alpha5.png Binary files differindex 232f4a4..375c2ad 100644 --- a/res/drawable/key_12key_alpha5.png +++ b/res/drawable/key_12key_alpha5.png diff --git a/res/drawable/key_12key_alpha5_b.png b/res/drawable/key_12key_alpha5_b.png Binary files differindex 231b56a..d700050 100644 --- a/res/drawable/key_12key_alpha5_b.png +++ b/res/drawable/key_12key_alpha5_b.png diff --git a/res/drawable/key_12key_alpha6.png b/res/drawable/key_12key_alpha6.png Binary files differindex 0455f97..e0112a7 100644 --- a/res/drawable/key_12key_alpha6.png +++ b/res/drawable/key_12key_alpha6.png diff --git a/res/drawable/key_12key_alpha6_b.png b/res/drawable/key_12key_alpha6_b.png Binary files differindex 51fa129..7953ec9 100644 --- a/res/drawable/key_12key_alpha6_b.png +++ b/res/drawable/key_12key_alpha6_b.png diff --git a/res/drawable/key_12key_alpha7.png b/res/drawable/key_12key_alpha7.png Binary files differindex 4409532..ed2bbff 100644 --- a/res/drawable/key_12key_alpha7.png +++ b/res/drawable/key_12key_alpha7.png diff --git a/res/drawable/key_12key_alpha7_b.png b/res/drawable/key_12key_alpha7_b.png Binary files differindex 1d5d1e3..621a06e 100644 --- a/res/drawable/key_12key_alpha7_b.png +++ b/res/drawable/key_12key_alpha7_b.png diff --git a/res/drawable/key_12key_alpha8.png b/res/drawable/key_12key_alpha8.png Binary files differindex 6cffeab..997dbc8 100644 --- a/res/drawable/key_12key_alpha8.png +++ b/res/drawable/key_12key_alpha8.png diff --git a/res/drawable/key_12key_alpha8_b.png b/res/drawable/key_12key_alpha8_b.png Binary files differindex d077856..e565042 100644 --- a/res/drawable/key_12key_alpha8_b.png +++ b/res/drawable/key_12key_alpha8_b.png diff --git a/res/drawable/key_12key_alpha9.png b/res/drawable/key_12key_alpha9.png Binary files differindex 7dd05f9..d87b8b8 100644 --- a/res/drawable/key_12key_alpha9.png +++ b/res/drawable/key_12key_alpha9.png diff --git a/res/drawable/key_12key_alpha9_b.png b/res/drawable/key_12key_alpha9_b.png Binary files differindex 1f7a23e..705d7a5 100644 --- a/res/drawable/key_12key_alpha9_b.png +++ b/res/drawable/key_12key_alpha9_b.png diff --git a/res/drawable/key_12key_caps.png b/res/drawable/key_12key_caps.png Binary files differindex d0c52c2..8ea679d 100644 --- a/res/drawable/key_12key_caps.png +++ b/res/drawable/key_12key_caps.png diff --git a/res/drawable/key_12key_caps_b.png b/res/drawable/key_12key_caps_b.png Binary files differindex 19b8d2d..8ea679d 100644 --- a/res/drawable/key_12key_caps_b.png +++ b/res/drawable/key_12key_caps_b.png diff --git a/res/drawable/key_12key_dakuten.png b/res/drawable/key_12key_dakuten.png Binary files differindex 8e979cc..74f0006 100644 --- a/res/drawable/key_12key_dakuten.png +++ b/res/drawable/key_12key_dakuten.png diff --git a/res/drawable/key_12key_dakuten_b.png b/res/drawable/key_12key_dakuten_b.png Binary files differindex 5b850bf..3f5888c 100644 --- a/res/drawable/key_12key_dakuten_b.png +++ b/res/drawable/key_12key_dakuten_b.png diff --git a/res/drawable/key_12key_del.png b/res/drawable/key_12key_del.png Binary files differdeleted file mode 100644 index 4aab087..0000000 --- a/res/drawable/key_12key_del.png +++ /dev/null diff --git a/res/drawable/key_12key_del_b.png b/res/drawable/key_12key_del_b.png Binary files differdeleted file mode 100644 index ecc2dba..0000000 --- a/res/drawable/key_12key_del_b.png +++ /dev/null diff --git a/res/drawable/key_12key_eisukana.png b/res/drawable/key_12key_eisukana.png Binary files differindex b28c9cd..ce46f19 100644 --- a/res/drawable/key_12key_eisukana.png +++ b/res/drawable/key_12key_eisukana.png diff --git a/res/drawable/key_12key_eisukana_b.png b/res/drawable/key_12key_eisukana_b.png Binary files differindex 805c5ea..ce46f19 100644 --- a/res/drawable/key_12key_eisukana_b.png +++ b/res/drawable/key_12key_eisukana_b.png diff --git a/res/drawable/key_12key_enter.png b/res/drawable/key_12key_enter.png Binary files differdeleted file mode 100644 index b2e729b..0000000 --- a/res/drawable/key_12key_enter.png +++ /dev/null diff --git a/res/drawable/key_12key_enter_b.png b/res/drawable/key_12key_enter_b.png Binary files differdeleted file mode 100644 index d26baa6..0000000 --- a/res/drawable/key_12key_enter_b.png +++ /dev/null diff --git a/res/drawable/key_12key_enter_jp.png b/res/drawable/key_12key_enter_jp.png Binary files differdeleted file mode 100644 index aeb461b..0000000 --- a/res/drawable/key_12key_enter_jp.png +++ /dev/null diff --git a/res/drawable/key_12key_enter_jp_b.png b/res/drawable/key_12key_enter_jp_b.png Binary files differdeleted file mode 100644 index 784a7e9..0000000 --- a/res/drawable/key_12key_enter_jp_b.png +++ /dev/null diff --git a/res/drawable/key_12key_hiragana0.png b/res/drawable/key_12key_hiragana0.png Binary files differindex 6c039d0..b704165 100644 --- a/res/drawable/key_12key_hiragana0.png +++ b/res/drawable/key_12key_hiragana0.png diff --git a/res/drawable/key_12key_hiragana0_b.png b/res/drawable/key_12key_hiragana0_b.png Binary files differindex 9baf830..4e96294 100644 --- a/res/drawable/key_12key_hiragana0_b.png +++ b/res/drawable/key_12key_hiragana0_b.png diff --git a/res/drawable/key_12key_hiragana1.png b/res/drawable/key_12key_hiragana1.png Binary files differindex ff33fd5..253f43f 100644 --- a/res/drawable/key_12key_hiragana1.png +++ b/res/drawable/key_12key_hiragana1.png diff --git a/res/drawable/key_12key_hiragana1_b.png b/res/drawable/key_12key_hiragana1_b.png Binary files differindex 5415e4b..918d282 100644 --- a/res/drawable/key_12key_hiragana1_b.png +++ b/res/drawable/key_12key_hiragana1_b.png diff --git a/res/drawable/key_12key_hiragana2.png b/res/drawable/key_12key_hiragana2.png Binary files differindex 2338b39..d4551b1 100644 --- a/res/drawable/key_12key_hiragana2.png +++ b/res/drawable/key_12key_hiragana2.png diff --git a/res/drawable/key_12key_hiragana2_b.png b/res/drawable/key_12key_hiragana2_b.png Binary files differindex 81b3c0b..e945c7f 100644 --- a/res/drawable/key_12key_hiragana2_b.png +++ b/res/drawable/key_12key_hiragana2_b.png diff --git a/res/drawable/key_12key_hiragana3.png b/res/drawable/key_12key_hiragana3.png Binary files differindex 6508763..0a3ee62 100644 --- a/res/drawable/key_12key_hiragana3.png +++ b/res/drawable/key_12key_hiragana3.png diff --git a/res/drawable/key_12key_hiragana3_b.png b/res/drawable/key_12key_hiragana3_b.png Binary files differindex 7b0173f..1fba929 100644 --- a/res/drawable/key_12key_hiragana3_b.png +++ b/res/drawable/key_12key_hiragana3_b.png diff --git a/res/drawable/key_12key_hiragana4.png b/res/drawable/key_12key_hiragana4.png Binary files differindex 79d9a03..d544396 100644 --- a/res/drawable/key_12key_hiragana4.png +++ b/res/drawable/key_12key_hiragana4.png diff --git a/res/drawable/key_12key_hiragana4_b.png b/res/drawable/key_12key_hiragana4_b.png Binary files differindex d34f52d..3faa527 100644 --- a/res/drawable/key_12key_hiragana4_b.png +++ b/res/drawable/key_12key_hiragana4_b.png diff --git a/res/drawable/key_12key_hiragana5.png b/res/drawable/key_12key_hiragana5.png Binary files differindex 62769a2..e9f101f 100644 --- a/res/drawable/key_12key_hiragana5.png +++ b/res/drawable/key_12key_hiragana5.png diff --git a/res/drawable/key_12key_hiragana5_b.png b/res/drawable/key_12key_hiragana5_b.png Binary files differindex c5bbc38..0613ceb 100644 --- a/res/drawable/key_12key_hiragana5_b.png +++ b/res/drawable/key_12key_hiragana5_b.png diff --git a/res/drawable/key_12key_hiragana6.png b/res/drawable/key_12key_hiragana6.png Binary files differindex a130fb8..64c0121 100644 --- a/res/drawable/key_12key_hiragana6.png +++ b/res/drawable/key_12key_hiragana6.png diff --git a/res/drawable/key_12key_hiragana6_b.png b/res/drawable/key_12key_hiragana6_b.png Binary files differindex f2d1246..61497dc 100644 --- a/res/drawable/key_12key_hiragana6_b.png +++ b/res/drawable/key_12key_hiragana6_b.png diff --git a/res/drawable/key_12key_hiragana7.png b/res/drawable/key_12key_hiragana7.png Binary files differindex f74e52a..6755d26 100644 --- a/res/drawable/key_12key_hiragana7.png +++ b/res/drawable/key_12key_hiragana7.png diff --git a/res/drawable/key_12key_hiragana7_b.png b/res/drawable/key_12key_hiragana7_b.png Binary files differindex 8246602..70f147e 100644 --- a/res/drawable/key_12key_hiragana7_b.png +++ b/res/drawable/key_12key_hiragana7_b.png diff --git a/res/drawable/key_12key_hiragana8.png b/res/drawable/key_12key_hiragana8.png Binary files differindex f2a3fdb..fd64e15 100644 --- a/res/drawable/key_12key_hiragana8.png +++ b/res/drawable/key_12key_hiragana8.png diff --git a/res/drawable/key_12key_hiragana8_b.png b/res/drawable/key_12key_hiragana8_b.png Binary files differindex 8ddf7b4..478c68b 100644 --- a/res/drawable/key_12key_hiragana8_b.png +++ b/res/drawable/key_12key_hiragana8_b.png diff --git a/res/drawable/key_12key_hiragana9.png b/res/drawable/key_12key_hiragana9.png Binary files differindex 35a2129..d34d476 100644 --- a/res/drawable/key_12key_hiragana9.png +++ b/res/drawable/key_12key_hiragana9.png diff --git a/res/drawable/key_12key_hiragana9_b.png b/res/drawable/key_12key_hiragana9_b.png Binary files differindex 516f847..b79d5e0 100644 --- a/res/drawable/key_12key_hiragana9_b.png +++ b/res/drawable/key_12key_hiragana9_b.png diff --git a/res/drawable/key_12key_left.png b/res/drawable/key_12key_left.png Binary files differindex d604272..f177aad 100644 --- a/res/drawable/key_12key_left.png +++ b/res/drawable/key_12key_left.png diff --git a/res/drawable/key_12key_left_b.png b/res/drawable/key_12key_left_b.png Binary files differindex 02fc93b..f177aad 100644 --- a/res/drawable/key_12key_left_b.png +++ b/res/drawable/key_12key_left_b.png diff --git a/res/drawable/key_12key_mode_full_alpha.png b/res/drawable/key_12key_mode_full_alpha.png Binary files differdeleted file mode 100644 index fd4f880..0000000 --- a/res/drawable/key_12key_mode_full_alpha.png +++ /dev/null diff --git a/res/drawable/key_12key_mode_full_kata.png b/res/drawable/key_12key_mode_full_kata.png Binary files differdeleted file mode 100644 index 81b66e2..0000000 --- a/res/drawable/key_12key_mode_full_kata.png +++ /dev/null diff --git a/res/drawable/key_12key_mode_full_num.png b/res/drawable/key_12key_mode_full_num.png Binary files differdeleted file mode 100644 index dc929a1..0000000 --- a/res/drawable/key_12key_mode_full_num.png +++ /dev/null diff --git a/res/drawable/key_12key_mode_half_alpha.png b/res/drawable/key_12key_mode_half_alpha.png Binary files differdeleted file mode 100644 index 4bf6f99..0000000 --- a/res/drawable/key_12key_mode_half_alpha.png +++ /dev/null diff --git a/res/drawable/key_12key_mode_half_kata.png b/res/drawable/key_12key_mode_half_kata.png Binary files differdeleted file mode 100644 index 322341a..0000000 --- a/res/drawable/key_12key_mode_half_kata.png +++ /dev/null diff --git a/res/drawable/key_12key_mode_half_num.png b/res/drawable/key_12key_mode_half_num.png Binary files differdeleted file mode 100644 index 68a8760..0000000 --- a/res/drawable/key_12key_mode_half_num.png +++ /dev/null diff --git a/res/drawable/key_12key_mode_hira.png b/res/drawable/key_12key_mode_hira.png Binary files differdeleted file mode 100644 index 9eb8584..0000000 --- a/res/drawable/key_12key_mode_hira.png +++ /dev/null diff --git a/res/drawable/key_12key_period_comma.png b/res/drawable/key_12key_period_comma.png Binary files differindex d0fdb93..4ed6144 100644 --- a/res/drawable/key_12key_period_comma.png +++ b/res/drawable/key_12key_period_comma.png diff --git a/res/drawable/key_12key_period_comma_b.png b/res/drawable/key_12key_period_comma_b.png Binary files differindex aa9ad02..d971689 100644 --- a/res/drawable/key_12key_period_comma_b.png +++ b/res/drawable/key_12key_period_comma_b.png diff --git a/res/drawable/key_12key_pict_sym.png b/res/drawable/key_12key_pict_sym.png Binary files differindex a4845e5..6b7c365 100644 --- a/res/drawable/key_12key_pict_sym.png +++ b/res/drawable/key_12key_pict_sym.png diff --git a/res/drawable/key_12key_reverse.png b/res/drawable/key_12key_reverse.png Binary files differindex dd40bd9..ace5fb5 100644 --- a/res/drawable/key_12key_reverse.png +++ b/res/drawable/key_12key_reverse.png diff --git a/res/drawable/key_12key_reverse_b.png b/res/drawable/key_12key_reverse_b.png Binary files differindex 6d96fa3..ace5fb5 100644 --- a/res/drawable/key_12key_reverse_b.png +++ b/res/drawable/key_12key_reverse_b.png diff --git a/res/drawable/key_12key_right.png b/res/drawable/key_12key_right.png Binary files differindex 94a288b..a9863ff 100644 --- a/res/drawable/key_12key_right.png +++ b/res/drawable/key_12key_right.png diff --git a/res/drawable/key_12key_right_b.png b/res/drawable/key_12key_right_b.png Binary files differindex 06e21d0..a9863ff 100644 --- a/res/drawable/key_12key_right_b.png +++ b/res/drawable/key_12key_right_b.png diff --git a/res/drawable/key_12key_space.png b/res/drawable/key_12key_space.png Binary files differindex d67c898..14826ca 100644 --- a/res/drawable/key_12key_space.png +++ b/res/drawable/key_12key_space.png diff --git a/res/drawable/key_12key_space_b.png b/res/drawable/key_12key_space_b.png Binary files differindex 35d1b19..14826ca 100644 --- a/res/drawable/key_12key_space_b.png +++ b/res/drawable/key_12key_space_b.png diff --git a/res/drawable/key_12key_space_jp.png b/res/drawable/key_12key_space_jp.png Binary files differindex 4735e01..ec76075 100644 --- a/res/drawable/key_12key_space_jp.png +++ b/res/drawable/key_12key_space_jp.png diff --git a/res/drawable/key_12key_space_jp_b.png b/res/drawable/key_12key_space_jp_b.png Binary files differindex 0dc5206..ec76075 100644 --- a/res/drawable/key_12key_space_jp_b.png +++ b/res/drawable/key_12key_space_jp_b.png diff --git a/res/drawable/key_12key_ten.png b/res/drawable/key_12key_ten.png Binary files differindex 7d93f4f..08e68a0 100644 --- a/res/drawable/key_12key_ten.png +++ b/res/drawable/key_12key_ten.png diff --git a/res/drawable/key_12key_ten_b.png b/res/drawable/key_12key_ten_b.png Binary files differindex f65bb2e..e5b2d11 100644 --- a/res/drawable/key_12key_ten_b.png +++ b/res/drawable/key_12key_ten_b.png diff --git a/res/drawable/key_del.png b/res/drawable/key_del.png Binary files differnew file mode 100644 index 0000000..3a8792a --- /dev/null +++ b/res/drawable/key_del.png diff --git a/res/drawable/key_del_b.png b/res/drawable/key_del_b.png Binary files differnew file mode 100644 index 0000000..3a8792a --- /dev/null +++ b/res/drawable/key_del_b.png diff --git a/res/drawable/key_enter.png b/res/drawable/key_enter.png Binary files differnew file mode 100644 index 0000000..0e2d072 --- /dev/null +++ b/res/drawable/key_enter.png diff --git a/res/drawable/key_enter_b.png b/res/drawable/key_enter_b.png Binary files differnew file mode 100644 index 0000000..0e2d072 --- /dev/null +++ b/res/drawable/key_enter_b.png diff --git a/res/drawable/key_mode_change_b.png b/res/drawable/key_mode_change_b.png Binary files differindex 58159d9..e18517c 100644 --- a/res/drawable/key_mode_change_b.png +++ b/res/drawable/key_mode_change_b.png diff --git a/res/drawable/key_mode_full_alpha.png b/res/drawable/key_mode_full_alpha.png Binary files differnew file mode 100644 index 0000000..3c2a0eb --- /dev/null +++ b/res/drawable/key_mode_full_alpha.png diff --git a/res/drawable/key_mode_full_kata.png b/res/drawable/key_mode_full_kata.png Binary files differnew file mode 100644 index 0000000..899a546 --- /dev/null +++ b/res/drawable/key_mode_full_kata.png diff --git a/res/drawable/key_mode_full_num.png b/res/drawable/key_mode_full_num.png Binary files differnew file mode 100644 index 0000000..dcd3637 --- /dev/null +++ b/res/drawable/key_mode_full_num.png diff --git a/res/drawable/key_mode_half_alpha.png b/res/drawable/key_mode_half_alpha.png Binary files differnew file mode 100644 index 0000000..f620a1a --- /dev/null +++ b/res/drawable/key_mode_half_alpha.png diff --git a/res/drawable/key_mode_half_kata.png b/res/drawable/key_mode_half_kata.png Binary files differnew file mode 100644 index 0000000..f0682fb --- /dev/null +++ b/res/drawable/key_mode_half_kata.png diff --git a/res/drawable/key_mode_half_num.png b/res/drawable/key_mode_half_num.png Binary files differnew file mode 100644 index 0000000..913c5c5 --- /dev/null +++ b/res/drawable/key_mode_half_num.png diff --git a/res/drawable/key_mode_hira.png b/res/drawable/key_mode_hira.png Binary files differnew file mode 100644 index 0000000..494035f --- /dev/null +++ b/res/drawable/key_mode_hira.png diff --git a/res/drawable/key_mode_panel_kbd_12key_b.png b/res/drawable/key_mode_panel_kbd_12key_b.png Binary files differindex eda8c03..a3fe255 100644 --- a/res/drawable/key_mode_panel_kbd_12key_b.png +++ b/res/drawable/key_mode_panel_kbd_12key_b.png diff --git a/res/drawable/key_pict_sym_b.png b/res/drawable/key_pict_sym_b.png Binary files differnew file mode 100644 index 0000000..19df062 --- /dev/null +++ b/res/drawable/key_pict_sym_b.png diff --git a/res/drawable/key_qwerty_del.png b/res/drawable/key_qwerty_del.png Binary files differdeleted file mode 100644 index 4aab087..0000000 --- a/res/drawable/key_qwerty_del.png +++ /dev/null diff --git a/res/drawable/key_qwerty_del_b.png b/res/drawable/key_qwerty_del_b.png Binary files differdeleted file mode 100644 index ecc2dba..0000000 --- a/res/drawable/key_qwerty_del_b.png +++ /dev/null diff --git a/res/drawable/key_qwerty_enter.png b/res/drawable/key_qwerty_enter.png Binary files differdeleted file mode 100644 index 35a3fb0..0000000 --- a/res/drawable/key_qwerty_enter.png +++ /dev/null diff --git a/res/drawable/key_qwerty_enter_b.png b/res/drawable/key_qwerty_enter_b.png Binary files differdeleted file mode 100644 index 1a4cbfd..0000000 --- a/res/drawable/key_qwerty_enter_b.png +++ /dev/null diff --git a/res/drawable/key_qwerty_enter_jp.png b/res/drawable/key_qwerty_enter_jp.png Binary files differdeleted file mode 100644 index 7f002e6..0000000 --- a/res/drawable/key_qwerty_enter_jp.png +++ /dev/null diff --git a/res/drawable/key_qwerty_enter_jp_b.png b/res/drawable/key_qwerty_enter_jp_b.png Binary files differdeleted file mode 100644 index a77c39f..0000000 --- a/res/drawable/key_qwerty_enter_jp_b.png +++ /dev/null diff --git a/res/drawable/key_qwerty_left.png b/res/drawable/key_qwerty_left.png Binary files differnew file mode 100644 index 0000000..f177aad --- /dev/null +++ b/res/drawable/key_qwerty_left.png diff --git a/res/drawable/key_qwerty_left_b.png b/res/drawable/key_qwerty_left_b.png Binary files differnew file mode 100644 index 0000000..f177aad --- /dev/null +++ b/res/drawable/key_qwerty_left_b.png diff --git a/res/drawable/key_qwerty_mode_full_alpha.png b/res/drawable/key_qwerty_mode_full_alpha.png Binary files differdeleted file mode 100644 index fd4f880..0000000 --- a/res/drawable/key_qwerty_mode_full_alpha.png +++ /dev/null diff --git a/res/drawable/key_qwerty_mode_full_kata.png b/res/drawable/key_qwerty_mode_full_kata.png Binary files differdeleted file mode 100644 index 81b66e2..0000000 --- a/res/drawable/key_qwerty_mode_full_kata.png +++ /dev/null diff --git a/res/drawable/key_qwerty_mode_full_num.png b/res/drawable/key_qwerty_mode_full_num.png Binary files differdeleted file mode 100644 index dc929a1..0000000 --- a/res/drawable/key_qwerty_mode_full_num.png +++ /dev/null diff --git a/res/drawable/key_qwerty_mode_half_alpha.png b/res/drawable/key_qwerty_mode_half_alpha.png Binary files differdeleted file mode 100644 index 4bf6f99..0000000 --- a/res/drawable/key_qwerty_mode_half_alpha.png +++ /dev/null diff --git a/res/drawable/key_qwerty_mode_half_kata.png b/res/drawable/key_qwerty_mode_half_kata.png Binary files differdeleted file mode 100644 index 322341a..0000000 --- a/res/drawable/key_qwerty_mode_half_kata.png +++ /dev/null diff --git a/res/drawable/key_qwerty_mode_half_num.png b/res/drawable/key_qwerty_mode_half_num.png Binary files differdeleted file mode 100644 index 68a8760..0000000 --- a/res/drawable/key_qwerty_mode_half_num.png +++ /dev/null diff --git a/res/drawable/key_qwerty_mode_hira.png b/res/drawable/key_qwerty_mode_hira.png Binary files differdeleted file mode 100644 index 9eb8584..0000000 --- a/res/drawable/key_qwerty_mode_hira.png +++ /dev/null diff --git a/res/drawable/key_qwerty_pict_sym.png b/res/drawable/key_qwerty_pict_sym.png Binary files differindex ad89c49..d40ec42 100644 --- a/res/drawable/key_qwerty_pict_sym.png +++ b/res/drawable/key_qwerty_pict_sym.png diff --git a/res/drawable/key_qwerty_pict_sym_b.png b/res/drawable/key_qwerty_pict_sym_b.png Binary files differdeleted file mode 100644 index 43225a8..0000000 --- a/res/drawable/key_qwerty_pict_sym_b.png +++ /dev/null diff --git a/res/drawable/key_qwerty_right.png b/res/drawable/key_qwerty_right.png Binary files differnew file mode 100644 index 0000000..a9863ff --- /dev/null +++ b/res/drawable/key_qwerty_right.png diff --git a/res/drawable/key_qwerty_right_b.png b/res/drawable/key_qwerty_right_b.png Binary files differnew file mode 100644 index 0000000..a9863ff --- /dev/null +++ b/res/drawable/key_qwerty_right_b.png diff --git a/res/drawable/key_qwerty_shift_b.png b/res/drawable/key_qwerty_shift_b.png Binary files differindex bb6fe59..8c2f859 100644 --- a/res/drawable/key_qwerty_shift_b.png +++ b/res/drawable/key_qwerty_shift_b.png diff --git a/res/drawable/key_qwerty_shift_locked.png b/res/drawable/key_qwerty_shift_locked.png Binary files differnew file mode 100644 index 0000000..36b20c7 --- /dev/null +++ b/res/drawable/key_qwerty_shift_locked.png diff --git a/res/drawable/key_qwerty_space.png b/res/drawable/key_qwerty_space.png Binary files differindex 5ffcab5..f4ede08 100644 --- a/res/drawable/key_qwerty_space.png +++ b/res/drawable/key_qwerty_space.png diff --git a/res/drawable/key_qwerty_space_b.png b/res/drawable/key_qwerty_space_b.png Binary files differindex a9390e2..f4ede08 100644 --- a/res/drawable/key_qwerty_space_b.png +++ b/res/drawable/key_qwerty_space_b.png diff --git a/res/drawable/key_qwerty_space_conv.png b/res/drawable/key_qwerty_space_conv.png Binary files differindex 654bc2d..ec76075 100644 --- a/res/drawable/key_qwerty_space_conv.png +++ b/res/drawable/key_qwerty_space_conv.png diff --git a/res/drawable/key_qwerty_space_conv_b.png b/res/drawable/key_qwerty_space_conv_b.png Binary files differindex 07bd232..ec76075 100644 --- a/res/drawable/key_qwerty_space_conv_b.png +++ b/res/drawable/key_qwerty_space_conv_b.png diff --git a/res/drawable/keybg_classic.9.png b/res/drawable/keybg_classic.9.png Binary files differnew file mode 100644 index 0000000..ba57b14 --- /dev/null +++ b/res/drawable/keybg_classic.9.png diff --git a/res/drawable/keybg_classic_bg.png b/res/drawable/keybg_classic_bg.png Binary files differnew file mode 100644 index 0000000..6ec5225 --- /dev/null +++ b/res/drawable/keybg_classic_bg.png diff --git a/res/drawable/keybg_classic_def.xml b/res/drawable/keybg_classic_def.xml new file mode 100644 index 0000000..2260a9d --- /dev/null +++ b/res/drawable/keybg_classic_def.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true" + android:drawable="@drawable/keybg_classic_psfton" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/keybg_classic_sfton" /> + <item android:state_checkable="true" android:state_pressed="true" + android:drawable="@drawable/keybg_classic_psftoff" /> + <item android:state_checkable="true" + android:drawable="@drawable/keybg_classic_sftoff" /> + <item android:state_pressed="true" + android:drawable="@drawable/keybg_classic_p" /> + <item android:drawable="@drawable/keybg_classic" /> +</selector> diff --git a/res/drawable/keybg_classic_p.9.png b/res/drawable/keybg_classic_p.9.png Binary files differnew file mode 100644 index 0000000..4020b40 --- /dev/null +++ b/res/drawable/keybg_classic_p.9.png diff --git a/res/drawable/keybg_classic_psftoff.9.png b/res/drawable/keybg_classic_psftoff.9.png Binary files differnew file mode 100644 index 0000000..51c1778 --- /dev/null +++ b/res/drawable/keybg_classic_psftoff.9.png diff --git a/res/drawable/keybg_classic_psfton.9.png b/res/drawable/keybg_classic_psfton.9.png Binary files differnew file mode 100644 index 0000000..273e3fe --- /dev/null +++ b/res/drawable/keybg_classic_psfton.9.png diff --git a/res/drawable/keybg_classic_sftoff.9.png b/res/drawable/keybg_classic_sftoff.9.png Binary files differnew file mode 100644 index 0000000..358e6a4 --- /dev/null +++ b/res/drawable/keybg_classic_sftoff.9.png diff --git a/res/drawable/keybg_classic_sfton.9.png b/res/drawable/keybg_classic_sfton.9.png Binary files differnew file mode 100644 index 0000000..fcf74e7 --- /dev/null +++ b/res/drawable/keybg_classic_sfton.9.png diff --git a/res/drawable/keybg_ice.9.png b/res/drawable/keybg_ice.9.png Binary files differnew file mode 100644 index 0000000..b22dd6d --- /dev/null +++ b/res/drawable/keybg_ice.9.png diff --git a/res/drawable/keybg_ice_bg.png b/res/drawable/keybg_ice_bg.png Binary files differnew file mode 100644 index 0000000..d26d8ae --- /dev/null +++ b/res/drawable/keybg_ice_bg.png diff --git a/res/drawable/keybg_ice_def.xml b/res/drawable/keybg_ice_def.xml new file mode 100644 index 0000000..1336765 --- /dev/null +++ b/res/drawable/keybg_ice_def.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true" + android:drawable="@drawable/keybg_ice_psfton" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/keybg_ice_sfton" /> + <item android:state_checkable="true" android:state_pressed="true" + android:drawable="@drawable/keybg_ice_psftoff" /> + <item android:state_checkable="true" + android:drawable="@drawable/keybg_ice_sftoff" /> + <item android:state_pressed="true" + android:drawable="@drawable/keybg_ice_p" /> + <item android:drawable="@drawable/keybg_ice" /> +</selector> diff --git a/res/drawable/keybg_ice_p.9.png b/res/drawable/keybg_ice_p.9.png Binary files differnew file mode 100644 index 0000000..4984234 --- /dev/null +++ b/res/drawable/keybg_ice_p.9.png diff --git a/res/drawable/keybg_ice_psftoff.9.png b/res/drawable/keybg_ice_psftoff.9.png Binary files differnew file mode 100644 index 0000000..7b8662b --- /dev/null +++ b/res/drawable/keybg_ice_psftoff.9.png diff --git a/res/drawable/keybg_ice_psfton.9.png b/res/drawable/keybg_ice_psfton.9.png Binary files differnew file mode 100644 index 0000000..5748d92 --- /dev/null +++ b/res/drawable/keybg_ice_psfton.9.png diff --git a/res/drawable/keybg_ice_sftoff.9.png b/res/drawable/keybg_ice_sftoff.9.png Binary files differnew file mode 100644 index 0000000..d82a1c7 --- /dev/null +++ b/res/drawable/keybg_ice_sftoff.9.png diff --git a/res/drawable/keybg_ice_sfton.9.png b/res/drawable/keybg_ice_sfton.9.png Binary files differnew file mode 100644 index 0000000..657b357 --- /dev/null +++ b/res/drawable/keybg_ice_sfton.9.png diff --git a/res/drawable/keybg_kyoto.9.png b/res/drawable/keybg_kyoto.9.png Binary files differnew file mode 100644 index 0000000..d4a02da --- /dev/null +++ b/res/drawable/keybg_kyoto.9.png diff --git a/res/drawable/keybg_kyoto_bg.png b/res/drawable/keybg_kyoto_bg.png Binary files differnew file mode 100644 index 0000000..6f94b70 --- /dev/null +++ b/res/drawable/keybg_kyoto_bg.png diff --git a/res/drawable/keybg_kyoto_def.xml b/res/drawable/keybg_kyoto_def.xml new file mode 100644 index 0000000..a54f059 --- /dev/null +++ b/res/drawable/keybg_kyoto_def.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true" + android:drawable="@drawable/keybg_kyoto_psfton" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/keybg_kyoto_sfton" /> + <item android:state_checkable="true" android:state_pressed="true" + android:drawable="@drawable/keybg_kyoto_psftoff" /> + <item android:state_checkable="true" + android:drawable="@drawable/keybg_kyoto_sftoff" /> + <item android:state_pressed="true" + android:drawable="@drawable/keybg_kyoto_p" /> + <item android:drawable="@drawable/keybg_kyoto" /> +</selector> diff --git a/res/drawable/keybg_kyoto_p.9.png b/res/drawable/keybg_kyoto_p.9.png Binary files differnew file mode 100644 index 0000000..19127f1 --- /dev/null +++ b/res/drawable/keybg_kyoto_p.9.png diff --git a/res/drawable/keybg_kyoto_psftoff.9.png b/res/drawable/keybg_kyoto_psftoff.9.png Binary files differnew file mode 100644 index 0000000..273b479 --- /dev/null +++ b/res/drawable/keybg_kyoto_psftoff.9.png diff --git a/res/drawable/keybg_kyoto_psfton.9.png b/res/drawable/keybg_kyoto_psfton.9.png Binary files differnew file mode 100644 index 0000000..e32b35d --- /dev/null +++ b/res/drawable/keybg_kyoto_psfton.9.png diff --git a/res/drawable/keybg_kyoto_sftoff.9.png b/res/drawable/keybg_kyoto_sftoff.9.png Binary files differnew file mode 100644 index 0000000..96fb094 --- /dev/null +++ b/res/drawable/keybg_kyoto_sftoff.9.png diff --git a/res/drawable/keybg_kyoto_sfton.9.png b/res/drawable/keybg_kyoto_sfton.9.png Binary files differnew file mode 100644 index 0000000..f4fc3dc --- /dev/null +++ b/res/drawable/keybg_kyoto_sfton.9.png diff --git a/res/drawable/keybg_light.9.png b/res/drawable/keybg_light.9.png Binary files differnew file mode 100644 index 0000000..2b4aa98 --- /dev/null +++ b/res/drawable/keybg_light.9.png diff --git a/res/drawable/keybg_light_def.xml b/res/drawable/keybg_light_def.xml new file mode 100644 index 0000000..da38f22 --- /dev/null +++ b/res/drawable/keybg_light_def.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true" + android:drawable="@drawable/keybg_light_psfton" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/keybg_light_sfton" /> + <item android:state_checkable="true" android:state_pressed="true" + android:drawable="@drawable/keybg_light_psftoff" /> + <item android:state_checkable="true" + android:drawable="@drawable/keybg_light_sftoff" /> + <item android:state_pressed="true" + android:drawable="@drawable/keybg_light_p" /> + <item android:drawable="@drawable/keybg_light" /> +</selector> diff --git a/res/drawable/keybg_light_p.9.png b/res/drawable/keybg_light_p.9.png Binary files differnew file mode 100644 index 0000000..c1c1e1c --- /dev/null +++ b/res/drawable/keybg_light_p.9.png diff --git a/res/drawable/keybg_light_psftoff.9.png b/res/drawable/keybg_light_psftoff.9.png Binary files differnew file mode 100644 index 0000000..edaf5ac --- /dev/null +++ b/res/drawable/keybg_light_psftoff.9.png diff --git a/res/drawable/keybg_light_psfton.9.png b/res/drawable/keybg_light_psfton.9.png Binary files differnew file mode 100644 index 0000000..d39565a --- /dev/null +++ b/res/drawable/keybg_light_psfton.9.png diff --git a/res/drawable/keybg_light_sftoff.9.png b/res/drawable/keybg_light_sftoff.9.png Binary files differnew file mode 100644 index 0000000..f26bfb5 --- /dev/null +++ b/res/drawable/keybg_light_sftoff.9.png diff --git a/res/drawable/keybg_light_sfton.9.png b/res/drawable/keybg_light_sfton.9.png Binary files differnew file mode 100644 index 0000000..65087be --- /dev/null +++ b/res/drawable/keybg_light_sfton.9.png diff --git a/res/drawable/keybg_metal_def.xml b/res/drawable/keybg_metal_def.xml index 963fe11..d4989f8 100644 --- a/res/drawable/keybg_metal_def.xml +++ b/res/drawable/keybg_metal_def.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/drawable/keybg_simple_def.xml b/res/drawable/keybg_simple_def.xml index 322ce8c..77114b0 100644 --- a/res/drawable/keybg_simple_def.xml +++ b/res/drawable/keybg_simple_def.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/drawable/keybg_wood.9.png b/res/drawable/keybg_wood.9.png Binary files differnew file mode 100644 index 0000000..e588ed6 --- /dev/null +++ b/res/drawable/keybg_wood.9.png diff --git a/res/drawable/keybg_wood_bg.png b/res/drawable/keybg_wood_bg.png Binary files differnew file mode 100644 index 0000000..2dc9f8a --- /dev/null +++ b/res/drawable/keybg_wood_bg.png diff --git a/res/drawable/keybg_wood_def.xml b/res/drawable/keybg_wood_def.xml new file mode 100644 index 0000000..cba026a --- /dev/null +++ b/res/drawable/keybg_wood_def.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_checkable="true" android:state_checked="true" android:state_pressed="true" + android:drawable="@drawable/keybg_wood_psfton" /> + <item android:state_checkable="true" android:state_checked="true" + android:drawable="@drawable/keybg_wood_sfton" /> + <item android:state_checkable="true" android:state_pressed="true" + android:drawable="@drawable/keybg_wood_psftoff" /> + <item android:state_checkable="true" + android:drawable="@drawable/keybg_wood_sftoff" /> + <item android:state_pressed="true" + android:drawable="@drawable/keybg_wood_p" /> + <item android:drawable="@drawable/keybg_wood" /> +</selector> diff --git a/res/drawable/keybg_wood_p.9.png b/res/drawable/keybg_wood_p.9.png Binary files differnew file mode 100644 index 0000000..aa6c810 --- /dev/null +++ b/res/drawable/keybg_wood_p.9.png diff --git a/res/drawable/keybg_wood_psftoff.9.png b/res/drawable/keybg_wood_psftoff.9.png Binary files differnew file mode 100644 index 0000000..fba919e --- /dev/null +++ b/res/drawable/keybg_wood_psftoff.9.png diff --git a/res/drawable/keybg_wood_psfton.9.png b/res/drawable/keybg_wood_psfton.9.png Binary files differnew file mode 100644 index 0000000..6887e7d --- /dev/null +++ b/res/drawable/keybg_wood_psfton.9.png diff --git a/res/drawable/keybg_wood_sftoff.9.png b/res/drawable/keybg_wood_sftoff.9.png Binary files differnew file mode 100644 index 0000000..4622de4 --- /dev/null +++ b/res/drawable/keybg_wood_sftoff.9.png diff --git a/res/drawable/keybg_wood_sfton.9.png b/res/drawable/keybg_wood_sfton.9.png Binary files differnew file mode 100644 index 0000000..3b4e8f7 --- /dev/null +++ b/res/drawable/keybg_wood_sfton.9.png diff --git a/res/drawable/keyboard_background.png b/res/drawable/keyboard_background.png Binary files differnew file mode 100644 index 0000000..956456e --- /dev/null +++ b/res/drawable/keyboard_background.png diff --git a/res/drawable/keyboard_key_feedback.xml b/res/drawable/keyboard_key_feedback.xml new file mode 100644 index 0000000..c483b76 --- /dev/null +++ b/res/drawable/keyboard_key_feedback.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_long_pressable="true" + android:drawable="@drawable/keyboard_key_feedback_more_background" /> + + <item android:drawable="@drawable/keyboard_key_feedback_background" /> +</selector> diff --git a/res/drawable/tutorial_12key_enter.png b/res/drawable/tutorial_12key_enter.png Binary files differindex 61abffc..9f8921b 100644 --- a/res/drawable/tutorial_12key_enter.png +++ b/res/drawable/tutorial_12key_enter.png diff --git a/res/drawable/tutorial_12key_mode.png b/res/drawable/tutorial_12key_mode.png Binary files differindex 42b939f..c9b2d60 100644 --- a/res/drawable/tutorial_12key_mode.png +++ b/res/drawable/tutorial_12key_mode.png diff --git a/res/layout-sw768dp/keyboard_android_default.xml b/res/layout-sw768dp/keyboard_android_default.xml new file mode 100644 index 0000000..420281f --- /dev/null +++ b/res/layout-sw768dp/keyboard_android_default.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<jp.co.omronsoft.openwnn.KeyboardView + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:id="@+id/keyboard" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:labelTextSize="@dimen/key_label_text_size" + android:keyTextSize="@dimen/key_text_size" + android:keyBackground="@drawable/btn_keyboard_key" + android:keyPreviewLayout="@layout/keyboard_key_preview" + android:popupLayout="@layout/keyboard_popup_keyboard" + android:background="@drawable/keyboard_background" + android:keyTextColor="@color/key_text_color" + android:paddingTop="10dip" + pj:keyBackground2nd="@drawable/btn_keyboard_key_2nd" + pj:keyTextColor2nd="@color/key_text_color_2nd" + /> + diff --git a/res/layout-sw768dp/keyboard_metal.xml b/res/layout-sw768dp/keyboard_metal.xml new file mode 100644 index 0000000..2d94a38 --- /dev/null +++ b/res/layout-sw768dp/keyboard_metal.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<jp.co.omronsoft.openwnn.KeyboardView + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:id="@+id/keyboard" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:labelTextSize="@dimen/key_label_text_size" + android:keyTextSize="@dimen/key_text_size" + android:keyBackground="@drawable/keybg_metal_def" + android:keyPreviewLayout="@layout/keyboard_key_preview" + android:popupLayout="@layout/keyboard_popup_keyboard" + android:background="@drawable/keyboard_background" + android:keyTextColor="@color/key_text_color" + pj:keyBackground2nd="@drawable/keybg_metal_def" + pj:keyTextColor2nd="@color/key_text_color" +/> diff --git a/res/layout-sw768dp/keyboard_simple.xml b/res/layout-sw768dp/keyboard_simple.xml new file mode 100644 index 0000000..dc7187e --- /dev/null +++ b/res/layout-sw768dp/keyboard_simple.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<jp.co.omronsoft.openwnn.KeyboardView + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:id="@+id/keyboard" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:labelTextSize="@dimen/key_label_text_size" + android:keyTextSize="@dimen/key_text_size" + android:keyBackground="@drawable/keybg_simple_def" + android:keyPreviewLayout="@layout/keyboard_key_preview" + android:popupLayout="@layout/keyboard_popup_keyboard" + android:background="@drawable/keybg_simple_bg" + android:keyTextColor="@color/key_text_color" + pj:keyBackground2nd="@drawable/keybg_simple_def" + pj:keyTextColor2nd="@color/key_text_color_2nd" +/> diff --git a/res/layout/bubble_text.xml b/res/layout/bubble_text.xml index d754467..64b0a01 100644 --- a/res/layout/bubble_text.xml +++ b/res/layout/bubble_text.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/layout/candidate_longpress_dialog.xml b/res/layout/candidate_longpress_dialog.xml new file mode 100644 index 0000000..a0b4da2 --- /dev/null +++ b/res/layout/candidate_longpress_dialog.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- candidate list --> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + > + <TextView + android:id="@+id/candidate_longpress_dialog_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="@dimen/candidate_longpress_dialog_candidate_word_size" + android:textColor="@color/candidate_longpress_dialog_text" + android:gravity="center" + /> + <HorizontalScrollView + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="match_parent" + > + <LinearLayout + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + > + <Button + android:id="@+id/candidate_longpress_dialog_cancel" + android:layout_height="match_parent" + android:layout_width="wrap_content" + android:text="@string/dialog_button_cancel" + android:textSize="@dimen/candidate_longpress_dialog_button_word_size" + android:soundEffectsEnabled="false" + /> + <Button + android:id="@+id/candidate_longpress_dialog_select" + android:layout_height="match_parent" + android:layout_width="wrap_content" + android:text="@string/button_candidate_select" + android:textSize="@dimen/candidate_longpress_dialog_button_word_size" + android:soundEffectsEnabled="false" + /> + <Button + android:id="@+id/candidate_longpress_dialog_delete" + android:layout_height="match_parent" + android:layout_width="wrap_content" + android:text="@string/button_candidate_delete" + android:textSize="@dimen/candidate_longpress_dialog_button_word_size" + android:visibility="gone" + android:soundEffectsEnabled="false" + /> + </LinearLayout> + </HorizontalScrollView> +</LinearLayout> diff --git a/res/layout/candidate_scale_up.xml b/res/layout/candidate_scale_up.xml deleted file mode 100644 index e1d52a1..0000000 --- a/res/layout/candidate_scale_up.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<!-- candidate list --> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:background="@color/candidate_back" - android:layout_width="match_parent" - android:layout_height="wrap_content" - > - <TextView - android:id="@+id/candidate_scale_up_text" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/candidate_back" - android:textSize="@dimen/candidate_delete_word_size" - android:textColor="@color/candidate_text" - android:gravity="center" - /> - <LinearLayout - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - > - <jp.co.omronsoft.openwnn.CandidateViewButton - android:id="@+id/candidate_select" - android:layout_height="match_parent" - android:layout_width="wrap_content" - android:text="@string/button_candidate_select" - /> - <jp.co.omronsoft.openwnn.CandidateViewButton - android:id="@+id/candidate_delete" - android:layout_height="match_parent" - android:layout_width="wrap_content" - android:text="@string/button_candidate_delete" - android:visibility="gone" - /> - <jp.co.omronsoft.openwnn.CandidateViewButton - android:id="@+id/candidate_cancel" - android:layout_height="match_parent" - android:layout_width="wrap_content" - android:text="@string/button_candidate_cancel" - /> - </LinearLayout> -</LinearLayout> diff --git a/res/layout/candidates.xml b/res/layout/candidates.xml index dc26030..09246a2 100644 --- a/res/layout/candidates.xml +++ b/res/layout/candidates.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -21,19 +21,66 @@ android:layout_width="match_parent" android:layout_height="wrap_content" > + <LinearLayout + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + + <LinearLayout + android:id="@+id/candview_tab" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <LinearLayout + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/candidate_tab_back" + > + <TextView + android:id="@+id/candview_symbol" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:background="@drawable/cand_tab" + android:singleLine="true" + android:gravity="center" + android:text="@string/cand_tab_symbol_txt" + android:textColor="@color/tab_textcolor_no_select" + android:textSize="@dimen/tab_text_size" + android:soundEffectsEnabled="false" + /> + <TextView + android:id="@+id/candview_emoticon" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:background="@drawable/cand_tab" + android:singleLine="true" + android:gravity="center" + android:text="@string/cand_tab_emoticon_txt" + android:textColor="@color/tab_textcolor_no_select" + android:textSize="@dimen/tab_text_size" + android:soundEffectsEnabled="false" + /> + </LinearLayout> + </LinearLayout> + <ScrollView android:id="@+id/candview_scroll" android:layout_width="match_parent" android:layout_height="wrap_content" android:fadingEdgeLength="0dip" android:scrollbars="vertical" + android:background="@color/candidate_back" > <LinearLayout android:id="@+id/candview_base" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/candidate_back" > <!--View android:layout_height="wrap_content" @@ -45,17 +92,15 @@ android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/candidate_back" /> <AbsoluteLayout android:id="@+id/candidates_2nd_view" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/candidate_back" /> </LinearLayout> </ScrollView> - + </LinearLayout> <LinearLayout android:id="@+id/read_more" android:layout_width="match_parent" @@ -65,9 +110,11 @@ android:gravity="right" > <ImageView - android:id="@+id/read_more_text" + android:id="@+id/read_more_button" android:layout_height="wrap_content" - android:layout_width="wrap_content" + android:layout_width="wrap_content" + android:paddingRight="2dip" + android:soundEffectsEnabled="false" /> </LinearLayout> </FrameLayout> diff --git a/res/layout/candidates_1line.xml b/res/layout/candidates_1line.xml new file mode 100644 index 0000000..962486f --- /dev/null +++ b/res/layout/candidates_1line.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- candidate list --> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="@dimen/candidate_layout_height" + > + + <LinearLayout + android:id="@+id/left_more" + android:layout_width="wrap_content" + android:layout_height="@dimen/candidate_layout_height" + android:orientation="horizontal" + android:background="@drawable/cand_back_1line" + > + <ImageView + android:id="@+id/left_more_imageview" + android:src="@drawable/cand_left" + android:layout_width="@dimen/candidate_layout_width" + android:layout_height="match_parent" + android:clickable="true" + android:background="@color/candidate_back_1line" + android:soundEffectsEnabled="false" + /> + </LinearLayout> + + <HorizontalScrollView + android:id="@+id/candview_scroll_1line" + android:layout_width="wrap_content" + android:layout_height="@dimen/candidate_layout_height" + android:scrollbars="none" + android:layout_weight="1" + android:fadingEdge="horizontal" + android:background="@color/candidate_back_1line" + > + <LinearLayout + android:id="@+id/candidates_view_1line" + android:layout_width="match_parent" + android:layout_height="@dimen/candidate_layout_height" + android:background="@color/candidate_back_1line" + /> + </HorizontalScrollView> + + <LinearLayout + android:id="@+id/right_more" + android:layout_width="wrap_content" + android:layout_height="@dimen/candidate_layout_height" + android:orientation="horizontal" + android:background="@drawable/cand_back_1line" + > + <ImageView + android:id="@+id/right_more_imageview" + android:src="@drawable/cand_right" + android:layout_width="@dimen/candidate_layout_width" + android:layout_height="match_parent" + android:clickable="true" + android:background="@color/candidate_back_1line" + android:soundEffectsEnabled="false" + /> + </LinearLayout> +</LinearLayout> diff --git a/res/layout/debug_tool_engine.xml b/res/layout/debug_tool_engine.xml new file mode 100644 index 0000000..134f5d2 --- /dev/null +++ b/res/layout/debug_tool_engine.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + + <TextView + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:text="@string/openwnn_engine_label" + /> + + <RadioGroup android:id="@+id/radio_group" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <RadioButton android:id="@+id/radio_en" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/debug_openwnn_engine_en" + android:textSize="11sp" + /> + </RadioGroup> + + <LinearLayout android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + + <Button android:id="@+id/execButton2" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginRight="3dip" + android:text="@string/execButton2" + android:textSize="11sp" + /> + + <TextView android:id="@+id/editText2" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:textSize="11sp" + /> + </LinearLayout> + + <ScrollView + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:background="#000000"> + + <LinearLayout android:id="@+id/engine_scroll" + android:orientation="vertical" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + + </LinearLayout> + </ScrollView> +</LinearLayout> diff --git a/res/layout/debug_tool_onevent.xml b/res/layout/debug_tool_onevent.xml new file mode 100644 index 0000000..9d82de0 --- /dev/null +++ b/res/layout/debug_tool_onevent.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + + <TextView + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:text="@string/app_openwnn_test" + /> + + <EditText android:id="@+id/editText" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + /> + + <Button android:id="@+id/execButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginRight="3dip" + android:text="@string/execButton"/> + + <ScrollView + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:background="#000000"> + <TextView android:id="@+id/textView" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:textSize="5pt" + /> + </ScrollView> +</LinearLayout> diff --git a/res/layout/debug_tool_text.xml b/res/layout/debug_tool_text.xml new file mode 100644 index 0000000..680fbff --- /dev/null +++ b/res/layout/debug_tool_text.xml @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + + <LinearLayout android:orientation="vertical" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + + <LinearLayout android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/debug_texttype_anything" + /> + + <EditText + android:layout_width="fill_parent" + android:layout_height="wrap_content" + /> + </LinearLayout> + + <LinearLayout android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/debug_texttype_integer" + /> + + <EditText + android:numeric="integer" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + /> + </LinearLayout> + + <LinearLayout android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/debug_texttype_signed" + /> + + <EditText + android:numeric="signed" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + /> + </LinearLayout> + + <LinearLayout android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/debug_texttype_demical" + /> + + <EditText + android:numeric="decimal" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + /> + </LinearLayout> + + <LinearLayout android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/debug_texttype_password" + /> + + <EditText + android:password="true" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + /> + + </LinearLayout> + + <LinearLayout android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/debug_texttype_phone" + /> + + <EditText + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:phoneNumber="true" + /> + </LinearLayout> + + <LinearLayout android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/debug_texttype_singleLine" + /> + + <EditText + android:id="@+id/singleLine" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:singleLine="true" + /> + </LinearLayout> + </LinearLayout> +</LinearLayout> diff --git a/res/layout/keyboard_android_default.xml b/res/layout/keyboard_android_default.xml index 3fd8738..3a0550b 100644 --- a/res/layout/keyboard_android_default.xml +++ b/res/layout/keyboard_android_default.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,11 +14,26 @@ See the License for the specific language governing permissions and limitations under the License. --> -<android.inputmethodservice.KeyboardView +<jp.co.omronsoft.openwnn.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:id="@+id/keyboard" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@drawable/keyboard_background" + android:keyBackground="@drawable/btn_keyboard_key" + android:verticalCorrection="-10dip" + android:keyPreviewLayout="@layout/keyboard_key_preview" + android:keyPreviewOffset="-12dip" + android:keyPreviewHeight="80dip" + android:keyTextSize="22dip" + android:keyTextColor="@color/key_text_color" + android:labelTextSize="@dimen/key_label_text_size" + android:popupLayout="@layout/keyboard_popup_keyboard" + android:shadowColor="#BB000000" + android:shadowRadius="0.5" + pj:keyBackground2nd="@drawable/btn_keyboard_key_2nd" + pj:keyTextColor2nd="@color/key_text_color_2nd" /> diff --git a/res/layout/keyboard_classic.xml b/res/layout/keyboard_classic.xml new file mode 100644 index 0000000..bcb1c6f --- /dev/null +++ b/res/layout/keyboard_classic.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<android.inputmethodservice.KeyboardView + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/keyboard" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:keyBackground="@drawable/keybg_classic_def" + android:background="@drawable/keybg_classic_bg" +/> diff --git a/res/layout/keyboard_default_main.xml b/res/layout/keyboard_default_main.xml index f93b7e8..c01e02c 100644 --- a/res/layout/keyboard_default_main.xml +++ b/res/layout/keyboard_default_main.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,11 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. --> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:fadingEdge="vertical" - android:fadingEdgeLength="5dip" - > -</LinearLayout> + +<jp.co.omronsoft.openwnn.BaseInputView + xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:requiresFadingEdge="vertical" + android:fadingEdgeLength="5dip"/> diff --git a/res/layout/keyboard_default_sub.xml b/res/layout/keyboard_default_sub.xml index 2be1552..6ec3fab 100644 --- a/res/layout/keyboard_default_sub.xml +++ b/res/layout/keyboard_default_sub.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/layout/keyboard_ice.xml b/res/layout/keyboard_ice.xml new file mode 100644 index 0000000..f0722d9 --- /dev/null +++ b/res/layout/keyboard_ice.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<android.inputmethodservice.KeyboardView + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/keyboard" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:keyBackground="@drawable/keybg_ice_def" + android:background="@drawable/keybg_ice_bg" +/> diff --git a/res/layout/keyboard_key_preview.xml b/res/layout/keyboard_key_preview.xml new file mode 100644 index 0000000..7fe375a --- /dev/null +++ b/res/layout/keyboard_key_preview.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<TextView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="80dip" + android:textSize="40dip" + android:textColor="@color/key_text_color" + android:minWidth="32dip" + android:gravity="center" + android:background="@drawable/keyboard_key_feedback" + /> diff --git a/res/layout/keyboard_kyoto.xml b/res/layout/keyboard_kyoto.xml new file mode 100644 index 0000000..c313f3b --- /dev/null +++ b/res/layout/keyboard_kyoto.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<android.inputmethodservice.KeyboardView + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/keyboard" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:keyBackground="@drawable/keybg_kyoto_def" + android:background="@drawable/keybg_kyoto_bg" +/> diff --git a/res/layout/keyboard_light.xml b/res/layout/keyboard_light.xml new file mode 100644 index 0000000..2ffbc0f --- /dev/null +++ b/res/layout/keyboard_light.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<android.inputmethodservice.KeyboardView + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/keyboard" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:keyBackground="@drawable/keybg_light_def" +/> diff --git a/res/layout/keyboard_metal.xml b/res/layout/keyboard_metal.xml index 9acfa2c..9c5656b 100644 --- a/res/layout/keyboard_metal.xml +++ b/res/layout/keyboard_metal.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,11 +14,18 @@ See the License for the specific language governing permissions and limitations under the License. --> -<android.inputmethodservice.KeyboardView +<jp.co.omronsoft.openwnn.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:id="@+id/keyboard" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:keyBackground="@drawable/keybg_metal_def" + android:keyPreviewLayout="@layout/keyboard_key_preview" + android:popupLayout="@layout/keyboard_popup_keyboard" + android:background="@drawable/keyboard_background" + android:keyTextColor="@color/key_text_color" + pj:keyBackground2nd="@drawable/keybg_metal_def" + pj:keyTextColor2nd="@color/key_text_color" /> diff --git a/res/layout/keyboard_popup_keyboard.xml b/res/layout/keyboard_popup_keyboard.xml new file mode 100644 index 0000000..0215cfe --- /dev/null +++ b/res/layout/keyboard_popup_keyboard.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:background="@drawable/keyboard_popup_panel_background" + > + + <jp.co.omronsoft.openwnn.KeyboardView + android:id="@+id/keyboardView" + android:background="@android:color/transparent" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:keyBackground="@drawable/btn_keyboard_key_std" + android:verticalCorrection="-10dip" + android:keyPreviewLayout="@layout/keyboard_key_preview" + android:keyPreviewOffset="-12dip" + android:keyPreviewHeight="80dip" + android:keyTextSize="22dip" + android:keyTextColor="@color/key_text_color_std" + android:labelTextSize="14dip" + android:popupLayout="@layout/keyboard_popup_keyboard" + android:shadowColor="#BB000000" + android:shadowRadius="0.5" + /> + <ImageButton android:id="@+id/closeButton" + android:background="@android:color/transparent" + android:src="@drawable/btn_close" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginLeft="8dp" + android:clickable="true" + /> +</LinearLayout> diff --git a/res/layout/keyboard_simple.xml b/res/layout/keyboard_simple.xml index befe34f..3eed320 100644 --- a/res/layout/keyboard_simple.xml +++ b/res/layout/keyboard_simple.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,12 +14,18 @@ See the License for the specific language governing permissions and limitations under the License. --> -<android.inputmethodservice.KeyboardView +<jp.co.omronsoft.openwnn.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:id="@+id/keyboard" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:keyBackground="@drawable/keybg_simple_def" + android:keyPreviewLayout="@layout/keyboard_key_preview" + android:popupLayout="@layout/keyboard_popup_keyboard" android:background="@drawable/keybg_simple_bg" + android:keyTextColor="@color/key_text_color" + pj:keyBackground2nd="@drawable/keybg_simple_def" + pj:keyTextColor2nd="@color/key_text_color_2nd" /> diff --git a/res/layout/keyboard_wood.xml b/res/layout/keyboard_wood.xml new file mode 100644 index 0000000..81c136c --- /dev/null +++ b/res/layout/keyboard_wood.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<android.inputmethodservice.KeyboardView + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/keyboard" + android:layout_alignParentBottom="true" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:keyBackground="@drawable/keybg_wood_def" + android:background="@drawable/keybg_wood_bg" +/> diff --git a/res/layout/user_dictionary_tools_edit.xml b/res/layout/user_dictionary_tools_edit.xml index 5886857..39a074a 100644 --- a/res/layout/user_dictionary_tools_edit.xml +++ b/res/layout/user_dictionary_tools_edit.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -46,21 +46,21 @@ android:layout_height="?android:attr/listPreferredItemHeight" android:layout_marginTop="1dip" android:background="@android:drawable/bottom_bar"> - <Button android:id="@+id/addButton" + <Button android:id="@+id/cancelButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentLeft="true" - android:text="@string/user_dictionary_add" + android:text="@string/dialog_button_cancel" android:minWidth="120dip" android:minHeight="48dip"/> - <Button android:id="@+id/cancelButton" + <Button android:id="@+id/addButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentRight="true" - android:text="@string/dialog_button_cancel" + android:text="@string/user_dictionary_add" android:minWidth="120dip" android:minHeight="48dip"/> </RelativeLayout> diff --git a/res/layout/user_dictionary_tools_edit_header.xml b/res/layout/user_dictionary_tools_edit_header.xml index 5e4c5d6..f074cfc 100644 --- a/res/layout/user_dictionary_tools_edit_header.xml +++ b/res/layout/user_dictionary_tools_edit_header.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/layout/user_dictionary_tools_list.xml b/res/layout/user_dictionary_tools_list.xml index 4ebfbd8..3fa8888 100644 --- a/res/layout/user_dictionary_tools_list.xml +++ b/res/layout/user_dictionary_tools_list.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -19,6 +19,13 @@ android:paddingTop="5sp" android:layout_width="match_parent" android:layout_height="wrap_content"> + <TextView + android:id="@+id/user_dictionary_tools_list_title_words_count" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="right" + android:gravity="right" + android:textColor="?android:attr/textColorPrimary"/> <LinearLayout android:orientation="horizontal" android:gravity="center" diff --git a/res/layout/user_dictionary_tools_list_header.xml b/res/layout/user_dictionary_tools_list_header.xml deleted file mode 100644 index 3e5159c..0000000 --- a/res/layout/user_dictionary_tools_list_header.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="2dip" - android:layout_alignParentLeft="true" - android:text="@string/user_dictionary_list_words_en" - android:textColor="?android:attr/textColorPrimary"/> - <TextView - android:id="@+id/user_dictionary_tools_list_title_words_count" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="2dip" - android:layout_alignParentRight="true" - android:textColor="?android:attr/textColorPrimary"/> -</RelativeLayout> diff --git a/res/layout/user_dictionary_tools_list_header_ja.xml b/res/layout/user_dictionary_tools_list_header_ja.xml deleted file mode 100644 index 0db6f27..0000000 --- a/res/layout/user_dictionary_tools_list_header_ja.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="2dip" - android:layout_alignParentLeft="true" - android:text="@string/user_dictionary_list_words_ja" - android:textColor="?android:attr/textColorPrimary"/> - <TextView - android:id="@+id/user_dictionary_tools_list_title_words_count" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="2dip" - android:layout_alignParentRight="true" - android:textColor="?android:attr/textColorPrimary"/> -</RelativeLayout> diff --git a/res/values-ja/string.xml b/res/values-ja/string.xml index 296da5a..3699a0d 100644 --- a/res/values-ja/string.xml +++ b/res/values-ja/string.xml @@ -1,6 +1,21 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- + Copyright (C) 2008-2011 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -40,15 +55,18 @@ <string name="preference_keyboard_simple">シンプル</string> <string name="preference_keyboard_metal">メタリック</string> - <string name="preference_conversion_menu">変換設定</string> + <string name="preference_conversion_menu_ja">日本語変換設定</string> + <string name="preference_conversion_menu_en">英語変換設定</string> - <string name="preference_prediction_title">予測変換</string> + <string name="preference_prediction_title_ja">日本語予測変換</string> + <string name="preference_prediction_title_en">英語予測変換</string> <string name="preference_prediction_summary">文字を入力すると変換候補を表示する</string> - <string name="preference_correct_spell_title">入力ミス補正</string> + <string name="preference_correct_spell_title_en">英語入力ミス補正</string> <string name="preference_correct_spell_summary">入力間違いの修正候補を表示する</string> - <string name="preference_input_learning_title">候補学習</string> + <string name="preference_input_learning_title_ja">日本語候補学習</string> + <string name="preference_input_learning_title_en">英語候補学習</string> <string name="preference_input_learning_summary">変換で確定した語句を学習する</string> <string name="preference_aboutime_menu">IMEについて</string> @@ -84,9 +102,6 @@ <!-- user dictionary --> <string name="user_dictionary_list_words">単語一覧</string> - <string name="user_dictionary_list_words_en">英語ユーザー辞書 単語一覧</string> - <string name="user_dictionary_list_words_ja">日本語ユーザー辞書 単語一覧</string> - <string name="user_dictionary_list_words_zhcn">中国語ユーザー辞書 単語一覧</string> <string name="user_dictionary_edit_words">単語編集</string> <string name="user_dictionary_title_read">読み</string> <string name="user_dictionary_title_candidate">表記</string> @@ -103,18 +118,28 @@ <!-- IME dependency --> <!-- OpenWnn English --> - <string name="openwnn_english_copyright">Ver.1.3.5\nオムロン ソフトウェア(株)</string> + <string name="openwnn_english_copyright">Ver.1.3.6\nオムロン ソフトウェア(株)</string> <!-- OpenWnn Japanese --> - <string name="openwnn_japanese_copyright">Ver.1.3.5\nオムロン ソフトウェア(株)</string> + <string name="openwnn_japanese_copyright">Ver.1.3.6\nオムロン ソフトウェア(株)</string> <!-- OpenWnn Chinese --> - <string name="openwnn_china_copyright">Ver.1.3.5\nオムロン ソフトウェア(株)</string> + <string name="openwnn_china_copyright">Ver.1.3.6\nオムロン ソフトウェア(株)</string> + + <!-- Candidate Delete --> + <string name="button_candidate_select">選 択</string> + <string name="button_candidate_delete">学習削除</string> - <!-- Candidate Delete --> - <string name="button_candidate_select">選 択</string> - <string name="button_candidate_delete">学習削除</string> - <string name="button_candidate_cancel">閉じる</string> + <!-- Candidate --> + <string name="cand_tab_symbol_txt">記号</string> + <string name="cand_tab_emoticon_txt">顔文字</string> + + <!-- Symbol --> + <string name="half_symbol_txt">記号(半角)</string> + <string name="full_symbol_txt">記号(全角)</string> + + <!-- Symbol keyboard --> + <string name="key_symbol_mode">戻る</string> <!-- Tutorial --> <string name="touch_to_continue">次へ >></string> @@ -132,5 +157,15 @@ <string name="tip_to_step5"><b>入力が完了したら、携帯の\n「戻る」キー(←)を押して\nキーボードを閉じます。</b></string> <string name="tip_to_step6"><b>これでチュートリアルは終わりです。</b></string> + <string name="ti_input_mode_full_hirakana_title_txt">ひらがな漢字</string> + <string name="ti_input_mode_full_katakana_title_txt">全角カタカナ</string> + <string name="ti_input_mode_half_katakana_title_txt">半角カタカナ</string> + <string name="ti_input_mode_full_alphabet_title_txt">全角英字</string> + <string name="ti_input_mode_half_alphabet_title_txt">半角英字</string> + <string name="ti_input_mode_full_number_title_txt">全角数字</string> + <string name="ti_input_mode_half_number_title_txt">半角数字</string> + + <string name="ti_long_press_dialog_input_mode_txt">入力モード切替</string> + </resources> diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml new file mode 100644 index 0000000..f5606b4 --- /dev/null +++ b/res/values-land/dimens.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <!-- key_height x 4 = keyboard_height --> + <!-- key_height = symbol_keyboard_height --> + <dimen name="key_height">40dip</dimen> + <dimen name="key_height_voice">80dip</dimen> + <dimen name="key_height_4">40dip</dimen> + <dimen name="key_height_5">36dip</dimen> + <dimen name="key_height_5_bottom">68dip</dimen> + <dimen name="key_height_adjustment">4dip</dimen> + <dimen name="key_height_4key">46dip</dimen> + <dimen name="candidate_delete_word_size">18dip</dimen> + <dimen name="key_text_size">17.5dip</dimen> + <dimen name="cand_space_width_emoji_symbol">0dip</dimen> + <dimen name="keyboard_height">160dip</dimen> + <dimen name="symbol_keyboard_height">40dip</dimen> + <dimen name="key_label_text_size">12dip</dimen> +</resources> diff --git a/res/values-sw768dp-land/dimens.xml b/res/values-sw768dp-land/dimens.xml new file mode 100644 index 0000000..1e5a65a --- /dev/null +++ b/res/values-sw768dp-land/dimens.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <dimen name="key_height">85dip</dimen> + <dimen name="key_height_4">46dip</dimen> + <dimen name="key_height_4key">85dip</dimen> + <dimen name="candidate_delete_word_size">40dip</dimen> + <dimen name="key_text_size">30sp</dimen> + <dimen name="cand_space_width_emoji_symbol">0dip</dimen> + <dimen name="keyboard_height">340dip</dimen> + <dimen name="symbol_keyboard_height">85dip</dimen> + <dimen name="key_label_text_size">26sp</dimen> +</resources> diff --git a/res/values-sw768dp/colors.xml b/res/values-sw768dp/colors.xml new file mode 100644 index 0000000..03d157d --- /dev/null +++ b/res/values-sw768dp/colors.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <color name="candidate_text">#FFFFFFFF</color> + <color name="candidate_back">#FF000000</color> +</resources> diff --git a/res/values-sw768dp/dimens.xml b/res/values-sw768dp/dimens.xml new file mode 100644 index 0000000..733c66c --- /dev/null +++ b/res/values-sw768dp/dimens.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <dimen name="cand_minimum_height">60dip</dimen> + <dimen name="key_height">73dip</dimen> + <dimen name="key_height_4">50dip</dimen> + <dimen name="key_height_4key">73dip</dimen> + <dimen name="candidate_delete_word_size">40dip</dimen> + <dimen name="key_label_text_size">20sp</dimen> + <dimen name="key_text_size">24sp</dimen> + <dimen name="cand_normal_text_size">20sp</dimen> + <dimen name="cand_category_text_size">20sp</dimen> + <dimen name="cand_minimum_width">52dip</dimen> + <dimen name="cand_space_width">20dip</dimen> + <dimen name="cand_category_minimum_height">25dip</dimen> + <dimen name="cand_left_align_threshold">80dip</dimen> + <dimen name="keyboard_height">292dip</dimen> + <dimen name="symbol_keyboard_height">73dip</dimen> + <dimen name="tab_text_size">18sp</dimen> + <dimen name="candidate_layout_width">36dp</dimen> + <dimen name="candidate_layout_height">60dp</dimen> +</resources> diff --git a/res/values-zh-rCN/string.xml b/res/values-zh-rCN/string.xml index 1f798a8..0d10514 100644 --- a/res/values-zh-rCN/string.xml +++ b/res/values-zh-rCN/string.xml @@ -1,6 +1,21 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- + Copyright (C) 2008-2011 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -36,15 +51,18 @@ <string name="preference_keyboard_skin_title">键盘自定义</string> <string name="preference_keyboard_skin_summary">切换到键盘自定义功能。</string> - <string name="preference_conversion_menu">输入设定</string> + <string name="preference_conversion_menu_ja">日语用输入设定</string> + <string name="preference_conversion_menu_en">英语用输入设定</string> - <string name="preference_prediction_title">预测输入</string> + <string name="preference_prediction_title_ja">日语用预测输入</string> + <string name="preference_prediction_title_en">英语用预测输入</string> <string name="preference_prediction_summary">显示预测候选字词。</string> - <string name="preference_correct_spell_title">错误修正</string> + <string name="preference_correct_spell_title_en">英语用错误修正</string> <string name="preference_correct_spell_summary">修正错误输入并显示正确的候补词。</string> - <string name="preference_input_learning_title">学习词典</string> + <string name="preference_input_learning_title_ja">日语用学习词典</string> + <string name="preference_input_learning_title_en">英语用学习词典</string> <string name="preference_input_learning_summary">将输入的字词保存在学习词典。</string> <string name="preference_aboutime_menu">关于IME</string> @@ -80,9 +98,6 @@ <!-- user dictionary --> <string name="user_dictionary_list_words">单词一览</string> - <string name="user_dictionary_list_words_en">英语用户词典 单词一览</string> - <string name="user_dictionary_list_words_ja">日语用户词典 单词一览</string> - <string name="user_dictionary_list_words_zhcn">中文用户词典 单词一览</string> <string name="user_dictionary_edit_words">单词编辑</string> <string name="user_dictionary_title_read">读音</string> <string name="user_dictionary_title_candidate">候补词</string> @@ -99,6 +114,16 @@ <string name="button_candidate_select">选择</string> <string name="button_candidate_delete">删除</string> - <string name="button_candidate_cancel">关闭</string> + + <string name="ti_input_mode_full_hirakana_title_txt">平假名-汉字</string> + <string name="ti_input_mode_full_katakana_title_txt">全角片假名</string> + <string name="ti_input_mode_half_katakana_title_txt">半角片假名</string> + <string name="ti_input_mode_full_alphabet_title_txt">全角字母</string> + <string name="ti_input_mode_half_alphabet_title_txt">半角字母</string> + <string name="ti_input_mode_full_number_title_txt">全角数字</string> + <string name="ti_input_mode_half_number_title_txt">半角数字</string> + + <string name="ti_long_press_dialog_input_mode_txt">输入模式</string> + </resources> diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 740668a..f0657de 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/values/attrs.xml b/res/values/attrs.xml new file mode 100644 index 0000000..5b86598 --- /dev/null +++ b/res/values/attrs.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <declare-styleable name="WnnKeyboardView"> + <!-- 2nd Image for the key. This image needs to be a StateListDrawable, with the following + possible states: normal, pressed, checkable, checkable+pressed, checkable+checked, + checkable+checked+pressed. --> + <attr name="keyBackground2nd" format="reference" /> + <attr name="keyTextColor2nd" format="color" /> + </declare-styleable> + + <declare-styleable name="WnnKeyboard_Key"> + <!-- Whether this is 2nd key --> + <attr name="isSecondKey" format="boolean" /> + </declare-styleable> +</resources> diff --git a/res/values/colors.xml b/res/values/colors.xml index 66c1d9a..cfd19e0 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,16 +15,31 @@ limitations under the License. --> <resources> - <color name="candidate_text">#ff404040</color> - <color name="candidate_back">#FFEFEBEF</color> + <color name="candidate_text">#FFFFFFFF</color> + <color name="candidate_text_1line">#FFFFFFFF</color> + <color name="candidate_back">#222222</color> + <color name="candidate_back_1line">#FF000000</color> + <color name="candidate_tab_back">#FF000000</color> <color name="indicator_textcolor_default">#0032CD32</color> - <color name="indicator_textcolor_caps_off">#0032CD32</color> - <color name="indicator_textcolor_caps_on">#Cd32CD32</color> + <color name="indicator_textcolor_caps_off">#FFC0C0C0</color> + <color name="indicator_textcolor_caps_on">#CD32CD32</color> <color name="indicator_textcolor_caps_lock">#FF32CD32</color> - <color name="indicator_textcolor_alt_off">#00ff8800</color> - <color name="indicator_textcolor_alt_on">#CDff8800</color> - <color name="indicator_textcolor_alt_lock">#ffff8800</color> - <color name="indicator_textbackground_default">#fff0f0f0</color> + <color name="indicator_textcolor_alt_off">#FFC0C0C0</color> + <color name="indicator_textcolor_alt_on">#CDFF8800</color> + <color name="indicator_textcolor_alt_lock">#FFFF8800</color> + <color name="indicator_textbackground_default">#FFF0F0F0</color> <color name="indicator_background_lock_caps">#5532CD32</color> - <color name="indicator_background_lock_alt">#55ff8800</color> + <color name="indicator_background_lock_alt">#55FF8800</color> + <color name="keybord_textcolor_default">#FFFFFFFF</color> + <color name="candidate_webapi_text">#FF0000FF</color> + <color name="nocandidate_text">#400000FF</color> + <color name="key_text_color">#FFFFFFFF</color> + <color name="key_text_color_2nd">#FFFFFFFF</color> + <color name="key_text_color_std">#FFFFFFFF</color> + <color name="symbol_tab">#FF000000</color> + <color name="symbol_tab_gray">#FFAAAAAA</color> + <color name="tab_textcolor_select">#FFFFFFFF</color> + <color name="tab_textcolor_no_select">#FFFFFFFF</color> + <color name="tab_textcolor_disable">#FF404040</color> + <color name="candidate_longpress_dialog_text">#FF000000</color> </resources> diff --git a/res/values/debug_tool_values.xml b/res/values/debug_tool_values.xml new file mode 100644 index 0000000..20b51aa --- /dev/null +++ b/res/values/debug_tool_values.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<resources> + <string name="openwnn_label">OpenWnn</string> + <string name="app_openwnn_test">OpenWnn onEvent() Test</string> + <string name="execButton">Execute onEvent Test</string> + <string name="openwnn_engine_label">OpenWnnEngine</string> + <string name="execButton2">Engine All</string> + + <string name="debug_openwnn_engine_en">OpenWnnEngineEN</string> + <string name="debug_openwnn_engine_jajp">OpenWnnEngineJAJP</string> + <string name="debug_openwnn_engine_znch">OpenWnnEngineZNCH</string> + <string name="debug_texttype_anything">textType:anything</string> + <string name="debug_texttype_integer">textType:integer</string> + <string name="debug_texttype_signed">textType:signed</string> + <string name="debug_texttype_demical">textType:demical</string> + <string name="debug_texttype_password">textType:password</string> + <string name="debug_texttype_phone">textType:phoneNumber</string> + <string name="debug_texttype_singleLine">android:singleLine</string> + <string name="debug_texttype_date_time">android:inputType</string> +</resources> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index d90f9aa..0bc61d0 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,10 +15,38 @@ limitations under the License. --> <resources> + <!-- key_height x 4 = keyboard_height --> + <!-- key_height = symbol_keyboard_height --> <dimen name="key_height">50dip</dimen> + <dimen name="key_height_4">50dip</dimen> + <dimen name="key_height_5">40dip</dimen> + <dimen name="key_height_5_bottom">60dip</dimen> + <dimen name="key_height_qwerty">44dip</dimen> <dimen name="key_height_landscape">34dip</dimen> - <dimen name="candidate_font_size">20sp</dimen> - <dimen name="candidate_delete_word_size">28px</dimen> - <dimen name="candidate_delete_word_size_landscape">24px</dimen> + <dimen name="key_height_adjustment">0dip</dimen> + <dimen name="key_height_4key">50dip</dimen> + <dimen name="candidate_delete_word_size">28dip</dimen> + <dimen name="key_label_text_size">12dip</dimen> + <dimen name="key_text_size">22dip</dimen> + <dimen name="cand_normal_text_size">18sp</dimen> + <dimen name="cand_category_text_size">18dip</dimen> + <dimen name="cand_minimum_width">52dip</dimen> + <dimen name="cand_minimum_height">37dip</dimen> + <dimen name="cand_space_width">20dip</dimen> + <dimen name="cand_space_width_emoji_symbol">4dip</dimen> + <dimen name="cand_category_minimum_height">25dip</dimen> + <dimen name="cand_left_align_threshold">80dip</dimen> + <dimen name="keyboard_height">200dip</dimen> + <dimen name="symbol_keyboard_height">50dip</dimen> + <dimen name="preview_offset_candidate">37dip</dimen> + <dimen name="preview_offset_symbol">148dip</dimen> + <dimen name="tab_text_size">18dip</dimen> + <dimen name="list_preference_span_string_gap">22dip</dimen> + <dimen name="list_preference_span_image_gap">11dip</dimen> + <dimen name="list_preference_span_right_gap">10dip</dimen> + <dimen name="candidate_layout_width">36dp</dimen> + <dimen name="candidate_layout_height">60dp</dimen> <dimen name="bubble_pointer_offset">22dip</dimen> -</resources> + <dimen name="candidate_longpress_dialog_button_word_size">12dip</dimen> + <dimen name="candidate_longpress_dialog_candidate_word_size">28dip</dimen> +</resources>
\ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 883a927..e9e1019 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1,6 +1,21 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- + Copyright (C) 2008-2011 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -41,14 +56,21 @@ <string name="preference_keyboard_metal">Metal</string> <string name="preference_conversion_menu">Conversion</string> + <string name="preference_conversion_menu_ja">Japanese Conversion</string> + <string name="preference_conversion_menu_en">English Conversion</string> <string name="preference_prediction_title">Word Prediction</string> + <string name="preference_prediction_title_ja">Japanese Word Prediction</string> + <string name="preference_prediction_title_en">English Word Prediction</string> <string name="preference_prediction_summary">Display predicted words as conversion candidates.</string> <string name="preference_correct_spell_title">Typing Error Correction</string> + <string name="preference_correct_spell_title_en">English Typing Error Correction</string> <string name="preference_correct_spell_summary">Display predicted words for correcting typing error.</string> <string name="preference_input_learning_title">Input Word Learning</string> + <string name="preference_input_learning_title_ja">Japanese Input Word Learning</string> + <string name="preference_input_learning_title_en">English Input Word Learning</string> <string name="preference_input_learning_summary">Learn input words.</string> <string name="preference_aboutime_menu"> About IME </string> @@ -84,9 +106,9 @@ <!-- user dictionary --> <string name="user_dictionary_list_words">Registered words</string> - <string name="user_dictionary_list_words_en">Registered words in English User Dic</string> - <string name="user_dictionary_list_words_ja">Registered words in Japanese User Dic</string> - <string name="user_dictionary_list_words_zhcn">Registered words in Chinese User Dic</string> + <string name="user_dictionary_list_words_en">@string/preference_dictionary_menu_en</string> + <string name="user_dictionary_list_words_ja">@string/preference_dictionary_menu_ja</string> + <string name="user_dictionary_list_words_zhcn">@string/preference_dictionary_menu_zhcn</string> <string name="user_dictionary_edit_words">Edit</string> <string name="user_dictionary_title_read">Reading</string> <string name="user_dictionary_title_candidate">Word</string> @@ -105,33 +127,44 @@ <!-- IME dependency --> <!-- OpenWnn English --> - <string name="openwnn_english_copyright">Ver.1.3.5\nOMRON SOFTWARE Co., Ltd.</string> + <string name="openwnn_english_copyright">Ver.1.3.6\nOMRON SOFTWARE Co.,Ltd.</string> <string name="openwnn_english">OpenWnn English</string> <string name="openwnn_english_system_dictionary">/data/data/jp.co.omronsoft.openwnn/lib/libWnnEngDic.so</string> <string name="openwnn_english_writable_dictionary">/data/data/jp.co.omronsoft.openwnn/writableEN.dic</string> <string name="en_word_separators">.,;:!?</string> <!-- OpenWnn Japanese --> - <string name="openwnn_japanese_copyright">Ver.1.3.5\nOMRON SOFTWARE Co., Ltd.</string> + <string name="openwnn_japanese_copyright">Ver.1.3.6\nOMRON SOFTWARE Co.,Ltd.</string> <string name="openwnn_japanese">Japanese IME</string> <string name="openwnn_japanese_system_dictionary">/data/data/jp.co.omronsoft.openwnn/lib/libWnnJpnDic.so</string> <string name="openwnn_japanese_writable_dictionary">/data/data/jp.co.omronsoft.openwnn/writableJAJP.dic</string> <!-- OpenWnn Chinese --> - <string name="openwnn_china_copyright">Ver.1.3.5\nOMRON SOFTWARE Co., Ltd.</string> + <string name="openwnn_china_copyright">Ver.1.3.6\nOMRON SOFTWARE Co.,Ltd.</string> <string name="openwnn_china">OpenWnn Chinese</string> <string name="openwnn_china_system_dictionary">/data/data/jp.co.omronsoft.openwnn/lib/libWnnZHCNDic.so</string> -<!-- After Config Change --> + <!-- After Config Change --> <string name="openwnn_china_writable_dictionary">/data/data/jp.co.omronsoft.openwnn/writableZHCN.dic</string> <string name="cn_word_separators">.,;:!?</string> - <!-- Candidate Delete --> - <string name="button_candidate_select">Select</string> - <string name="button_candidate_delete">Delete learning?</string> - <string name="button_candidate_cancel">Close</string> + <!-- Candidate Delete --> + <string name="button_candidate_select">Select</string> + <string name="button_candidate_delete">Delete learning?</string> + + <!-- Candidate --> + <string name="cand_tab_symbol_txt">Symbol</string> + <string name="cand_tab_emoticon_txt">Emoticon</string> + <!-- Symbol --> + <string name="half_symbol_categories_txt">[Half Symbol Categories]</string> + <string name="full_symbol_categories_txt">[Full Symbol Categories]</string> + <string name="half_symbol_txt">Symbol(Half)</string> + <string name="full_symbol_txt">Symbol(Full)</string> - <!-- Key top --> + <!-- Symbol keyboard --> + <string name="key_symbol_mode">Cancel</string> + + <!-- Key top --> <string name="key_left_arrow">↤</string> <string name="key_right_arrow">↦</string> <string name="key_space">スペース</string> @@ -216,6 +249,7 @@ <string name="key_qwerty_full_yen_sign">¥</string> <string name="key_qwerty_full_hat">^</string> <string name="key_qwerty_full_slash">/</string> + <string name="key_qwerty_euro">\u20AC</string> <string name="key_12key_switch_full_hiragana">あ</string> <string name="key_12key_switch_full_katakana">カ</string> @@ -235,7 +269,6 @@ <string name="indicator_caps">CAPS</string> <string name="indicator_alt">ALT</string> - <!-- Tutorial --> <string name="touch_to_continue">Next »</string> <string name="touch_to_try">Try it on the button below.</string> @@ -256,5 +289,18 @@ <string name="tip_en_to_close_keyboard"><b>Press \"back\" (←) to close the keyboard.</b></string> <string name="tip_en_end_of_tutorial"><b>This is the end of the tutorial.</b></string> + <!-- subtype String --> + <string name="label_subtype_generic">%s</string> + + <string name="ti_input_mode_full_hirakana_title_txt">Hiragana-Kanji</string> + <string name="ti_input_mode_full_katakana_title_txt">Full-width Katakana</string> + <string name="ti_input_mode_half_katakana_title_txt">Half-width Katakana</string> + <string name="ti_input_mode_full_alphabet_title_txt">Full-width Alphabet</string> + <string name="ti_input_mode_half_alphabet_title_txt">Half-width Alphabet</string> + <string name="ti_input_mode_full_number_title_txt">Full-width Numeric</string> + <string name="ti_input_mode_half_number_title_txt">Half-width Numeric</string> + + <string name="ti_long_press_dialog_input_mode_txt">Input Mode</string> + </resources> diff --git a/res/values/styles.xml b/res/values/styles.xml new file mode 100644 index 0000000..e129d73 --- /dev/null +++ b/res/values/styles.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + <style name="WnnKeyboardView" parent="@android:style/Widget.KeyboardView"> + </style> + <style name="Dialog" parent="android:style/Theme.Holo.Light.Dialog"> + <item name="android:windowNoTitle">true</item> + </style> +</resources> diff --git a/res/xml-land/keyboard_qwerty_jp.xml b/res/xml-land/keyboard_qwerty_jp.xml new file mode 100644 index 0000000..b0c2bee --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="w"/> + <Key android:codes="101" android:keyLabel="e"/> + <Key android:codes="114" android:keyLabel="r"/> + <Key android:codes="116" android:keyLabel="t"/> + <Key android:codes="121" android:keyLabel="y"/> + <Key android:codes="117" android:keyLabel="u"/> + <Key android:codes="105" android:keyLabel="i"/> + <Key android:codes="111" android:keyLabel="o"/> + <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="s"/> + <Key android:codes="100" android:keyLabel="d"/> + <Key android:codes="102" android:keyLabel="f"/> + <Key android:codes="103" android:keyLabel="g"/> + <Key android:codes="104" android:keyLabel="h"/> + <Key android:codes="106" android:keyLabel="j"/> + <Key android:codes="107" android:keyLabel="k"/> + <Key android:codes="108" android:keyLabel="l"/> + <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon" + android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="z"/> + <Key android:codes="120" android:keyLabel="x"/> + <Key android:codes="99" android:keyLabel="c"/> + <Key android:codes="118" android:keyLabel="v"/> + <Key android:codes="98" android:keyLabel="b"/> + <Key android:codes="110" android:keyLabel="n"/> + <Key android:codes="109" android:keyLabel="m"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="44" android:keyLabel="@string/key_qwerty_full_touten"/> + <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space_conv" android:iconPreview="@drawable/key_qwerty_space_conv_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="46" android:keyLabel="@string/key_qwerty_full_kuten"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_full_alphabet.xml b/res/xml-land/keyboard_qwerty_jp_full_alphabet.xml new file mode 100644 index 0000000..f1815da --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_full_alphabet.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="65361" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="65367" android:keyLabel="w"/> + <Key android:codes="65349" android:keyLabel="e"/> + <Key android:codes="65362" android:keyLabel="r"/> + <Key android:codes="65364" android:keyLabel="t"/> + <Key android:codes="65369" android:keyLabel="y"/> + <Key android:codes="65365" android:keyLabel="u"/> + <Key android:codes="65353" android:keyLabel="i"/> + <Key android:codes="65359" android:keyLabel="o"/> + <Key android:codes="65360" android:keyLabel="p" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="65345" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="65363" android:keyLabel="s"/> + <Key android:codes="65348" android:keyLabel="d"/> + <Key android:codes="65350" android:keyLabel="f"/> + <Key android:codes="65351" android:keyLabel="g"/> + <Key android:codes="65352" android:keyLabel="h"/> + <Key android:codes="65354" android:keyLabel="j"/> + <Key android:codes="65355" android:keyLabel="k"/> + <Key android:codes="65356" android:keyLabel="l"/> + <Key android:codes="65312" android:keyLabel="@string/key_qwerty_full_at_sign" + android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="65370" android:keyLabel="z"/> + <Key android:codes="65368" android:keyLabel="x"/> + <Key android:codes="65347" android:keyLabel="c"/> + <Key android:codes="65366" android:keyLabel="v"/> + <Key android:codes="65346" android:keyLabel="b"/> + <Key android:codes="65358" android:keyLabel="n"/> + <Key android:codes="65357" android:keyLabel="m"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma"/> + <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_full_alphabet_shift.xml b/res/xml-land/keyboard_qwerty_jp_full_alphabet_shift.xml new file mode 100644 index 0000000..53bcfde --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_full_alphabet_shift.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="65329" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="65335" android:keyLabel="W"/> + <Key android:codes="65317" android:keyLabel="E"/> + <Key android:codes="65330" android:keyLabel="R"/> + <Key android:codes="65332" android:keyLabel="T"/> + <Key android:codes="65337" android:keyLabel="Y"/> + <Key android:codes="65333" android:keyLabel="U"/> + <Key android:codes="65321" android:keyLabel="I"/> + <Key android:codes="65327" android:keyLabel="O"/> + <Key android:codes="65328" android:keyLabel="P" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="65313" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="65331" android:keyLabel="S"/> + <Key android:codes="65316" android:keyLabel="D"/> + <Key android:codes="65318" android:keyLabel="F"/> + <Key android:codes="65319" android:keyLabel="G"/> + <Key android:codes="65320" android:keyLabel="H"/> + <Key android:codes="65322" android:keyLabel="J"/> + <Key android:codes="65323" android:keyLabel="K"/> + <Key android:codes="65324" android:keyLabel="L"/> + <Key android:codes="65295" android:keyLabel="@string/key_qwerty_full_slash" + android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="65338" android:keyLabel="Z"/> + <Key android:codes="65336" android:keyLabel="X"/> + <Key android:codes="65315" android:keyLabel="C"/> + <Key android:codes="65334" android:keyLabel="V"/> + <Key android:codes="65314" android:keyLabel="B"/> + <Key android:codes="65326" android:keyLabel="N"/> + <Key android:codes="65325" android:keyLabel="M"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/> + <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_full_katakana.xml b/res/xml-land/keyboard_qwerty_jp_full_katakana.xml new file mode 100644 index 0000000..752d41c --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_full_katakana.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="w"/> + <Key android:codes="101" android:keyLabel="e"/> + <Key android:codes="114" android:keyLabel="r"/> + <Key android:codes="116" android:keyLabel="t"/> + <Key android:codes="121" android:keyLabel="y"/> + <Key android:codes="117" android:keyLabel="u"/> + <Key android:codes="105" android:keyLabel="i"/> + <Key android:codes="111" android:keyLabel="o"/> + <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="s"/> + <Key android:codes="100" android:keyLabel="d"/> + <Key android:codes="102" android:keyLabel="f"/> + <Key android:codes="103" android:keyLabel="g"/> + <Key android:codes="104" android:keyLabel="h"/> + <Key android:codes="106" android:keyLabel="j"/> + <Key android:codes="107" android:keyLabel="k"/> + <Key android:codes="108" android:keyLabel="l"/> + <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon" + android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="z"/> + <Key android:codes="120" android:keyLabel="x"/> + <Key android:codes="99" android:keyLabel="c"/> + <Key android:codes="118" android:keyLabel="v"/> + <Key android:codes="98" android:keyLabel="b"/> + <Key android:codes="110" android:keyLabel="n"/> + <Key android:codes="109" android:keyLabel="m"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="12289" android:keyLabel="@string/key_qwerty_full_touten"/> + <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="12290" android:keyLabel="@string/key_qwerty_full_kuten"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_full_katakana_shift.xml b/res/xml-land/keyboard_qwerty_jp_full_katakana_shift.xml new file mode 100644 index 0000000..2a086aa --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_full_katakana_shift.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="W"/> + <Key android:codes="101" android:keyLabel="E"/> + <Key android:codes="114" android:keyLabel="R"/> + <Key android:codes="116" android:keyLabel="T"/> + <Key android:codes="121" android:keyLabel="Y"/> + <Key android:codes="117" android:keyLabel="U"/> + <Key android:codes="105" android:keyLabel="I"/> + <Key android:codes="111" android:keyLabel="O"/> + <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="97" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="S"/> + <Key android:codes="100" android:keyLabel="D"/> + <Key android:codes="102" android:keyLabel="F"/> + <Key android:codes="103" android:keyLabel="G"/> + <Key android:codes="104" android:keyLabel="H"/> + <Key android:codes="106" android:keyLabel="J"/> + <Key android:codes="107" android:keyLabel="K"/> + <Key android:codes="108" android:keyLabel="L"/> + <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon" + android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="Z"/> + <Key android:codes="120" android:keyLabel="X"/> + <Key android:codes="99" android:keyLabel="C"/> + <Key android:codes="118" android:keyLabel="V"/> + <Key android:codes="98" android:keyLabel="B"/> + <Key android:codes="110" android:keyLabel="N"/> + <Key android:codes="109" android:keyLabel="M"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/> + <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_full_symbols.xml b/res/xml-land/keyboard_qwerty_jp_full_symbols.xml new file mode 100644 index 0000000..281f6a8 --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_full_symbols.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="65298" android:keyLabel="2"/> + <Key android:codes="65299" android:keyLabel="3"/> + <Key android:codes="65300" android:keyLabel="4"/> + <Key android:codes="65301" android:keyLabel="5"/> + <Key android:codes="65302" android:keyLabel="6"/> + <Key android:codes="65303" android:keyLabel="7"/> + <Key android:codes="65304" android:keyLabel="8"/> + <Key android:codes="65305" android:keyLabel="9"/> + <Key android:codes="65296" android:keyLabel="0" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="65312" android:keyLabel="@string/key_qwerty_full_at_sign" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="65283" android:keyLabel="@string/key_qwerty_full_number_sign" /> + <Key android:codes="65285" android:keyLabel="@string/key_qwerty_full_percent_sign" /> + <Key android:codes="65286" android:keyLabel="@string/key_qwerty_full_ampersand" /> + <Key android:codes="65290" android:keyLabel="@string/key_qwerty_full_asterrisk" /> + <Key android:codes="65291" android:keyLabel="@string/key_qwerty_full_plus_sign" /> + <Key android:codes="65293" android:keyLabel="@string/key_qwerty_full_minus_sign" /> + <Key android:codes="65309" android:keyLabel="@string/key_qwerty_full_equal_sign" /> + <Key android:codes="12300" android:keyLabel="@string/key_qwerty_kagi_kakko_left" /> + <Key android:codes="12301" android:keyLabel="@string/key_qwerty_kagi_kakko_right" android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="65295" android:keyLabel="@string/key_qwerty_full_slash" /> + <Key android:codes="65288" android:keyLabel="@string/key_qwerty_full_left_parenthesis" /> + <Key android:codes="65289" android:keyLabel="@string/key_qwerty_full_right_parenthesis" /> + <Key android:codes="65306" android:keyLabel="@string/key_qwerty_full_colon" /> + <Key android:codes="65307" android:keyLabel="@string/key_qwerty_full_semicolon" /> + <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark" /> + <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question" /> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true" /> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true" /> + <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma"/> + <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_full_symbols_shift.xml b/res/xml-land/keyboard_qwerty_jp_full_symbols_shift.xml new file mode 100644 index 0000000..014dbbb --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_full_symbols_shift.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="65298" android:keyLabel="2"/> + <Key android:codes="65299" android:keyLabel="3"/> + <Key android:codes="65300" android:keyLabel="4"/> + <Key android:codes="65301" android:keyLabel="5"/> + <Key android:codes="65302" android:keyLabel="6"/> + <Key android:codes="65303" android:keyLabel="7"/> + <Key android:codes="65304" android:keyLabel="8"/> + <Key android:codes="65305" android:keyLabel="9"/> + <Key android:codes="65296" android:keyLabel="0" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="65374" android:keyLabel="@string/key_qwerty_full_thilde" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="65342" android:keyLabel="@string/key_qwerty_full_hat"/> + <Key android:codes="65509" android:keyLabel="@string/key_qwerty_full_yen_sign"/> + <Key android:codes="65284" android:keyLabel="@string/key_qwerty_full_dollar_sign"/> + <Key android:codes="8221" android:keyLabel="@string/key_qwerty_full_double_quotation_sign"/> + <Key android:codes="177" android:keyLabel="@string/key_qwerty_full_plus_minus_sign" /> + <Key android:codes="65343" android:keyLabel="@string/key_qwerty_full_underscore"/> + <Key android:codes="65340" android:keyLabel="@string/key_qwerty_full_back_slash"/> + <Key android:codes="65371" android:keyLabel="@string/key_qwerty_full_left_curly_blacket"/> + <Key android:codes="65373" android:keyLabel="@string/key_qwerty_full_right_curly_blacket" android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="65372" android:keyLabel="@string/key_qwerty_full_vertical_bar"/> + <Key android:codes="65308" android:keyLabel="@string/key_qwerty_full_less_than_sign"/> + <Key android:codes="65310" android:keyLabel="@string/key_qwerty_full_greater_than_sign"/> + <Key android:codes="8216" android:keyLabel="@string/key_qwerty_full_left_single_quote"/> + <Key android:codes="8217" android:keyLabel="@string/key_qwerty_full_right_single_quote"/> + <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma" /> + <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period" /> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true" /> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true" /> + <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/> + <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="12539" android:keyLabel="@string/key_qwerty_full_middot"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_half_alphabet.xml b/res/xml-land/keyboard_qwerty_jp_half_alphabet.xml new file mode 100644 index 0000000..7022546 --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_half_alphabet.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="w"/> + <Key android:codes="101" android:keyLabel="e"/> + <Key android:codes="114" android:keyLabel="r"/> + <Key android:codes="116" android:keyLabel="t"/> + <Key android:codes="121" android:keyLabel="y"/> + <Key android:codes="117" android:keyLabel="u"/> + <Key android:codes="105" android:keyLabel="i"/> + <Key android:codes="111" android:keyLabel="o"/> + <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="s"/> + <Key android:codes="100" android:keyLabel="d"/> + <Key android:codes="102" android:keyLabel="f"/> + <Key android:codes="103" android:keyLabel="g"/> + <Key android:codes="104" android:keyLabel="h"/> + <Key android:codes="106" android:keyLabel="j"/> + <Key android:codes="107" android:keyLabel="k"/> + <Key android:codes="108" android:keyLabel="l"/> + <Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="z"/> + <Key android:codes="120" android:keyLabel="x"/> + <Key android:codes="99" android:keyLabel="c"/> + <Key android:codes="118" android:keyLabel="v"/> + <Key android:codes="98" android:keyLabel="b"/> + <Key android:codes="110" android:keyLabel="n"/> + <Key android:codes="109" android:keyLabel="m"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="44" android:keyLabel=","/> + <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="46" android:keyLabel="."/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_half_alphabet_shift.xml b/res/xml-land/keyboard_qwerty_jp_half_alphabet_shift.xml new file mode 100644 index 0000000..8dd1403 --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_half_alphabet_shift.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="W"/> + <Key android:codes="101" android:keyLabel="E"/> + <Key android:codes="114" android:keyLabel="R"/> + <Key android:codes="116" android:keyLabel="T"/> + <Key android:codes="121" android:keyLabel="Y"/> + <Key android:codes="117" android:keyLabel="U"/> + <Key android:codes="105" android:keyLabel="I"/> + <Key android:codes="111" android:keyLabel="O"/> + <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="97" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="S"/> + <Key android:codes="100" android:keyLabel="D"/> + <Key android:codes="102" android:keyLabel="F"/> + <Key android:codes="103" android:keyLabel="G"/> + <Key android:codes="104" android:keyLabel="H"/> + <Key android:codes="106" android:keyLabel="J"/> + <Key android:codes="107" android:keyLabel="K"/> + <Key android:codes="108" android:keyLabel="L"/> + <Key android:codes="47" android:keyLabel="/" android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="Z"/> + <Key android:codes="120" android:keyLabel="X"/> + <Key android:codes="99" android:keyLabel="C"/> + <Key android:codes="118" android:keyLabel="V"/> + <Key android:codes="98" android:keyLabel="B"/> + <Key android:codes="110" android:keyLabel="N"/> + <Key android:codes="109" android:keyLabel="M"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="33" android:keyLabel="!"/> + <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="63" android:keyLabel="\?"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_half_katakana.xml b/res/xml-land/keyboard_qwerty_jp_half_katakana.xml new file mode 100644 index 0000000..2ba273d --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_half_katakana.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="w"/> + <Key android:codes="101" android:keyLabel="e"/> + <Key android:codes="114" android:keyLabel="r"/> + <Key android:codes="116" android:keyLabel="t"/> + <Key android:codes="121" android:keyLabel="y"/> + <Key android:codes="117" android:keyLabel="u"/> + <Key android:codes="105" android:keyLabel="i"/> + <Key android:codes="111" android:keyLabel="o"/> + <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="s"/> + <Key android:codes="100" android:keyLabel="d"/> + <Key android:codes="102" android:keyLabel="f"/> + <Key android:codes="103" android:keyLabel="g"/> + <Key android:codes="104" android:keyLabel="h"/> + <Key android:codes="106" android:keyLabel="j"/> + <Key android:codes="107" android:keyLabel="k"/> + <Key android:codes="108" android:keyLabel="l"/> + <Key android:codes="65392" android:keyLabel="@string/key_qwerty_half_tyouon" + android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="z"/> + <Key android:codes="120" android:keyLabel="x"/> + <Key android:codes="99" android:keyLabel="c"/> + <Key android:codes="118" android:keyLabel="v"/> + <Key android:codes="98" android:keyLabel="b"/> + <Key android:codes="110" android:keyLabel="n"/> + <Key android:codes="109" android:keyLabel="m"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="65380" android:keyLabel="@string/key_qwerty_half_comma"/> + <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65377" android:keyLabel="@string/key_qwerty_half_period"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_half_katakana_shift.xml b/res/xml-land/keyboard_qwerty_jp_half_katakana_shift.xml new file mode 100644 index 0000000..fa48feb --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_half_katakana_shift.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="W"/> + <Key android:codes="101" android:keyLabel="E"/> + <Key android:codes="114" android:keyLabel="R"/> + <Key android:codes="116" android:keyLabel="T"/> + <Key android:codes="121" android:keyLabel="Y"/> + <Key android:codes="117" android:keyLabel="U"/> + <Key android:codes="105" android:keyLabel="I"/> + <Key android:codes="111" android:keyLabel="O"/> + <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="97" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="S"/> + <Key android:codes="100" android:keyLabel="D"/> + <Key android:codes="102" android:keyLabel="F"/> + <Key android:codes="103" android:keyLabel="G"/> + <Key android:codes="104" android:keyLabel="H"/> + <Key android:codes="106" android:keyLabel="J"/> + <Key android:codes="107" android:keyLabel="K"/> + <Key android:codes="108" android:keyLabel="L"/> + <Key android:codes="65392" android:keyLabel="@string/key_qwerty_half_tyouon" + android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="Z"/> + <Key android:codes="120" android:keyLabel="X"/> + <Key android:codes="99" android:keyLabel="C"/> + <Key android:codes="118" android:keyLabel="V"/> + <Key android:codes="98" android:keyLabel="B"/> + <Key android:codes="110" android:keyLabel="N"/> + <Key android:codes="109" android:keyLabel="M"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="33" android:keyLabel="!"/> + <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="63" android:keyLabel="\?"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_half_symbols.xml b/res/xml-land/keyboard_qwerty_jp_half_symbols.xml new file mode 100644 index 0000000..47676ca --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_half_symbols.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="50" android:keyLabel="2"/> + <Key android:codes="51" android:keyLabel="3"/> + <Key android:codes="52" android:keyLabel="4"/> + <Key android:codes="53" android:keyLabel="5"/> + <Key android:codes="54" android:keyLabel="6"/> + <Key android:codes="55" android:keyLabel="7"/> + <Key android:codes="56" android:keyLabel="8"/> + <Key android:codes="57" android:keyLabel="9"/> + <Key android:codes="48" android:keyLabel="0" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="35" android:keyLabel="\#"/> + <Key android:codes="37" android:keyLabel="%"/> + <Key android:codes="38" android:keyLabel="&"/> + <Key android:codes="42" android:keyLabel="*"/> + <Key android:codes="43" android:keyLabel="+"/> + <Key android:codes="45" android:keyLabel="-"/> + <Key android:codes="61" android:keyLabel="="/> + <Key android:codes="91" android:keyLabel="["/> + <Key android:codes="93" android:keyLabel="]" android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="47" android:keyLabel="/" /> + <Key android:codes="40" android:keyLabel="("/> + <Key android:codes="41" android:keyLabel=")"/> + <Key android:codes="58" android:keyLabel=":"/> + <Key android:codes="59" android:keyLabel=";"/> + <Key android:codes="33" android:keyLabel="!" /> + <Key android:codes="63" android:keyLabel="\?"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true" /> + <Key android:codes="44" android:keyLabel=","/> + <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="46" android:keyLabel="."/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_half_symbols_shift.xml b/res/xml-land/keyboard_qwerty_jp_half_symbols_shift.xml new file mode 100644 index 0000000..a5bc804 --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_half_symbols_shift.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="50" android:keyLabel="2"/> + <Key android:codes="51" android:keyLabel="3"/> + <Key android:codes="52" android:keyLabel="4"/> + <Key android:codes="53" android:keyLabel="5"/> + <Key android:codes="54" android:keyLabel="6"/> + <Key android:codes="55" android:keyLabel="7"/> + <Key android:codes="56" android:keyLabel="8"/> + <Key android:codes="57" android:keyLabel="9"/> + <Key android:codes="48" android:keyLabel="0" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="126" android:keyLabel="~" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="94" android:keyLabel="^"/> + <Key android:codes="165" android:keyLabel="¥"/> + <Key android:codes="36" android:keyLabel="$"/> + <Key android:codes="34" android:keyLabel="""/> + <Key android:codes="43" android:keyLabel="+" /> + <Key android:codes="95" android:keyLabel="_"/> + <Key android:codes="92" android:keyLabel="\\" /> + <Key android:codes="123" android:keyLabel="{"/> + <Key android:codes="125" android:keyLabel="}" android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="124" android:keyLabel="|"/> + <Key android:codes="60" android:keyLabel="<"/> + <Key android:codes="62" android:keyLabel=">"/> + <Key android:codes="96" android:keyLabel="`"/> + <Key android:codes="39" android:keyLabel="'"/> + <Key android:codes="44" android:keyLabel="," /> + <Key android:codes="46" android:keyLabel="." /> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="33" android:keyLabel="!"/> + <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="63" android:keyLabel="\?"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-land/keyboard_qwerty_jp_shift.xml b/res/xml-land/keyboard_qwerty_jp_shift.xml new file mode 100644 index 0000000..c1e1f9e --- /dev/null +++ b/res/xml-land/keyboard_qwerty_jp_shift.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="0dip" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="W"/> + <Key android:codes="101" android:keyLabel="E"/> + <Key android:codes="114" android:keyLabel="R"/> + <Key android:codes="116" android:keyLabel="T"/> + <Key android:codes="121" android:keyLabel="Y"/> + <Key android:codes="117" android:keyLabel="U"/> + <Key android:codes="105" android:keyLabel="I"/> + <Key android:codes="111" android:keyLabel="O"/> + <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/> + </Row> + + <Row> + <Key android:codes="97" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="S"/> + <Key android:codes="100" android:keyLabel="D"/> + <Key android:codes="102" android:keyLabel="F"/> + <Key android:codes="103" android:keyLabel="G"/> + <Key android:codes="104" android:keyLabel="H"/> + <Key android:codes="106" android:keyLabel="J"/> + <Key android:codes="107" android:keyLabel="K"/> + <Key android:codes="108" android:keyLabel="L"/> + <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon" + android:keyEdgeFlags="right"/> + </Row> + + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="Z"/> + <Key android:codes="120" android:keyLabel="X"/> + <Key android:codes="99" android:keyLabel="C"/> + <Key android:codes="118" android:keyLabel="V"/> + <Key android:codes="98" android:keyLabel="B"/> + <Key android:codes="110" android:keyLabel="N"/> + <Key android:codes="109" android:keyLabel="M"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/> + <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space_conv" android:iconPreview="@drawable/key_qwerty_space_conv_b" + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-sw768dp/keyboard_12key_phone.xml b/res/xml-sw768dp/keyboard_12key_phone.xml new file mode 100644 index 0000000..ecf7d6a --- /dev/null +++ b/res/xml-sw768dp/keyboard_12key_phone.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="20%p" + android:horizontalGap="0.9%p" + android:verticalGap="0.9%p" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="-310" android:keyLabel="" + android:keyEdgeFlags="left" android:keyWidth="18%" pj:isSecondKey="true"/> + <Key android:codes="49" android:keyLabel="1" android:horizontalGap="2%"/> + <Key android:codes="50" android:keyLabel="2"/> + <Key android:codes="51" android:keyLabel="3"/> + <Key android:codes="-214" + android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" pj:isSecondKey="true"/> + <Key android:codes="52" android:keyLabel="4" android:horizontalGap="2%"/> + <Key android:codes="53" android:keyLabel="5"/> + <Key android:codes="54" android:keyLabel="6"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="45" android:keyLabel="-" android:keyWidth="18%" pj:isSecondKey="true"/> + <Key android:codes="55" android:keyLabel="7" android:horizontalGap="2%"/> + <Key android:codes="56" android:keyLabel="8"/> + <Key android:codes="57" android:keyLabel="9"/> + <Key android:codes="43" android:keyLabel="+" android:horizontalGap="2%" android:keyWidth="18%" pj:isSecondKey="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom"> + <Key android:codes="-310" android:keyLabel="" android:keyEdgeFlags="left" android:keyWidth="18%" pj:isSecondKey="true"/> + <Key android:codes="42" android:keyLabel="*" android:horizontalGap="2%"/> + <Key android:codes="48" android:keyLabel="0" /> + <Key android:codes="35" android:keyLabel="#" /> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" + android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" pj:isSecondKey="true"/> + </Row> +</Keyboard> diff --git a/res/xml-sw768dp/keyboard_qwerty_jp.xml b/res/xml-sw768dp/keyboard_qwerty_jp.xml new file mode 100644 index 0000000..9b67157 --- /dev/null +++ b/res/xml-sw768dp/keyboard_qwerty_jp.xml @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="7%p" + android:horizontalGap="0.9%p" + android:verticalGap="0.9%p" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" /> + <Key android:codes="113" android:keyLabel="q"/> + <Key android:codes="119" android:keyLabel="w"/> + <Key android:codes="101" android:keyLabel="e"/> + <Key android:codes="114" android:keyLabel="r"/> + <Key android:codes="116" android:keyLabel="t"/> + <Key android:codes="121" android:keyLabel="y"/> + <Key android:codes="117" android:keyLabel="u"/> + <Key android:codes="105" android:keyLabel="i"/> + <Key android:codes="111" android:keyLabel="o"/> + <Key android:codes="112" android:keyLabel="p"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p" + android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true" /> + </Row> + + <Row> + <Key android:codes="-304" android:keyLabel=".?123" + android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" /> + <Key android:codes="97" android:keyLabel="a"/> + <Key android:codes="115" android:keyLabel="s"/> + <Key android:codes="100" android:keyLabel="d"/> + <Key android:codes="102" android:keyLabel="f"/> + <Key android:codes="103" android:keyLabel="g"/> + <Key android:codes="104" android:keyLabel="h"/> + <Key android:codes="106" android:keyLabel="j"/> + <Key android:codes="107" android:keyLabel="k"/> + <Key android:codes="108" android:keyLabel="l"/> + <Key android:codes="12540" android:keyLabel="ー"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return" + android:keyEdgeFlags="right" android:keyWidth="9%p" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:keyWidth="12.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%"/> + <Key android:codes="122" android:keyLabel="z"/> + <Key android:codes="120" android:keyLabel="x"/> + <Key android:codes="99" android:keyLabel="c"/> + <Key android:codes="118" android:keyLabel="v"/> + <Key android:codes="98" android:keyLabel="b"/> + <Key android:codes="110" android:keyLabel="n"/> + <Key android:codes="109" android:keyLabel="m"/> + <Key android:codes="44" android:keyLabel="、"/> + <Key android:codes="46" android:keyLabel="。"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" pj:isSecondKey="true" android:isRepeatable="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom"> + <Key android:codes="-307" android:keyIcon="@drawable/key_mode_hira" + android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/> + <Key android:codes="12288" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/> + </Row> + +</Keyboard> diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols.xml b/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols.xml new file mode 100644 index 0000000..2bb94ec --- /dev/null +++ b/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="7%p" + android:horizontalGap="0.9%p" + android:verticalGap="0.9%p" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p"/> + <Key android:codes="65297" android:keyLabel="1"/> + <Key android:codes="65298" android:keyLabel="2"/> + <Key android:codes="65299" android:keyLabel="3"/> + <Key android:codes="65300" android:keyLabel="4"/> + <Key android:codes="65301" android:keyLabel="5"/> + <Key android:codes="65302" android:keyLabel="6"/> + <Key android:codes="65303" android:keyLabel="7"/> + <Key android:codes="65304" android:keyLabel="8"/> + <Key android:codes="65305" android:keyLabel="9"/> + <Key android:codes="65296" android:keyLabel="0"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p" + android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-301" android:keyLabel="ABC" android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p"/> + <Key android:codes="65294" android:keyLabel="." /> + <Key android:codes="65292" android:keyLabel="," /> + <Key android:codes="65306" android:keyLabel=":"/> + <Key android:codes="65307" android:keyLabel=";"/> + <Key android:codes="65288" android:keyLabel="("/> + <Key android:codes="65289" android:keyLabel=")"/> + <Key android:codes="65509" android:keyLabel="¥"/> + <Key android:codes="65286" android:keyLabel="&"/> + <Key android:codes="65312" android:keyLabel="\@"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return" + android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:keyWidth="12.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%"/> + <Key android:codes="65291" android:keyLabel="+"/> + <Key android:codes="65293" android:keyLabel="-"/> + <Key android:codes="65290" android:keyLabel="*" /> + <Key android:codes="65295" android:keyLabel="/"/> + <Key android:codes="12300" android:keyLabel="「"/> + <Key android:codes="12301" android:keyLabel="」" /> + <Key android:codes="12539" android:keyLabel="・" /> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:horizontalGap="16.85%p" pj:isSecondKey="true" android:isRepeatable="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom"> + <Key android:codes="-308" android:keyIcon="@drawable/key_mode_full_num" + android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/> + <Key android:codes="12288" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/> + </Row> + +</Keyboard> diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols_shift.xml b/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols_shift.xml new file mode 100644 index 0000000..5e283af --- /dev/null +++ b/res/xml-sw768dp/keyboard_qwerty_jp_full_symbols_shift.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="7%p" + android:horizontalGap="0.9%p" + android:verticalGap="0.9%p" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p"/> + <Key android:codes="65339" android:keyLabel="[" /> + <Key android:codes="65341" android:keyLabel="]" /> + <Key android:codes="65371" android:keyLabel="{"/> + <Key android:codes="65373" android:keyLabel="}"/> + <Key android:codes="65283" android:keyLabel="\#"/> + <Key android:codes="65285" android:keyLabel="%"/> + <Key android:codes="65342" android:keyLabel="^"/> + <Key android:codes="65290" android:keyLabel="*"/> + <Key android:codes="65291" android:keyLabel="+"/> + <Key android:codes="65309" android:keyLabel="="/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p" + android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-301" android:keyLabel="ABC" android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p"/> + <Key android:codes="65343" android:keyLabel="_" /> + <Key android:codes="65509" android:keyLabel="¥"/> + <Key android:codes="65372" android:keyLabel="|"/> + <Key android:codes="65374" android:keyLabel="~"/> + <Key android:codes="65308" android:keyLabel="<"/> + <Key android:codes="65310" android:keyLabel=">"/> + <Key android:codes="65284" android:keyLabel="$"/> + <Key android:codes="8364" android:keyLabel="@string/key_qwerty_euro"/> + <Key android:codes="65505" android:keyLabel="£"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return" + android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift_locked" android:keyWidth="12.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%"/> + <Key android:codes="65294" android:keyLabel="." /> + <Key android:codes="65292" android:keyLabel="," /> + <Key android:codes="65311" android:keyLabel="\?" /> + <Key android:codes="65281" android:keyLabel="!" /> + <Key android:codes="8217" android:keyLabel="@string/key_qwerty_full_right_single_quote" /> + <Key android:codes="8221" android:keyLabel="@string/key_qwerty_full_double_quotation_sign" /> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:horizontalGap="24.85%p" pj:isSecondKey="true" android:isRepeatable="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom"> + <Key android:codes="-308" android:keyIcon="@drawable/key_mode_full_num" + android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/> + <Key android:codes="12288" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/> + </Row> + +</Keyboard> diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet.xml b/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet.xml new file mode 100644 index 0000000..82f2888 --- /dev/null +++ b/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet.xml @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="7%p" + android:horizontalGap="0.9%p" + android:verticalGap="0.9%p" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%" /> + <Key android:codes="113" android:keyLabel="q"/> + <Key android:codes="119" android:keyLabel="w"/> + <Key android:codes="101" android:keyLabel="e"/> + <Key android:codes="114" android:keyLabel="r"/> + <Key android:codes="116" android:keyLabel="t"/> + <Key android:codes="121" android:keyLabel="y"/> + <Key android:codes="117" android:keyLabel="u"/> + <Key android:codes="105" android:keyLabel="i"/> + <Key android:codes="111" android:keyLabel="o"/> + <Key android:codes="112" android:keyLabel="p"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p" + android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-308" android:keyLabel=".?123" android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%" /> + <Key android:codes="97" android:keyLabel="a"/> + <Key android:codes="115" android:keyLabel="s"/> + <Key android:codes="100" android:keyLabel="d"/> + <Key android:codes="102" android:keyLabel="f"/> + <Key android:codes="103" android:keyLabel="g"/> + <Key android:codes="104" android:keyLabel="h"/> + <Key android:codes="106" android:keyLabel="j"/> + <Key android:codes="107" android:keyLabel="k"/> + <Key android:codes="108" android:keyLabel="l"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return" + android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:keyWidth="12.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%"/> + <Key android:codes="122" android:keyLabel="z"/> + <Key android:codes="120" android:keyLabel="x"/> + <Key android:codes="99" android:keyLabel="c"/> + <Key android:codes="118" android:keyLabel="v"/> + <Key android:codes="98" android:keyLabel="b"/> + <Key android:codes="110" android:keyLabel="n"/> + <Key android:codes="109" android:keyLabel="m"/> + <Key android:codes="44" android:keyLabel="," /> + <Key android:codes="46" android:keyLabel="." /> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" pj:isSecondKey="true" android:isRepeatable="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom"> + <Key android:codes="-301" android:keyIcon="@drawable/key_mode_half_alpha" + android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/> + <Key android:codes="32" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/> + </Row> + +</Keyboard> + diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet_shift.xml b/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet_shift.xml new file mode 100644 index 0000000..3d42ec8 --- /dev/null +++ b/res/xml-sw768dp/keyboard_qwerty_jp_half_alphabet_shift.xml @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="7%p" + android:horizontalGap="0.9%p" + android:verticalGap="0.9%p" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%" /> + <Key android:codes="113" android:keyLabel="Q"/> + <Key android:codes="119" android:keyLabel="W"/> + <Key android:codes="101" android:keyLabel="E"/> + <Key android:codes="114" android:keyLabel="R"/> + <Key android:codes="116" android:keyLabel="T"/> + <Key android:codes="121" android:keyLabel="Y"/> + <Key android:codes="117" android:keyLabel="U"/> + <Key android:codes="105" android:keyLabel="I"/> + <Key android:codes="111" android:keyLabel="O"/> + <Key android:codes="112" android:keyLabel="P"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p" + android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-308" android:keyLabel=".?123" android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%" /> + <Key android:codes="97" android:keyLabel="A"/> + <Key android:codes="115" android:keyLabel="S"/> + <Key android:codes="100" android:keyLabel="D"/> + <Key android:codes="102" android:keyLabel="F"/> + <Key android:codes="103" android:keyLabel="G"/> + <Key android:codes="104" android:keyLabel="H"/> + <Key android:codes="106" android:keyLabel="J"/> + <Key android:codes="107" android:keyLabel="K"/> + <Key android:codes="108" android:keyLabel="L"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return" + android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift_locked" android:keyWidth="12.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%" /> + <Key android:codes="122" android:keyLabel="Z"/> + <Key android:codes="120" android:keyLabel="X"/> + <Key android:codes="99" android:keyLabel="C"/> + <Key android:codes="118" android:keyLabel="V"/> + <Key android:codes="98" android:keyLabel="B"/> + <Key android:codes="110" android:keyLabel="N"/> + <Key android:codes="109" android:keyLabel="M"/> + <Key android:codes="33" android:keyLabel="!" /> + <Key android:codes="63" android:keyLabel="\?" /> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" pj:isSecondKey="true" android:isRepeatable="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom"> + <Key android:codes="-301" android:keyIcon="@drawable/key_mode_half_alpha" + android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/> + <Key android:codes="32" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/> + </Row> + +</Keyboard> + diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols.xml b/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols.xml new file mode 100644 index 0000000..882649c --- /dev/null +++ b/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols.xml @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="7%p" + android:horizontalGap="0.9%p" + android:verticalGap="0.9%p" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" /> + <Key android:codes="49" android:keyLabel="1"/> + <Key android:codes="50" android:keyLabel="2"/> + <Key android:codes="51" android:keyLabel="3"/> + <Key android:codes="52" android:keyLabel="4"/> + <Key android:codes="53" android:keyLabel="5"/> + <Key android:codes="54" android:keyLabel="6"/> + <Key android:codes="55" android:keyLabel="7"/> + <Key android:codes="56" android:keyLabel="8"/> + <Key android:codes="57" android:keyLabel="9"/> + <Key android:codes="48" android:keyLabel="0"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p" + android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-307" android:keyLabel="ABC" android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" /> + <Key android:codes="46" android:keyLabel="." /> + <Key android:codes="44" android:keyLabel="," /> + <Key android:codes="58" android:keyLabel=":"/> + <Key android:codes="59" android:keyLabel=";"/> + <Key android:codes="40" android:keyLabel="("/> + <Key android:codes="41" android:keyLabel=")"/> + <Key android:codes="165" android:keyLabel="¥"/> + <Key android:codes="38" android:keyLabel="&"/> + <Key android:codes="64" android:keyLabel="\@"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return" + android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:keyWidth="12.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" /> + <Key android:codes="43" android:keyLabel="+"/> + <Key android:codes="45" android:keyLabel="-"/> + <Key android:codes="42" android:keyLabel="*"/> + <Key android:codes="47" android:keyLabel="/"/> + <Key android:codes="65378" android:keyLabel="「"/> + <Key android:codes="65379" android:keyLabel="」" /> + <Key android:codes="183" android:keyLabel="・" /> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:horizontalGap="16.9%p" pj:isSecondKey="true" android:isRepeatable="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom"> + <Key android:codes="-304" android:keyIcon="@drawable/key_mode_half_num" + android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/> + <Key android:codes="32" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/> + </Row> + +</Keyboard> diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols_shift.xml b/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols_shift.xml new file mode 100644 index 0000000..78c8e46 --- /dev/null +++ b/res/xml-sw768dp/keyboard_qwerty_jp_half_symbols_shift.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="7%p" + android:horizontalGap="0.9%p" + android:verticalGap="0.9%p" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" /> + <Key android:codes="91" android:keyLabel="[" /> + <Key android:codes="93" android:keyLabel="]" /> + <Key android:codes="123" android:keyLabel="{"/> + <Key android:codes="125" android:keyLabel="}"/> + <Key android:codes="35" android:keyLabel="\#"/> + <Key android:codes="37" android:keyLabel="%"/> + <Key android:codes="94" android:keyLabel="^"/> + <Key android:codes="42" android:keyLabel="*"/> + <Key android:codes="43" android:keyLabel="+"/> + <Key android:codes="61" android:keyLabel="="/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p" + android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-307" android:keyLabel="ABC" android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" /> + <Key android:codes="95" android:keyLabel="_" /> + <Key android:codes="165" android:keyLabel="¥"/> + <Key android:codes="124" android:keyLabel="|"/> + <Key android:codes="126" android:keyLabel="~"/> + <Key android:codes="60" android:keyLabel="<"/> + <Key android:codes="62" android:keyLabel=">"/> + <Key android:codes="36" android:keyLabel="$"/> + <Key android:codes="8364" android:keyLabel="@string/key_qwerty_euro"/> + <Key android:codes="163" android:keyLabel="£"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return" + android:keyEdgeFlags="right" android:keyWidth="17%p" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift_locked" android:keyWidth="12.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" /> + <Key android:codes="46" android:keyLabel="." /> + <Key android:codes="44" android:keyLabel="," /> + <Key android:codes="63" android:keyLabel="\?" /> + <Key android:codes="33" android:keyLabel="!" /> + <Key android:codes="39" android:keyLabel="@string/key_qwerty_full_right_single_quote" /> + <Key android:codes="34" android:keyLabel="@string/key_qwerty_full_double_quotation_sign" /> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:horizontalGap="24.85%p" pj:isSecondKey="true" android:isRepeatable="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom"> + <Key android:codes="-304" android:keyIcon="@drawable/key_mode_half_num" + android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/> + <Key android:codes="32" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/> + </Row> + +</Keyboard> diff --git a/res/xml-sw768dp/keyboard_qwerty_jp_shift.xml b/res/xml-sw768dp/keyboard_qwerty_jp_shift.xml new file mode 100644 index 0000000..f355a4f --- /dev/null +++ b/res/xml-sw768dp/keyboard_qwerty_jp_shift.xml @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:pj="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="7%p" + android:horizontalGap="0.9%p" + android:verticalGap="0.9%p" + android:keyHeight="@dimen/key_height" + > + + <Row> + <Key android:codes="-106" android:keyLabel="記号" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" /> + <Key android:codes="113" android:keyLabel="Q"/> + <Key android:codes="119" android:keyLabel="W"/> + <Key android:codes="101" android:keyLabel="E"/> + <Key android:codes="114" android:keyLabel="R"/> + <Key android:codes="116" android:keyLabel="T"/> + <Key android:codes="121" android:keyLabel="Y"/> + <Key android:codes="117" android:keyLabel="U"/> + <Key android:codes="105" android:keyLabel="I"/> + <Key android:codes="111" android:keyLabel="O"/> + <Key android:codes="112" android:keyLabel="P"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:keyWidth="12%p" + android:keyEdgeFlags="right" android:isRepeatable="true" pj:isSecondKey="true" /> + </Row> + + <Row> + <Key android:codes="-304" android:keyLabel=".?123" + android:keyWidth="10%p" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%p" /> + <Key android:codes="97" android:keyLabel="A"/> + <Key android:codes="115" android:keyLabel="S"/> + <Key android:codes="100" android:keyLabel="D"/> + <Key android:codes="102" android:keyLabel="F"/> + <Key android:codes="103" android:keyLabel="G"/> + <Key android:codes="104" android:keyLabel="H"/> + <Key android:codes="106" android:keyLabel="J"/> + <Key android:codes="107" android:keyLabel="K"/> + <Key android:codes="108" android:keyLabel="L"/> + <Key android:codes="12540" android:keyLabel="ー"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_return" + android:keyEdgeFlags="right" android:keyWidth="9%p" pj:isSecondKey="true"/> + </Row> + + <Row> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift_locked" android:keyWidth="12.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" pj:isSecondKey="true" android:horizontalGap="0.1%"/> + <Key android:codes="122" android:keyLabel="Z"/> + <Key android:codes="120" android:keyLabel="X"/> + <Key android:codes="99" android:keyLabel="C"/> + <Key android:codes="118" android:keyLabel="V"/> + <Key android:codes="98" android:keyLabel="B"/> + <Key android:codes="110" android:keyLabel="N"/> + <Key android:codes="109" android:keyLabel="M"/> + <Key android:codes="65281" android:keyLabel="!"/> + <Key android:codes="65311" android:keyLabel="\?"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" pj:isSecondKey="true" android:isRepeatable="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:keyEdgeFlags="right" pj:isSecondKey="true" android:isRepeatable="true"/> + </Row> + + <Row android:rowEdgeFlags="bottom"> + <Key android:codes="-307" android:keyIcon="@drawable/key_mode_hira" + android:keyWidth="12%p" android:horizontalGap="15%p" pj:isSecondKey="true"/> + <Key android:codes="12288" android:keyLabel=" " android:keyWidth="50%p" android:isRepeatable="true"/> + </Row> + +</Keyboard> diff --git a/res/xml-sw768dp/openwnn_pref_ja.xml b/res/xml-sw768dp/openwnn_pref_ja.xml new file mode 100644 index 0000000..729c7f2 --- /dev/null +++ b/res/xml-sw768dp/openwnn_pref_ja.xml @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" + android:key="openwnn_pref_ja"> + + <PreferenceCategory android:title="@string/preference_key_setting_menu"> + <CheckBoxPreference android:key="key_sound" + android:title="@string/preference_key_sound_title" + android:summary="@string/preference_key_sound_summary"/> + <CheckBoxPreference android:key="key_vibration" + android:title="@string/preference_key_vibration_title" + android:summary="@string/preference_key_vibration_summary"/> + <CheckBoxPreference android:key="auto_caps" + android:title="@string/preference_auto_caps_title" + android:summary="@string/preference_auto_caps_summary" + android:defaultValue="true" /> + <jp.co.omronsoft.openwnn.JAJP.KeyboardListPreferenceJAJP + android:key="keyboard_skin" + android:title="@string/preference_keyboard_skin_title" + android:summary="@string/preference_keyboard_skin_summary" + android:entries="@array/keyboard_skin" + android:entryValues="@array/keyboard_skin_id" + android:defaultValue="keyboard_android_default" /> + </PreferenceCategory> + + <PreferenceCategory android:title="@string/preference_conversion_menu_ja"> + <CheckBoxPreference android:key="opt_enable_learning_ja" + android:title="@string/preference_input_learning_title_ja" + android:summary="@string/preference_input_learning_summary" + android:defaultValue="true" /> + <CheckBoxPreference android:key="opt_prediction_ja" + android:title="@string/preference_prediction_title_ja" + android:summary="@string/preference_prediction_summary" + android:defaultValue="true" /> + </PreferenceCategory> + + <PreferenceCategory android:title="@string/preference_conversion_menu_en"> + <CheckBoxPreference android:key="opt_enable_learning_en" + android:title="@string/preference_input_learning_title_en" + android:summary="@string/preference_input_learning_summary" + android:defaultValue="true" /> + <CheckBoxPreference android:key="opt_prediction_en" + android:title="@string/preference_prediction_title_en" + android:summary="@string/preference_prediction_summary" + android:defaultValue="false" /> + </PreferenceCategory> + + <PreferenceCategory android:title="@string/preference_dictionary_menu"> + <PreferenceScreen android:key="user_dictionary_edit_words" + android:title="@string/preference_dictionary_menu_ja" + android:summary="@string/preference_user_dictionary_edit_words_summary_ja" + android:persistent="false"> + <intent android:action="android.intent.action.MAIN" + android:targetPackage="jp.co.omronsoft.openwnn" + android:targetClass="jp.co.omronsoft.openwnn.JAJP.UserDictionaryToolsListJAJP" /> + </PreferenceScreen> + + <PreferenceScreen android:key="user_dictionary_edit_words" + android:title="@string/preference_dictionary_menu_en" + android:summary="@string/preference_user_dictionary_edit_words_summary_en" + android:persistent="false"> + <intent android:action="android.intent.action.MAIN" + android:targetPackage="jp.co.omronsoft.openwnn" + android:targetClass="jp.co.omronsoft.openwnn.EN.UserDictionaryToolsListEN" /> + </PreferenceScreen> + + <jp.co.omronsoft.openwnn.JAJP.ClearLearnDictionaryDialogPreferenceJAJP + android:key="clear_learn_dictionary" + android:title="@string/preference_user_dictionary_clear_learning_title" + android:summary="@string/preference_user_dictionary_clear_learning_summary" + android:dialogMessage="@string/dialog_clear_learning_dictionary_message" + android:positiveButtonText="@string/dialog_button_ok" + android:negativeButtonText="@string/dialog_button_cancel"/> + + </PreferenceCategory> + + <PreferenceCategory android:title="@string/preference_aboutime_menu"> + <Preference android:key="openwnn_version" + style="?android:preferenceInformationStyle" + android:title="@string/openwnn_japanese" + android:summary="@string/openwnn_japanese_copyright" /> + </PreferenceCategory> + +</PreferenceScreen> + diff --git a/res/xml/debug_tool_engine.xml b/res/xml/debug_tool_engine.xml new file mode 100644 index 0000000..993b83b --- /dev/null +++ b/res/xml/debug_tool_engine.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<OpenWnnEngine> + <!-- key testName is Unique --> + + <!-- OpenWnnEngineEN --> + <!-- For int predict(ComposingText text, int minLen, int maxLen) --> + <!-- param = "target<null or empty or text or comma>,minLen,maxLen,text" --> + <key testName = "TestCase01_predict" targetClassName = "OpenWnnEngineEN" + targetMethod = "predict" param = "null,0,-1," intRet = "0" isRet = "" strRet = ""/> + + <key testName = "TestCase02_predict" targetClassName = "OpenWnnEngineEN" + targetMethod = "predict" param = "empty,0,-1," intRet = "0" isRet ="" strRet = ""/> + + <key testName = "TestCase03_predict" targetClassName = "OpenWnnEngineEN" + targetMethod = "predict" param = "text,10,5,testCase03" intRet = "1" isRet ="" strRet = ""/> + + <key testName = "TestCase04_predict" targetClassName = "OpenWnnEngineEN" + targetMethod = "predict" param = "comma,10,5," intRet = "1" isRet ="" strRet = ""/> + + <!-- For convert() --> + <key testName = "TestCase01_convert" targetClassName = "OpenWnnEngineEN" + targetMethod = "convert" param = "convertTest" intRet = "0" isRet = "" strRet = ""/> + + <!-- For searchDictionary() --> + + <key testName = "TestCase01_searchDictionary" targetClassName = "OpenWnnEngineEN" + targetMethod = "searchDictionary" param = "convertTest" intRet = "0" isRet = "" strRet = ""/> + + <!-- For getNextCandidate() --> + <!-- WnnWord getNextCandidate() --> + <!-- before predict() call --> + <key testName = "TestCase01_getNextCandidate" targetClassName = "OpenWnnEngineEN" + targetMethod = "getNextCandidate" param = "getNextCondi" intRet = "" isRet = "" strRet = "getNextCondi"/> + + <!-- predict() not call. --> + <key testName = "TestCase02_getNextCandidate" targetClassName = "OpenWnnEngineEN" + targetMethod = "getNextCandidate" param = "" intRet = "" isRet = "" strRet = ""/> + + <!-- For learn() --> + <!-- boolean learn(WnnWord word) WnnWord(String candidate, String stroke, int frequency) --> + <!-- param = "candidate,stroke,frequency" --> + <key testName = "TestCase01_learn" targetClassName = "OpenWnnEngineEN" + targetMethod = "learn" param = "learn,learn,0" intRet = "" isRet = "true" strRet = ""/> + + <key testName = "TestCase02_learn" targetClassName = "OpenWnnEngineEN" + targetMethod = "learn" param = "nolearn,nolearn,0" intRet = "" isRet = "true" strRet = ""/> + + <!-- For addWord() --> + <!-- int addWord(WnnWord word) WnnWord(String candidate, String stroke, int frequency) --> + <!-- param = "candidate,stroke,frequency"--> + <key testName = "TestCase01_addWord" targetClassName = "OpenWnnEngineEN" + targetMethod = "addWord" param = "addWordText,addWordText,0" intRet = "0" isRet = "" strRet = ""/> + + <!-- For deleteWord() --> + <!-- boolean deleteWord(WnnWord word) WnnWord(String candidate, String stroke, int frequency) --> + <!-- param = "candidate,stroke,frequency"--> + <key testName = "TestCase01_deleteWord" targetClassName = "OpenWnnEngineEN" + targetMethod = "deleteWord" param = "deleteWord,deleteWord,0" intRet = "" isRet = "false" strRet = ""/> + + <!-- void setPreferences(SharedPreferences pref) --> + <key testName = "TestCase01_setPreferences" targetClassName = "OpenWnnEngineEN" + targetMethod = "setPreferences" param = "" intRet = "" isRet = "" strRet = ""/> + + + <!-- OpenWnnEngineJAJP --> + <!-- For int predict(ComposingText text, int minLen, int maxLen) --> + <!-- param = "target<null or empty or text or comma>,minLen,maxLen,text" --> + <key testName = "TestCase01_predict" targetClassName = "OpenWnnEngineJAJP" + targetMethod = "predict" param = "null,0,-1," intRet = "0" isRet = "" strRet = ""/> +</OpenWnnEngine> diff --git a/res/xml/debug_tool_onevent.xml b/res/xml/debug_tool_onevent.xml new file mode 100644 index 0000000..a28bd87 --- /dev/null +++ b/res/xml/debug_tool_onevent.xml @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<OpenWnn_Test> +<!-- OpenWnn onEvent() Test --> +<!-- OpenWnnEN_Test --> + +<!-- (Qwerty KeyBoard Shift On) --> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase001_onEvent()_Q" displayValue = "Q" keyValue = "Q" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase002_onEvent()_W" displayValue = "W" keyValue = "W" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase003_onEvent()_E" displayValue = "E" keyValue = "E" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase004_onEvent()_R" displayValue = "R" keyValue = "R" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase005_onEvent()_T" displayValue = "T" keyValue = "T" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase006_onEvent()_Y" displayValue = "Y" keyValue = "Y" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase007_onEvent()_U" displayValue = "U" keyValue = "U" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase008_onEvent()_I" displayValue = "I" keyValue = "I" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase009_onEvent()_O" displayValue = "O" keyValue = "O" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase010_onEvent()_P" displayValue = "P" keyValue = "P" keyCode= ""/> + +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase011_onEvent()_A" displayValue = "A" keyValue = "A" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase012_onEvent()_S" displayValue = "S" keyValue = "S" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase013_onEvent()_D" displayValue = "D" keyValue = "D" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase014_onEvent()_F" displayValue = "F" keyValue = "F" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase015_onEvent()_G" displayValue = "G" keyValue = "G" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase016_onEvent()_H" displayValue = "H" keyValue = "H" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase017_onEvent()_J" displayValue = "J" keyValue = "J" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase018_onEvent()_K" displayValue = "K" keyValue = "K" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase019_onEvent()_L" displayValue = "L" keyValue = "L" keyCode= ""/> + +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase020_onEvent()_Shift" displayValue = "" keyValue = "" keyCode= "59"/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase021_onEvent()_Z" displayValue = "Z" keyValue = "Z" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase022_onEvent()_X" displayValue = "X" keyValue = "X" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase023_onEvent()_C" displayValue = "C" keyValue = "C" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase024_onEvent()_V" displayValue = "V" keyValue = "V" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase025_onEvent()_B" displayValue = "B" keyValue = "B" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase026_onEvent()_N" displayValue = "N" keyValue = "N" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase027_onEvent()_M" displayValue = "M" keyValue = "M" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase028_onEvent()_DEL" displayValue = "" keyValue = "" keyCode= "67"/> + +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase029_onEvent()_切替" displayValue = "" keyValue = "" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase030_onEvent()_SYM" displayValue = "" keyValue = "" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase031_onEvent()_," displayValue = "," keyValue = "," keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase032_onEvent()_スペース" displayValue = " " keyValue = " " keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase033_onEvent()_." displayValue = "." keyValue = "." keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase034_onEvent()_?" displayValue = "\?" keyValue = "\?" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase035_onEvent()_改行" displayValue = "" keyValue = "" keyCode= "66"/> + +<!-- (Qwerty KeyBoard Shift Off) --> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase036_onEvent()_q" displayValue = "q" keyValue = "q" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase037_onEvent()_w" displayValue = "w" keyValue = "w" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase038_onEvent()_e" displayValue = "e" keyValue = "e" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase039_onEvent()_r" displayValue = "r" keyValue = "r" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase040_onEvent()_t" displayValue = "t" keyValue = "t" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase041_onEvent()_y" displayValue = "y" keyValue = "y" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase042_onEvent()_u" displayValue = "u" keyValue = "u" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase043_onEvent()_I" displayValue = "I" keyValue = "I" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase044_onEvent()_o" displayValue = "o" keyValue = "o" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase045_onEvent()_p" displayValue = "p" keyValue = "p" keyCode= ""/> + +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase046_onEvent()_a" displayValue = "a" keyValue = "a" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase047_onEvent()_s" displayValue = "s" keyValue = "s" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase048_onEvent()_d" displayValue = "d" keyValue = "d" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase049_onEvent()_f" displayValue = "f" keyValue = "f" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase050_onEvent()_g" displayValue = "g" keyValue = "g" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase051_onEvent()_h" displayValue = "h" keyValue = "h" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase052_onEvent()_j" displayValue = "j" keyValue = "j" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase053_onEvent()_k" displayValue = "k" keyValue = "k" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase054_onEvent()_l" displayValue = "l" keyValue = "l" keyCode= ""/> + +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase055_onEvent()_Shift" displayValue = "" keyValue = "" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase056_onEvent()_z" displayValue = "z" keyValue = "z" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase057_onEvent()_x" displayValue = "x" keyValue = "x" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase058_onEvent()_c" displayValue = "c" keyValue = "c" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase059_onEvent()_v" displayValue = "v" keyValue = "v" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase060_onEvent()_b" displayValue = "b" keyValue = "b" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase061_onEvent()_n" displayValue = "n" keyValue = "n" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase062_onEvent()_m" displayValue = "m" keyValue = "m" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase063_onEvent()_DEL" displayValue = "" keyValue = "" keyCode= "67"/> + +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase064_onEvent()_切替" displayValue = "" keyValue = "" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase065_onEvent()_SYM" displayValue = "" keyValue = "" keyCode= "63"/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase066_onEvent()_," displayValue = "," keyValue = "," keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase067_onEvent()_スペース" displayValue = "" keyValue = "" keyCode= "62"/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase068_onEvent()_." displayValue = "." keyValue = "." keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase069_onEvent()_?" displayValue = "\?" keyValue = "\?" keyCode= ""/> +<key targetTest = "OpenWnnEN_Test" testName = "EN_TestCase070_onEvent()_改行" displayValue = "" keyValue = "" keyCode= "66"/> + +<!-- OpenWnnJAJP_Test --> +<key targetTest = "OpenWnnJAJP_Test" testName = "JP_TestCase01_onEvent()_q" + displayValue = "q" keyValue = "q" keyCode= ""/> + +<key targetTest = "OpenWnnJAJP_Test" testName = "JP_TestCase02_onEvent()_w" + displayValue = "w" keyValue = "w" keyCode= ""/> + +<key targetTest = "OpenWnnJAJP_Test" testName = "JP_TestCase03_onEvent()_e" + displayValue = "e" keyValue = "e" keyCode= ""/> + +<!-- For OpenWnnEvent.INPUT_SOFT_KEY --> +<key targetTest = "OpenWnnJAJP_Test" testName = "JP_TestCaseXX_onEvent()_1" + displayValue = "1" keyValue = "" keyCode= "8"/> + +<!-- OpenWnnZHCN_Test --> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase001_onEvent()_Q" displayValue = "Q" keyValue = "Q" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase002_onEvent()_W" displayValue = "W" keyValue = "W" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase003_onEvent()_E" displayValue = "E" keyValue = "E" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase004_onEvent()_R" displayValue = "R" keyValue = "R" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase005_onEvent()_T" displayValue = "T" keyValue = "T" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase006_onEvent()_Y" displayValue = "Y" keyValue = "Y" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase007_onEvent()_U" displayValue = "U" keyValue = "U" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase008_onEvent()_I" displayValue = "I" keyValue = "I" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase009_onEvent()_O" displayValue = "O" keyValue = "O" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase010_onEvent()_P" displayValue = "P" keyValue = "P" keyCode= ""/> + + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase011_onEvent()_A" displayValue = "A" keyValue = "A" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase012_onEvent()_S" displayValue = "S" keyValue = "S" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase013_onEvent()_D" displayValue = "D" keyValue = "D" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase014_onEvent()_F" displayValue = "F" keyValue = "F" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase015_onEvent()_G" displayValue = "G" keyValue = "G" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase016_onEvent()_H" displayValue = "H" keyValue = "H" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase017_onEvent()_J" displayValue = "J" keyValue = "J" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase018_onEvent()_K" displayValue = "K" keyValue = "K" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase019_onEvent()_L" displayValue = "L" keyValue = "L" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase020_onEvent()_Shift" displayValue = "" keyValue = "" keyCode= "59"/> + + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase021_onEvent()_Z" displayValue = "Z" keyValue = "Z" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase022_onEvent()_X" displayValue = "X" keyValue = "X" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase023_onEvent()_C" displayValue = "C" keyValue = "C" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase024_onEvent()_V" displayValue = "V" keyValue = "V" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase025_onEvent()_B" displayValue = "B" keyValue = "B" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase026_onEvent()_N" displayValue = "N" keyValue = "N" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase027_onEvent()_M" displayValue = "M" keyValue = "M" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase028_onEvent()_DEL" displayValue = "" keyValue = "" keyCode= "67"/> + + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase029_onEvent()_ALT" displayValue = "" keyValue = "" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase030_onEvent()_SYM" displayValue = "" keyValue = "" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase031_onEvent()_," displayValue = "," keyValue = "," keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase032_onEvent()_SPACE" displayValue = "" keyValue = "" keyCode= "62"/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase033_onEvent()_." displayValue = "." keyValue = "." keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase034_onEvent()_!" displayValue = "!" keyValue = "!" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase035_onEvent()_RETURN" displayValue = "" keyValue = "" keyCode= "66"/> + + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase036_onEvent()_q" displayValue = "q" keyValue = "q" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase037_onEvent()_w" displayValue = "w" keyValue = "w" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase038_onEvent()_e" displayValue = "e" keyValue = "e" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase039_onEvent()_r" displayValue = "r" keyValue = "r" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase040_onEvent()_t" displayValue = "t" keyValue = "t" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase041_onEvent()_y" displayValue = "y" keyValue = "y" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase042_onEvent()_u" displayValue = "u" keyValue = "u" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase043_onEvent()_i" displayValue = "i" keyValue = "i" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase044_onEvent()_o" displayValue = "o" keyValue = "o" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase045_onEvent()_p" displayValue = "p" keyValue = "p" keyCode= ""/> + + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase046_onEvent()_a" displayValue = "a" keyValue = "a" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase047_onEvent()_s" displayValue = "s" keyValue = "s" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase048_onEvent()_d" displayValue = "d" keyValue = "d" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase049_onEvent()_f" displayValue = "f" keyValue = "f" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase050_onEvent()_g" displayValue = "g" keyValue = "g" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase051_onEvent()_h" displayValue = "h" keyValue = "h" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase052_onEvent()_j" displayValue = "j" keyValue = "j" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase053_onEvent()_k" displayValue = "k" keyValue = "k" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase054_onEvent()_l" displayValue = "l" keyValue = "l" keyCode= ""/> + + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase055_onEvent()_Shift" displayValue = "" keyValue = "" keyCode= "59"/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase056_onEvent()_z" displayValue = "z" keyValue = "z" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase057_onEvent()_x" displayValue = "x" keyValue = "x" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase058_onEvent()_c" displayValue = "c" keyValue = "c" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase059_onEvent()_v" displayValue = "v" keyValue = "v" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase060_onEvent()_b" displayValue = "b" keyValue = "b" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase061_onEvent()_n" displayValue = "n" keyValue = "n" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase062_onEvent()_m" displayValue = "m" keyValue = "m" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase063_onEvent()_DEL" displayValue = "" keyValue = "" keyCode= "67"/> + + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase064_onEvent()_ALT" displayValue = "" keyValue = "" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase065_onEvent()_SYM" displayValue = "" keyValue = "" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase066_onEvent()_," displayValue = "," keyValue = "," keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase067_onEvent()_SPACE" displayValue = "" keyValue = "" keyCode= "62"/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase068_onEvent()_." displayValue = "." keyValue = "." keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase069_onEvent()_\?" displayValue = "\?" keyValue = "\?" keyCode= ""/> + <key targetTest = "OpenWnnZHCN_Test" testName = "ZHCN_TestCase070_onEvent()_RETURN" displayValue = "" keyValue = "" keyCode= "66"/> +</OpenWnn_Test> diff --git a/res/xml/default_en_qwerty.xml b/res/xml/default_en_qwerty.xml index 35068ee..ac085e5 100644 --- a/res/xml/default_en_qwerty.xml +++ b/res/xml/default_en_qwerty.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -60,7 +60,7 @@ <Key android:codes="110" android:keyLabel="n"/> <Key android:codes="109" android:keyLabel="m"/> <Key android:codes="-100" - android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" + android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" android:keyWidth="15%p" android:keyEdgeFlags="right" android:isRepeatable="true"/> </Row> @@ -76,7 +76,7 @@ <Key android:codes="46" android:keyLabel="." android:keyWidth="10%p"/> <Key android:codes="63" android:keyLabel="\?" android:keyWidth="10%p"/> <Key android:codes="-101" - android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" + android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" android:keyWidth="15%p" android:keyEdgeFlags="right"/> </Row> </Keyboard> diff --git a/res/xml/default_en_switch_key.xml b/res/xml/default_en_switch_key.xml index 319546b..968118b 100644 --- a/res/xml/default_en_switch_key.xml +++ b/res/xml/default_en_switch_key.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/xml/default_en_symbols.xml b/res/xml/default_en_symbols.xml index 16d5fe1..ca03916 100644 --- a/res/xml/default_en_symbols.xml +++ b/res/xml/default_en_symbols.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -60,7 +60,7 @@ <Key android:codes="47" android:keyLabel="/" /> <Key android:codes="33" android:keyLabel="!" /> <Key android:codes="-100" - android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" + android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" android:keyWidth="15%p" android:keyEdgeFlags="right" android:isRepeatable="true"/> </Row> @@ -76,7 +76,7 @@ <Key android:codes="46" android:keyLabel="." android:keyWidth="10%p"/> <Key android:codes="63" android:keyLabel="\?" android:keyWidth="10%p"/> <Key android:codes="-101" - android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" + android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" android:keyWidth="15%p" android:keyEdgeFlags="right"/> </Row> </Keyboard> diff --git a/res/xml/default_en_symbols_shift.xml b/res/xml/default_en_symbols_shift.xml index c2eb67b..dc723a5 100644 --- a/res/xml/default_en_symbols_shift.xml +++ b/res/xml/default_en_symbols_shift.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -60,7 +60,7 @@ <Key android:codes="92" android:keyLabel="\\" /> <Key android:codes="124" android:keyLabel="|"/> <Key android:codes="-100" - android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" + android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" android:keyWidth="15%p" android:keyEdgeFlags="right" android:isRepeatable="true"/> </Row> @@ -76,7 +76,7 @@ <Key android:codes="46" android:keyLabel="." android:keyWidth="10%p"/> <Key android:codes="63" android:keyLabel="\?" android:keyWidth="10%p"/> <Key android:codes="-101" - android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" + android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" android:keyWidth="15%p" android:keyEdgeFlags="right"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_full_alphabet.xml b/res/xml/keyboard_12key_full_alphabet.xml index 4637af2..30b8254 100644 --- a/res/xml/keyboard_12key_full_alphabet.xml +++ b/res/xml/keyboard_12key_full_alphabet.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyIcon="@drawable/key_12key_alpha1" android:iconPreview="@drawable/key_12key_alpha1_b" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyIcon="@drawable/key_12key_alpha2" android:iconPreview="@drawable/key_12key_alpha2_b"/> <Key android:codes="-203" android:keyIcon="@drawable/key_12key_alpha3" android:iconPreview="@drawable/key_12key_alpha3_b"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyIcon="@drawable/key_12key_alpha4" android:iconPreview="@drawable/key_12key_alpha4_b" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyIcon="@drawable/key_12key_alpha5" android:iconPreview="@drawable/key_12key_alpha5_b"/> <Key android:codes="-206" android:keyIcon="@drawable/key_12key_alpha6" android:iconPreview="@drawable/key_12key_alpha6_b"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyIcon="@drawable/key_12key_alpha7" android:iconPreview="@drawable/key_12key_alpha7_b" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyIcon="@drawable/key_12key_alpha8" android:iconPreview="@drawable/key_12key_alpha8_b"/> <Key android:codes="-209" android:keyIcon="@drawable/key_12key_alpha9" android:iconPreview="@drawable/key_12key_alpha9_b"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyIcon="@drawable/key_12key_caps" android:iconPreview="@drawable/key_12key_caps_b" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyIcon="@drawable/key_12key_alpha0" android:iconPreview="@drawable/key_12key_alpha0_b"/> <Key android:codes="-211" android:keyIcon="@drawable/key_12key_period_comma" android:iconPreview="@drawable/key_12key_period_comma_b" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_full_alphabet_input.xml b/res/xml/keyboard_12key_full_alphabet_input.xml index d34007d..7dafc86 100644 --- a/res/xml/keyboard_12key_full_alphabet_input.xml +++ b/res/xml/keyboard_12key_full_alphabet_input.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyIcon="@drawable/key_12key_alpha1" android:iconPreview="@drawable/key_12key_alpha1_b" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyIcon="@drawable/key_12key_alpha2" android:iconPreview="@drawable/key_12key_alpha2_b"/> <Key android:codes="-203" android:keyIcon="@drawable/key_12key_alpha3" android:iconPreview="@drawable/key_12key_alpha3_b"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyIcon="@drawable/key_12key_alpha4" android:iconPreview="@drawable/key_12key_alpha4_b" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyIcon="@drawable/key_12key_alpha5" android:iconPreview="@drawable/key_12key_alpha5_b"/> <Key android:codes="-206" android:keyIcon="@drawable/key_12key_alpha6" android:iconPreview="@drawable/key_12key_alpha6_b"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyIcon="@drawable/key_12key_alpha7" android:iconPreview="@drawable/key_12key_alpha7_b" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyIcon="@drawable/key_12key_alpha8" android:iconPreview="@drawable/key_12key_alpha8_b"/> <Key android:codes="-209" android:keyIcon="@drawable/key_12key_alpha9" android:iconPreview="@drawable/key_12key_alpha9_b"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyIcon="@drawable/key_12key_caps" android:iconPreview="@drawable/key_12key_caps_b" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyIcon="@drawable/key_12key_alpha0" android:iconPreview="@drawable/key_12key_alpha0_b"/> <Key android:codes="-211" android:keyIcon="@drawable/key_12key_period_comma" android:iconPreview="@drawable/key_12key_period_comma_b" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_full_katakana.xml b/res/xml/keyboard_12key_full_katakana.xml index aefc90f..ae7a73a 100644 --- a/res/xml/keyboard_12key_full_katakana.xml +++ b/res/xml/keyboard_12key_full_katakana.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyLabel="@string/key_12key_katakana_1" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyLabel="@string/key_12key_katakana_2"/> <Key android:codes="-203" android:keyLabel="@string/key_12key_katakana_3"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyLabel="@string/key_12key_katakana_4" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyLabel="@string/key_12key_katakana_5"/> <Key android:codes="-206" android:keyLabel="@string/key_12key_katakana_6"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyLabel="@string/key_12key_katakana_7" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyLabel="@string/key_12key_katakana_8"/> <Key android:codes="-209" android:keyLabel="@string/key_12key_katakana_9"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyLabel="@string/key_12key_katakana_0" /> <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_full_katakana_input.xml b/res/xml/keyboard_12key_full_katakana_input.xml index f17bc81..369e3d0 100644 --- a/res/xml/keyboard_12key_full_katakana_input.xml +++ b/res/xml/keyboard_12key_full_katakana_input.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyLabel="@string/key_12key_katakana_1" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyLabel="@string/key_12key_katakana_2"/> <Key android:codes="-203" android:keyLabel="@string/key_12key_katakana_3"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyLabel="@string/key_12key_katakana_4" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyLabel="@string/key_12key_katakana_5"/> <Key android:codes="-206" android:keyLabel="@string/key_12key_katakana_6"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyLabel="@string/key_12key_katakana_7" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyLabel="@string/key_12key_katakana_8"/> <Key android:codes="-209" android:keyLabel="@string/key_12key_katakana_9"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyLabel="@string/key_12key_katakana_0" /> <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_full_num.xml b/res/xml/keyboard_12key_full_num.xml index c17d031..c92ecb9 100644 --- a/res/xml/keyboard_12key_full_num.xml +++ b/res/xml/keyboard_12key_full_num.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyLabel="1" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyLabel="2"/> <Key android:codes="-203" android:keyLabel="3"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyLabel="4" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyLabel="5"/> <Key android:codes="-206" android:keyLabel="6"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyLabel="7" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyLabel="8"/> <Key android:codes="-209" android:keyLabel="9"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyLabel="*" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyLabel="0" /> <Key android:codes="-211" android:keyLabel="#" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter" android:iconPreview="@drawable/key_12key_enter_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_half_alphabet.xml b/res/xml/keyboard_12key_half_alphabet.xml index 2588c46..4b9ed76 100644 --- a/res/xml/keyboard_12key_half_alphabet.xml +++ b/res/xml/keyboard_12key_half_alphabet.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyIcon="@drawable/key_12key_alpha1" android:iconPreview="@drawable/key_12key_alpha1_b" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyIcon="@drawable/key_12key_alpha2" android:iconPreview="@drawable/key_12key_alpha2_b"/> <Key android:codes="-203" android:keyIcon="@drawable/key_12key_alpha3" android:iconPreview="@drawable/key_12key_alpha3_b"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyIcon="@drawable/key_12key_alpha4" android:iconPreview="@drawable/key_12key_alpha4_b" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyIcon="@drawable/key_12key_alpha5" android:iconPreview="@drawable/key_12key_alpha5_b"/> <Key android:codes="-206" android:keyIcon="@drawable/key_12key_alpha6" android:iconPreview="@drawable/key_12key_alpha6_b"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyIcon="@drawable/key_12key_alpha7" android:iconPreview="@drawable/key_12key_alpha7_b" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyIcon="@drawable/key_12key_alpha8" android:iconPreview="@drawable/key_12key_alpha8_b"/> <Key android:codes="-209" android:keyIcon="@drawable/key_12key_alpha9" android:iconPreview="@drawable/key_12key_alpha9_b"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyIcon="@drawable/key_12key_caps" android:iconPreview="@drawable/key_12key_caps_b" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyIcon="@drawable/key_12key_alpha0" android:iconPreview="@drawable/key_12key_alpha0_b"/> <Key android:codes="-211" android:keyIcon="@drawable/key_12key_period_comma" android:iconPreview="@drawable/key_12key_period_comma_b" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_half_alphabet_input.xml b/res/xml/keyboard_12key_half_alphabet_input.xml index a7c6549..9b96f10 100644 --- a/res/xml/keyboard_12key_half_alphabet_input.xml +++ b/res/xml/keyboard_12key_half_alphabet_input.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyIcon="@drawable/key_12key_alpha1" android:iconPreview="@drawable/key_12key_alpha1_b" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyIcon="@drawable/key_12key_alpha2" android:iconPreview="@drawable/key_12key_alpha2_b"/> <Key android:codes="-203" android:keyIcon="@drawable/key_12key_alpha3" android:iconPreview="@drawable/key_12key_alpha3_b"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyIcon="@drawable/key_12key_alpha4" android:iconPreview="@drawable/key_12key_alpha4_b" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyIcon="@drawable/key_12key_alpha5" android:iconPreview="@drawable/key_12key_alpha5_b"/> <Key android:codes="-206" android:keyIcon="@drawable/key_12key_alpha6" android:iconPreview="@drawable/key_12key_alpha6_b"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyIcon="@drawable/key_12key_alpha7" android:iconPreview="@drawable/key_12key_alpha7_b" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyIcon="@drawable/key_12key_alpha8" android:iconPreview="@drawable/key_12key_alpha8_b"/> <Key android:codes="-209" android:keyIcon="@drawable/key_12key_alpha9" android:iconPreview="@drawable/key_12key_alpha9_b"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyIcon="@drawable/key_12key_caps" android:iconPreview="@drawable/key_12key_caps_b" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyIcon="@drawable/key_12key_alpha0" android:iconPreview="@drawable/key_12key_alpha0_b"/> <Key android:codes="-211" android:keyIcon="@drawable/key_12key_period_comma" android:iconPreview="@drawable/key_12key_period_comma_b" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_half_katakana.xml b/res/xml/keyboard_12key_half_katakana.xml index 6d52364..a63224c 100644 --- a/res/xml/keyboard_12key_half_katakana.xml +++ b/res/xml/keyboard_12key_half_katakana.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyLabel="@string/key_12key_katakana_1" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyLabel="@string/key_12key_katakana_2"/> <Key android:codes="-203" android:keyLabel="@string/key_12key_katakana_3"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyLabel="@string/key_12key_katakana_4" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyLabel="@string/key_12key_katakana_5"/> <Key android:codes="-206" android:keyLabel="@string/key_12key_katakana_6"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyLabel="@string/key_12key_katakana_7" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyLabel="@string/key_12key_katakana_8"/> <Key android:codes="-209" android:keyLabel="@string/key_12key_katakana_9"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyLabel="@string/key_12key_katakana_0" /> <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_half_katakana_input.xml b/res/xml/keyboard_12key_half_katakana_input.xml index 19cd68f..dfeefdf 100644 --- a/res/xml/keyboard_12key_half_katakana_input.xml +++ b/res/xml/keyboard_12key_half_katakana_input.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyLabel="@string/key_12key_katakana_1" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyLabel="@string/key_12key_katakana_2"/> <Key android:codes="-203" android:keyLabel="@string/key_12key_katakana_3"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyLabel="@string/key_12key_katakana_4" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyLabel="@string/key_12key_katakana_5"/> <Key android:codes="-206" android:keyLabel="@string/key_12key_katakana_6"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyLabel="@string/key_12key_katakana_7" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyLabel="@string/key_12key_katakana_8"/> <Key android:codes="-209" android:keyLabel="@string/key_12key_katakana_9"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyLabel="@string/key_12key_katakana_0" /> <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_half_num.xml b/res/xml/keyboard_12key_half_num.xml index 49a6562..9d9cc52 100644 --- a/res/xml/keyboard_12key_half_num.xml +++ b/res/xml/keyboard_12key_half_num.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyLabel="1" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyLabel="2"/> <Key android:codes="-203" android:keyLabel="3"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyLabel="4" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyLabel="5"/> <Key android:codes="-206" android:keyLabel="6"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyLabel="7" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyLabel="8"/> <Key android:codes="-209" android:keyLabel="9"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_jp" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyLabel="*" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyLabel="0" /> <Key android:codes="-211" android:keyLabel="#" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter" android:iconPreview="@drawable/key_12key_enter_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12key_phone.xml b/res/xml/keyboard_12key_phone.xml index 7637058..704d6cd 100644 --- a/res/xml/keyboard_12key_phone.xml +++ b/res/xml/keyboard_12key_phone.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -22,39 +23,38 @@ > <Row> - <Key android:codes="-310" android:keyLabel="" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="32" android:keyIcon="@drawable/key_12key_space" android:iconPreview="@drawable/key_12key_space_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="49" android:keyLabel="1" android:horizontalGap="2%"/> <Key android:codes="50" android:keyLabel="2"/> <Key android:codes="51" android:keyLabel="3"/> <Key android:codes="-214" - android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="52" android:keyLabel="4" android:horizontalGap="2%"/> <Key android:codes="53" android:keyLabel="5"/> <Key android:codes="54" android:keyLabel="6"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="45" android:keyLabel="-" android:keyWidth="18%"/> + <Key android:codes="45" android:keyLabel="-" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="55" android:keyLabel="7" android:horizontalGap="2%"/> <Key android:codes="56" android:keyLabel="8"/> <Key android:codes="57" android:keyLabel="9"/> - <Key android:codes="43" android:keyLabel="+" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="43" android:keyLabel="+" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-310" android:keyLabel="" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="44" android:keyLabel="Pause" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="42" android:keyLabel="*" android:horizontalGap="2%"/> <Key android:codes="48" android:keyLabel="0" /> <Key android:codes="35" android:keyLabel="#" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter" - android:iconPreview="@drawable/key_12key_enter_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" + android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12keyjp.xml b/res/xml/keyboard_12keyjp.xml index b96fc4f..675d9ea 100644 --- a/res/xml/keyboard_12keyjp.xml +++ b/res/xml/keyboard_12keyjp.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,39 +24,39 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyIcon="@drawable/key_12key_hiragana1" android:iconPreview="@drawable/key_12key_hiragana1_b" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyIcon="@drawable/key_12key_hiragana2" android:iconPreview="@drawable/key_12key_hiragana2_b"/> <Key android:codes="-203" android:keyIcon="@drawable/key_12key_hiragana3" android:iconPreview="@drawable/key_12key_hiragana3_b"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyIcon="@drawable/key_12key_hiragana4" android:iconPreview="@drawable/key_12key_hiragana4_b" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyIcon="@drawable/key_12key_hiragana5" android:iconPreview="@drawable/key_12key_hiragana5_b"/> <Key android:codes="-206" android:keyIcon="@drawable/key_12key_hiragana6" android:iconPreview="@drawable/key_12key_hiragana6_b"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_12key_pict_sym_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-222" android:keyIcon="@drawable/key_12key_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyIcon="@drawable/key_12key_hiragana7" android:iconPreview="@drawable/key_12key_hiragana7_b" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyIcon="@drawable/key_12key_hiragana8" android:iconPreview="@drawable/key_12key_hiragana8_b"/> <Key android:codes="-209" android:keyIcon="@drawable/key_12key_hiragana9" android:iconPreview="@drawable/key_12key_hiragana9_b"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space_jp" android:iconPreview="@drawable/key_12key_space_jp_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space_jp" android:iconPreview="@drawable/key_12key_space_jp_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_hira" android:iconPreview="@drawable/key_mode_change_b" + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b" android:popupKeyboard="@xml/keyboard_switch_key_jp" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyIcon="@drawable/key_12key_hiragana0" android:iconPreview="@drawable/key_12key_hiragana0_b"/> <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_12keyjp_input.xml b/res/xml/keyboard_12keyjp_input.xml index fa86cd5..c965d90 100644 --- a/res/xml/keyboard_12keyjp_input.xml +++ b/res/xml/keyboard_12keyjp_input.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,7 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" android:keyWidth="20%p" android:horizontalGap="0dip" android:verticalGap="0dip" @@ -23,38 +24,38 @@ <Row> <Key android:codes="-219" android:keyIcon="@drawable/key_12key_reverse" android:iconPreview="@drawable/key_12key_reverse_b" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-201" android:keyIcon="@drawable/key_12key_hiragana1" android:iconPreview="@drawable/key_12key_hiragana1_b" android:horizontalGap="2%"/> <Key android:codes="-202" android:keyIcon="@drawable/key_12key_hiragana2" android:iconPreview="@drawable/key_12key_hiragana2_b"/> <Key android:codes="-203" android:keyIcon="@drawable/key_12key_hiragana3" android:iconPreview="@drawable/key_12key_hiragana3_b"/> - <Key android:codes="-214" android:keyIcon="@drawable/key_12key_del" android:iconPreview="@drawable/key_12key_del_b" - android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-214" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_12key_left" android:iconPreview="@drawable/key_12key_left_b" android:isRepeatable="true" android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-204" android:keyIcon="@drawable/key_12key_hiragana4" android:iconPreview="@drawable/key_12key_hiragana4_b" android:horizontalGap="2%"/> <Key android:codes="-205" android:keyIcon="@drawable/key_12key_hiragana5" android:iconPreview="@drawable/key_12key_hiragana5_b"/> <Key android:codes="-206" android:keyIcon="@drawable/key_12key_hiragana6" android:iconPreview="@drawable/key_12key_hiragana6_b"/> - <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_12key_right" android:iconPreview="@drawable/key_12key_right_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row> - <Key android:codes="-305" android:keyIcon="@drawable/key_12key_eisukana" android:iconPreview="@drawable/key_12key_eisukana_b" android:keyWidth="18%"/> + <Key android:codes="-305" android:keyIcon="@drawable/key_12key_eisukana" android:iconPreview="@drawable/key_12key_eisukana_b" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-207" android:keyIcon="@drawable/key_12key_hiragana7" android:iconPreview="@drawable/key_12key_hiragana7_b" android:horizontalGap="2%"/> <Key android:codes="-208" android:keyIcon="@drawable/key_12key_hiragana8" android:iconPreview="@drawable/key_12key_hiragana8_b"/> <Key android:codes="-209" android:keyIcon="@drawable/key_12key_hiragana9" android:iconPreview="@drawable/key_12key_hiragana9_b"/> - <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space_jp" android:iconPreview="@drawable/key_12key_space_jp_b" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-215" android:keyIcon="@drawable/key_12key_space_jp" android:iconPreview="@drawable/key_12key_space_jp_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_12key_mode_hira" android:iconPreview="@drawable/key_mode_change_b" + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b" android:popupKeyboard="@xml/keyboard_switch_key_jp" - android:keyEdgeFlags="left" android:keyWidth="18%"/> + android:keyEdgeFlags="left" android:keyWidth="18%" wnn:isSecondKey="true"/> <Key android:codes="-213" android:keyIcon="@drawable/key_12key_dakuten" android:iconPreview="@drawable/key_12key_dakuten_b" android:horizontalGap="2%"/> <Key android:codes="-210" android:keyIcon="@drawable/key_12key_hiragana0" android:iconPreview="@drawable/key_12key_hiragana0_b"/> <Key android:codes="-211" android:keyIcon="@drawable/key_12key_ten" android:iconPreview="@drawable/key_12key_ten_b" /> - <Key android:codes="-216" android:keyIcon="@drawable/key_12key_enter_jp" android:iconPreview="@drawable/key_12key_enter_jp_b" - android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%"/> + <Key android:codes="-216" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyEdgeFlags="right" android:horizontalGap="2%" android:keyWidth="18%" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_4key.xml b/res/xml/keyboard_4key.xml new file mode 100644 index 0000000..9061302 --- /dev/null +++ b/res/xml/keyboard_4key.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyHeight="@dimen/key_height_4key" + > + + <Row> + <Key android:codes="-300" android:keyLabel="@string/key_symbol_mode" android:keyEdgeFlags="left" android:keyWidth="25%p" wnn:isSecondKey="true"/> + <Key android:codes="-301" android:keyWidth="25%p" android:keyLabel="\u25b2" wnn:isSecondKey="true" /> + <Key android:codes="-302" android:keyWidth="25%p" android:keyLabel="\u25bc" wnn:isSecondKey="true" /> + <Key android:codes="-303" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" android:isRepeatable="true" android:keyEdgeFlags="right" android:keyWidth="25%p" wnn:isSecondKey="true" /> + </Row> +</Keyboard> + diff --git a/res/xml/keyboard_qwerty_jp.xml b/res/xml/keyboard_qwerty_jp.xml index ca87e72..1a5c956 100644 --- a/res/xml/keyboard_qwerty_jp.xml +++ b/res/xml/keyboard_qwerty_jp.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,14 +15,15 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/> + <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="119" android:keyLabel="w"/> <Key android:codes="101" android:keyLabel="e"/> <Key android:codes="114" android:keyLabel="r"/> @@ -35,7 +36,7 @@ </Row> <Row> - <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left"/> + <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="115" android:keyLabel="s"/> <Key android:codes="100" android:keyLabel="d"/> <Key android:codes="102" android:keyLabel="f"/> @@ -48,9 +49,10 @@ android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> <Key android:codes="122" android:keyLabel="z"/> <Key android:codes="120" android:keyLabel="x"/> <Key android:codes="99" android:keyLabel="c"/> @@ -58,23 +60,26 @@ <Key android:codes="98" android:keyLabel="b"/> <Key android:codes="110" android:keyLabel="n"/> <Key android:codes="109" android:keyLabel="m"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_hira" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left"/> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p"/> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="44" android:keyLabel="@string/key_qwerty_full_touten"/> <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space_conv" android:iconPreview="@drawable/key_qwerty_space_conv_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="44" android:keyLabel="@string/key_qwerty_full_touten" - android:keyWidth="12.5%p"/> - <Key android:codes="46" android:keyLabel="@string/key_qwerty_full_kuten" - android:keyWidth="12.5%p"/> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="46" android:keyLabel="@string/key_qwerty_full_kuten"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_full_alphabet.xml b/res/xml/keyboard_qwerty_jp_full_alphabet.xml index ea7d72f..34de3db 100644 --- a/res/xml/keyboard_qwerty_jp_full_alphabet.xml +++ b/res/xml/keyboard_qwerty_jp_full_alphabet.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,14 +15,15 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="65361" android:keyLabel="q" android:keyEdgeFlags="left"/> + <Key android:codes="65361" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="65367" android:keyLabel="w"/> <Key android:codes="65349" android:keyLabel="e"/> <Key android:codes="65362" android:keyLabel="r"/> @@ -35,7 +36,7 @@ </Row> <Row> - <Key android:codes="65345" android:keyLabel="a" android:keyEdgeFlags="left"/> + <Key android:codes="65345" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="65363" android:keyLabel="s"/> <Key android:codes="65348" android:keyLabel="d"/> <Key android:codes="65350" android:keyLabel="f"/> @@ -48,9 +49,10 @@ android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> <Key android:codes="65370" android:keyLabel="z"/> <Key android:codes="65368" android:keyLabel="x"/> <Key android:codes="65347" android:keyLabel="c"/> @@ -58,23 +60,26 @@ <Key android:codes="65346" android:keyLabel="b"/> <Key android:codes="65358" android:keyLabel="n"/> <Key android:codes="65357" android:keyLabel="m"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left"/> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p"/> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma"/> <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma" - android:keyWidth="12.5%p"/> - <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period" - android:keyWidth="12.5%p"/> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_full_alphabet_shift.xml b/res/xml/keyboard_qwerty_jp_full_alphabet_shift.xml index 38005c8..7a02ba7 100644 --- a/res/xml/keyboard_qwerty_jp_full_alphabet_shift.xml +++ b/res/xml/keyboard_qwerty_jp_full_alphabet_shift.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,14 +15,15 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="65329" android:keyLabel="Q" android:keyEdgeFlags="left"/> + <Key android:codes="65329" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="65335" android:keyLabel="W"/> <Key android:codes="65317" android:keyLabel="E"/> <Key android:codes="65330" android:keyLabel="R"/> @@ -35,7 +36,7 @@ </Row> <Row> - <Key android:codes="65313" android:keyLabel="A" android:keyEdgeFlags="left"/> + <Key android:codes="65313" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="65331" android:keyLabel="S"/> <Key android:codes="65316" android:keyLabel="D"/> <Key android:codes="65318" android:keyLabel="F"/> @@ -48,9 +49,10 @@ android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> <Key android:codes="65338" android:keyLabel="Z"/> <Key android:codes="65336" android:keyLabel="X"/> <Key android:codes="65315" android:keyLabel="C"/> @@ -58,23 +60,26 @@ <Key android:codes="65314" android:keyLabel="B"/> <Key android:codes="65326" android:keyLabel="N"/> <Key android:codes="65325" android:keyLabel="M"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left"/> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p"/> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/> <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark" - android:keyWidth="12.5%p"/> - <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question" - android:keyWidth="12.5%p"/> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_full_katakana.xml b/res/xml/keyboard_qwerty_jp_full_katakana.xml index 5e2c0cd..c0bdd44 100644 --- a/res/xml/keyboard_qwerty_jp_full_katakana.xml +++ b/res/xml/keyboard_qwerty_jp_full_katakana.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,14 +15,15 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/> + <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="119" android:keyLabel="w"/> <Key android:codes="101" android:keyLabel="e"/> <Key android:codes="114" android:keyLabel="r"/> @@ -35,7 +36,7 @@ </Row> <Row> - <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left"/> + <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="115" android:keyLabel="s"/> <Key android:codes="100" android:keyLabel="d"/> <Key android:codes="102" android:keyLabel="f"/> @@ -48,9 +49,10 @@ android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> <Key android:codes="122" android:keyLabel="z"/> <Key android:codes="120" android:keyLabel="x"/> <Key android:codes="99" android:keyLabel="c"/> @@ -58,23 +60,26 @@ <Key android:codes="98" android:keyLabel="b"/> <Key android:codes="110" android:keyLabel="n"/> <Key android:codes="109" android:keyLabel="m"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left"/> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p"/> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="12289" android:keyLabel="@string/key_qwerty_full_touten"/> <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="12289" android:keyLabel="@string/key_qwerty_full_touten" - android:keyWidth="12.5%p"/> - <Key android:codes="12290" android:keyLabel="@string/key_qwerty_full_kuten" - android:keyWidth="12.5%p"/> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="12290" android:keyLabel="@string/key_qwerty_full_kuten"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_full_katakana_shift.xml b/res/xml/keyboard_qwerty_jp_full_katakana_shift.xml index dfee410..11f946f 100644 --- a/res/xml/keyboard_qwerty_jp_full_katakana_shift.xml +++ b/res/xml/keyboard_qwerty_jp_full_katakana_shift.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,66 +15,71 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/> - <Key android:codes="119" android:keyLabel="w"/> - <Key android:codes="101" android:keyLabel="e"/> - <Key android:codes="114" android:keyLabel="r"/> - <Key android:codes="116" android:keyLabel="t"/> - <Key android:codes="121" android:keyLabel="y"/> - <Key android:codes="117" android:keyLabel="u"/> - <Key android:codes="105" android:keyLabel="i"/> - <Key android:codes="111" android:keyLabel="o"/> - <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/> + <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="W"/> + <Key android:codes="101" android:keyLabel="E"/> + <Key android:codes="114" android:keyLabel="R"/> + <Key android:codes="116" android:keyLabel="T"/> + <Key android:codes="121" android:keyLabel="Y"/> + <Key android:codes="117" android:keyLabel="U"/> + <Key android:codes="105" android:keyLabel="I"/> + <Key android:codes="111" android:keyLabel="O"/> + <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/> </Row> <Row> - <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left"/> - <Key android:codes="115" android:keyLabel="s"/> - <Key android:codes="100" android:keyLabel="d"/> - <Key android:codes="102" android:keyLabel="f"/> - <Key android:codes="103" android:keyLabel="g"/> - <Key android:codes="104" android:keyLabel="h"/> - <Key android:codes="106" android:keyLabel="j"/> - <Key android:codes="107" android:keyLabel="k"/> - <Key android:codes="108" android:keyLabel="l"/> + <Key android:codes="97" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="S"/> + <Key android:codes="100" android:keyLabel="D"/> + <Key android:codes="102" android:keyLabel="F"/> + <Key android:codes="103" android:keyLabel="G"/> + <Key android:codes="104" android:keyLabel="H"/> + <Key android:codes="106" android:keyLabel="J"/> + <Key android:codes="107" android:keyLabel="K"/> + <Key android:codes="108" android:keyLabel="L"/> <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon" android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> - <Key android:codes="122" android:keyLabel="z"/> - <Key android:codes="120" android:keyLabel="x"/> - <Key android:codes="99" android:keyLabel="c"/> - <Key android:codes="118" android:keyLabel="v"/> - <Key android:codes="98" android:keyLabel="b"/> - <Key android:codes="110" android:keyLabel="n"/> - <Key android:codes="109" android:keyLabel="m"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="Z"/> + <Key android:codes="120" android:keyLabel="X"/> + <Key android:codes="99" android:keyLabel="C"/> + <Key android:codes="118" android:keyLabel="V"/> + <Key android:codes="98" android:keyLabel="B"/> + <Key android:codes="110" android:keyLabel="N"/> + <Key android:codes="109" android:keyLabel="M"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left"/> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p"/> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/> <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark" - android:keyWidth="12.5%p"/> - <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question" - android:keyWidth="12.5%p"/> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_full_symbols.xml b/res/xml/keyboard_qwerty_jp_full_symbols.xml index 1fcf7fa..48ab92c 100644 --- a/res/xml/keyboard_qwerty_jp_full_symbols.xml +++ b/res/xml/keyboard_qwerty_jp_full_symbols.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,14 +15,15 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left"/> + <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="65298" android:keyLabel="2"/> <Key android:codes="65299" android:keyLabel="3"/> <Key android:codes="65300" android:keyLabel="4"/> @@ -35,7 +36,7 @@ </Row> <Row> - <Key android:codes="65312" android:keyLabel="@string/key_qwerty_full_at_sign" android:keyEdgeFlags="left"/> + <Key android:codes="65312" android:keyLabel="@string/key_qwerty_full_at_sign" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="65283" android:keyLabel="@string/key_qwerty_full_number_sign" /> <Key android:codes="65285" android:keyLabel="@string/key_qwerty_full_percent_sign" /> <Key android:codes="65286" android:keyLabel="@string/key_qwerty_full_ampersand" /> @@ -47,9 +48,10 @@ <Key android:codes="12301" android:keyLabel="@string/key_qwerty_kagi_kakko_right" android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> <Key android:codes="65295" android:keyLabel="@string/key_qwerty_full_slash" /> <Key android:codes="65288" android:keyLabel="@string/key_qwerty_full_left_parenthesis" /> <Key android:codes="65289" android:keyLabel="@string/key_qwerty_full_right_parenthesis" /> @@ -57,21 +59,26 @@ <Key android:codes="65307" android:keyLabel="@string/key_qwerty_full_semicolon" /> <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark" /> <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question" /> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_num" android:iconPreview="@drawable/key_mode_change_b" + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b" android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left" /> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p" /> + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true" /> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true" /> + <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma"/> <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma" android:keyWidth="12.5%p" /> - <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period" android:keyWidth="12.5%p" /> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_full_symbols_shift.xml b/res/xml/keyboard_qwerty_jp_full_symbols_shift.xml index 26e5cb3..8421f69 100644 --- a/res/xml/keyboard_qwerty_jp_full_symbols_shift.xml +++ b/res/xml/keyboard_qwerty_jp_full_symbols_shift.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,14 +15,15 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left"/> + <Key android:codes="65297" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="65298" android:keyLabel="2"/> <Key android:codes="65299" android:keyLabel="3"/> <Key android:codes="65300" android:keyLabel="4"/> @@ -35,7 +36,7 @@ </Row> <Row> - <Key android:codes="65374" android:keyLabel="@string/key_qwerty_full_thilde" android:keyEdgeFlags="left"/> + <Key android:codes="65374" android:keyLabel="@string/key_qwerty_full_thilde" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="65342" android:keyLabel="@string/key_qwerty_full_hat"/> <Key android:codes="65509" android:keyLabel="@string/key_qwerty_full_yen_sign"/> <Key android:codes="65284" android:keyLabel="@string/key_qwerty_full_dollar_sign"/> @@ -47,9 +48,10 @@ <Key android:codes="65373" android:keyLabel="@string/key_qwerty_full_right_curly_blacket" android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> <Key android:codes="65372" android:keyLabel="@string/key_qwerty_full_vertical_bar"/> <Key android:codes="65308" android:keyLabel="@string/key_qwerty_full_less_than_sign"/> <Key android:codes="65310" android:keyLabel="@string/key_qwerty_full_greater_than_sign"/> @@ -57,23 +59,26 @@ <Key android:codes="8217" android:keyLabel="@string/key_qwerty_full_right_single_quote"/> <Key android:codes="65292" android:keyLabel="@string/key_qwerty_full_comma" /> <Key android:codes="65294" android:keyLabel="@string/key_qwerty_full_period" /> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_full_num" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left" /> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p" /> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_full_num" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true" /> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true" /> + <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/> <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark" - android:keyWidth="12.5%p" /> - <Key android:codes="12539" android:keyLabel="@string/key_qwerty_full_middot" - android:keyWidth="12.5%p" /> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="12539" android:keyLabel="@string/key_qwerty_full_middot"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_half_alphabet.xml b/res/xml/keyboard_qwerty_jp_half_alphabet.xml index 80b7934..58b2181 100644 --- a/res/xml/keyboard_qwerty_jp_half_alphabet.xml +++ b/res/xml/keyboard_qwerty_jp_half_alphabet.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,14 +15,15 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" - > + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" + > <Row> - <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/> + <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="119" android:keyLabel="w"/> <Key android:codes="101" android:keyLabel="e"/> <Key android:codes="114" android:keyLabel="r"/> @@ -35,7 +36,7 @@ </Row> <Row> - <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left"/> + <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="115" android:keyLabel="s"/> <Key android:codes="100" android:keyLabel="d"/> <Key android:codes="102" android:keyLabel="f"/> @@ -47,9 +48,10 @@ <Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> <Key android:codes="122" android:keyLabel="z"/> <Key android:codes="120" android:keyLabel="x"/> <Key android:codes="99" android:keyLabel="c"/> @@ -57,23 +59,26 @@ <Key android:codes="98" android:keyLabel="b"/> <Key android:codes="110" android:keyLabel="n"/> <Key android:codes="109" android:keyLabel="m"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left"/> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p"/> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="44" android:keyLabel=","/> <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="44" android:keyLabel="," - android:keyWidth="12.5%p"/> - <Key android:codes="46" android:keyLabel="." - android:keyWidth="12.5%p"/> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="46" android:keyLabel="."/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_half_alphabet_shift.xml b/res/xml/keyboard_qwerty_jp_half_alphabet_shift.xml index 7dc0869..21112d4 100644 --- a/res/xml/keyboard_qwerty_jp_half_alphabet_shift.xml +++ b/res/xml/keyboard_qwerty_jp_half_alphabet_shift.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,65 +15,70 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/> - <Key android:codes="119" android:keyLabel="w"/> - <Key android:codes="101" android:keyLabel="e"/> - <Key android:codes="114" android:keyLabel="r"/> - <Key android:codes="116" android:keyLabel="t"/> - <Key android:codes="121" android:keyLabel="y"/> - <Key android:codes="117" android:keyLabel="u"/> - <Key android:codes="105" android:keyLabel="i"/> - <Key android:codes="111" android:keyLabel="o"/> - <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/> + <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="W"/> + <Key android:codes="101" android:keyLabel="E"/> + <Key android:codes="114" android:keyLabel="R"/> + <Key android:codes="116" android:keyLabel="T"/> + <Key android:codes="121" android:keyLabel="Y"/> + <Key android:codes="117" android:keyLabel="U"/> + <Key android:codes="105" android:keyLabel="I"/> + <Key android:codes="111" android:keyLabel="O"/> + <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/> </Row> <Row> - <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left"/> - <Key android:codes="115" android:keyLabel="s"/> - <Key android:codes="100" android:keyLabel="d"/> - <Key android:codes="102" android:keyLabel="f"/> - <Key android:codes="103" android:keyLabel="g"/> - <Key android:codes="104" android:keyLabel="h"/> - <Key android:codes="106" android:keyLabel="j"/> - <Key android:codes="107" android:keyLabel="k"/> - <Key android:codes="108" android:keyLabel="l"/> + <Key android:codes="97" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="S"/> + <Key android:codes="100" android:keyLabel="D"/> + <Key android:codes="102" android:keyLabel="F"/> + <Key android:codes="103" android:keyLabel="G"/> + <Key android:codes="104" android:keyLabel="H"/> + <Key android:codes="106" android:keyLabel="J"/> + <Key android:codes="107" android:keyLabel="K"/> + <Key android:codes="108" android:keyLabel="L"/> <Key android:codes="47" android:keyLabel="/" android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> - <Key android:codes="122" android:keyLabel="z"/> - <Key android:codes="120" android:keyLabel="x"/> - <Key android:codes="99" android:keyLabel="c"/> - <Key android:codes="118" android:keyLabel="v"/> - <Key android:codes="98" android:keyLabel="b"/> - <Key android:codes="110" android:keyLabel="n"/> - <Key android:codes="109" android:keyLabel="m"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="Z"/> + <Key android:codes="120" android:keyLabel="X"/> + <Key android:codes="99" android:keyLabel="C"/> + <Key android:codes="118" android:keyLabel="V"/> + <Key android:codes="98" android:keyLabel="B"/> + <Key android:codes="110" android:keyLabel="N"/> + <Key android:codes="109" android:keyLabel="M"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left"/> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p"/> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_alpha" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="33" android:keyLabel="!"/> <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="33" android:keyLabel="!" - android:keyWidth="12.5%p"/> - <Key android:codes="63" android:keyLabel="\?" - android:keyWidth="12.5%p"/> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="63" android:keyLabel="\?"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_half_katakana.xml b/res/xml/keyboard_qwerty_jp_half_katakana.xml index 18d6c4c..190a55e 100644 --- a/res/xml/keyboard_qwerty_jp_half_katakana.xml +++ b/res/xml/keyboard_qwerty_jp_half_katakana.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,14 +15,15 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/> + <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="119" android:keyLabel="w"/> <Key android:codes="101" android:keyLabel="e"/> <Key android:codes="114" android:keyLabel="r"/> @@ -35,7 +36,7 @@ </Row> <Row> - <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left"/> + <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="115" android:keyLabel="s"/> <Key android:codes="100" android:keyLabel="d"/> <Key android:codes="102" android:keyLabel="f"/> @@ -48,9 +49,10 @@ android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> <Key android:codes="122" android:keyLabel="z"/> <Key android:codes="120" android:keyLabel="x"/> <Key android:codes="99" android:keyLabel="c"/> @@ -58,23 +60,26 @@ <Key android:codes="98" android:keyLabel="b"/> <Key android:codes="110" android:keyLabel="n"/> <Key android:codes="109" android:keyLabel="m"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left"/> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p"/> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="65380" android:keyLabel="@string/key_qwerty_half_comma"/> <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="65380" android:keyLabel="@string/key_qwerty_half_comma" - android:keyWidth="12.5%p"/> - <Key android:codes="65377" android:keyLabel="@string/key_qwerty_half_period" - android:keyWidth="12.5%p"/> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65377" android:keyLabel="@string/key_qwerty_half_period"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_half_katakana_shift.xml b/res/xml/keyboard_qwerty_jp_half_katakana_shift.xml index c250968..ca9b724 100644 --- a/res/xml/keyboard_qwerty_jp_half_katakana_shift.xml +++ b/res/xml/keyboard_qwerty_jp_half_katakana_shift.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,66 +15,71 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" - > + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" + > <Row> - <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/> - <Key android:codes="119" android:keyLabel="w"/> - <Key android:codes="101" android:keyLabel="e"/> - <Key android:codes="114" android:keyLabel="r"/> - <Key android:codes="116" android:keyLabel="t"/> - <Key android:codes="121" android:keyLabel="y"/> - <Key android:codes="117" android:keyLabel="u"/> - <Key android:codes="105" android:keyLabel="i"/> - <Key android:codes="111" android:keyLabel="o"/> - <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/> + <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="W"/> + <Key android:codes="101" android:keyLabel="E"/> + <Key android:codes="114" android:keyLabel="R"/> + <Key android:codes="116" android:keyLabel="T"/> + <Key android:codes="121" android:keyLabel="Y"/> + <Key android:codes="117" android:keyLabel="U"/> + <Key android:codes="105" android:keyLabel="I"/> + <Key android:codes="111" android:keyLabel="O"/> + <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/> </Row> <Row> - <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left"/> - <Key android:codes="115" android:keyLabel="s"/> - <Key android:codes="100" android:keyLabel="d"/> - <Key android:codes="102" android:keyLabel="f"/> - <Key android:codes="103" android:keyLabel="g"/> - <Key android:codes="104" android:keyLabel="h"/> - <Key android:codes="106" android:keyLabel="j"/> - <Key android:codes="107" android:keyLabel="k"/> - <Key android:codes="108" android:keyLabel="l"/> + <Key android:codes="97" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="S"/> + <Key android:codes="100" android:keyLabel="D"/> + <Key android:codes="102" android:keyLabel="F"/> + <Key android:codes="103" android:keyLabel="G"/> + <Key android:codes="104" android:keyLabel="H"/> + <Key android:codes="106" android:keyLabel="J"/> + <Key android:codes="107" android:keyLabel="K"/> + <Key android:codes="108" android:keyLabel="L"/> <Key android:codes="65392" android:keyLabel="@string/key_qwerty_half_tyouon" android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> - <Key android:codes="122" android:keyLabel="z"/> - <Key android:codes="120" android:keyLabel="x"/> - <Key android:codes="99" android:keyLabel="c"/> - <Key android:codes="118" android:keyLabel="v"/> - <Key android:codes="98" android:keyLabel="b"/> - <Key android:codes="110" android:keyLabel="n"/> - <Key android:codes="109" android:keyLabel="m"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="Z"/> + <Key android:codes="120" android:keyLabel="X"/> + <Key android:codes="99" android:keyLabel="C"/> + <Key android:codes="118" android:keyLabel="V"/> + <Key android:codes="98" android:keyLabel="B"/> + <Key android:codes="110" android:keyLabel="N"/> + <Key android:codes="109" android:keyLabel="M"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left"/> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p"/> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_kata" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="33" android:keyLabel="!"/> <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="33" android:keyLabel="!" - android:keyWidth="12.5%p"/> - <Key android:codes="63" android:keyLabel="\?" - android:keyWidth="12.5%p"/> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="63" android:keyLabel="\?"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_half_symbols.xml b/res/xml/keyboard_qwerty_jp_half_symbols.xml index 4621b9e..6ce9cf6 100644 --- a/res/xml/keyboard_qwerty_jp_half_symbols.xml +++ b/res/xml/keyboard_qwerty_jp_half_symbols.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,14 +15,15 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/> + <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="50" android:keyLabel="2"/> <Key android:codes="51" android:keyLabel="3"/> <Key android:codes="52" android:keyLabel="4"/> @@ -35,7 +36,7 @@ </Row> <Row> - <Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="left"/> + <Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="35" android:keyLabel="\#"/> <Key android:codes="37" android:keyLabel="%"/> <Key android:codes="38" android:keyLabel="&"/> @@ -47,9 +48,10 @@ <Key android:codes="93" android:keyLabel="]" android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" + android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> <Key android:codes="47" android:keyLabel="/" /> <Key android:codes="40" android:keyLabel="("/> <Key android:codes="41" android:keyLabel=")"/> @@ -57,21 +59,26 @@ <Key android:codes="59" android:keyLabel=";"/> <Key android:codes="33" android:keyLabel="!" /> <Key android:codes="63" android:keyLabel="\?"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_num" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left" /> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p" /> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true" /> + <Key android:codes="44" android:keyLabel=","/> <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="44" android:keyLabel="," android:keyWidth="12.5%p" /> - <Key android:codes="46" android:keyLabel="." android:keyWidth="12.5%p" /> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="46" android:keyLabel="."/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_half_symbols_shift.xml b/res/xml/keyboard_qwerty_jp_half_symbols_shift.xml index e7871f1..5df9fec 100644 --- a/res/xml/keyboard_qwerty_jp_half_symbols_shift.xml +++ b/res/xml/keyboard_qwerty_jp_half_symbols_shift.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,14 +15,15 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" - > + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" + > <Row> - <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/> + <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="50" android:keyLabel="2"/> <Key android:codes="51" android:keyLabel="3"/> <Key android:codes="52" android:keyLabel="4"/> @@ -35,7 +36,7 @@ </Row> <Row> - <Key android:codes="126" android:keyLabel="~" android:keyEdgeFlags="left"/> + <Key android:codes="126" android:keyLabel="~" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> <Key android:codes="94" android:keyLabel="^"/> <Key android:codes="165" android:keyLabel="¥"/> <Key android:codes="36" android:keyLabel="$"/> @@ -47,9 +48,10 @@ <Key android:codes="125" android:keyLabel="}" android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> <Key android:codes="124" android:keyLabel="|"/> <Key android:codes="60" android:keyLabel="<"/> <Key android:codes="62" android:keyLabel=">"/> @@ -57,21 +59,26 @@ <Key android:codes="39" android:keyLabel="'"/> <Key android:codes="44" android:keyLabel="," /> <Key android:codes="46" android:keyLabel="." /> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_half_num" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left" /> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p" /> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_half_num" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="33" android:keyLabel="!"/> <Key android:codes="32" android:keyIcon="@drawable/key_qwerty_space" android:iconPreview="@drawable/key_qwerty_space_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="33" android:keyLabel="!" android:keyWidth="12.5%p" /> - <Key android:codes="63" android:keyLabel="\?" android:keyWidth="12.5%p" /> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter" android:iconPreview="@drawable/key_qwerty_enter_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="63" android:keyLabel="\?"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_qwerty_jp_shift.xml b/res/xml/keyboard_qwerty_jp_shift.xml index 99b8ea8..d5f542b 100644 --- a/res/xml/keyboard_qwerty_jp_shift.xml +++ b/res/xml/keyboard_qwerty_jp_shift.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,66 +15,71 @@ limitations under the License. --> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" - android:keyWidth="10%p" - android:horizontalGap="0dip" - android:verticalGap="0dip" - android:keyHeight="@dimen/key_height" + xmlns:wnn="http://schemas.android.com/apk/res/jp.co.omronsoft.openwnn" + android:keyWidth="9%p" + android:horizontalGap="0.93%p" + android:verticalGap="8dip" + android:keyHeight="@dimen/key_height_qwerty" > <Row> - <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/> - <Key android:codes="119" android:keyLabel="w"/> - <Key android:codes="101" android:keyLabel="e"/> - <Key android:codes="114" android:keyLabel="r"/> - <Key android:codes="116" android:keyLabel="t"/> - <Key android:codes="121" android:keyLabel="y"/> - <Key android:codes="117" android:keyLabel="u"/> - <Key android:codes="105" android:keyLabel="i"/> - <Key android:codes="111" android:keyLabel="o"/> - <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/> + <Key android:codes="113" android:keyLabel="Q" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="119" android:keyLabel="W"/> + <Key android:codes="101" android:keyLabel="E"/> + <Key android:codes="114" android:keyLabel="R"/> + <Key android:codes="116" android:keyLabel="T"/> + <Key android:codes="121" android:keyLabel="Y"/> + <Key android:codes="117" android:keyLabel="U"/> + <Key android:codes="105" android:keyLabel="I"/> + <Key android:codes="111" android:keyLabel="O"/> + <Key android:codes="112" android:keyLabel="P" android:keyEdgeFlags="right"/> </Row> <Row> - <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left"/> - <Key android:codes="115" android:keyLabel="s"/> - <Key android:codes="100" android:keyLabel="d"/> - <Key android:codes="102" android:keyLabel="f"/> - <Key android:codes="103" android:keyLabel="g"/> - <Key android:codes="104" android:keyLabel="h"/> - <Key android:codes="106" android:keyLabel="j"/> - <Key android:codes="107" android:keyLabel="k"/> - <Key android:codes="108" android:keyLabel="l"/> + <Key android:codes="97" android:keyLabel="A" android:keyEdgeFlags="left" android:horizontalGap="1.2%p"/> + <Key android:codes="115" android:keyLabel="S"/> + <Key android:codes="100" android:keyLabel="D"/> + <Key android:codes="102" android:keyLabel="F"/> + <Key android:codes="103" android:keyLabel="G"/> + <Key android:codes="104" android:keyLabel="H"/> + <Key android:codes="106" android:keyLabel="J"/> + <Key android:codes="107" android:keyLabel="K"/> + <Key android:codes="108" android:keyLabel="L"/> <Key android:codes="12540" android:keyLabel="@string/key_qwerty_tyouon" android:keyEdgeFlags="right"/> </Row> - <Row> - <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="15%p" - android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left"/> - <Key android:codes="122" android:keyLabel="z"/> - <Key android:codes="120" android:keyLabel="x"/> - <Key android:codes="99" android:keyLabel="c"/> - <Key android:codes="118" android:keyLabel="v"/> - <Key android:codes="98" android:keyLabel="b"/> - <Key android:codes="110" android:keyLabel="n"/> - <Key android:codes="109" android:keyLabel="m"/> - <Key android:codes="-100" android:keyIcon="@drawable/key_qwerty_del" android:iconPreview="@drawable/key_qwerty_del_b" android:keyWidth="15%p" - android:keyEdgeFlags="right" android:isRepeatable="true"/> + <Row android:horizontalGap="0.82%p"> + <Key android:codes="-1" android:keyIcon="@drawable/key_qwerty_shift" + android:iconPreview="@drawable/key_qwerty_shift_b" android:keyWidth="14%p" android:horizontalGap="1.2%p" + android:isModifier="true" android:isSticky="false" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="122" android:keyLabel="Z"/> + <Key android:codes="120" android:keyLabel="X"/> + <Key android:codes="99" android:keyLabel="C"/> + <Key android:codes="118" android:keyLabel="V"/> + <Key android:codes="98" android:keyLabel="B"/> + <Key android:codes="110" android:keyLabel="N"/> + <Key android:codes="109" android:keyLabel="M"/> + <Key android:codes="-100" android:keyIcon="@drawable/key_del" android:iconPreview="@drawable/key_del_b" + android:keyWidth="13.9%p" + android:keyEdgeFlags="right" android:isRepeatable="true" wnn:isSecondKey="true"/> </Row> - <Row android:rowEdgeFlags="bottom"> - <Key android:codes="-230" android:keyIcon="@drawable/key_qwerty_mode_hira" android:iconPreview="@drawable/key_mode_change_b" - android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" - android:keyWidth="15%p" android:keyEdgeFlags="left"/> - <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_qwerty_pict_sym_b" - android:keyWidth="15%p"/> + <Row android:rowEdgeFlags="bottom" android:horizontalGap="0.28%p"> + <Key android:codes="-230" android:keyIcon="@drawable/key_mode_hira" android:iconPreview="@drawable/key_mode_change_b" + android:popupKeyboard="@xml/keyboard_switch_key_qwerty_jp" android:horizontalGap="1.2%p" + android:keyWidth="15%p" android:keyEdgeFlags="left" wnn:isSecondKey="true"/> + <Key android:codes="-106" android:keyIcon="@drawable/key_qwerty_pict_sym" android:iconPreview="@drawable/key_pict_sym_b" + android:keyWidth="15%p" wnn:isSecondKey="true"/> + <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark"/> <Key android:codes="12288" android:keyIcon="@drawable/key_qwerty_space_conv" android:iconPreview="@drawable/key_qwerty_space_conv_b" - android:keyWidth="30%p" android:isRepeatable="true"/> - <Key android:codes="65281" android:keyLabel="@string/key_qwerty_full_exclamation_mark" - android:keyWidth="12.5%p"/> - <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question" - android:keyWidth="12.5%p"/> - <Key android:codes="-101" android:keyIcon="@drawable/key_qwerty_enter_jp" android:iconPreview="@drawable/key_qwerty_enter_jp_b" - android:keyWidth="15%p" android:keyEdgeFlags="right"/> + android:keyWidth="15.1%p" android:isRepeatable="true"/> + <Key android:codes="65311" android:keyLabel="@string/key_qwerty_full_question"/> + <Key android:codes="-218" android:keyIcon="@drawable/key_qwerty_left" android:iconPreview="@drawable/key_qwerty_left_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-217" android:keyIcon="@drawable/key_qwerty_right" android:iconPreview="@drawable/key_qwerty_right_b" + android:isRepeatable="true" wnn:isSecondKey="true"/> + <Key android:codes="-101" android:keyIcon="@drawable/key_enter" android:iconPreview="@drawable/key_enter_b" + android:keyWidth="15%p" android:keyEdgeFlags="right" wnn:isSecondKey="true"/> </Row> </Keyboard> diff --git a/res/xml/keyboard_switch_key_jp.xml b/res/xml/keyboard_switch_key_jp.xml index 0ba7976..f5e461c 100644 --- a/res/xml/keyboard_switch_key_jp.xml +++ b/res/xml/keyboard_switch_key_jp.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/xml/keyboard_switch_key_qwerty_jp.xml b/res/xml/keyboard_switch_key_qwerty_jp.xml index 3c09b96..9305017 100644 --- a/res/xml/keyboard_switch_key_qwerty_jp.xml +++ b/res/xml/keyboard_switch_key_qwerty_jp.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/xml/method_ja.xml b/res/xml/method_ja.xml index 4e5f157..b36d24a 100644 --- a/res/xml/method_ja.xml +++ b/res/xml/method_ja.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -19,4 +19,9 @@ <input-method xmlns:android="http://schemas.android.com/apk/res/android" android:settingsActivity="jp.co.omronsoft.openwnn.OpenWnnControlPanelJAJP" -/> + > + <subtype android:label="@string/label_subtype_generic" + android:imeSubtypeLocale="ja" + android:imeSubtypeMode="keyboard" + /> +</input-method> diff --git a/res/xml/openwnn_pref_ja.xml b/res/xml/openwnn_pref_ja.xml index 6de5fbf..bc90ddd 100644 --- a/res/xml/openwnn_pref_ja.xml +++ b/res/xml/openwnn_pref_ja.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -23,7 +23,8 @@ android:summary="@string/preference_key_sound_summary"/> <CheckBoxPreference android:key="key_vibration" android:title="@string/preference_key_vibration_title" - android:summary="@string/preference_key_vibration_summary"/> + android:summary="@string/preference_key_vibration_summary" + android:defaultValue="true" /> <CheckBoxPreference android:key="popup_preview" android:title="@string/preference_preview_title" android:summary="@string/preference_preview_summary" @@ -41,20 +42,31 @@ android:defaultValue="keyboard_android_default" /> </PreferenceCategory> - <PreferenceCategory android:title="@string/preference_conversion_menu"> - <CheckBoxPreference android:key="opt_enable_learning" - android:title="@string/preference_input_learning_title" + <PreferenceCategory android:title="@string/preference_conversion_menu_ja"> + <CheckBoxPreference android:key="opt_enable_learning_ja" + android:title="@string/preference_input_learning_title_ja" android:summary="@string/preference_input_learning_summary" android:defaultValue="true" /> - <CheckBoxPreference android:key="opt_prediction" - android:title="@string/preference_prediction_title" + <CheckBoxPreference android:key="opt_prediction_ja" + android:title="@string/preference_prediction_title_ja" android:summary="@string/preference_prediction_summary" android:defaultValue="true" /> - <CheckBoxPreference android:key="opt_spell_correction" - android:title="@string/preference_correct_spell_title" + </PreferenceCategory> + + <PreferenceCategory android:title="@string/preference_conversion_menu_en"> + <CheckBoxPreference android:key="opt_enable_learning_en" + android:title="@string/preference_input_learning_title_en" + android:summary="@string/preference_input_learning_summary" + android:defaultValue="true" /> + <CheckBoxPreference android:key="opt_prediction_en" + android:title="@string/preference_prediction_title_en" + android:summary="@string/preference_prediction_summary" + android:defaultValue="false" /> + <CheckBoxPreference android:key="opt_spell_correction_en" + android:title="@string/preference_correct_spell_title_en" android:summary="@string/preference_correct_spell_summary" android:defaultValue="true" - android:dependency="opt_prediction" /> + android:dependency="opt_prediction_en" /> </PreferenceCategory> <PreferenceCategory android:title="@string/preference_dictionary_menu"> diff --git a/res/xml/symbols_china_list.xml b/res/xml/symbols_china_list.xml index a9fc71b..3e9839d 100644 --- a/res/xml/symbols_china_list.xml +++ b/res/xml/symbols_china_list.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/xml/symbols_japan_emoji_list.xml b/res/xml/symbols_japan_emoji_list.xml new file mode 100644 index 0000000..22e3004 --- /dev/null +++ b/res/xml/symbols_japan_emoji_list.xml @@ -0,0 +1,825 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!--symbols --> +<keystring> + +<string value="\udbb8\udc00"/> +<string value="\udbb8\udc01"/> +<string value="\udbb8\udc02"/> +<string value="\udbb8\udc03"/> +<string value="\udbb8\udc04"/> +<string value="\udbb8\udc05"/> +<string value="\udbb8\udc06"/> +<string value="\udbb8\udc07"/> +<string value="\udbb8\udc08"/> +<string value="\udbb8\udc09"/> +<string value="\udbb8\udc0a"/> +<string value="\udbb8\udc0b"/> +<string value="\udbb8\udc0c"/> +<string value="\udbb8\udc0d"/> +<string value="\udbb8\udc0e"/> +<string value="\udbb8\udc0f"/> +<string value="\udbb8\udc10"/> +<string value="\udbb8\udc11"/> +<string value="\udbb8\udc12"/> +<string value="\udbb8\udc13"/> +<string value="\udbb8\udc14"/> +<string value="\udbb8\udc15"/> +<string value="\udbb8\udc16"/> +<string value="\udbb8\udc17"/> +<string value="\udbb8\udc18"/> +<string value="\udbb8\udc19"/> +<string value="\udbb8\udc1a"/> +<string value="\udbb8\udc1b"/> +<string value="\udbb8\udc1c"/> +<string value="\udbb8\udc1d"/> +<string value="\udbb8\udc1e"/> +<string value="\udbb8\udc1f"/> +<string value="\udbb8\udc20"/> +<string value="\udbb8\udc21"/> +<string value="\udbb8\udc22"/> +<string value="\udbb8\udc23"/> +<string value="\udbb8\udc24"/> +<string value="\udbb8\udc25"/> +<string value="\udbb8\udc26"/> +<string value="\udbb8\udc27"/> +<string value="\udbb8\udc28"/> +<string value="\udbb8\udc29"/> +<string value="\udbb8\udc2a"/> +<string value="\udbb8\udc2b"/> +<string value="\udbb8\udc2c"/> +<string value="\udbb8\udc2d"/> +<string value="\udbb8\udc2e"/> +<string value="\udbb8\udc2f"/> +<string value="\udbb8\udc30"/> +<string value="\udbb8\udc31"/> +<string value="\udbb8\udc32"/> +<string value="\udbb8\udc33"/> +<string value="\udbb8\udc34"/> +<string value="\udbb8\udc35"/> +<string value="\udbb8\udc36"/> +<string value="\udbb8\udc37"/> +<string value="\udbb8\udc38"/> +<string value="\udbb8\udc39"/> +<string value="\udbb8\udc3a"/> +<string value="\udbb8\udc3b"/> +<string value="\udbb8\udc3c"/> +<string value="\udbb8\udc3d"/> +<string value="\udbb8\udc3e"/> +<string value="\udbb8\udc3f"/> +<string value="\udbb8\udc40"/> +<string value="\udbb8\udc41"/> +<string value="\udbb8\udc42"/> +<string value="\udbb8\udc43"/> +<string value="\udbb8\udc44"/> +<string value="\udbb8\udc45"/> +<string value="\udbb8\udc46"/> +<string value="\udbb8\udc47"/> +<string value="\udbb8\udc48"/> +<string value="\udbb8\udc49"/> +<string value="\udbb8\udc4a"/> +<string value="\udbb8\udc4b"/> +<string value="\udbb8\udc4c"/> +<string value="\udbb8\udc4d"/> +<string value="\udbb8\udc4e"/> +<string value="\udbb8\udc4f"/> +<string value="\udbb8\udc50"/> +<string value="\udbb8\udc51"/> +<string value="\udbb8\udc52"/> +<string value="\udbb8\udc53"/> +<string value="\udbb8\udc54"/> +<string value="\udbb8\udc55"/> +<string value="\udbb8\udc56"/> +<string value="\udbb8\udc57"/> +<string value="\udbb8\udc58"/> +<string value="\udbb8\udc59"/> +<string value="\udbb8\udc5a"/> +<string value="\udbb8\udc5b"/> +<string value="\udbb8\udd90"/> +<string value="\udbb8\udd91"/> +<string value="\udbb8\udd92"/> +<string value="\udbb8\udd93"/> +<string value="\udbb8\udd94"/> +<string value="\udbb8\udd95"/> +<string value="\udbb8\udd96"/> +<string value="\udbb8\udd97"/> +<string value="\udbb8\udd98"/> +<string value="\udbb8\udd99"/> +<string value="\udbb8\udd9a"/> +<string value="\udbb8\udd9b"/> +<string value="\udbb8\udd9c"/> +<string value="\udbb8\udd9d"/> +<string value="\udbb8\udd9e"/> +<string value="\udbb8\udd9f"/> +<string value="\udbb8\udda0"/> +<string value="\udbb8\udda1"/> +<string value="\udbb8\udda2"/> +<string value="\udbb8\udda3"/> +<string value="\udbb8\udda4"/> +<string value="\udbb8\udda5"/> +<string value="\udbb8\udda6"/> +<string value="\udbb8\udda7"/> +<string value="\udbb8\udda8"/> +<string value="\udbb8\udda9"/> +<string value="\udbb8\uddaa"/> +<string value="\udbb8\uddab"/> +<string value="\udbb8\uddac"/> +<string value="\udbb8\uddad"/> +<string value="\udbb8\uddae"/> +<string value="\udbb8\uddaf"/> +<string value="\udbb8\uddb0"/> +<string value="\udbb8\uddb1"/> +<string value="\udbb8\uddb2"/> +<string value="\udbb8\uddb3"/> +<string value="\udbb8\uddb4"/> +<string value="\udbb8\uddb5"/> +<string value="\udbb8\uddb6"/> +<string value="\udbb8\uddb7"/> +<string value="\udbb8\uddb8"/> +<string value="\udbb8\uddb9"/> +<string value="\udbb8\uddba"/> +<string value="\udbb8\uddbb"/> +<string value="\udbb8\uddbc"/> +<string value="\udbb8\uddbd"/> +<string value="\udbb8\uddbe"/> +<string value="\udbb8\uddbf"/> +<string value="\udbb8\uddc0"/> +<string value="\udbb8\uddc1"/> +<string value="\udbb8\uddc2"/> +<string value="\udbb8\uddc3"/> +<string value="\udbb8\uddc4"/> +<string value="\udbb8\uddc5"/> +<string value="\udbb8\uddc6"/> +<string value="\udbb8\uddc7"/> +<string value="\udbb8\uddc8"/> +<string value="\udbb8\uddc9"/> +<string value="\udbb8\uddca"/> +<string value="\udbb8\uddcb"/> +<string value="\udbb8\uddcc"/> +<string value="\udbb8\uddcd"/> +<string value="\udbb8\uddce"/> +<string value="\udbb8\uddcf"/> +<string value="\udbb8\uddd0"/> +<string value="\udbb8\uddd1"/> +<string value="\udbb8\uddd2"/> +<string value="\udbb8\uddd3"/> +<string value="\udbb8\uddd4"/> +<string value="\udbb8\uddd5"/> +<string value="\udbb8\uddd6"/> +<string value="\udbb8\uddd7"/> +<string value="\udbb8\uddd8"/> +<string value="\udbb8\uddd9"/> +<string value="\udbb8\uddda"/> +<string value="\udbb8\udddb"/> +<string value="\udbb8\udddc"/> +<string value="\udbb8\udddd"/> +<string value="\udbb8\uddde"/> +<string value="\udbb8\udddf"/> +<string value="\udbb8\udde0"/> +<string value="\udbb8\udde1"/> +<string value="\udbb8\udde2"/> +<string value="\udbb8\udde3"/> +<string value="\udbb8\udf20"/> +<string value="\udbb8\udf21"/> +<string value="\udbb8\udf22"/> +<string value="\udbb8\udf23"/> +<string value="\udbb8\udf24"/> +<string value="\udbb8\udf25"/> +<string value="\udbb8\udf26"/> +<string value="\udbb8\udf27"/> +<string value="\udbb8\udf28"/> +<string value="\udbb8\udf29"/> +<string value="\udbb8\udf2a"/> +<string value="\udbb8\udf2b"/> +<string value="\udbb8\udf2c"/> +<string value="\udbb8\udf2d"/> +<string value="\udbb8\udf2e"/> +<string value="\udbb8\udf2f"/> +<string value="\udbb8\udf30"/> +<string value="\udbb8\udf31"/> +<string value="\udbb8\udf32"/> +<string value="\udbb8\udf33"/> +<string value="\udbb8\udf34"/> +<string value="\udbb8\udf35"/> +<string value="\udbb8\udf36"/> +<string value="\udbb8\udf37"/> +<string value="\udbb8\udf38"/> +<string value="\udbb8\udf39"/> +<string value="\udbb8\udf3a"/> +<string value="\udbb8\udf3b"/> +<string value="\udbb8\udf3c"/> +<string value="\udbb8\udf3d"/> +<string value="\udbb8\udf3e"/> +<string value="\udbb8\udf3f"/> +<string value="\udbb8\udf40"/> +<string value="\udbb8\udf41"/> +<string value="\udbb8\udf42"/> +<string value="\udbb8\udf43"/> +<string value="\udbb8\udf44"/> +<string value="\udbb8\udf45"/> +<string value="\udbb8\udf46"/> +<string value="\udbb8\udf47"/> +<string value="\udbb8\udf48"/> +<string value="\udbb8\udf49"/> +<string value="\udbb8\udf4a"/> +<string value="\udbb8\udf4b"/> +<string value="\udbb8\udf4c"/> +<string value="\udbb8\udf4d"/> +<string value="\udbb8\udf4e"/> +<string value="\udbb8\udf4f"/> +<string value="\udbb8\udf50"/> +<string value="\udbb8\udf51"/> +<string value="\udbb8\udf52"/> +<string value="\udbb8\udf53"/> +<string value="\udbb8\udf54"/> +<string value="\udbb8\udf55"/> +<string value="\udbb8\udf56"/> +<string value="\udbb8\udf57"/> +<string value="\udbb8\udf58"/> +<string value="\udbb8\udf59"/> +<string value="\udbb8\udf5a"/> +<string value="\udbb8\udf5b"/> +<string value="\udbb8\udf5c"/> +<string value="\udbb8\udf5d"/> +<string value="\udbb8\udf5e"/> +<string value="\udbb8\udf5f"/> +<string value="\udbb8\udf60"/> +<string value="\udbb8\udf61"/> +<string value="\udbb8\udf62"/> +<string value="\udbb8\udf63"/> +<string value="\udbb8\udf64"/> +<string value="\udbb8\udf65"/> +<string value="\udbb8\udf66"/> +<string value="\udbb8\udf67"/> +<string value="\udbb8\udf68"/> +<string value="\udbb8\udf69"/> +<string value="\udbb9\udcb0"/> +<string value="\udbb9\udcb1"/> +<string value="\udbb9\udcb2"/> +<string value="\udbb9\udcb3"/> +<string value="\udbb9\udcb4"/> +<string value="\udbb9\udcb5"/> +<string value="\udbb9\udcb6"/> +<string value="\udbb9\udcb7"/> +<string value="\udbb9\udcb8"/> +<string value="\udbb9\udcb9"/> +<string value="\udbb9\udcba"/> +<string value="\udbb9\udcbb"/> +<string value="\udbb9\udcbc"/> +<string value="\udbb9\udcbd"/> +<string value="\udbb9\udcbe"/> +<string value="\udbb9\udcbf"/> +<string value="\udbb9\udcc0"/> +<string value="\udbb9\udcc1"/> +<string value="\udbb9\udcc2"/> +<string value="\udbb9\udcc3"/> +<string value="\udbb9\udcc4"/> +<string value="\udbb9\udcc5"/> +<string value="\udbb9\udcc6"/> +<string value="\udbb9\udcc7"/> +<string value="\udbb9\udcc8"/> +<string value="\udbb9\udcc9"/> +<string value="\udbb9\udcca"/> +<string value="\udbb9\udccb"/> +<string value="\udbb9\udccc"/> +<string value="\udbb9\udccd"/> +<string value="\udbb9\udcce"/> +<string value="\udbb9\udccf"/> +<string value="\udbb9\udcd0"/> +<string value="\udbb9\udcd1"/> +<string value="\udbb9\udcd2"/> +<string value="\udbb9\udcd3"/> +<string value="\udbb9\udcd4"/> +<string value="\udbb9\udcd5"/> +<string value="\udbb9\udcd6"/> +<string value="\udbb9\udcd7"/> +<string value="\udbb9\udcd8"/> +<string value="\udbb9\udcd9"/> +<string value="\udbb9\udcda"/> +<string value="\udbb9\udcdb"/> +<string value="\udbb9\udcdc"/> +<string value="\udbb9\udcdd"/> +<string value="\udbb9\udcde"/> +<string value="\udbb9\udcdf"/> +<string value="\udbb9\udce0"/> +<string value="\udbb9\udce1"/> +<string value="\udbb9\udce2"/> +<string value="\udbb9\udce3"/> +<string value="\udbb9\udce4"/> +<string value="\udbb9\udce5"/> +<string value="\udbb9\udce6"/> +<string value="\udbb9\udce7"/> +<string value="\udbb9\udce8"/> +<string value="\udbb9\udce9"/> +<string value="\udbb9\udcea"/> +<string value="\udbb9\udceb"/> +<string value="\udbb9\udcec"/> +<string value="\udbb9\udced"/> +<string value="\udbb9\udcee"/> +<string value="\udbb9\udcef"/> +<string value="\udbb9\udcf0"/> +<string value="\udbb9\udcf1"/> +<string value="\udbb9\udcf2"/> +<string value="\udbb9\udcf3"/> +<string value="\udbb9\udcf4"/> +<string value="\udbb9\udcf5"/> +<string value="\udbb9\udcf6"/> +<string value="\udbb9\udcf7"/> +<string value="\udbb9\udcf8"/> +<string value="\udbb9\udcf9"/> +<string value="\udbb9\udcfa"/> +<string value="\udbb9\udcfb"/> +<string value="\udbb9\udcfc"/> +<string value="\udbb9\udcfd"/> +<string value="\udbb9\udcfe"/> +<string value="\udbb9\udcff"/> +<string value="\udbb9\udd00"/> +<string value="\udbb9\udd01"/> +<string value="\udbb9\udd02"/> +<string value="\udbb9\udd03"/> +<string value="\udbb9\udd04"/> +<string value="\udbb9\udd05"/> +<string value="\udbb9\udd06"/> +<string value="\udbb9\udd07"/> +<string value="\udbb9\udd08"/> +<string value="\udbb9\udd09"/> +<string value="\udbb9\udd0a"/> +<string value="\udbb9\udd0b"/> +<string value="\udbb9\udd0c"/> +<string value="\udbb9\udd0d"/> +<string value="\udbb9\udd0e"/> +<string value="\udbb9\udd0f"/> +<string value="\udbb9\udd10"/> +<string value="\udbb9\udd11"/> +<string value="\udbb9\udd12"/> +<string value="\udbb9\udd13"/> +<string value="\udbb9\udd14"/> +<string value="\udbb9\udd15"/> +<string value="\udbb9\udd16"/> +<string value="\udbb9\udd17"/> +<string value="\udbb9\udd18"/> +<string value="\udbb9\udd19"/> +<string value="\udbb9\udd1a"/> +<string value="\udbb9\udd1b"/> +<string value="\udbb9\udd1c"/> +<string value="\udbb9\udd1d"/> +<string value="\udbb9\udd1e"/> +<string value="\udbb9\udd1f"/> +<string value="\udbb9\udd20"/> +<string value="\udbb9\udd21"/> +<string value="\udbb9\udd22"/> +<string value="\udbb9\udd23"/> +<string value="\udbb9\udd24"/> +<string value="\udbb9\udd25"/> +<string value="\udbb9\udd26"/> +<string value="\udbb9\udd27"/> +<string value="\udbb9\udd28"/> +<string value="\udbb9\udd29"/> +<string value="\udbb9\udd2a"/> +<string value="\udbb9\udd2b"/> +<string value="\udbb9\udd2c"/> +<string value="\udbb9\udd2d"/> +<string value="\udbb9\udd2e"/> +<string value="\udbb9\udd2f"/> +<string value="\udbb9\udd30"/> +<string value="\udbb9\udd31"/> +<string value="\udbb9\udd32"/> +<string value="\udbb9\udd33"/> +<string value="\udbb9\udd34"/> +<string value="\udbb9\udd35"/> +<string value="\udbb9\udd36"/> +<string value="\udbb9\udd37"/> +<string value="\udbb9\udd38"/> +<string value="\udbb9\udd39"/> +<string value="\udbb9\udd3a"/> +<string value="\udbb9\udd3b"/> +<string value="\udbb9\udd3c"/> +<string value="\udbb9\udd3d"/> +<string value="\udbb9\udd3e"/> +<string value="\udbb9\udd3f"/> +<string value="\udbb9\udd40"/> +<string value="\udbb9\udd41"/> +<string value="\udbb9\udd42"/> +<string value="\udbb9\udd43"/> +<string value="\udbb9\udd44"/> +<string value="\udbb9\udd45"/> +<string value="\udbb9\udd46"/> +<string value="\udbb9\udd47"/> +<string value="\udbb9\udd48"/> +<string value="\udbb9\udd49"/> +<string value="\udbb9\udd4a"/> +<string value="\udbb9\udd4b"/> +<string value="\udbb9\udd4c"/> +<string value="\udbb9\udd4d"/> +<string value="\udbb9\udd4e"/> +<string value="\udbb9\udd4f"/> +<string value="\udbb9\udd50"/> +<string value="\udbb9\udd51"/> +<string value="\udbb9\udd52"/> +<string value="\udbb9\udd53"/> +<string value="\udbb9\udfd0"/> +<string value="\udbb9\udfd1"/> +<string value="\udbb9\udfd2"/> +<string value="\udbb9\udfd3"/> +<string value="\udbb9\udfd4"/> +<string value="\udbb9\udfd5"/> +<string value="\udbb9\udfd6"/> +<string value="\udbb9\udfd7"/> +<string value="\udbb9\udfd8"/> +<string value="\udbb9\udfd9"/> +<string value="\udbb9\udfda"/> +<string value="\udbb9\udfdb"/> +<string value="\udbb9\udfdc"/> +<string value="\udbb9\udfdd"/> +<string value="\udbb9\udfde"/> +<string value="\udbb9\udfdf"/> +<string value="\udbb9\udfe0"/> +<string value="\udbb9\udfe1"/> +<string value="\udbb9\udfe2"/> +<string value="\udbb9\udfe3"/> +<string value="\udbb9\udfe4"/> +<string value="\udbb9\udfe5"/> +<string value="\udbb9\udfe6"/> +<string value="\udbb9\udfe7"/> +<string value="\udbb9\udfe8"/> +<string value="\udbb9\udfe9"/> +<string value="\udbb9\udfea"/> +<string value="\udbb9\udfeb"/> +<string value="\udbb9\udfec"/> +<string value="\udbb9\udfed"/> +<string value="\udbb9\udfee"/> +<string value="\udbb9\udfef"/> +<string value="\udbb9\udff0"/> +<string value="\udbb9\udff1"/> +<string value="\udbb9\udff2"/> +<string value="\udbb9\udff3"/> +<string value="\udbb9\udff4"/> +<string value="\udbb9\udff5"/> +<string value="\udbb9\udff6"/> +<string value="\udbb9\udff7"/> +<string value="\udbb9\udff8"/> +<string value="\udbb9\udff9"/> +<string value="\udbb9\udffa"/> +<string value="\udbb9\udffb"/> +<string value="\udbb9\udffc"/> +<string value="\udbb9\udffd"/> +<string value="\udbb9\udffe"/> +<string value="\udbb9\udfff"/> +<string value="\udbba\udc00"/> +<string value="\udbba\udc01"/> +<string value="\udbba\udc02"/> +<string value="\udbba\udc03"/> +<string value="\udbba\udc04"/> +<string value="\udbba\udc05"/> +<string value="\udbba\udc06"/> +<string value="\udbba\udc07"/> +<string value="\udbba\udc08"/> +<string value="\udbba\udc09"/> +<string value="\udbba\udc0a"/> +<string value="\udbba\udc0b"/> +<string value="\udbba\udc0c"/> +<string value="\udbba\udc0d"/> +<string value="\udbba\udc0e"/> +<string value="\udbba\udc0f"/> +<string value="\udbba\udc10"/> +<string value="\udbba\udc11"/> +<string value="\udbba\udc12"/> +<string value="\udbba\udc13"/> +<string value="\udbba\udc14"/> +<string value="\udbba\udc15"/> +<string value="\udbba\udc16"/> +<string value="\udbba\udc17"/> +<string value="\udbba\udc18"/> +<string value="\udbba\udc19"/> +<string value="\udbba\udc1a"/> +<string value="\udbba\udc1b"/> +<string value="\udbba\udc1c"/> +<string value="\udbba\udc1d"/> +<string value="\udbba\udc1e"/> +<string value="\udbba\udc1f"/> +<string value="\udbba\udc20"/> +<string value="\udbba\udc21"/> +<string value="\udbba\udc22"/> +<string value="\udbba\udc23"/> +<string value="\udbba\udc24"/> +<string value="\udbba\udc25"/> +<string value="\udbba\udc26"/> +<string value="\udbba\udc27"/> +<string value="\udbba\udc28"/> +<string value="\udbba\udc29"/> +<string value="\udbba\udc2a"/> +<string value="\udbba\udc2b"/> +<string value="\udbba\udc2c"/> +<string value="\udbba\udc2d"/> +<string value="\udbba\udc2e"/> +<string value="\udbba\udc2f"/> +<string value="\udbba\udc30"/> +<string value="\udbba\udc31"/> +<string value="\udbba\udc32"/> +<string value="\udbba\udc33"/> +<string value="\udbba\udc34"/> +<string value="\udbba\udc35"/> +<string value="\udbba\udc36"/> +<string value="\udbba\udc37"/> +<string value="\udbba\udc38"/> +<string value="\udbba\udc39"/> +<string value="\udbba\udc3a"/> +<string value="\udbba\udc3b"/> +<string value="\udbba\udc3c"/> +<string value="\udbba\udd60"/> +<string value="\udbba\udd61"/> +<string value="\udbba\udd62"/> +<string value="\udbba\udd63"/> +<string value="\udbba\udd64"/> +<string value="\udbba\udd65"/> +<string value="\udbba\udd66"/> +<string value="\udbba\udd67"/> +<string value="\udbba\udd68"/> +<string value="\udbba\udd69"/> +<string value="\udbba\udd6a"/> +<string value="\udbba\udd6b"/> +<string value="\udbba\udd6c"/> +<string value="\udbba\udd6d"/> +<string value="\udbba\udd6e"/> +<string value="\udbba\udd6f"/> +<string value="\udbba\udd70"/> +<string value="\udbba\udd71"/> +<string value="\udbba\udd72"/> +<string value="\udbba\udd73"/> +<string value="\udbba\udd74"/> +<string value="\udbba\udd75"/> +<string value="\udbba\udd76"/> +<string value="\udbba\udd77"/> +<string value="\udbba\udd78"/> +<string value="\udbba\udd79"/> +<string value="\udbba\udd7a"/> +<string value="\udbba\udd7b"/> +<string value="\udbba\udd7c"/> +<string value="\udbba\udd7d"/> +<string value="\udbba\udd7e"/> +<string value="\udbba\udd7f"/> +<string value="\udbba\udd80"/> +<string value="\udbba\udd81"/> +<string value="\udbba\udd82"/> +<string value="\udbba\udd83"/> +<string value="\udbba\udd84"/> +<string value="\udbba\udd85"/> +<string value="\udbba\udd86"/> +<string value="\udbba\udd87"/> +<string value="\udbba\udd88"/> +<string value="\udbba\udef0"/> +<string value="\udbba\udef1"/> +<string value="\udbba\udef2"/> +<string value="\udbba\udef3"/> +<string value="\udbba\udef4"/> +<string value="\udbba\udef5"/> +<string value="\udbba\udef6"/> +<string value="\udbba\udef7"/> +<string value="\udbba\udef8"/> +<string value="\udbba\udef9"/> +<string value="\udbba\udefa"/> +<string value="\udbba\udefb"/> +<string value="\udbba\udefc"/> +<string value="\udbba\udefd"/> +<string value="\udbba\udefe"/> +<string value="\udbba\udeff"/> +<string value="\udbba\udf00"/> +<string value="\udbba\udf01"/> +<string value="\udbba\udf02"/> +<string value="\udbba\udf03"/> +<string value="\udbba\udf04"/> +<string value="\udbba\udf05"/> +<string value="\udbba\udf06"/> +<string value="\udbba\udf07"/> +<string value="\udbba\udf08"/> +<string value="\udbba\udf09"/> +<string value="\udbba\udf0a"/> +<string value="\udbba\udf0b"/> +<string value="\udbba\udf0c"/> +<string value="\udbba\udf0d"/> +<string value="\udbba\udf0e"/> +<string value="\udbba\udf0f"/> +<string value="\udbba\udf10"/> +<string value="\udbba\udf11"/> +<string value="\udbba\udf12"/> +<string value="\udbba\udf13"/> +<string value="\udbba\udf14"/> +<string value="\udbba\udf15"/> +<string value="\udbba\udf16"/> +<string value="\udbba\udf17"/> +<string value="\udbba\udf18"/> +<string value="\udbba\udf19"/> +<string value="\udbba\udf1a"/> +<string value="\udbba\udf1b"/> +<string value="\udbba\udf1c"/> +<string value="\udbba\udf1d"/> +<string value="\udbba\udf1e"/> +<string value="\udbba\udf1f"/> +<string value="\udbba\udf20"/> +<string value="\udbba\udf21"/> +<string value="\udbba\udf22"/> +<string value="\udbba\udf23"/> +<string value="\udbba\udf24"/> +<string value="\udbba\udf25"/> +<string value="\udbba\udf26"/> +<string value="\udbba\udf27"/> +<string value="\udbba\udf28"/> +<string value="\udbba\udf29"/> +<string value="\udbba\udf2a"/> +<string value="\udbba\udf2b"/> +<string value="\udbba\udf2c"/> +<string value="\udbba\udf2d"/> +<string value="\udbba\udf2e"/> +<string value="\udbba\udf2f"/> +<string value="\udbba\udf30"/> +<string value="\udbba\udf31"/> +<string value="\udbba\udf32"/> +<string value="\udbba\udf33"/> +<string value="\udbba\udf34"/> +<string value="\udbba\udf35"/> +<string value="\udbba\udf36"/> +<string value="\udbba\udf37"/> +<string value="\udbba\udf38"/> +<string value="\udbba\udf39"/> +<string value="\udbba\udf3a"/> +<string value="\udbba\udf3b"/> +<string value="\udbba\udf3c"/> +<string value="\udbba\udf3d"/> +<string value="\udbba\udf3e"/> +<string value="\udbba\udf3f"/> +<string value="\udbba\udf40"/> +<string value="\udbba\udf41"/> +<string value="\udbba\udf42"/> +<string value="\udbba\udf43"/> +<string value="\udbba\udf44"/> +<string value="\udbba\udf45"/> +<string value="\udbba\udf46"/> +<string value="\udbba\udf47"/> +<string value="\udbba\udf48"/> +<string value="\udbba\udf49"/> +<string value="\udbba\udf4a"/> +<string value="\udbba\udf4b"/> +<string value="\udbba\udf4c"/> +<string value="\udbba\udf4d"/> +<string value="\udbba\udf4e"/> +<string value="\udbba\udf4f"/> +<string value="\udbba\udf50"/> +<string value="\udbba\udf51"/> +<string value="\udbba\udf52"/> +<string value="\udbba\udf53"/> +<string value="\udbba\udf54"/> +<string value="\udbba\udf55"/> +<string value="\udbba\udf56"/> +<string value="\udbba\udf57"/> +<string value="\udbba\udf58"/> +<string value="\udbba\udf59"/> +<string value="\udbba\udf5a"/> +<string value="\udbba\udf5b"/> +<string value="\udbba\udf5c"/> +<string value="\udbba\udf5d"/> +<string value="\udbba\udf5e"/> +<string value="\udbba\udf5f"/> +<string value="\udbba\udf60"/> +<string value="\udbba\udf61"/> +<string value="\udbba\udf62"/> +<string value="\udbba\udf63"/> +<string value="\udbba\udf64"/> +<string value="\udbba\udf65"/> +<string value="\udbba\udf66"/> +<string value="\udbba\udf67"/> +<string value="\udbba\udf68"/> +<string value="\udbba\udf69"/> +<string value="\udbba\udf6a"/> +<string value="\udbba\udf6b"/> +<string value="\udbba\udf6c"/> +<string value="\udbba\udf6d"/> +<string value="\udbba\udf6e"/> +<string value="\udbba\udf6f"/> +<string value="\udbba\udf70"/> +<string value="\udbba\udf71"/> +<string value="\udbba\udf72"/> +<string value="\udbba\udf73"/> +<string value="\udbba\udf74"/> +<string value="\udbba\udf75"/> +<string value="\udbba\udf76"/> +<string value="\udbba\udf77"/> +<string value="\udbba\udf78"/> +<string value="\udbba\udf79"/> +<string value="\udbba\udf7a"/> +<string value="\udbba\udf7b"/> +<string value="\udbba\udf7c"/> +<string value="\udbba\udf7d"/> +<string value="\udbba\udf7e"/> +<string value="\udbba\udf7f"/> +<string value="\udbba\udf80"/> +<string value="\udbba\udf81"/> +<string value="\udbba\udf82"/> +<string value="\udbba\udf83"/> +<string value="\udbba\udf84"/> +<string value="\udbba\udf85"/> +<string value="\udbba\udf86"/> +<string value="\udbba\udf87"/> +<string value="\udbba\udf88"/> +<string value="\udbba\udf89"/> +<string value="\udbba\udf8a"/> +<string value="\udbba\udf8b"/> +<string value="\udbba\udf8c"/> +<string value="\udbba\udf8d"/> +<string value="\udbba\udf8e"/> +<string value="\udbba\udf8f"/> +<string value="\udbba\udf90"/> +<string value="\udbba\udf91"/> +<string value="\udbba\udf92"/> +<string value="\udbba\udf93"/> +<string value="\udbba\udf94"/> +<string value="\udbba\udf95"/> +<string value="\udbba\udf96"/> +<string value="\udbba\udf97"/> +<string value="\udbba\udf98"/> +<string value="\udbba\udf99"/> +<string value="\udbba\udf9a"/> +<string value="\udbba\udf9b"/> +<string value="\udbba\udf9c"/> +<string value="\udbba\udf9d"/> +<string value="\udbba\udf9e"/> +<string value="\udbba\udf9f"/> +<string value="\udbba\udfa0"/> +<string value="\udbba\udfa1"/> +<string value="\udbba\udfa2"/> +<string value="\udbbb\ude10"/> +<string value="\udbbb\ude11"/> +<string value="\udbbb\ude12"/> +<string value="\udbbb\ude13"/> +<string value="\udbbb\ude14"/> +<string value="\udbbb\ude15"/> +<string value="\udbbb\ude16"/> +<string value="\udbbb\ude17"/> +<string value="\udbbb\ude18"/> +<string value="\udbbb\ude19"/> +<string value="\udbbb\ude1a"/> +<string value="\udbbb\ude1b"/> +<string value="\udbbb\ude1c"/> +<string value="\udbbb\ude1d"/> +<string value="\udbbb\ude1e"/> +<string value="\udbbb\ude1f"/> +<string value="\udbbb\ude20"/> +<string value="\udbbb\ude21"/> +<string value="\udbbb\ude22"/> +<string value="\udbbb\ude23"/> +<string value="\udbbb\ude24"/> +<string value="\udbbb\ude25"/> +<string value="\udbbb\ude26"/> +<string value="\udbbb\ude27"/> +<string value="\udbbb\ude28"/> +<string value="\udbbb\ude29"/> +<string value="\udbbb\ude2a"/> +<string value="\udbbb\ude2b"/> +<string value="\udbbb\ude2c"/> +<string value="\udbbb\ude2d"/> +<string value="\udbbb\ude2e"/> +<string value="\udbbb\ude2f"/> +<string value="\udbbb\ude30"/> +<string value="\udbbb\ude31"/> +<string value="\udbbb\ude32"/> +<string value="\udbbb\ude33"/> +<string value="\udbbb\ude40"/> +<string value="\udbbb\ude41"/> +<string value="\udbbb\ude42"/> +<string value="\udbbb\ude43"/> +<string value="\udbbb\ude44"/> +<string value="\udbbb\ude45"/> +<string value="\udbbb\ude46"/> +<string value="\udbbb\ude47"/> +<string value="\udbbb\ude48"/> +<string value="\udbbb\ude49"/> +<string value="\udbbb\ude4a"/> +<string value="\udbbb\ude70"/> +<string value="\udbbb\ude71"/> +<string value="\udbbb\ude72"/> +<string value="\udbbb\ude73"/> +<string value="\udbbb\ude74"/> +<string value="\udbbb\ude75"/> +<string value="\udbbb\ude76"/> +<string value="\udbbb\ude77"/> +<string value="\udbbb\ude78"/> +<string value="\udbbb\ude79"/> +<string value="\udbbb\ude7a"/> +<string value="\udbbb\ude7b"/> +<string value="\udbbb\ude7c"/> +<string value="\udbbb\ude7d"/> +<string value="\udbbb\udea0"/> +</keystring> diff --git a/res/xml/symbols_japan_emoji_list1.xml b/res/xml/symbols_japan_emoji_list1.xml new file mode 100644 index 0000000..f7506c5 --- /dev/null +++ b/res/xml/symbols_japan_emoji_list1.xml @@ -0,0 +1,285 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!--symbols --> +<keystring> +<!-- 1. Nature --> +<!-- Weather --> +<string value="\udbb8\udc00"/> +<string value="\udbb8\udc01"/> +<string value="\udbb8\udc02"/> +<string value="\udbb8\udc03"/> +<string value="\udbb8\udc04"/> +<string value="\udbb8\udc05"/> +<string value="\udbb8\udc06"/> +<string value="\udbb8\udc07"/> +<string value="\udbb8\udc08"/> +<string value="\udbb8\udc09"/> +<string value="\udbb8\udc0a"/> +<string value="\udbb8\udc0b"/> +<string value="\udbb8\udc0c"/> +<string value="\udbb8\udc0d"/> +<string value="\udbb8\udc0e"/> +<string value="\udbb8\udc0f"/> +<string value="\udbb8\udc10"/> +<!-- Moon --> +<string value="\udbb8\udc11"/> +<string value="\udbb8\udc12"/> +<string value="\udbb8\udc13"/> +<string value="\udbb8\udc14"/> +<string value="\udbb8\udc15"/> +<string value="\udbb8\udc16"/> +<string value="\udbb8\udc17"/> +<!-- Time --> +<string value="\udbb8\udc18"/> +<string value="\udbb8\udc19"/> +<string value="\udbb8\udc1a"/> +<string value="\udbb8\udc1b"/> +<string value="\udbb8\udc1c"/> +<string value="\udbb8\udc1d"/> +<string value="\udbb8\udc1e"/> +<string value="\udbb8\udc1f"/> +<string value="\udbb8\udc20"/> +<string value="\udbb8\udc21"/> +<string value="\udbb8\udc22"/> +<string value="\udbb8\udc23"/> +<string value="\udbb8\udc24"/> +<string value="\udbb8\udc25"/> +<string value="\udbb8\udc26"/> +<string value="\udbb8\udc27"/> +<string value="\udbb8\udc28"/> +<string value="\udbb8\udc29"/> +<string value="\udbb8\udc2a"/> +<!-- Zodiacal Symbols --> +<string value="\udbb8\udc2b"/> +<string value="\udbb8\udc2c"/> +<string value="\udbb8\udc2d"/> +<string value="\udbb8\udc2e"/> +<string value="\udbb8\udc2f"/> +<string value="\udbb8\udc30"/> +<string value="\udbb8\udc31"/> +<string value="\udbb8\udc32"/> +<string value="\udbb8\udc33"/> +<string value="\udbb8\udc34"/> +<string value="\udbb8\udc35"/> +<string value="\udbb8\udc36"/> +<string value="\udbb8\udc37"/> +<!-- Places in Nature --> +<string value="\udbb8\udc38"/> +<string value="\udbb8\udc39"/> +<string value="\udbb8\udc3a"/> +<string value="\udbb8\udc3b"/> +<!-- Plants --> +<string value="\udbb8\udc3c"/> +<string value="\udbb8\udc3d"/> +<string value="\udbb8\udc3e"/> +<string value="\udbb8\udc3f"/> +<string value="\udbb8\udc40"/> +<string value="\udbb8\udc41"/> +<string value="\udbb8\udc42"/> +<string value="\udbb8\udc43"/> +<string value="\udbb8\udc44"/> +<string value="\udbb8\udc45"/> +<string value="\udbb8\udc46"/> +<string value="\udbb8\udc47"/> +<string value="\udbb8\udc48"/> +<string value="\udbb8\udc49"/> +<string value="\udbb8\udc4a"/> +<string value="\udbb8\udc4b"/> +<string value="\udbb8\udc4c"/> +<string value="\udbb8\udc4d"/> +<string value="\udbb8\udc4e"/> +<!-- Fruits --> +<string value="\udbb8\udc4f"/> +<string value="\udbb8\udc50"/> +<string value="\udbb8\udc51"/> +<string value="\udbb8\udc52"/> +<string value="\udbb8\udc53"/> +<string value="\udbb8\udc54"/> +<string value="\udbb8\udc55"/> +<string value="\udbb8\udc56"/> +<string value="\udbb8\udc57"/> +<string value="\udbb8\udc58"/> +<string value="\udbb8\udc59"/> +<string value="\udbb8\udc5a"/> +<string value="\udbb8\udc5b"/> +<!-- 2. Human/Living Things --> +<!-- Facial Parts --> +<string value="\udbb8\udd90"/> +<string value="\udbb8\udd91"/> +<string value="\udbb8\udd92"/> +<string value="\udbb8\udd93"/> +<string value="\udbb8\udd94"/> +<!-- Personal Care --> +<string value="\udbb8\udd95"/> +<string value="\udbb8\udd96"/> +<string value="\udbb8\udd97"/> +<string value="\udbb8\udd98"/> +<string value="\udbb8\udd99"/> +<!-- People / Personalities --> +<string value="\udbb8\udd9a"/> +<string value="\udbb8\udd9b"/> +<string value="\udbb8\udd9c"/> +<string value="\udbb8\udd9d"/> +<string value="\udbb8\udd9e"/> +<string value="\udbb8\udd9f"/> +<string value="\udbb8\udda0"/> +<string value="\udbb8\udda1"/> +<string value="\udbb8\udda2"/> +<string value="\udbb8\udda3"/> +<string value="\udbb8\udda4"/> +<string value="\udbb8\udda5"/> +<string value="\udbb8\udda6"/> +<string value="\udbb8\udda7"/> +<string value="\udbb8\udda8"/> +<string value="\udbb8\udda9"/> +<string value="\udbb8\uddaa"/> +<string value="\udbb8\uddab"/> +<string value="\udbb8\uddac"/> +<string value="\udbb8\uddad"/> +<string value="\udbb8\uddae"/> +<string value="\udbb8\uddaf"/> +<string value="\udbb8\uddb0"/> +<string value="\udbb8\uddb1"/> +<string value="\udbb8\uddb2"/> +<string value="\udbb8\uddb3"/> +<string value="\udbb8\uddb4"/> +<string value="\udbb8\uddb5"/> +<string value="\udbb8\uddb6"/> +<!-- Animals --> +<string value="\udbb8\uddb7"/> +<string value="\udbb8\uddb8"/> +<string value="\udbb8\uddb9"/> +<string value="\udbb8\uddba"/> +<string value="\udbb8\uddbb"/> +<string value="\udbb8\uddbc"/> +<string value="\udbb8\uddbd"/> +<string value="\udbb8\uddbe"/> +<string value="\udbb8\uddbf"/> +<string value="\udbb8\uddc0"/> +<string value="\udbb8\uddc1"/> +<string value="\udbb8\uddc2"/> +<string value="\udbb8\uddc3"/> +<string value="\udbb8\uddc4"/> +<string value="\udbb8\uddc5"/> +<string value="\udbb8\uddc6"/> +<string value="\udbb8\uddc7"/> +<string value="\udbb8\uddc8"/> +<string value="\udbb8\uddc9"/> +<string value="\udbb8\uddca"/> +<string value="\udbb8\uddcb"/> +<string value="\udbb8\uddcc"/> +<string value="\udbb8\uddcd"/> +<string value="\udbb8\uddce"/> +<string value="\udbb8\uddcf"/> +<string value="\udbb8\uddd0"/> +<string value="\udbb8\uddd1"/> +<string value="\udbb8\uddd2"/> +<string value="\udbb8\uddd3"/> +<string value="\udbb8\uddd4"/> +<string value="\udbb8\uddd5"/> +<string value="\udbb8\uddd6"/> +<string value="\udbb8\uddd7"/> +<string value="\udbb8\uddd8"/> +<string value="\udbb8\uddd9"/> +<string value="\udbb8\uddda"/> +<string value="\udbb8\udddb"/> +<string value="\udbb8\udddc"/> +<string value="\udbb8\udddd"/> +<string value="\udbb8\uddde"/> +<string value="\udbb8\udddf"/> +<string value="\udbb8\udde0"/> +<string value="\udbb8\udde1"/> +<string value="\udbb8\udde2"/> +<string value="\udbb8\udde3"/> +<!-- 3. Faces and Smiley's --> +<!-- Faces --> +<string value="\udbb8\udf20"/> +<string value="\udbb8\udf21"/> +<string value="\udbb8\udf22"/> +<string value="\udbb8\udf23"/> +<string value="\udbb8\udf24"/> +<string value="\udbb8\udf25"/> +<string value="\udbb8\udf26"/> +<string value="\udbb8\udf27"/> +<string value="\udbb8\udf28"/> +<string value="\udbb8\udf29"/> +<string value="\udbb8\udf2a"/> +<string value="\udbb8\udf2b"/> +<string value="\udbb8\udf2c"/> +<string value="\udbb8\udf2d"/> +<string value="\udbb8\udf2e"/> +<string value="\udbb8\udf2f"/> +<string value="\udbb8\udf30"/> +<string value="\udbb8\udf31"/> +<string value="\udbb8\udf32"/> +<string value="\udbb8\udf33"/> +<string value="\udbb8\udf34"/> +<string value="\udbb8\udf35"/> +<string value="\udbb8\udf36"/> +<string value="\udbb8\udf37"/> +<string value="\udbb8\udf38"/> +<string value="\udbb8\udf39"/> +<string value="\udbb8\udf3a"/> +<string value="\udbb8\udf3b"/> +<string value="\udbb8\udf3c"/> +<string value="\udbb8\udf3d"/> +<string value="\udbb8\udf3e"/> +<string value="\udbb8\udf3f"/> +<string value="\udbb8\udf40"/> +<string value="\udbb8\udf41"/> +<string value="\udbb8\udf42"/> +<string value="\udbb8\udf43"/> +<string value="\udbb8\udf44"/> +<string value="\udbb8\udf45"/> +<string value="\udbb8\udf46"/> +<string value="\udbb8\udf47"/> +<!-- More faces (animals, persons, characters) --> +<string value="\udbb8\udf48"/> +<string value="\udbb8\udf49"/> +<string value="\udbb8\udf4a"/> +<string value="\udbb8\udf4b"/> +<string value="\udbb8\udf4c"/> +<string value="\udbb8\udf4d"/> +<string value="\udbb8\udf4e"/> +<string value="\udbb8\udf4f"/> +<string value="\udbb8\udf50"/> +<string value="\udbb8\udf51"/> +<string value="\udbb8\udf52"/> +<string value="\udbb8\udf53"/> +<string value="\udbb8\udf54"/> +<string value="\udbb8\udf55"/> +<string value="\udbb8\udf56"/> +<string value="\udbb8\udf57"/> +<string value="\udbb8\udf58"/> +<string value="\udbb8\udf59"/> +<string value="\udbb8\udf5a"/> +<string value="\udbb8\udf5b"/> +<string value="\udbb8\udf5c"/> +<string value="\udbb8\udf5d"/> +<string value="\udbb8\udf5e"/> +<string value="\udbb8\udf5f"/> +<string value="\udbb8\udf60"/> +<string value="\udbb8\udf61"/> +<string value="\udbb8\udf62"/> +<string value="\udbb8\udf63"/> +<string value="\udbb8\udf64"/> +<string value="\udbb8\udf65"/> +<string value="\udbb8\udf66"/> +<string value="\udbb8\udf67"/> +<string value="\udbb8\udf68"/> +<string value="\udbb8\udf69"/> +</keystring> diff --git a/res/xml/symbols_japan_emoji_list2.xml b/res/xml/symbols_japan_emoji_list2.xml new file mode 100644 index 0000000..10bdaf9 --- /dev/null +++ b/res/xml/symbols_japan_emoji_list2.xml @@ -0,0 +1,321 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!--symbols --> +<keystring> +<!-- 6. Foods --> +<!-- Prepared Food --> +<string value="\udbba\udd60"/> +<string value="\udbba\udd61"/> +<string value="\udbba\udd62"/> +<string value="\udbba\udd63"/> +<string value="\udbba\udd64"/> +<string value="\udbba\udd65"/> +<string value="\udbba\udd66"/> +<string value="\udbba\udd67"/> +<string value="\udbba\udd68"/> +<string value="\udbba\udd69"/> +<string value="\udbba\udd6a"/> +<string value="\udbba\udd6b"/> +<string value="\udbba\udd6c"/> +<string value="\udbba\udd6d"/> +<string value="\udbba\udd6e"/> +<string value="\udbba\udd6f"/> +<string value="\udbba\udd70"/> +<string value="\udbba\udd71"/> +<string value="\udbba\udd72"/> +<string value="\udbba\udd73"/> +<string value="\udbba\udd74"/> +<string value="\udbba\udd75"/> +<string value="\udbba\udd76"/> +<string value="\udbba\udd77"/> +<string value="\udbba\udd78"/> +<string value="\udbba\udd79"/> +<string value="\udbba\udd7a"/> +<string value="\udbba\udd7b"/> +<string value="\udbba\udd7c"/> +<string value="\udbba\udd7d"/> +<string value="\udbba\udd7e"/> +<string value="\udbba\udd7f"/> +<string value="\udbba\udd80"/> +<!-- Drink --> +<string value="\udbba\udd81"/> +<string value="\udbba\udd82"/> +<string value="\udbba\udd83"/> +<string value="\udbba\udd84"/> +<string value="\udbba\udd85"/> +<string value="\udbba\udd86"/> +<string value="\udbba\udd87"/> +<string value="\udbba\udd88"/> +<!-- 7. Abstract Concepts --> +<!-- Arrows --> +<string value="\udbba\udef0"/> +<string value="\udbba\udef1"/> +<string value="\udbba\udef2"/> +<string value="\udbba\udef3"/> +<string value="\udbba\udef4"/> +<string value="\udbba\udef5"/> +<string value="\udbba\udef6"/> +<string value="\udbba\udef7"/> +<string value="\udbba\udef8"/> +<string value="\udbba\udef9"/> +<string value="\udbba\udefa"/> +<string value="\udbba\udefb"/> +<string value="\udbba\udefc"/> +<string value="\udbba\udefd"/> +<string value="\udbba\udefe"/> +<string value="\udbba\udeff"/> +<string value="\udbba\udf00"/> +<string value="\udbba\udf01"/> +<string value="\udbba\udf02"/> +<string value="\udbba\udf03"/> +<!-- Punctuation --> +<string value="\udbba\udf04"/> +<string value="\udbba\udf05"/> +<string value="\udbba\udf06"/> +<string value="\udbba\udf07"/> +<string value="\udbba\udf08"/> +<string value="\udbba\udf09"/> +<string value="\udbba\udf0a"/> +<string value="\udbba\udf0b"/> +<!-- Hearts --> +<string value="\udbba\udf0c"/> +<string value="\udbba\udf0d"/> +<string value="\udbba\udf0e"/> +<string value="\udbba\udf0f"/> +<string value="\udbba\udf10"/> +<string value="\udbba\udf11"/> +<string value="\udbba\udf12"/> +<string value="\udbba\udf13"/> +<string value="\udbba\udf14"/> +<string value="\udbba\udf15"/> +<string value="\udbba\udf16"/> +<string value="\udbba\udf17"/> +<string value="\udbba\udf18"/> +<string value="\udbba\udf19"/> +<!-- Cards --> +<string value="\udbba\udf1a"/> +<string value="\udbba\udf1b"/> +<string value="\udbba\udf1c"/> +<string value="\udbba\udf1d"/> +<!-- Letter Signs and other Signs --> +<string value="\udbba\udf1e"/> +<string value="\udbba\udf1f"/> +<string value="\udbba\udf20"/> +<string value="\udbba\udf21"/> +<string value="\udbba\udf22"/> +<string value="\udbba\udf23"/> +<string value="\udbba\udf24"/> +<string value="\udbba\udf25"/> +<string value="\udbba\udf26"/> +<string value="\udbba\udf27"/> +<string value="\udbba\udf28"/> +<string value="\udbba\udf29"/> +<string value="\udbba\udf2a"/> +<string value="\udbba\udf2b"/> +<string value="\udbba\udf2c"/> +<string value="\udbba\udf2d"/> +<string value="\udbba\udf2e"/> +<string value="\udbba\udf2f"/> +<string value="\udbba\udf30"/> +<string value="\udbba\udf31"/> +<string value="\udbba\udf32"/> +<string value="\udbba\udf33"/> +<string value="\udbba\udf34"/> +<string value="\udbba\udf35"/> +<string value="\udbba\udf36"/> +<string value="\udbba\udf37"/> +<string value="\udbba\udf38"/> +<string value="\udbba\udf39"/> +<string value="\udbba\udf3a"/> +<string value="\udbba\udf3b"/> +<string value="\udbba\udf3c"/> +<string value="\udbba\udf3d"/> +<string value="\udbba\udf3e"/> +<string value="\udbba\udf3f"/> +<string value="\udbba\udf40"/> +<string value="\udbba\udf41"/> +<string value="\udbba\udf42"/> +<string value="\udbba\udf43"/> +<string value="\udbba\udf44"/> +<string value="\udbba\udf45"/> +<string value="\udbba\udf46"/> +<string value="\udbba\udf47"/> +<string value="\udbba\udf48"/> +<string value="\udbba\udf49"/> +<string value="\udbba\udf4a"/> +<string value="\udbba\udf4b"/> +<string value="\udbba\udf4c"/> +<string value="\udbba\udf4d"/> +<string value="\udbba\udf4e"/> +<string value="\udbba\udf4f"/> +<string value="\udbba\udf50"/> +<!-- Arithmetic Operators --> +<string value="\udbba\udf51"/> +<string value="\udbba\udf52"/> +<string value="\udbba\udf53"/> +<string value="\udbba\udf54"/> +<!-- Emotion Symbols --> +<string value="\udbba\udf55"/> +<string value="\udbba\udf56"/> +<string value="\udbba\udf57"/> +<string value="\udbba\udf58"/> +<string value="\udbba\udf59"/> +<string value="\udbba\udf5a"/> +<string value="\udbba\udf5b"/> +<string value="\udbba\udf5c"/> +<string value="\udbba\udf5d"/> +<string value="\udbba\udf5e"/> +<string value="\udbba\udf5f"/> +<!-- Shapes / Sparkles --> +<string value="\udbba\udf60"/> +<string value="\udbba\udf61"/> +<string value="\udbba\udf62"/> +<string value="\udbba\udf63"/> +<string value="\udbba\udf64"/> +<string value="\udbba\udf65"/> +<string value="\udbba\udf66"/> +<string value="\udbba\udf67"/> +<string value="\udbba\udf68"/> +<string value="\udbba\udf69"/> +<string value="\udbba\udf6a"/> +<string value="\udbba\udf6b"/> +<string value="\udbba\udf6c"/> +<string value="\udbba\udf6d"/> +<string value="\udbba\udf6e"/> +<string value="\udbba\udf6f"/> +<string value="\udbba\udf70"/> +<string value="\udbba\udf71"/> +<string value="\udbba\udf72"/> +<string value="\udbba\udf73"/> +<string value="\udbba\udf74"/> +<string value="\udbba\udf75"/> +<string value="\udbba\udf76"/> +<string value="\udbba\udf77"/> +<string value="\udbba\udf78"/> +<string value="\udbba\udf79"/> +<!-- School --> +<string value="\udbba\udf7a"/> +<string value="\udbba\udf7b"/> +<string value="\udbba\udf7c"/> +<string value="\udbba\udf7d"/> +<string value="\udbba\udf7e"/> +<string value="\udbba\udf7f"/> +<string value="\udbba\udf80"/> +<!-- Internet Specific --> +<string value="\udbba\udf81"/> +<string value="\udbba\udf82"/> +<string value="\udbba\udf83"/> +<string value="\udbba\udf84"/> +<string value="\udbba\udf85"/> +<string value="\udbba\udf86"/> +<string value="\udbba\udf87"/> +<string value="\udbba\udf88"/> +<string value="\udbba\udf89"/> +<string value="\udbba\udf8a"/> +<string value="\udbba\udf8b"/> +<string value="\udbba\udf8c"/> +<string value="\udbba\udf8d"/> +<string value="\udbba\udf8e"/> +<string value="\udbba\udf8f"/> +<string value="\udbba\udf90"/> +<string value="\udbba\udf91"/> +<string value="\udbba\udf92"/> +<!-- Hand Signals --> +<string value="\udbba\udf93"/> +<string value="\udbba\udf94"/> +<string value="\udbba\udf95"/> +<string value="\udbba\udf96"/> +<string value="\udbba\udf97"/> +<string value="\udbba\udf98"/> +<string value="\udbba\udf99"/> +<string value="\udbba\udf9a"/> +<string value="\udbba\udf9b"/> +<string value="\udbba\udf9c"/> +<string value="\udbba\udf9d"/> +<string value="\udbba\udf9e"/> +<string value="\udbba\udf9f"/> +<string value="\udbba\udfa0"/> +<string value="\udbba\udfa1"/> +<string value="\udbba\udfa2"/> +<!-- 8. Business logos/symbols --> +<!-- DoCoMo specific --> +<string value="\udbbb\ude10"/> +<string value="\udbbb\ude11"/> +<string value="\udbbb\ude12"/> +<string value="\udbbb\ude13"/> +<string value="\udbbb\ude14"/> +<string value="\udbbb\ude15"/> +<string value="\udbbb\ude16"/> +<string value="\udbbb\ude17"/> +<string value="\udbbb\ude18"/> +<string value="\udbbb\ude19"/> +<string value="\udbbb\ude1a"/> +<string value="\udbbb\ude1b"/> +<string value="\udbbb\ude1c"/> +<string value="\udbbb\ude1d"/> +<string value="\udbbb\ude1e"/> +<string value="\udbbb\ude1f"/> +<string value="\udbbb\ude20"/> +<string value="\udbbb\ude21"/> +<string value="\udbbb\ude22"/> +<string value="\udbbb\ude23"/> +<string value="\udbbb\ude24"/> +<string value="\udbbb\ude25"/> +<string value="\udbbb\ude26"/> +<string value="\udbbb\ude27"/> +<string value="\udbbb\ude28"/> +<string value="\udbbb\ude29"/> +<string value="\udbbb\ude2a"/> +<string value="\udbbb\ude2b"/> +<string value="\udbbb\ude2c"/> +<string value="\udbbb\ude2d"/> +<string value="\udbbb\ude2e"/> +<string value="\udbbb\ude2f"/> +<string value="\udbbb\ude30"/> +<string value="\udbbb\ude31"/> +<string value="\udbbb\ude32"/> +<string value="\udbbb\ude33"/> +<!-- KDDI specific --> +<string value="\udbbb\ude40"/> +<string value="\udbbb\ude41"/> +<string value="\udbbb\ude42"/> +<string value="\udbbb\ude43"/> +<string value="\udbbb\ude44"/> +<string value="\udbbb\ude45"/> +<string value="\udbbb\ude46"/> +<string value="\udbbb\ude47"/> +<string value="\udbbb\ude48"/> +<string value="\udbbb\ude49"/> +<string value="\udbbb\ude4a"/> +<!-- Softbank specific --> +<string value="\udbbb\ude70"/> +<string value="\udbbb\ude71"/> +<string value="\udbbb\ude72"/> +<string value="\udbbb\ude73"/> +<string value="\udbbb\ude74"/> +<string value="\udbbb\ude75"/> +<string value="\udbbb\ude76"/> +<string value="\udbbb\ude77"/> +<string value="\udbbb\ude78"/> +<string value="\udbbb\ude79"/> +<string value="\udbbb\ude7a"/> +<string value="\udbbb\ude7b"/> +<string value="\udbbb\ude7c"/> +<string value="\udbbb\ude7d"/> +<!-- Google specific --> +<string value="\udbbb\udea0"/> +</keystring> diff --git a/res/xml/symbols_japan_emoji_list3.xml b/res/xml/symbols_japan_emoji_list3.xml new file mode 100644 index 0000000..dbd0668 --- /dev/null +++ b/res/xml/symbols_japan_emoji_list3.xml @@ -0,0 +1,317 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!--symbols --> +<keystring> +<!-- 4. Artifacts --> +<!-- Buildings / Common Places --> +<string value="\udbb9\udcb0"/> +<string value="\udbb9\udcb1"/> +<string value="\udbb9\udcb2"/> +<string value="\udbb9\udcb3"/> +<string value="\udbb9\udcb4"/> +<string value="\udbb9\udcb5"/> +<string value="\udbb9\udcb6"/> +<string value="\udbb9\udcb7"/> +<string value="\udbb9\udcb8"/> +<string value="\udbb9\udcb9"/> +<string value="\udbb9\udcba"/> +<string value="\udbb9\udcbb"/> +<string value="\udbb9\udcbc"/> +<string value="\udbb9\udcbd"/> +<string value="\udbb9\udcbe"/> +<string value="\udbb9\udcbf"/> +<string value="\udbb9\udcc0"/> +<string value="\udbb9\udcc1"/> +<string value="\udbb9\udcc2"/> +<!-- Landmarks /Famous Places --> +<string value="\udbb9\udcc3"/> +<string value="\udbb9\udcc4"/> +<string value="\udbb9\udcc5"/> +<string value="\udbb9\udcc6"/> +<string value="\udbb9\udcc7"/> +<string value="\udbb9\udcc8"/> +<!-- Tools --> +<string value="\udbb9\udcc9"/> +<string value="\udbb9\udcca"/> +<string value="\udbb9\udccb"/> +<!-- Clothing / Wearables --> +<string value="\udbb9\udccc"/> +<string value="\udbb9\udccd"/> +<string value="\udbb9\udcce"/> +<string value="\udbb9\udccf"/> +<string value="\udbb9\udcd0"/> +<string value="\udbb9\udcd1"/> +<string value="\udbb9\udcd2"/> +<string value="\udbb9\udcd3"/> +<string value="\udbb9\udcd4"/> +<string value="\udbb9\udcd5"/> +<string value="\udbb9\udcd6"/> +<string value="\udbb9\udcd7"/> +<string value="\udbb9\udcd8"/> +<string value="\udbb9\udcd9"/> +<string value="\udbb9\udcda"/> +<string value="\udbb9\udcdb"/> +<!-- Money --> +<string value="\udbb9\udcdc"/> +<string value="\udbb9\udcdd"/> +<string value="\udbb9\udcde"/> +<string value="\udbb9\udcdf"/> +<string value="\udbb9\udce0"/> +<string value="\udbb9\udce1"/> +<string value="\udbb9\udce2"/> +<string value="\udbb9\udce3"/> +<string value="\udbb9\udce4"/> +<!-- Flags --> +<string value="\udbb9\udce5"/> +<string value="\udbb9\udce6"/> +<string value="\udbb9\udce7"/> +<string value="\udbb9\udce8"/> +<string value="\udbb9\udce9"/> +<string value="\udbb9\udcea"/> +<string value="\udbb9\udceb"/> +<string value="\udbb9\udcec"/> +<string value="\udbb9\udced"/> +<string value="\udbb9\udcee"/> +<!-- Miscellaneous Things --> +<string value="\udbb9\udcef"/> +<string value="\udbb9\udcf0"/> +<string value="\udbb9\udcf1"/> +<string value="\udbb9\udcf2"/> +<string value="\udbb9\udcf3"/> +<string value="\udbb9\udcf4"/> +<string value="\udbb9\udcf5"/> +<string value="\udbb9\udcf6"/> +<string value="\udbb9\udcf7"/> +<string value="\udbb9\udcf8"/> +<string value="\udbb9\udcf9"/> +<string value="\udbb9\udcfa"/> +<string value="\udbb9\udcfb"/> +<string value="\udbb9\udcfc"/> +<string value="\udbb9\udcfd"/> +<string value="\udbb9\udcfe"/> +<string value="\udbb9\udcff"/> +<string value="\udbb9\udd00"/> +<string value="\udbb9\udd01"/> +<string value="\udbb9\udd02"/> +<string value="\udbb9\udd03"/> +<string value="\udbb9\udd04"/> +<!-- Bath / Bathroom --> +<string value="\udbb9\udd05"/> +<string value="\udbb9\udd06"/> +<string value="\udbb9\udd07"/> +<string value="\udbb9\udd08"/> +<!-- Medical --> +<string value="\udbb9\udd09"/> +<string value="\udbb9\udd0a"/> +<string value="\udbb9\udd0b"/> +<string value="\udbb9\udd0c"/> +<string value="\udbb9\udd0d"/> +<string value="\udbb9\udd0e"/> +<!-- Celebration / Holidays --> +<string value="\udbb9\udd0f"/> +<string value="\udbb9\udd10"/> +<string value="\udbb9\udd11"/> +<string value="\udbb9\udd12"/> +<string value="\udbb9\udd13"/> +<string value="\udbb9\udd14"/> +<string value="\udbb9\udd15"/> +<string value="\udbb9\udd16"/> +<string value="\udbb9\udd17"/> +<string value="\udbb9\udd18"/> +<string value="\udbb9\udd19"/> +<string value="\udbb9\udd1a"/> +<string value="\udbb9\udd1b"/> +<string value="\udbb9\udd1c"/> +<string value="\udbb9\udd1d"/> +<string value="\udbb9\udd1e"/> +<string value="\udbb9\udd1f"/> +<string value="\udbb9\udd20"/> +<string value="\udbb9\udd21"/> +<!-- Communication --> +<string value="\udbb9\udd22"/> +<string value="\udbb9\udd23"/> +<string value="\udbb9\udd24"/> +<string value="\udbb9\udd25"/> +<string value="\udbb9\udd26"/> +<string value="\udbb9\udd27"/> +<string value="\udbb9\udd28"/> +<string value="\udbb9\udd29"/> +<string value="\udbb9\udd2a"/> +<string value="\udbb9\udd2b"/> +<string value="\udbb9\udd2c"/> +<string value="\udbb9\udd2d"/> +<string value="\udbb9\udd2e"/> +<string value="\udbb9\udd2f"/> +<string value="\udbb9\udd30"/> +<string value="\udbb9\udd31"/> +<string value="\udbb9\udd32"/> +<string value="\udbb9\udd33"/> +<string value="\udbb9\udd34"/> +<string value="\udbb9\udd35"/> +<!-- Office --> +<string value="\udbb9\udd36"/> +<string value="\udbb9\udd37"/> +<string value="\udbb9\udd38"/> +<string value="\udbb9\udd39"/> +<string value="\udbb9\udd3a"/> +<string value="\udbb9\udd3b"/> +<string value="\udbb9\udd3c"/> +<string value="\udbb9\udd3d"/> +<string value="\udbb9\udd3e"/> +<string value="\udbb9\udd3f"/> +<string value="\udbb9\udd40"/> +<string value="\udbb9\udd41"/> +<string value="\udbb9\udd42"/> +<string value="\udbb9\udd43"/> +<string value="\udbb9\udd44"/> +<string value="\udbb9\udd45"/> +<string value="\udbb9\udd46"/> +<string value="\udbb9\udd47"/> +<string value="\udbb9\udd48"/> +<string value="\udbb9\udd49"/> +<string value="\udbb9\udd4a"/> +<string value="\udbb9\udd4b"/> +<string value="\udbb9\udd4c"/> +<string value="\udbb9\udd4d"/> +<string value="\udbb9\udd4e"/> +<string value="\udbb9\udd4f"/> +<string value="\udbb9\udd50"/> +<string value="\udbb9\udd51"/> +<string value="\udbb9\udd52"/> +<!-- Relic --> +<string value="\udbb9\udd53"/> +<!-- 5. Activities / Work / Entertainment --> +<!-- Sports --> +<string value="\udbb9\udfd0"/> +<string value="\udbb9\udfd1"/> +<string value="\udbb9\udfd2"/> +<string value="\udbb9\udfd3"/> +<string value="\udbb9\udfd4"/> +<string value="\udbb9\udfd5"/> +<string value="\udbb9\udfd6"/> +<string value="\udbb9\udfd7"/> +<string value="\udbb9\udfd8"/> +<string value="\udbb9\udfd9"/> +<string value="\udbb9\udfda"/> +<string value="\udbb9\udfdb"/> +<string value="\udbb9\udfdc"/> +<string value="\udbb9\udfdd"/> +<string value="\udbb9\udfde"/> +<!-- Transportation --> +<string value="\udbb9\udfdf"/> +<string value="\udbb9\udfe0"/> +<string value="\udbb9\udfe1"/> +<string value="\udbb9\udfe2"/> +<string value="\udbb9\udfe3"/> +<string value="\udbb9\udfe4"/> +<string value="\udbb9\udfe5"/> +<string value="\udbb9\udfe6"/> +<string value="\udbb9\udfe7"/> +<string value="\udbb9\udfe8"/> +<string value="\udbb9\udfe9"/> +<string value="\udbb9\udfea"/> +<string value="\udbb9\udfeb"/> +<string value="\udbb9\udfec"/> +<string value="\udbb9\udfed"/> +<string value="\udbb9\udfee"/> +<string value="\udbb9\udfef"/> +<string value="\udbb9\udff0"/> +<string value="\udbb9\udff1"/> +<string value="\udbb9\udff2"/> +<string value="\udbb9\udff3"/> +<string value="\udbb9\udff4"/> +<!-- Driving --> +<string value="\udbb9\udff5"/> +<string value="\udbb9\udff6"/> +<string value="\udbb9\udff7"/> +<string value="\udbb9\udff8"/> +<string value="\udbb9\udff9"/> +<!-- Recreation --> +<string value="\udbb9\udffa"/> +<string value="\udbb9\udffb"/> +<string value="\udbb9\udffc"/> +<string value="\udbb9\udffd"/> +<string value="\udbb9\udffe"/> +<string value="\udbb9\udfff"/> +<!-- Entertainment --> +<string value="\udbba\udc00"/> +<string value="\udbba\udc01"/> +<string value="\udbba\udc02"/> +<string value="\udbba\udc03"/> +<string value="\udbba\udc04"/> +<string value="\udbba\udc05"/> +<string value="\udbba\udc06"/> +<string value="\udbba\udc07"/> +<string value="\udbba\udc08"/> +<string value="\udbba\udc09"/> +<!-- Games --> +<string value="\udbba\udc0a"/> +<string value="\udbba\udc0b"/> +<string value="\udbba\udc0c"/> +<string value="\udbba\udc0d"/> +<string value="\udbba\udc0e"/> +<string value="\udbba\udc0f"/> +<string value="\udbba\udc10"/> +<string value="\udbba\udc11"/> +<string value="\udbba\udc12"/> +<!-- Music --> +<string value="\udbba\udc13"/> +<string value="\udbba\udc14"/> +<string value="\udbba\udc15"/> +<string value="\udbba\udc16"/> +<string value="\udbba\udc17"/> +<string value="\udbba\udc18"/> +<string value="\udbba\udc19"/> +<string value="\udbba\udc1a"/> +<string value="\udbba\udc1b"/> +<!-- Media --> +<string value="\udbba\udc1c"/> +<string value="\udbba\udc1d"/> +<string value="\udbba\udc1e"/> +<string value="\udbba\udc1f"/> +<string value="\udbba\udc20"/> +<string value="\udbba\udc21"/> +<string value="\udbba\udc22"/> +<!-- Romance --> +<string value="\udbba\udc23"/> +<string value="\udbba\udc24"/> +<string value="\udbba\udc25"/> +<string value="\udbba\udc26"/> +<string value="\udbba\udc27"/> +<string value="\udbba\udc28"/> +<string value="\udbba\udc29"/> +<string value="\udbba\udc2a"/> +<!-- Phone Specific --> +<string value="\udbba\udc2b"/> +<string value="\udbba\udc2c"/> +<string value="\udbba\udc2d"/> +<string value="\udbba\udc2e"/> +<string value="\udbba\udc2f"/> +<string value="\udbba\udc30"/> +<string value="\udbba\udc31"/> +<string value="\udbba\udc32"/> +<string value="\udbba\udc33"/> +<string value="\udbba\udc34"/> +<string value="\udbba\udc35"/> +<string value="\udbba\udc36"/> +<string value="\udbba\udc37"/> +<string value="\udbba\udc38"/> +<string value="\udbba\udc39"/> +<string value="\udbba\udc3a"/> +<string value="\udbba\udc3b"/> +<string value="\udbba\udc3c"/> +</keystring> diff --git a/res/xml/symbols_japan_face_list.xml b/res/xml/symbols_japan_face_list.xml index 371e022..3d5eec4 100644 --- a/res/xml/symbols_japan_face_list.xml +++ b/res/xml/symbols_japan_face_list.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/xml/symbols_japan_list.xml b/res/xml/symbols_japan_list.xml index d25f546..8b3c571 100644 --- a/res/xml/symbols_japan_list.xml +++ b/res/xml/symbols_japan_list.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,6 +16,40 @@ --> <!--symbols --> <keystring> + <string value="@string/half_symbol_categories_txt"/> + <string value="!"/> + <string value="“"/> + <string value="\#"/> + <string value="$"/> + <string value="%"/> + <string value="&"/> + <string value="'"/> + <string value="("/> + <string value=")"/> + <string value="*"/> + <string value="+"/> + <string value=","/> + <string value="-"/> + <string value="."/> + <string value="/"/> + <string value=":"/> + <string value=";"/> + <string value="<"/> + <string value="="/> + <string value=">"/> + <string value="\?"/> + <string value="\@"/> + <string value="["/> + <string value="\\"/> + <string value="]"/> + <string value="^"/> + <string value="_"/> + <string value="`"/> + <string value="{"/> + <string value="|"/> + <string value="}"/> + <string value="~"/> + <string value="@string/full_symbol_categories_txt"/> <string value="、"/> <string value="。"/> <string value=","/> @@ -244,7 +278,4 @@ <string value="∠"/> <string value="∟"/> <string value="⊿"/> - <string value="∵"/> - <string value="∩"/> - <string value="∪"/> </keystring> diff --git a/res/xml/symbols_latin12_list.xml b/res/xml/symbols_latin12_list.xml index e3f6022..62e3bf1 100644 --- a/res/xml/symbols_latin12_list.xml +++ b/res/xml/symbols_latin12_list.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/res/xml/symbols_latin1_list.xml b/res/xml/symbols_latin1_list.xml index 6198124..f5b5edb 100644 --- a/res/xml/symbols_latin1_list.xml +++ b/res/xml/symbols_latin1_list.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ --> <!--symbols --> <keystring> + <string value="@string/half_symbol_categories_txt"/> <string value="!"/> <string value="“"/> <string value="\#"/> diff --git a/res/xml/symbols_latin2_list.xml b/res/xml/symbols_latin2_list.xml index c8d1045..508df9d 100644 --- a/res/xml/symbols_latin2_list.xml +++ b/res/xml/symbols_latin2_list.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/BaseInputView.java b/src/jp/co/omronsoft/openwnn/BaseInputView.java new file mode 100644 index 0000000..36da017 --- /dev/null +++ b/src/jp/co/omronsoft/openwnn/BaseInputView.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jp.co.omronsoft.openwnn; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.util.AttributeSet; +import android.view.Window; +import android.view.WindowManager; +import android.widget.LinearLayout; + +/** + * The view of the base input. + */ +public class BaseInputView extends LinearLayout { + /** The dialog that opens with long tap */ + public AlertDialog mOptionsDialog = null; + + /** + * Constructor + */ + public BaseInputView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + /** + * Constructor + */ + BaseInputView(Context context) { + super(context); + } + + /** + * Called when the window containing has change its visibility. + * + * @see android.view.View#onWindowVisibilityChanged(int) + */ + @Override protected void onWindowVisibilityChanged(int visibility) { + super.onWindowVisibilityChanged(visibility); + if ((visibility != VISIBLE) && (mOptionsDialog != null)) { + mOptionsDialog.dismiss(); + } + } + + /** + * Show dialog. + * + * @param builder the builder of dialog + */ + public void showDialog(AlertDialog.Builder builder) { + if (mOptionsDialog != null) { + mOptionsDialog.dismiss(); + } + + mOptionsDialog = builder.create(); + Window window = mOptionsDialog.getWindow(); + WindowManager.LayoutParams dialogLayoutParams = window.getAttributes(); + dialogLayoutParams.token = getWindowToken(); + dialogLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG; + window.setAttributes(dialogLayoutParams); + window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); + + mOptionsDialog.show(); + } + + /** + * Close dialog. + */ + public void closeDialog() { + if (mOptionsDialog != null) { + mOptionsDialog.dismiss(); + mOptionsDialog = null; + } + } +} diff --git a/src/jp/co/omronsoft/openwnn/CandidateFilter.java b/src/jp/co/omronsoft/openwnn/CandidateFilter.java index 993aef1..32181d2 100644 --- a/src/jp/co/omronsoft/openwnn/CandidateFilter.java +++ b/src/jp/co/omronsoft/openwnn/CandidateFilter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/CandidateTextView.java b/src/jp/co/omronsoft/openwnn/CandidateTextView.java new file mode 100644 index 0000000..f177441 --- /dev/null +++ b/src/jp/co/omronsoft/openwnn/CandidateTextView.java @@ -0,0 +1,181 @@ +/* + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jp.co.omronsoft.openwnn; + +import android.app.Dialog; +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.text.TextUtils; +import android.text.TextPaint; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.LinearLayout; +import android.widget.TextView; + +/** + * The default candidates view manager using {@link TextView}. + * + * @author Copyright (C) 2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. + */ +public class CandidateTextView extends TextView { + + /** Width of fontsize change */ + private static final int WIDTH_SIZE[] = {0, 50, 100}; + /** Fontsize corresponding to width */ + private static final float CUSTOM_FONTSIZE[] = {20.0f, 17.0f, 15.0f}; + /** Width of fontsize change beginning */ + private static final int CHANGE_FONTSIZE_WIDTH = 120; + + /** Maximum width of candidate view */ + private int mMaxWidth; + /** Width of fontsize change beginning */ + private int mChangeFontSize; + /** Minimum width of candidate view */ + private int mCandidateMinimumWidth; + + /** Alert dialog */ + private Dialog mCandidateDialog = null; + + /** + * Constructor + * @param context context + */ + public CandidateTextView(Context context) { + super(context); + setSoundEffectsEnabled(false); + } + + /** + * Constructor + * @param context context + * @param candidateMinimumHeight Minimum height of candidate view + * @param candidateMinimumWidth Minimum width of candidate view + * @param maxWidth Maximum width of candidate view + */ + public CandidateTextView(Context context, int candidateMinimumHeight, int candidateMinimumWidth, int maxWidth) { + super(context); + setSoundEffectsEnabled(false); + setTextColor(getResources().getColor(R.color.candidate_text_1line)); + setBackgroundResource(R.drawable.cand_back_1line); + setGravity(Gravity.CENTER); + setSingleLine(); + setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.MATCH_PARENT, + 1.0f)); + setMinHeight(candidateMinimumHeight); + setMinimumWidth(candidateMinimumWidth); + mCandidateMinimumWidth = candidateMinimumWidth; + mMaxWidth = maxWidth; + mChangeFontSize = maxWidth - CHANGE_FONTSIZE_WIDTH; + } + + /** + * Textview is set to the best content for the display of candidate. + * @param WnnWord candidate + * @param wordCount candidate id + * @param OnClickListener Operation when clicking + * @param OnClickListener Operation when longclicking + * @return Set completion textview + */ + public CandidateTextView setCandidateTextView(WnnWord word, int wordCount, + OnClickListener candidateOnClick, + OnLongClickListener candidateOnLongClick) { + setTextSize(CUSTOM_FONTSIZE[0]); + setText(word.candidate); + setId(wordCount); + setVisibility(View.VISIBLE); + setPressed(false); + setWidth(0); + setEllipsize(null); + setOnClickListener(candidateOnClick); + setOnLongClickListener(candidateOnLongClick); + setCustomCandidate(word); + return this; + } + + /** + * If the text view is set to the best width for the display, + * and it is necessary, the character is shortened. + * @param WnnWord candidate word + * @return int textview width + */ + public int setCustomCandidate(WnnWord word) { + TextPaint paint = getPaint(); + int width = (int)paint.measureText(word.candidate, 0, word.candidate.length()); + width += getPaddingLeft() + getPaddingRight(); + + if (width > mCandidateMinimumWidth) { + int i; + for (i = 0; i < WIDTH_SIZE.length; i++) { + if (width > mChangeFontSize + WIDTH_SIZE[i]) { + setTextSize(CUSTOM_FONTSIZE[i]); + } + } + + width = (int)paint.measureText(word.candidate, 0, word.candidate.length()); + width += getPaddingLeft() + getPaddingRight(); + + if (width >= mMaxWidth) { + setWidth(mMaxWidth); + width = mMaxWidth; + setEllipsize(TextUtils.TruncateAt.START); + } else { + setWidth(width); + } + } else { + setWidth(mCandidateMinimumWidth); + width = mCandidateMinimumWidth; + } + return width; + } + + /** @see View#setBackgroundDrawable */ + @Override public void setBackgroundDrawable(Drawable d) { + super.setBackgroundDrawable(d); + setPadding(20, 0, 20, 0); + } + + /** + * Display Dialog. + * + * @param builder The Dialog builder, + */ + public void displayCandidateDialog(Dialog builder) { + if (mCandidateDialog != null) { + mCandidateDialog.dismiss(); + mCandidateDialog = null; + } + mCandidateDialog = builder; + Window window = mCandidateDialog.getWindow(); + WindowManager.LayoutParams lp = window.getAttributes(); + lp.token = getWindowToken(); + lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG; + window.setAttributes(lp); + window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); + mCandidateDialog.show(); + } + + /** @see android.view.View#onWindowVisibilityChanged */ + @Override protected void onWindowVisibilityChanged(int visibility) { + super.onWindowVisibilityChanged(visibility); + if ((visibility != VISIBLE) && (mCandidateDialog != null)) { + mCandidateDialog.dismiss(); + } + } +} diff --git a/src/jp/co/omronsoft/openwnn/CandidatesViewManager.java b/src/jp/co/omronsoft/openwnn/CandidatesViewManager.java index 01dee1e..be2b9e6 100644 --- a/src/jp/co/omronsoft/openwnn/CandidatesViewManager.java +++ b/src/jp/co/omronsoft/openwnn/CandidatesViewManager.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,15 +16,26 @@ package jp.co.omronsoft.openwnn; -import android.view.View; +import android.app.Dialog; +import android.content.res.Resources; import android.content.SharedPreferences; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; +import android.widget.HorizontalScrollView; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.util.TypedValue; + +import java.util.ArrayList; /** * The interface of candidates view manager used by {@link OpenWnn}. * - * @author Copyright (C) 2008, 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. + * @author Copyright (C) 2008-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. */ -public interface CandidatesViewManager { +public abstract class CandidatesViewManager { /** Size of candidates view (normal) */ public static final int VIEW_TYPE_NORMAL = 0; /** Size of candidates view (full) */ @@ -53,6 +64,15 @@ public interface CandidatesViewManager { */ public static final int ATTRIBUTE_AUTO_GENERATED = 4; + /** The view of the LongPressDialog */ + protected View mViewLongPressDialog = null; + + /** Whether candidates long click enable */ + protected Dialog mDialog = null; + + /** The word pressed */ + protected WnnWord mWord; + /** * Initialize the candidates view. * @@ -62,28 +82,32 @@ public interface CandidatesViewManager { * * @return The candidates view created in the initialize process; {@code null} if cannot create a candidates view. */ - public View initView(OpenWnn parent, int width, int height); + public abstract View initView(OpenWnn parent, int width, int height); /** * Get the candidates view being used currently. * * @return The candidates view; {@code null} if no candidates view is used currently. */ - public View getCurrentView(); + public abstract View getCurrentView(); /** * Set the candidates view type. * - * @param type The candidate view type + * @param type The candidate view type, + * from {@link CandidatesViewManager#VIEW_TYPE_NORMAL} to + * {@link CandidatesViewManager#VIEW_TYPE_CLOSE} */ - public void setViewType(int type); + public abstract void setViewType(int type); /** * Get the candidates view type. * - * @return The view type + * @return The view type, + * from {@link CandidatesViewManager#VIEW_TYPE_NORMAL} to + * {@link CandidatesViewManager#VIEW_TYPE_CLOSE} */ - public int getViewType(); + public abstract int getViewType(); /** * Display candidates. @@ -92,17 +116,77 @@ public interface CandidatesViewManager { * * @see jp.co.omronsoft.openwnn.WnnEngine#getNextCandidate */ - public void displayCandidates(WnnEngine converter); + public abstract void displayCandidates(WnnEngine converter); /** * Clear and hide the candidates view. */ - public void clearCandidates(); + public abstract void clearCandidates(); /** - * Reflect the preferences in the candidates view. + * Replace the preferences in the candidates view. * * @param pref The preferences */ - public void setPreferences(SharedPreferences pref); + public abstract void setPreferences(SharedPreferences pref); + + /** + * KeyEvent action for soft key board. + * + * @param key Key event + */ + public abstract void processMoveKeyEvent(int key); + + /** + * Get candidate is focused now. + * + * @return the Candidate is focused of a flag. + */ + public abstract boolean isFocusCandidate(); + + /** + * Select candidate that has focus. + */ + public abstract void selectFocusCandidate(); + + /** + * MSG_SET_CANDIDATES removeMessages. + */ + public abstract void setCandidateMsgRemove(); + + /** + * Display Dialog. + * + * @param view View, + * @param word Display word, + */ + protected void displayDialog(View view, final WnnWord word) { + if ((view instanceof CandidateTextView) && (null != mViewLongPressDialog)) { + closeDialog(); + mDialog = new Dialog(view.getContext(), R.style.Dialog); + + TextView text = (TextView)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_text); + text.setText(word.candidate); + + mDialog.setContentView(mViewLongPressDialog); + ((CandidateTextView) view).displayCandidateDialog(mDialog); + } + } + + /** + * Close Dialog. + * + */ + public void closeDialog() { + if (null != mDialog) { + mDialog.dismiss(); + mDialog = null; + if (null != mViewLongPressDialog) { + ViewGroup parent = (ViewGroup)mViewLongPressDialog.getParent(); + if (null != parent) { + parent.removeView(mViewLongPressDialog); + } + } + } + } } diff --git a/src/jp/co/omronsoft/openwnn/ComposingText.java b/src/jp/co/omronsoft/openwnn/ComposingText.java index 328efb5..dddab2c 100644 --- a/src/jp/co/omronsoft/openwnn/ComposingText.java +++ b/src/jp/co/omronsoft/openwnn/ComposingText.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/DefaultSoftKeyboard.java b/src/jp/co/omronsoft/openwnn/DefaultSoftKeyboard.java index edb308c..096460b 100644 --- a/src/jp/co/omronsoft/openwnn/DefaultSoftKeyboard.java +++ b/src/jp/co/omronsoft/openwnn/DefaultSoftKeyboard.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,12 +16,12 @@ package jp.co.omronsoft.openwnn; +import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputConnection; import android.widget.TextView; -import android.inputmethodservice.Keyboard; -import android.inputmethodservice.KeyboardView; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.content.res.*; @@ -31,10 +31,14 @@ import android.content.Context; import android.util.Log; +import jp.co.omronsoft.openwnn.Keyboard; +import jp.co.omronsoft.openwnn.KeyboardView; +import jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener; + /** * The default software keyboard class. * - * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. + * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. */ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKeyboardActionListener { /* @@ -104,7 +108,16 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey public static final int KEYCODE_JP12_HAN_ALPHA = -229; /** Japanese 12-key keyboard [MODE TOOGLE CHANGE] */ public static final int KEYCODE_JP12_TOGGLE_MODE = -230; - + + /** Key code for symbol keyboard alt key */ + public static final int KEYCODE_4KEY_MODE = -300; + /** Key code for symbol keyboard up key */ + public static final int KEYCODE_4KEY_UP = -301; + /** Key code for symbol keyboard down key */ + public static final int KEYCODE_4KEY_DOWN = -302; + /** Key code for symbol keyboard del key */ + public static final int KEYCODE_4KEY_CLEAR = -303; + /* for Qwerty keyboard */ /** Qwerty keyboard [DEL] */ public static final int KEYCODE_QWERTY_BACKSPACE = -100; @@ -146,7 +159,7 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey protected KeyboardView mKeyboardView; /** View objects (main side) */ - protected ViewGroup mMainView; + protected BaseInputView mMainView; /** View objects (sub side) */ protected ViewGroup mSubView; @@ -262,6 +275,15 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey /** Whether the H/W keyboard is hidden. */ protected boolean mHardKeyboardHidden = true; + /** Whether the H/W 12key keyboard. */ + protected boolean mEnableHardware12Keyboard = false; + + /** Symbol keyboard */ + protected Keyboard mSymbolKeyboard; + + /** Symbol keyboard state */ + protected boolean mIsSymbolKeyboard = false; + /** * Status of the composing text * <br> @@ -278,6 +300,60 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey /** Key toggle cycle table currently using */ protected String[] mCurrentCycleTable; + /** Event listener for symbol keyboard */ + private OnKeyboardActionListener mSymbolOnKeyboardAction = new OnKeyboardActionListener() { + public void onKey(int primaryCode, int[] keyCodes) { + switch (primaryCode) { + case KEYCODE_4KEY_MODE: + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.INPUT_KEY, + new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK))); + break; + + case KEYCODE_4KEY_UP: + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_UP)); + break; + + case KEYCODE_4KEY_DOWN: + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_DOWN)); + break; + + case KEYCODE_4KEY_CLEAR: + InputConnection connection = mWnn.getCurrentInputConnection(); + if (connection != null) { + connection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)); + } + return; + + default: + break; + } + } + public void onPress(int primaryCode) { + playSoundAndVibration(); + } + public void onText(CharSequence text) { } + public void swipeLeft() { } + public void swipeRight() { } + public void swipeUp() { } + public void swipeDown() { } + public void onRelease(int primaryCode) { } + public boolean onLongPress(Keyboard.Key key) { + switch (key.codes[0]) { + case KEYCODE_4KEY_UP: + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_FULL_UP)); + return true; + + case KEYCODE_4KEY_DOWN: + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_FULL_DOWN)); + return true; + + default: + break; + } + return false; + } + }; + /** * Constructor */ @@ -527,6 +603,9 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey */ createKeyboards(parent); + /* create symbol keyboard */ + mSymbolKeyboard = new Keyboard(parent, R.xml.keyboard_4key); + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(parent); String skin = pref.getString("keyboard_skin", mWnn.getResources().getString(R.string.keyboard_skin_id_default)); @@ -536,14 +615,17 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey mKeyboardView.setOnKeyboardActionListener(this); mCurrentKeyboard = null; - mMainView = (ViewGroup) parent.getLayoutInflater().inflate(R.layout.keyboard_default_main, null); + mMainView = (BaseInputView) parent.getLayoutInflater().inflate(R.layout.keyboard_default_main, null); mSubView = (ViewGroup) parent.getLayoutInflater().inflate(R.layout.keyboard_default_sub, null); - if (mDisplayMode == LANDSCAPE || !mHardKeyboardHidden) { - mMainView.addView(mSubView); + + if (!mHardKeyboardHidden) { + if (!mEnableHardware12Keyboard) { + mMainView.addView(mSubView); + } } else if (mKeyboardView != null) { mMainView.addView(mKeyboardView); } - + return mMainView; } @@ -624,9 +706,6 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey /** @see jp.co.omronsoft.openwnn.InputViewManager#getCurrentView */ public View getCurrentView() { - if (mCurrentKeyboard == null) { - return null; - } return mMainView; } @@ -682,7 +761,12 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey } /* pop-up preview */ - mKeyboardView.setPreviewEnabled(pref.getBoolean("popup_preview", true)); + if (OpenWnn.isXLarge()) { + mKeyboardView.setPreviewEnabled(false); + } else { + mKeyboardView.setPreviewEnabled(pref.getBoolean("popup_preview", true)); + mKeyboardView.clearWindowInfo(); + } } @@ -694,39 +778,63 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey mDisableKeyInput = true; } + /** @see jp.co.omronsoft.openwnn.InputViewManager#showInputView */ + public void showInputView() { + if (mKeyboardView != null) { + mKeyboardView.setVisibility(View.VISIBLE); + } + } + + /** @see jp.co.omronsoft.openwnn.InputViewManager#hideInputView */ + public void hideInputView() { + mKeyboardView.setVisibility(View.GONE); + } + /*********************************************************************** * onKeyboardActionListener ***********************************************************************/ - /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#onKey */ + /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onKey */ public void onKey(int primaryCode, int[] keyCodes) { } - /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#swipeRight */ + /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeRight */ public void swipeRight() { } - /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#swipeLeft */ + /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeLeft */ public void swipeLeft() { } - /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#swipeDown */ + /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeDown */ public void swipeDown() { } - /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#swipeUp */ + /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#swipeUp */ public void swipeUp() { } - /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#onRelease */ + /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onRelease */ public void onRelease(int x) { } - /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#onPress */ + /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onPress */ public void onPress(int x) { + playSoundAndVibration(); + } + + /** @see android.jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onLongPress */ + public boolean onLongPress(Keyboard.Key key) { + return false; + } + + /** + * Play sound & vibration. + */ + private void playSoundAndVibration() { /* key click sound & vibration */ if (mVibrator != null) { - try { mVibrator.vibrate(30); } catch (Exception ex) { } + try { mVibrator.vibrate(5); } catch (Exception ex) { } } if (mSound != null) { try { mSound.seekTo(0); mSound.start(); } catch (Exception ex) { } } } - - /** @see android.inputmethodservice.KeyboardView.OnKeyboardActionListener#onText */ + + /** @see jp.co.omronsoft.openwnn.KeyboardView.OnKeyboardActionListener#onText */ public void onText(CharSequence text) {} /** @@ -757,6 +865,15 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey } /** + * Set the H/W keyboard's type. + * + * @param type12Key {@code true} if 12Key. + */ + public void setHardware12Keyboard(boolean type12Key) { + mEnableHardware12Keyboard = type12Key; + } + + /** * Get current keyboard view. */ public View getKeyboardView() { @@ -772,4 +889,25 @@ public class DefaultSoftKeyboard implements InputViewManager, KeyboardView.OnKey mCurrentKeyboard = null; changeKeyboard(keyboard); } + + /** + * Set the normal keyboard. + */ + public void setNormalKeyboard() { + if (mCurrentKeyboard == null) { + return; + } + mKeyboardView.setKeyboard(mCurrentKeyboard); + mKeyboardView.setOnKeyboardActionListener(this); + mIsSymbolKeyboard = false; + } + + /** + * Set the symbol keyboard. + */ + public void setSymbolKeyboard() { + mKeyboardView.setKeyboard(mSymbolKeyboard); + mKeyboardView.setOnKeyboardActionListener(mSymbolOnKeyboardAction); + mIsSymbolKeyboard = true; + } } diff --git a/src/jp/co/omronsoft/openwnn/EN/ClearUserDictionaryDialogPreferenceEN.java b/src/jp/co/omronsoft/openwnn/EN/ClearUserDictionaryDialogPreferenceEN.java index 10fb86c..aef2c1c 100644 --- a/src/jp/co/omronsoft/openwnn/EN/ClearUserDictionaryDialogPreferenceEN.java +++ b/src/jp/co/omronsoft/openwnn/EN/ClearUserDictionaryDialogPreferenceEN.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/EN/DefaultSoftKeyboardEN.java b/src/jp/co/omronsoft/openwnn/EN/DefaultSoftKeyboardEN.java index 4cdcc9a..33df09f 100644 --- a/src/jp/co/omronsoft/openwnn/EN/DefaultSoftKeyboardEN.java +++ b/src/jp/co/omronsoft/openwnn/EN/DefaultSoftKeyboardEN.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,12 +18,13 @@ package jp.co.omronsoft.openwnn.EN; import jp.co.omronsoft.openwnn.*; import android.content.SharedPreferences; -import android.inputmethodservice.Keyboard; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; +import jp.co.omronsoft.openwnn.Keyboard; + import android.util.Log; /** diff --git a/src/jp/co/omronsoft/openwnn/EN/OpenWnnEngineEN.java b/src/jp/co/omronsoft/openwnn/EN/OpenWnnEngineEN.java index 4a71690..7efeb7d 100644 --- a/src/jp/co/omronsoft/openwnn/EN/OpenWnnEngineEN.java +++ b/src/jp/co/omronsoft/openwnn/EN/OpenWnnEngineEN.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/EN/TutorialEN.java b/src/jp/co/omronsoft/openwnn/EN/TutorialEN.java index cb2f1d8..61dc1b0 100644 --- a/src/jp/co/omronsoft/openwnn/EN/TutorialEN.java +++ b/src/jp/co/omronsoft/openwnn/EN/TutorialEN.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsEditEN.java b/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsEditEN.java index d052f7f..8e3a6d3 100644 --- a/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsEditEN.java +++ b/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsEditEN.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsListEN.java b/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsListEN.java index 483b25a..f032d64 100644 --- a/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsListEN.java +++ b/src/jp/co/omronsoft/openwnn/EN/UserDictionaryToolsListEN.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ package jp.co.omronsoft.openwnn.EN; import jp.co.omronsoft.openwnn.*; +import android.os.Bundle; import android.view.View; import android.view.Window; import java.util.Comparator; @@ -31,18 +32,18 @@ public class UserDictionaryToolsListEN extends UserDictionaryToolsList { * Constructor */ public UserDictionaryToolsListEN() { - if (OpenWnnEN.getInstance() == null) { - new OpenWnnEN(this); - } + if (OpenWnnEN.getInstance() == null) { + new OpenWnnEN(this); + } mListViewName = "jp.co.omronsoft.openwnn.EN.UserDictionaryToolsListEN"; mEditViewName = "jp.co.omronsoft.openwnn.EN.UserDictionaryToolsEditEN"; mPackageName = "jp.co.omronsoft.openwnn"; } - /** @see jp.co.omronsoft.openwnn.UserDictionaryToolsList#headerCreate */ - @Override protected void headerCreate() { - getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, - R.layout.user_dictionary_tools_list_header); + /** @see jp.co.omronsoft.iwnnime.ml.UserDictionaryToolsList#onCreate */ + @Override protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setTitle(R.string.user_dictionary_list_words_en); } /** @see jp.co.omronsoft.openwnn.UserDictionaryToolsList#createUserDictionaryToolsEdit */ diff --git a/src/jp/co/omronsoft/openwnn/InputViewManager.java b/src/jp/co/omronsoft/openwnn/InputViewManager.java index f6e15ec..235721a 100644 --- a/src/jp/co/omronsoft/openwnn/InputViewManager.java +++ b/src/jp/co/omronsoft/openwnn/InputViewManager.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ import android.view.inputmethod.EditorInfo; /** * The interface of input view manager used by OpenWnn. * - * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. + * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. */ public interface InputViewManager { /** @@ -63,4 +63,15 @@ public interface InputViewManager { * Close the input view. */ public void closing(); + + /** + * Show the input view. + */ + public void showInputView(); + + /** + * Hide the input view. + */ + public void hideInputView(); + } diff --git a/src/jp/co/omronsoft/openwnn/JAJP/ClearLearnDictionaryDialogPreferenceJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/ClearLearnDictionaryDialogPreferenceJAJP.java index ff6c27e..7df0a4d 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/ClearLearnDictionaryDialogPreferenceJAJP.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/ClearLearnDictionaryDialogPreferenceJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/JAJP/ClearUserDictionaryDialogPreferenceJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/ClearUserDictionaryDialogPreferenceJAJP.java index 6e132d2..70aa469 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/ClearUserDictionaryDialogPreferenceJAJP.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/ClearUserDictionaryDialogPreferenceJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/JAJP/DefaultSoftKeyboardJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/DefaultSoftKeyboardJAJP.java index 8079d2f..e3e6cc4 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/DefaultSoftKeyboardJAJP.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/DefaultSoftKeyboardJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,14 +16,21 @@ package jp.co.omronsoft.openwnn.JAJP; +import android.app.AlertDialog; import jp.co.omronsoft.openwnn.*; +import android.content.DialogInterface; +import android.content.res.Resources; import android.view.KeyEvent; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; -import android.inputmethodservice.Keyboard; import android.util.Log; import android.view.View; import android.content.SharedPreferences; + +import jp.co.omronsoft.openwnn.Keyboard; +import jp.co.omronsoft.openwnn.BaseInputView; +import jp.co.omronsoft.openwnn.R; + import java.util.HashMap; import java.util.Locale; import java.util.List; @@ -308,7 +315,11 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { /** Default constructor */ public DefaultSoftKeyboardJAJP() { mCurrentLanguage = LANG_JA; - mCurrentKeyboardType = KEYBOARD_12KEY; + if (OpenWnn.isXLarge()) { + mCurrentKeyboardType = KEYBOARD_QWERTY; + } else { + mCurrentKeyboardType = KEYBOARD_12KEY; + } mShiftOn = KEYBOARD_SHIFT_OFF; mCurrentKeyMode = KEYMODE_JA_FULL_HIRAGANA; } @@ -334,6 +345,9 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY)); } + } else if (mEnableHardware12Keyboard) { + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, + OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY)); } else { mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY)); @@ -511,7 +525,7 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { break; case KEYCODE_JP12_REVERSE: - if (!mNoInput) { + if (!mNoInput && !mEnableHardware12Keyboard) { mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.TOGGLE_REVERSE_CHAR, mCurrentCycleTable)); } break; @@ -684,7 +698,13 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#setPreferences */ @Override public void setPreferences(SharedPreferences pref, EditorInfo editor) { mPrefEditor = pref.edit(); - boolean isQwerty = pref.getBoolean("opt_enable_qwerty", false); + boolean isQwerty; + if (OpenWnn.isXLarge()) { + isQwerty = pref.getBoolean("opt_enable_qwerty", true); + } else { + isQwerty = pref.getBoolean("opt_enable_qwerty", false); + } + if (isQwerty && (mCurrentKeyboardType == KEYBOARD_12KEY)) { changeKeyboardType(KEYBOARD_QWERTY); } @@ -729,6 +749,8 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { case EditorInfo.TYPE_CLASS_PHONE: if (mHardKeyboardHidden) { mLimitedKeyMode = new int[] {KEYMODE_JA_HALF_PHONE}; + } else if (mEnableHardware12Keyboard) { + mLimitedKeyMode = new int[] {KEYMODE_JA_HALF_NUMBER}; } else { mLimitedKeyMode = new int[] {KEYMODE_JA_HALF_ALPHABET}; } @@ -836,65 +858,83 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { */ private void createKeyboardsPortrait(OpenWnn parent) { Keyboard[][] keyList; - /* qwerty shift_off (portrait) */ - keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; - keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp); - keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet); - keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols); - keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana); - keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet); - keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols); - keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana); - keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); - - /* qwerty shift_on (portrait) */ - keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; - keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift); - keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_shift); - keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift); - keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_shift); - keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift); - keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift); - keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_shift); - keyList[KEYMODE_JA_HALF_PHONE][0] = - mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0]; - - - /* 12-keys shift_off (portrait) */ - keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF]; - keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_12keyjp); - keyList[KEYMODE_JA_FULL_HIRAGANA][1] = new Keyboard(parent, R.xml.keyboard_12keyjp_input); - keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet); - keyList[KEYMODE_JA_FULL_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_input); - keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_full_num); - keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana); - keyList[KEYMODE_JA_FULL_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_input); - keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet); - keyList[KEYMODE_JA_HALF_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_input); - keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_half_num); - keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana); - keyList[KEYMODE_JA_HALF_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_input); - keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); - - /* 12-keys shift_on (portrait) */ - keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_ON]; - keyList[KEYMODE_JA_FULL_HIRAGANA] - = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_HIRAGANA]; - keyList[KEYMODE_JA_FULL_ALPHABET] - = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_ALPHABET]; - keyList[KEYMODE_JA_FULL_NUMBER] - = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_NUMBER]; - keyList[KEYMODE_JA_FULL_KATAKANA] - = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_KATAKANA]; - keyList[KEYMODE_JA_HALF_ALPHABET] - = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_ALPHABET];; - keyList[KEYMODE_JA_HALF_NUMBER] - = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_NUMBER]; - keyList[KEYMODE_JA_HALF_KATAKANA] - = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_KATAKANA]; - keyList[KEYMODE_JA_HALF_PHONE] - = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE]; - + if (OpenWnn.isXLarge()) { + /* qwerty shift_off (portrait) */ + keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; + keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp); + keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols); + keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet); + keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols); + keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); + + /* qwerty shift_on (portrait) */ + keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; + keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift); + keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift); + keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift); + keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift); + keyList[KEYMODE_JA_HALF_PHONE][0] = + mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0]; + } else { + /* qwerty shift_off (portrait) */ + keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; + keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp); + keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet); + keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols); + keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana); + keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet); + keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols); + keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana); + keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); + + /* qwerty shift_on (portrait) */ + keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; + keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift); + keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_shift); + keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift); + keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_shift); + keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift); + keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift); + keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_shift); + keyList[KEYMODE_JA_HALF_PHONE][0] = + mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0]; + + + /* 12-keys shift_off (portrait) */ + keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF]; + keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_12keyjp); + keyList[KEYMODE_JA_FULL_HIRAGANA][1] = new Keyboard(parent, R.xml.keyboard_12keyjp_input); + keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet); + keyList[KEYMODE_JA_FULL_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_input); + keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_full_num); + keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana); + keyList[KEYMODE_JA_FULL_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_input); + keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet); + keyList[KEYMODE_JA_HALF_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_input); + keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_half_num); + keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana); + keyList[KEYMODE_JA_HALF_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_input); + keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); + + /* 12-keys shift_on (portrait) */ + keyList = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_ON]; + keyList[KEYMODE_JA_FULL_HIRAGANA] + = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_HIRAGANA]; + keyList[KEYMODE_JA_FULL_ALPHABET] + = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_ALPHABET]; + keyList[KEYMODE_JA_FULL_NUMBER] + = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_NUMBER]; + keyList[KEYMODE_JA_FULL_KATAKANA] + = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_KATAKANA]; + keyList[KEYMODE_JA_HALF_ALPHABET] + = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_ALPHABET];; + keyList[KEYMODE_JA_HALF_NUMBER] + = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_NUMBER]; + keyList[KEYMODE_JA_HALF_KATAKANA] + = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_KATAKANA]; + keyList[KEYMODE_JA_HALF_PHONE] + = mKeyboard[LANG_JA][PORTRAIT][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE]; + } } /** @@ -903,71 +943,84 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { * @param parent The context */ private void createKeyboardsLandscape(OpenWnn parent) { - /* Keyboard[][] keyList; - */ - /* qwerty shift_off (landscape) */ - /* - keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; - keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_landscape); - keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_landscape); - keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_landscape); - keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_landscape); - keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_landscape); - keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_landscape); - keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_landscape); - keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone_landscape); - */ - /* qwerty shift_on (landscape) */ - /* - keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; - keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift_landscape); - keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_shift_landscape); - keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift_landscape); - keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_shift_landscape); - keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift_landscape); - keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift_landscape); - keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_shift_landscape); - keyList[KEYMODE_JA_HALF_PHONE][0] = - mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0]; - */ - /* 12-keys shift_off (landscape) */ - /* - keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF]; - keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_12keyjp_landscape); - keyList[KEYMODE_JA_FULL_HIRAGANA][1] = new Keyboard(parent, R.xml.keyboard_12keyjp_input_landscape); - keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_landscape); - keyList[KEYMODE_JA_FULL_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_input_landscape); - keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_full_num_landscape); - keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_landscape); - keyList[KEYMODE_JA_FULL_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_input_landscape); - keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_landscape); - keyList[KEYMODE_JA_HALF_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_input_landscape); - keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_half_num_landscape); - keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_landscape); - keyList[KEYMODE_JA_HALF_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_input_landscape); - keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone_landscape); - */ - /* 12-keys shift_on (landscape) */ - /* - keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_ON]; - keyList[KEYMODE_JA_FULL_HIRAGANA] - = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_HIRAGANA]; - keyList[KEYMODE_JA_FULL_ALPHABET] - = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_ALPHABET]; - keyList[KEYMODE_JA_FULL_NUMBER] - = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_NUMBER]; - keyList[KEYMODE_JA_FULL_KATAKANA] - = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_KATAKANA]; - keyList[KEYMODE_JA_HALF_ALPHABET] - = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_ALPHABET];; - keyList[KEYMODE_JA_HALF_NUMBER] - = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_NUMBER]; - keyList[KEYMODE_JA_HALF_KATAKANA] - = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_KATAKANA]; - keyList[KEYMODE_JA_HALF_PHONE] - = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE]; - */ + if (OpenWnn.isXLarge()) { + /* qwerty shift_off (landscape) */ + keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; + keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp); + keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols); + keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet); + keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols); + keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); + + /* qwerty shift_on (landscape) */ + keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; + keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift); + keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift); + keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift); + keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift); + keyList[KEYMODE_JA_HALF_PHONE][0] = + mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0]; + } else { + /* qwerty shift_off (landscape) */ + keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF]; + keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp); + keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet); + keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols); + keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana); + keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet); + keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols); + keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana); + keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); + + /* qwerty shift_on (landscape) */ + keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_ON]; + keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_shift); + keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_alphabet_shift); + keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_symbols_shift); + keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_full_katakana_shift); + keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_alphabet_shift); + keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_symbols_shift); + keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_qwerty_jp_half_katakana_shift); + keyList[KEYMODE_JA_HALF_PHONE][0] = + mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_QWERTY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE][0]; + + + /* 12-keys shift_off (landscape) */ + keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF]; + keyList[KEYMODE_JA_FULL_HIRAGANA][0] = new Keyboard(parent, R.xml.keyboard_12keyjp); + keyList[KEYMODE_JA_FULL_HIRAGANA][1] = new Keyboard(parent, R.xml.keyboard_12keyjp_input); + keyList[KEYMODE_JA_FULL_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet); + keyList[KEYMODE_JA_FULL_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_full_alphabet_input); + keyList[KEYMODE_JA_FULL_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_full_num); + keyList[KEYMODE_JA_FULL_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana); + keyList[KEYMODE_JA_FULL_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_full_katakana_input); + keyList[KEYMODE_JA_HALF_ALPHABET][0] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet); + keyList[KEYMODE_JA_HALF_ALPHABET][1] = new Keyboard(parent, R.xml.keyboard_12key_half_alphabet_input); + keyList[KEYMODE_JA_HALF_NUMBER][0] = new Keyboard(parent, R.xml.keyboard_12key_half_num); + keyList[KEYMODE_JA_HALF_KATAKANA][0] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana); + keyList[KEYMODE_JA_HALF_KATAKANA][1] = new Keyboard(parent, R.xml.keyboard_12key_half_katakana_input); + keyList[KEYMODE_JA_HALF_PHONE][0] = new Keyboard(parent, R.xml.keyboard_12key_phone); + + /* 12-keys shift_on (landscape) */ + keyList = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_ON]; + keyList[KEYMODE_JA_FULL_HIRAGANA] + = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_HIRAGANA]; + keyList[KEYMODE_JA_FULL_ALPHABET] + = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_ALPHABET]; + keyList[KEYMODE_JA_FULL_NUMBER] + = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_NUMBER]; + keyList[KEYMODE_JA_FULL_KATAKANA] + = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_FULL_KATAKANA]; + keyList[KEYMODE_JA_HALF_ALPHABET] + = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_ALPHABET];; + keyList[KEYMODE_JA_HALF_NUMBER] + = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_NUMBER]; + keyList[KEYMODE_JA_HALF_KATAKANA] + = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_KATAKANA]; + keyList[KEYMODE_JA_HALF_PHONE] + = mKeyboard[LANG_JA][LANDSCAPE][KEYBOARD_12KEY][KEYBOARD_SHIFT_OFF][KEYMODE_JA_HALF_PHONE]; + } } /** @@ -1140,13 +1193,19 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { @Override public void setHardKeyboardHidden(boolean hidden) { if (mWnn != null) { if (!hidden) { - mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, - OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY)); + if (mEnableHardware12Keyboard) { + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, + OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY)); + } else { + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, + OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY)); + } } if (mHardKeyboardHidden != hidden) { if ((mLimitedKeyMode != null) - || ((mCurrentKeyMode != KEYMODE_JA_FULL_HIRAGANA) + || (!mEnableHardware12Keyboard + && (mCurrentKeyMode != KEYMODE_JA_FULL_HIRAGANA) && (mCurrentKeyMode != KEYMODE_JA_HALF_ALPHABET))) { mLastInputType = EditorInfo.TYPE_NULL; @@ -1159,6 +1218,22 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { super.setHardKeyboardHidden(hidden); } + /** @see jp.co.omronsoft.openwnn.DefaultSoftKeyboard#setHardware12Keyboard */ + @Override public void setHardware12Keyboard(boolean type12Key) { + if (mWnn != null) { + if (mEnableHardware12Keyboard != type12Key) { + if (type12Key) { + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, + OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_12KEY)); + } else { + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, + OpenWnnJAJP.ENGINE_MODE_OPT_TYPE_QWERTY)); + } + } + } + super.setHardware12Keyboard(type12Key); + } + /** * Change the key-mode to the allowed one which is restricted * by the text input field or the type of the keyboard. @@ -1170,7 +1245,7 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { int[] limits = mLimitedKeyMode; if (!mHardKeyboardHidden) { /* for hardware keyboard */ - if ((targetMode != KEYMODE_JA_FULL_HIRAGANA) + if (!mEnableHardware12Keyboard && (targetMode != KEYMODE_JA_FULL_HIRAGANA) && (targetMode != KEYMODE_JA_HALF_ALPHABET)) { Locale locale = Locale.getDefault(); @@ -1219,4 +1294,98 @@ public class DefaultSoftKeyboardJAJP extends DefaultSoftKeyboard { return targetMode; } + + /** + * Shows input mode choosing dialog. + * + * @return boolean + */ + public boolean showInputModeSwitchDialog() { + BaseInputView baseInputView = (BaseInputView)getCurrentView(); + AlertDialog.Builder builder = new AlertDialog.Builder(baseInputView.getContext()); + builder.setCancelable(true); + builder.setNegativeButton(R.string.dialog_button_cancel, null); + + Resources r = baseInputView.getResources(); + CharSequence itemFullHirakana = r.getString(R.string.ti_input_mode_full_hirakana_title_txt); + CharSequence itemFullKatakana = r.getString(R.string.ti_input_mode_full_katakana_title_txt); + CharSequence itemHalfKatakana = r.getString(R.string.ti_input_mode_half_katakana_title_txt); + CharSequence itemFullAlphabet = r.getString(R.string.ti_input_mode_full_alphabet_title_txt); + CharSequence itemHalfAlphabet = r.getString(R.string.ti_input_mode_half_alphabet_title_txt); + CharSequence itemFullNumber = r.getString(R.string.ti_input_mode_full_number_title_txt); + CharSequence itemHalfNumber = r.getString(R.string.ti_input_mode_half_number_title_txt); + final CharSequence[] itemTitles; + final int[] itemValues; + if (OpenWnn.isXLarge()) { + itemTitles = new CharSequence[] {itemFullHirakana, itemHalfAlphabet, + itemFullNumber, itemHalfNumber}; + itemValues = new int[] {KEYMODE_JA_FULL_HIRAGANA, KEYMODE_JA_HALF_ALPHABET, + KEYMODE_JA_FULL_NUMBER, KEYMODE_JA_HALF_NUMBER}; + } else { + itemTitles = new CharSequence[] {itemFullHirakana, itemFullKatakana, itemHalfKatakana, + itemFullAlphabet, itemHalfAlphabet, itemFullNumber, + itemHalfNumber}; + itemValues = new int[] {KEYMODE_JA_FULL_HIRAGANA, KEYMODE_JA_FULL_KATAKANA, KEYMODE_JA_HALF_KATAKANA, + KEYMODE_JA_FULL_ALPHABET, KEYMODE_JA_HALF_ALPHABET, KEYMODE_JA_FULL_NUMBER, KEYMODE_JA_HALF_NUMBER}; + } + + builder.setSingleChoiceItems(itemTitles, findIndexOfValue(itemValues, + mCurrentKeyMode), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface inputModeSwitchDialog, int position) { + switch(position){ + case 0: + changeKeyMode(itemValues[0]); + break; + + case 1: + changeKeyMode(itemValues[1]); + break; + + case 2: + changeKeyMode(itemValues[2]); + break; + + case 3: + changeKeyMode(itemValues[3]); + break; + + case 4: + changeKeyMode(itemValues[4]); + break; + + case 5: + changeKeyMode(itemValues[5]); + break; + + case 6: + changeKeyMode(itemValues[6]); + break; + + default: + break; + } + inputModeSwitchDialog.dismiss(); + } + }); + + builder.setTitle(r.getString(R.string.ti_long_press_dialog_input_mode_txt)); + baseInputView.showDialog(builder); + return true; + } + + /** + * Finds the index of a value in a int[]. + * + * @param value the int[] to search in, + * @param mode the value need to find index, + * @return the index of the value. + */ + private int findIndexOfValue(int[] value, int mode) { + for (int i = 0; i < value.length; i++) { + if (value[i] == mode) { + return i; + } + } + return -1; + } } diff --git a/src/jp/co/omronsoft/openwnn/JAJP/KanaConverter.java b/src/jp/co/omronsoft/openwnn/JAJP/KanaConverter.java index 05d1199..a6378bb 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/KanaConverter.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/KanaConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/JAJP/KeyboardListPreferenceJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/KeyboardListPreferenceJAJP.java index 2c60599..3c93e0a 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/KeyboardListPreferenceJAJP.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/KeyboardListPreferenceJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnClauseConverterJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnClauseConverterJAJP.java index 7114e52..fb0145f 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnClauseConverterJAJP.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnClauseConverterJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -539,4 +539,4 @@ public class OpenWnnClauseConverterJAJP { private WnnClause defaultClause(String input) { return (new WnnClause(input, input, mPosDefault, (CLAUSE_COST - 1) * input.length())); } -} +}
\ No newline at end of file diff --git a/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnEngineJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnEngineJAJP.java index 1181202..900a4ea 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnEngineJAJP.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/OpenWnnEngineJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,7 +38,7 @@ import android.util.Log; /** * The OpenWnn engine class for Japanese IME. * - * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. + * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. */ public class OpenWnnEngineJAJP implements WnnEngine { /** Current dictionary type */ @@ -78,7 +78,10 @@ public class OpenWnnEngineJAJP implements WnnEngine { public static final int MAX_OUTPUT_LENGTH = 50; /** Limitation of predicted candidates */ public static final int PREDICT_LIMIT = 100; - + + /** Limitation of candidates one-line */ + public static final int LIMIT_OF_CANDIDATES_1LINE = 500; + /** OpenWnn dictionary */ private WnnDictionary mDictionaryJP; diff --git a/src/jp/co/omronsoft/openwnn/JAJP/Romkan.java b/src/jp/co/omronsoft/openwnn/JAJP/Romkan.java index 797b81e..398b589 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/Romkan.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/Romkan.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/JAJP/RomkanFullKatakana.java b/src/jp/co/omronsoft/openwnn/JAJP/RomkanFullKatakana.java index 37fd6ed..d070686 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/RomkanFullKatakana.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/RomkanFullKatakana.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/JAJP/RomkanHalfKatakana.java b/src/jp/co/omronsoft/openwnn/JAJP/RomkanHalfKatakana.java index b119fe8..867caf2 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/RomkanHalfKatakana.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/RomkanHalfKatakana.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/JAJP/TutorialJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/TutorialJAJP.java index edf5ddd..d94f019 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/TutorialJAJP.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/TutorialJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsEditJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsEditJAJP.java index 8966038..45d81cd 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsEditJAJP.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsEditJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsListJAJP.java b/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsListJAJP.java index 87d1e4d..a5c1c63 100644 --- a/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsListJAJP.java +++ b/src/jp/co/omronsoft/openwnn/JAJP/UserDictionaryToolsListJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ package jp.co.omronsoft.openwnn.JAJP; import jp.co.omronsoft.openwnn.*; +import android.os.Bundle; import android.view.View; import android.view.Window; import java.util.Comparator; @@ -36,10 +37,10 @@ public class UserDictionaryToolsListJAJP extends UserDictionaryToolsList { mPackageName = "jp.co.omronsoft.openwnn"; } - /** @see jp.co.omronsoft.openwnn.UserDictionaryToolsList#headerCreate */ - @Override protected void headerCreate() { - getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, - R.layout.user_dictionary_tools_list_header_ja); + /** @see jp.co.omronsoft.iwnnime.ml.UserDictionaryToolsList#onCreate */ + @Override protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setTitle(R.string.user_dictionary_list_words_ja); } /** @see jp.co.omronsoft.openwnn.UserDictionaryToolsList#createUserDictionaryToolsEdit */ diff --git a/src/jp/co/omronsoft/openwnn/KeyAction.java b/src/jp/co/omronsoft/openwnn/KeyAction.java new file mode 100644 index 0000000..b956670 --- /dev/null +++ b/src/jp/co/omronsoft/openwnn/KeyAction.java @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jp.co.omronsoft.openwnn; + +public class KeyAction { + /** KeyDownAction*/ + boolean mConsumeDownEvent; + /** KeyCode*/ + int mKeyCode; +} diff --git a/src/jp/co/omronsoft/openwnn/Keyboard.java b/src/jp/co/omronsoft/openwnn/Keyboard.java new file mode 100644 index 0000000..1f5f648 --- /dev/null +++ b/src/jp/co/omronsoft/openwnn/Keyboard.java @@ -0,0 +1,861 @@ +/* + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * This file is porting from Android framework. + * frameworks/base/core/java/android/inputmethodservice/Keyboard.java + * + * package android.inputmethodservice; + */ +package jp.co.omronsoft.openwnn; + +import android.content.Context; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.content.res.XmlResourceParser; +import android.graphics.drawable.Drawable; +import android.text.TextUtils; +import android.util.Log; +import android.util.TypedValue; +import android.util.Xml; +import android.util.DisplayMetrics; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.StringTokenizer; + +import org.xmlpull.v1.XmlPullParserException; + +/** + * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard + * consists of rows of keys. + * <p>The layout file for a keyboard contains XML that looks like the following snippet:</p> + * <pre> + * <Keyboard + * android:keyWidth="%10p" + * android:keyHeight="50px" + * android:horizontalGap="2px" + * android:verticalGap="2px" > + * <Row android:keyWidth="32px" > + * <Key android:keyLabel="A" /> + * ... + * </Row> + * ... + * </Keyboard> + * </pre> + */ +public class Keyboard { + + static final String TAG = "Keyboard"; + + private static final String TAG_KEYBOARD = "Keyboard"; + private static final String TAG_ROW = "Row"; + private static final String TAG_KEY = "Key"; + + /** Edge of left */ + public static final int EDGE_LEFT = 0x01; + + /** Edge of right */ + public static final int EDGE_RIGHT = 0x02; + + /** Edge of top */ + public static final int EDGE_TOP = 0x04; + + /** Edge of bottom */ + public static final int EDGE_BOTTOM = 0x08; + + /** Keycode of SHIFT */ + public static final int KEYCODE_SHIFT = -1; + + /** Keycode of MODE_CHANGE */ + public static final int KEYCODE_MODE_CHANGE = -2; + + /** Keycode of CANCEL */ + public static final int KEYCODE_CANCEL = -3; + + /** Keycode of DONE */ + public static final int KEYCODE_DONE = -4; + + /** Keycode of DELETE */ + public static final int KEYCODE_DELETE = -5; + + /** Keycode of ALT */ + public static final int KEYCODE_ALT = -6; + + /** Keyboard label **/ + private CharSequence mLabel; + + /** Horizontal gap default for all rows */ + private int mDefaultHorizontalGap; + + /** Default key width */ + private int mDefaultWidth; + + /** Default key height */ + private int mDefaultHeight; + + /** Default gap between rows */ + private int mDefaultVerticalGap; + + /** Is the keyboard in the shifted state */ + private boolean mShifted; + + /** Key instance for the shift key, if present */ + private Key mShiftKey; + + /** Key index for the shift key, if present */ + private int mShiftKeyIndex = -1; + + /** Current key width, while loading the keyboard */ + private int mKeyWidth; + + /** Current key height, while loading the keyboard */ + private int mKeyHeight; + + /** Total height of the keyboard, including the padding and keys */ + private int mTotalHeight; + + /** + * Total width of the keyboard, including left side gaps and keys, but not any gaps on the + * right side. + */ + private int mTotalWidth; + + /** List of keys in this keyboard */ + private List<Key> mKeys; + + /** List of modifier keys such as Shift & Alt, if any */ + private List<Key> mModifierKeys; + + /** Width of the screen available to fit the keyboard */ + private int mDisplayWidth; + + /** Height of the screen */ + private int mDisplayHeight; + + /** Keyboard mode, or zero, if none. */ + private int mKeyboardMode; + + + private static final int GRID_WIDTH = 10; + private static final int GRID_HEIGHT = 5; + private static final int GRID_SIZE = GRID_WIDTH * GRID_HEIGHT; + private int mCellWidth; + private int mCellHeight; + private int[][] mGridNeighbors; + private int mProximityThreshold; + /** Number of key widths from current touch point to search for nearest keys. */ + private static float SEARCH_DISTANCE = 1.8f; + + /** + * Container for keys in the keyboard. All keys in a row are at the same Y-coordinate. + * Some of the key size defaults can be overridden per row from what the {@link Keyboard} + * defines. + */ + public static class Row { + /** Default width of a key in this row. */ + public int defaultWidth; + /** Default height of a key in this row. */ + public int defaultHeight; + /** Default horizontal gap between keys in this row. */ + public int defaultHorizontalGap; + /** Vertical gap following this row. */ + public int verticalGap; + /** + * Edge flags for this row of keys. Possible values that can be assigned are + * {@link Keyboard#EDGE_TOP EDGE_TOP} and {@link Keyboard#EDGE_BOTTOM EDGE_BOTTOM} + */ + public int rowEdgeFlags; + + /** The keyboard mode for this row */ + public int mode; + + private Keyboard parent; + + /** Constructor */ + public Row(Keyboard parent) { + this.parent = parent; + } + + /** Constructor */ + public Row(Resources res, Keyboard parent, XmlResourceParser parser) { + this.parent = parent; + TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), + android.R.styleable.Keyboard); + defaultWidth = getDimensionOrFraction(a, + android.R.styleable.Keyboard_keyWidth, + parent.mDisplayWidth, parent.mDefaultWidth); + defaultHeight = getDimensionOrFraction(a, + android.R.styleable.Keyboard_keyHeight, + parent.mDisplayHeight, parent.mDefaultHeight); + defaultHorizontalGap = getDimensionOrFraction(a, + android.R.styleable.Keyboard_horizontalGap, + parent.mDisplayWidth, parent.mDefaultHorizontalGap); + verticalGap = getDimensionOrFraction(a, + android.R.styleable.Keyboard_verticalGap, + parent.mDisplayHeight, parent.mDefaultVerticalGap); + a.recycle(); + a = res.obtainAttributes(Xml.asAttributeSet(parser), + android.R.styleable.Keyboard_Row); + rowEdgeFlags = a.getInt(android.R.styleable.Keyboard_Row_rowEdgeFlags, 0); + mode = a.getResourceId(android.R.styleable.Keyboard_Row_keyboardMode, + 0); + } + } + + /** + * Class for describing the position and characteristics of a single key in the keyboard. + */ + public static class Key { + /** + * All the key codes (unicode or custom code) that this key could generate, zero'th + * being the most important. + */ + public int[] codes; + + /** Label to display */ + public CharSequence label; + + /** Icon to display instead of a label. Icon takes precedence over a label */ + public Drawable icon; + /** Preview version of the icon, for the preview popup */ + public Drawable iconPreview; + /** Width of the key, not including the gap */ + public int width; + /** Height of the key, not including the gap */ + public int height; + /** The horizontal gap before this key */ + public int gap; + /** Whether this key is sticky, i.e., a toggle key */ + public boolean sticky; + /** X coordinate of the key in the keyboard layout */ + public int x; + /** Y coordinate of the key in the keyboard layout */ + public int y; + /** The current pressed state of this key */ + public boolean pressed; + /** If this is a sticky key, is it on? */ + public boolean on; + /** Text to output when pressed. This can be multiple characters, like ".com" */ + public CharSequence text; + /** Popup characters */ + public CharSequence popupCharacters; + + /** + * Flags that specify the anchoring to edges of the keyboard for detecting touch events + * that are just out of the boundary of the key. This is a bit mask of + * {@link Keyboard#EDGE_LEFT}, {@link Keyboard#EDGE_RIGHT}, {@link Keyboard#EDGE_TOP} and + * {@link Keyboard#EDGE_BOTTOM}. + */ + public int edgeFlags; + /** Whether this is a modifier key, such as Shift or Alt */ + public boolean modifier; + /** The keyboard that this key belongs to */ + private Keyboard keyboard; + /** + * If this key pops up a mini keyboard, this is the resource id for the XML layout for that + * keyboard. + */ + public int popupResId; + /** Whether this key repeats itself when held down */ + public boolean repeatable; + /** Whether this key is 2nd key */ + public boolean isSecondKey; + + private final static int[] KEY_STATE_NORMAL_ON = { + android.R.attr.state_checkable, + android.R.attr.state_checked + }; + + private final static int[] KEY_STATE_PRESSED_ON = { + android.R.attr.state_pressed, + android.R.attr.state_checkable, + android.R.attr.state_checked + }; + + private final static int[] KEY_STATE_NORMAL_OFF = { + android.R.attr.state_checkable + }; + + private final static int[] KEY_STATE_PRESSED_OFF = { + android.R.attr.state_pressed, + android.R.attr.state_checkable + }; + + private final static int[] KEY_STATE_NORMAL = { + }; + + private final static int[] KEY_STATE_PRESSED = { + android.R.attr.state_pressed + }; + + /** Create an empty key with no attributes. */ + public Key(Row parent) { + keyboard = parent.parent; + height = parent.defaultHeight; + width = parent.defaultWidth; + gap = parent.defaultHorizontalGap; + edgeFlags = parent.rowEdgeFlags; + } + + /** Create a key with the given top-left coordinate and extract its attributes from + * the XML parser. + * @param res resources associated with the caller's context + * @param parent the row that this key belongs to. The row must already be attached to + * a {@link Keyboard}. + * @param x the x coordinate of the top-left + * @param y the y coordinate of the top-left + * @param parser the XML parser containing the attributes for this key + */ + public Key(Resources res, Row parent, int x, int y, XmlResourceParser parser) { + this(parent); + + this.x = x; + this.y = y; + + TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), + android.R.styleable.Keyboard); + + width = getDimensionOrFraction(a, + android.R.styleable.Keyboard_keyWidth, + keyboard.mDisplayWidth, parent.defaultWidth); + height = getDimensionOrFraction(a, + android.R.styleable.Keyboard_keyHeight, + keyboard.mDisplayHeight, parent.defaultHeight); + gap = getDimensionOrFraction(a, + android.R.styleable.Keyboard_horizontalGap, + keyboard.mDisplayWidth, parent.defaultHorizontalGap); + a.recycle(); + a = res.obtainAttributes(Xml.asAttributeSet(parser), + android.R.styleable.Keyboard_Key); + this.x += gap; + TypedValue codesValue = new TypedValue(); + a.getValue(android.R.styleable.Keyboard_Key_codes, + codesValue); + if (codesValue.type == TypedValue.TYPE_INT_DEC + || codesValue.type == TypedValue.TYPE_INT_HEX) { + codes = new int[] { codesValue.data }; + } else if (codesValue.type == TypedValue.TYPE_STRING) { + codes = parseCSV(codesValue.string.toString()); + } + + iconPreview = a.getDrawable(android.R.styleable.Keyboard_Key_iconPreview); + if (iconPreview != null) { + iconPreview.setBounds(0, 0, iconPreview.getIntrinsicWidth(), + iconPreview.getIntrinsicHeight()); + } + popupCharacters = a.getText( + android.R.styleable.Keyboard_Key_popupCharacters); + popupResId = a.getResourceId( + android.R.styleable.Keyboard_Key_popupKeyboard, 0); + repeatable = a.getBoolean( + android.R.styleable.Keyboard_Key_isRepeatable, false); + modifier = a.getBoolean( + android.R.styleable.Keyboard_Key_isModifier, false); + sticky = a.getBoolean( + android.R.styleable.Keyboard_Key_isSticky, false); + edgeFlags = a.getInt(android.R.styleable.Keyboard_Key_keyEdgeFlags, 0); + edgeFlags |= parent.rowEdgeFlags; + + icon = a.getDrawable( + android.R.styleable.Keyboard_Key_keyIcon); + if (icon != null) { + icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight()); + } + label = a.getText(android.R.styleable.Keyboard_Key_keyLabel); + text = a.getText(android.R.styleable.Keyboard_Key_keyOutputText); + + if (codes == null && !TextUtils.isEmpty(label)) { + codes = new int[] { label.charAt(0) }; + } + a.recycle(); + a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.WnnKeyboard_Key); + isSecondKey = a.getBoolean(R.styleable.WnnKeyboard_Key_isSecondKey, false); + a.recycle(); + } + + /** + * Informs the key that it has been pressed, in case it needs to change its appearance or + * state. + * @see #onReleased(boolean) + */ + public void onPressed() { + pressed = !pressed; + } + + /** + * Changes the pressed state of the key. If it is a sticky key, it will also change the + * toggled state of the key if the finger was release inside. + * @param inside whether the finger was released inside the key + * @see #onPressed() + */ + public void onReleased(boolean inside) { + pressed = !pressed; + if (sticky) { + on = !on; + } + } + + int[] parseCSV(String value) { + int count = 0; + int lastIndex = 0; + if (value.length() > 0) { + count++; + while ((lastIndex = value.indexOf(",", lastIndex + 1)) > 0) { + count++; + } + } + int[] values = new int[count]; + count = 0; + StringTokenizer st = new StringTokenizer(value, ","); + while (st.hasMoreTokens()) { + try { + values[count++] = Integer.parseInt(st.nextToken()); + } catch (NumberFormatException nfe) { + Log.e(TAG, "Error parsing keycodes " + value); + } + } + return values; + } + + /** + * Detects if a point falls inside this key. + * @param x the x-coordinate of the point + * @param y the y-coordinate of the point + * @return whether or not the point falls inside the key. If the key is attached to an edge, + * it will assume that all points between the key and the edge are considered to be inside + * the key. + */ + public boolean isInside(int x, int y) { + boolean leftEdge = (edgeFlags & EDGE_LEFT) > 0; + boolean rightEdge = (edgeFlags & EDGE_RIGHT) > 0; + boolean topEdge = (edgeFlags & EDGE_TOP) > 0; + boolean bottomEdge = (edgeFlags & EDGE_BOTTOM) > 0; + if ((x >= this.x || (leftEdge && x <= this.x + this.width)) + && (x < this.x + this.width || (rightEdge && x >= this.x)) + && (y >= this.y || (topEdge && y <= this.y + this.height)) + && (y < this.y + this.height || (bottomEdge && y >= this.y))) { + return true; + } else { + return false; + } + } + + /** + * Detects if a area falls inside this key. + * @param x the x-coordinate of the area + * @param y the y-coordinate of the area + * @param w the width of the area + * @param h the height of the area + * @return whether or not the area falls inside the key. + */ + public boolean isInside(int x, int y, int w, int h) { + if ((this.x <= (x + w)) && (x <= (this.x + this.width)) + && (this.y <= (y + h)) && (y <= (this.y + this.height))) { + return true; + } else { + return false; + } + } + + /** + * Returns the square of the distance between the center of the key and the given point. + * @param x the x-coordinate of the point + * @param y the y-coordinate of the point + * @return the square of the distance of the point from the center of the key + */ + public int squaredDistanceFrom(int x, int y) { + int xDist = this.x + width / 2 - x; + int yDist = this.y + height / 2 - y; + return xDist * xDist + yDist * yDist; + } + + /** + * Returns the drawable state for the key, based on the current state and type of the key. + * @return the drawable state of the key. + * @see android.graphics.drawable.StateListDrawable#setState(int[]) + */ + public int[] getCurrentDrawableState() { + int[] states = KEY_STATE_NORMAL; + + if (on) { + if (pressed) { + states = KEY_STATE_PRESSED_ON; + } else { + states = KEY_STATE_NORMAL_ON; + } + } else { + if (sticky) { + if (pressed) { + states = KEY_STATE_PRESSED_OFF; + } else { + states = KEY_STATE_NORMAL_OFF; + } + } else { + if (pressed) { + states = KEY_STATE_PRESSED; + } + } + } + return states; + } + } + + /** + * Creates a keyboard from the given xml key layout file. + * @param context the application or service context + * @param xmlLayoutResId the resource file that contains the keyboard layout and keys. + */ + public Keyboard(Context context, int xmlLayoutResId) { + this(context, xmlLayoutResId, 0); + } + + /** + * Creates a keyboard from the given xml key layout file. Weeds out rows + * that have a keyboard mode defined but don't match the specified mode. + * @param context the application or service context + * @param xmlLayoutResId the resource file that contains the keyboard layout and keys. + * @param modeId keyboard mode identifier + */ + public Keyboard(Context context, int xmlLayoutResId, int modeId) { + DisplayMetrics dm = context.getResources().getDisplayMetrics(); + mDisplayWidth = dm.widthPixels; + mDisplayHeight = dm.heightPixels; + + mDefaultHorizontalGap = 0; + mDefaultWidth = mDisplayWidth / 10; + mDefaultVerticalGap = 0; + mDefaultHeight = mDefaultWidth; + mKeys = new ArrayList<Key>(); + mModifierKeys = new ArrayList<Key>(); + mKeyboardMode = modeId; + loadKeyboard(context, context.getResources().getXml(xmlLayoutResId)); + } + + /** + * <p>Creates a blank keyboard from the given resource file and populates it with the specified + * characters in left-to-right, top-to-bottom fashion, using the specified number of columns. + * </p> + * <p>If the specified number of columns is -1, then the keyboard will fit as many keys as + * possible in each row.</p> + * @param context the application or service context + * @param layoutTemplateResId the layout template file, containing no keys. + * @param characters the list of characters to display on the keyboard. One key will be created + * for each character. + * @param columns the number of columns of keys to display. If this number is greater than the + * number of keys that can fit in a row, it will be ignored. If this number is -1, the + * keyboard will fit as many keys as possible in each row. + */ + public Keyboard(Context context, int layoutTemplateResId, + CharSequence characters, int columns, int horizontalPadding) { + this(context, layoutTemplateResId); + int x = 0; + int y = 0; + int column = 0; + mTotalWidth = 0; + + Row row = new Row(this); + row.defaultHeight = mDefaultHeight; + row.defaultWidth = mDefaultWidth; + row.defaultHorizontalGap = mDefaultHorizontalGap; + row.verticalGap = mDefaultVerticalGap; + row.rowEdgeFlags = EDGE_TOP | EDGE_BOTTOM; + final int maxColumns = columns == -1 ? Integer.MAX_VALUE : columns; + for (int i = 0; i < characters.length(); i++) { + char c = characters.charAt(i); + if (column >= maxColumns + || x + mDefaultWidth + horizontalPadding > mDisplayWidth) { + x = 0; + y += mDefaultVerticalGap + mDefaultHeight; + column = 0; + } + final Key key = new Key(row); + key.x = x; + key.y = y; + key.label = String.valueOf(c); + key.codes = new int[] { c }; + column++; + x += key.width + key.gap; + mKeys.add(key); + if (x > mTotalWidth) { + mTotalWidth = x; + } + } + mTotalHeight = y + mDefaultHeight; + } + + /** + * Get the list of keys in this keyboard. + * + * @return The list of keys. + */ + public List<Key> getKeys() { + return mKeys; + } + + /** + * Get the list of modifier keys such as Shift & Alt, if any. + * + * @return The list of modifier keys. + */ + public List<Key> getModifierKeys() { + return mModifierKeys; + } + + protected int getHorizontalGap() { + return mDefaultHorizontalGap; + } + + protected void setHorizontalGap(int gap) { + mDefaultHorizontalGap = gap; + } + + protected int getVerticalGap() { + return mDefaultVerticalGap; + } + + protected void setVerticalGap(int gap) { + mDefaultVerticalGap = gap; + } + + protected int getKeyHeight() { + return mDefaultHeight; + } + + protected void setKeyHeight(int height) { + mDefaultHeight = height; + } + + protected int getKeyWidth() { + return mDefaultWidth; + } + + protected void setKeyWidth(int width) { + mDefaultWidth = width; + } + + /** + * Returns the total height of the keyboard + * @return the total height of the keyboard + */ + public int getHeight() { + return mTotalHeight; + } + + /** + * Returns the total minimum width of the keyboard + * @return the total minimum width of the keyboard + */ + public int getMinWidth() { + return mTotalWidth; + } + + /** + * Sets the keyboard to be shifted. + * + * @param shiftState the keyboard shift state. + * @return {@code true} if shift state changed. + */ + public boolean setShifted(boolean shiftState) { + if (mShiftKey != null) { + mShiftKey.on = shiftState; + } + if (mShifted != shiftState) { + mShifted = shiftState; + return true; + } + return false; + } + + /** + * Returns whether keyboard is shift state or not. + * + * @return {@code true} if keyboard is shift state; otherwise, {@code false}. + */ + public boolean isShifted() { + return mShifted; + } + + /** + * Returns the shift key index. + * + * @return the shift key index. + */ + public int getShiftKeyIndex() { + return mShiftKeyIndex; + } + + private void computeNearestNeighbors() { + mCellWidth = (getMinWidth() + GRID_WIDTH - 1) / GRID_WIDTH; + mCellHeight = (getHeight() + GRID_HEIGHT - 1) / GRID_HEIGHT; + mGridNeighbors = new int[GRID_SIZE][]; + int[] indices = new int[mKeys.size()]; + final int gridWidth = GRID_WIDTH * mCellWidth; + final int gridHeight = GRID_HEIGHT * mCellHeight; + for (int x = 0; x < gridWidth; x += mCellWidth) { + for (int y = 0; y < gridHeight; y += mCellHeight) { + int count = 0; + for (int i = 0; i < mKeys.size(); i++) { + final Key key = mKeys.get(i); + if (key.squaredDistanceFrom(x, y) < mProximityThreshold || + key.squaredDistanceFrom(x + mCellWidth - 1, y) < mProximityThreshold || + key.squaredDistanceFrom(x + mCellWidth - 1, y + mCellHeight - 1) + < mProximityThreshold || + key.squaredDistanceFrom(x, y + mCellHeight - 1) < mProximityThreshold || + key.isInside(x, y, mCellWidth, mCellHeight)) { + indices[count++] = i; + } + } + int [] cell = new int[count]; + System.arraycopy(indices, 0, cell, 0, count); + mGridNeighbors[(y / mCellHeight) * GRID_WIDTH + (x / mCellWidth)] = cell; + } + } + } + + /** + * Returns the indices of the keys that are closest to the given point. + * @param x the x-coordinate of the point + * @param y the y-coordinate of the point + * @return the array of integer indices for the nearest keys to the given point. If the given + * point is out of range, then an array of size zero is returned. + */ + public int[] getNearestKeys(int x, int y) { + if (mGridNeighbors == null) computeNearestNeighbors(); + if (x >= 0 && x < getMinWidth() && y >= 0 && y < getHeight()) { + int index = (y / mCellHeight) * GRID_WIDTH + (x / mCellWidth); + if (index < GRID_SIZE) { + return mGridNeighbors[index]; + } + } + return new int[0]; + } + + protected Row createRowFromXml(Resources res, XmlResourceParser parser) { + return new Row(res, this, parser); + } + + protected Key createKeyFromXml(Resources res, Row parent, int x, int y, + XmlResourceParser parser) { + return new Key(res, parent, x, y, parser); + } + + private void loadKeyboard(Context context, XmlResourceParser parser) { + boolean inKey = false; + boolean inRow = false; + boolean leftMostKey = false; + int row = 0; + int x = 0; + int y = 0; + Key key = null; + Row currentRow = null; + Resources res = context.getResources(); + boolean skipRow = false; + + try { + int event; + while ((event = parser.next()) != XmlResourceParser.END_DOCUMENT) { + if (event == XmlResourceParser.START_TAG) { + String tag = parser.getName(); + if (TAG_ROW.equals(tag)) { + inRow = true; + x = 0; + currentRow = createRowFromXml(res, parser); + skipRow = currentRow.mode != 0 && currentRow.mode != mKeyboardMode; + if (skipRow) { + skipToEndOfRow(parser); + inRow = false; + } + } else if (TAG_KEY.equals(tag)) { + inKey = true; + key = createKeyFromXml(res, currentRow, x, y, parser); + mKeys.add(key); + if (key.codes[0] == KEYCODE_SHIFT) { + mShiftKey = key; + mShiftKeyIndex = mKeys.size()-1; + mModifierKeys.add(key); + } else if (key.codes[0] == KEYCODE_ALT) { + mModifierKeys.add(key); + } + } else if (TAG_KEYBOARD.equals(tag)) { + parseKeyboardAttributes(res, parser); + } + } else if (event == XmlResourceParser.END_TAG) { + if (inKey) { + inKey = false; + x += key.gap + key.width; + if (x > mTotalWidth) { + mTotalWidth = x; + } + } else if (inRow) { + inRow = false; + y += currentRow.verticalGap; + y += currentRow.defaultHeight; + row++; + } else { + } + } + } + } catch (Exception e) { + Log.e(TAG, "Parse error:" + e); + e.printStackTrace(); + } + mTotalHeight = y - mDefaultVerticalGap; + } + + private void skipToEndOfRow(XmlResourceParser parser) + throws XmlPullParserException, IOException { + int event; + while ((event = parser.next()) != XmlResourceParser.END_DOCUMENT) { + if (event == XmlResourceParser.END_TAG + && parser.getName().equals(TAG_ROW)) { + break; + } + } + } + + private void parseKeyboardAttributes(Resources res, XmlResourceParser parser) { + TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), + android.R.styleable.Keyboard); + + mDefaultWidth = getDimensionOrFraction(a, + android.R.styleable.Keyboard_keyWidth, + mDisplayWidth, mDisplayWidth / 10); + mDefaultHeight = getDimensionOrFraction(a, + android.R.styleable.Keyboard_keyHeight, + mDisplayHeight, 75); + mDefaultHorizontalGap = getDimensionOrFraction(a, + android.R.styleable.Keyboard_horizontalGap, + mDisplayWidth, 0); + mDefaultVerticalGap = getDimensionOrFraction(a, + android.R.styleable.Keyboard_verticalGap, + mDisplayHeight, 0); + mProximityThreshold = (int) (mDefaultWidth * SEARCH_DISTANCE); + mProximityThreshold = mProximityThreshold * mProximityThreshold; + a.recycle(); + } + + static int getDimensionOrFraction(TypedArray a, int index, int base, int defValue) { + TypedValue value = a.peekValue(index); + if (value == null) return defValue; + if (value.type == TypedValue.TYPE_DIMENSION) { + return a.getDimensionPixelOffset(index, defValue); + } else if (value.type == TypedValue.TYPE_FRACTION) { + return Math.round(a.getFraction(index, base, base, defValue)); + } + return defValue; + } +} diff --git a/src/jp/co/omronsoft/openwnn/KeyboardView.java b/src/jp/co/omronsoft/openwnn/KeyboardView.java new file mode 100644 index 0000000..ebacaea --- /dev/null +++ b/src/jp/co/omronsoft/openwnn/KeyboardView.java @@ -0,0 +1,1517 @@ +/* + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* This file is porting from Android framework. + * frameworks/base/core/java/android/inputmethodservice/KeyboardView.java + * + *package android.inputmethodservice; + */ + +package jp.co.omronsoft.openwnn; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.Rect; +import android.graphics.Typeface; +import android.graphics.Paint.Align; +import android.graphics.Region.Op; +import android.graphics.drawable.Drawable; +import android.os.Handler; +import android.os.Message; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.GestureDetector; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewConfiguration; +import android.view.ViewGroup.LayoutParams; +import android.widget.PopupWindow; +import android.widget.TextView; + +import jp.co.omronsoft.openwnn.Keyboard; +import jp.co.omronsoft.openwnn.Keyboard.Key; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * A view that renders a virtual {@link Keyboard}. It handles rendering of keys and + * detecting key presses and touch movements. + */ +public class KeyboardView extends View implements View.OnClickListener { + + /** + * Listener for virtual keyboard events. + */ + public interface OnKeyboardActionListener { + + /** + * Called when the user presses a key. This is sent before the {@link #onKey} is called. + * For keys that repeat, this is only called once. + * @param primaryCode the unicode of the key being pressed. If the touch is not on a valid + * key, the value will be zero. + */ + void onPress(int primaryCode); + + /** + * Called when the user releases a key. This is sent after the {@link #onKey} is called. + * For keys that repeat, this is only called once. + * @param primaryCode the code of the key that was released + */ + void onRelease(int primaryCode); + + /** + * Send a key press to the listener. + * @param primaryCode this is the key that was pressed + * @param keyCodes the codes for all the possible alternative keys + * with the primary code being the first. If the primary key code is + * a single character such as an alphabet or number or symbol, the alternatives + * will include other characters that may be on the same key or adjacent keys. + * These codes are useful to correct for accidental presses of a key adjacent to + * the intended key. + */ + void onKey(int primaryCode, int[] keyCodes); + + /** + * Sends a sequence of characters to the listener. + * @param text the sequence of characters to be displayed. + */ + void onText(CharSequence text); + + /** + * Called when the user quickly moves the finger from right to left. + */ + void swipeLeft(); + + /** + * Called when the user quickly moves the finger from left to right. + */ + void swipeRight(); + + /** + * Called when the user quickly moves the finger from up to down. + */ + void swipeDown(); + + /** + * Called when the user quickly moves the finger from down to up. + */ + void swipeUp(); + + /** + * Called when the user long presses a key. + * @param popupKey the key that was long pressed + * @return true if the long press is handled, false otherwise. + */ + boolean onLongPress(Keyboard.Key key); + } + + private static final int NOT_A_KEY = -1; + private static final int[] KEY_DELETE = { Keyboard.KEYCODE_DELETE }; + private static final int[] LONG_PRESSABLE_STATE_SET = { + android.R.attr.state_long_pressable + }; + + private Keyboard mKeyboard; + private int mCurrentKeyIndex = NOT_A_KEY; + private int mLabelTextSize; + private int mKeyTextSize; + private int mKeyTextColor; + private int mKeyTextColor2nd; + private float mShadowRadius; + private int mShadowColor; + private float mBackgroundDimAmount; + + private TextView mPreviewText; + private PopupWindow mPreviewPopup; + private int mPreviewTextSizeLarge; + private int mPreviewOffset; + private int mPreviewHeight; + private int[] mOffsetInWindow; + + private PopupWindow mPopupKeyboard; + private View mMiniKeyboardContainer; + private KeyboardView mMiniKeyboard; + private boolean mMiniKeyboardOnScreen; + private View mPopupParent; + private int mMiniKeyboardOffsetX; + private int mMiniKeyboardOffsetY; + private Map<Key,View> mMiniKeyboardCache; + private int[] mWindowOffset; + private Key[] mKeys; + + /** Listener for {@link OnKeyboardActionListener}. */ + private OnKeyboardActionListener mKeyboardActionListener; + + private static final int MSG_SHOW_PREVIEW = 1; + private static final int MSG_REMOVE_PREVIEW = 2; + private static final int MSG_REPEAT = 3; + private static final int MSG_LONGPRESS = 4; + + private static final int DELAY_BEFORE_PREVIEW = 0; + private static final int DELAY_AFTER_PREVIEW = 70; + private static final int DEBOUNCE_TIME = 70; + + private int mVerticalCorrection; + private int mProximityThreshold; + + private boolean mPreviewCentered = false; + private boolean mShowPreview = true; + private boolean mShowTouchPoints = true; + private int mPopupPreviewX; + private int mPopupPreviewY; + private int mWindowY; + + private int mLastX; + private int mLastY; + private int mStartX; + private int mStartY; + + private boolean mProximityCorrectOn; + + private Paint mPaint; + private Rect mPadding; + + private long mDownTime; + private long mLastMoveTime; + private int mLastKey; + private int mLastCodeX; + private int mLastCodeY; + private int mCurrentKey = NOT_A_KEY; + private int mDownKey = NOT_A_KEY; + private long mLastKeyTime; + private long mCurrentKeyTime; + private int[] mKeyIndices = new int[12]; + private GestureDetector mGestureDetector; + private int mPopupX; + private int mPopupY; + private int mRepeatKeyIndex = NOT_A_KEY; + private int mPopupLayout; + private boolean mAbortKey; + private Key mInvalidatedKey; + private Rect mClipRegion = new Rect(0, 0, 0, 0); + private boolean mPossiblePoly; + private SwipeTracker mSwipeTracker = new SwipeTracker(); + private int mSwipeThreshold; + private boolean mDisambiguateSwipe; + + private int mOldPointerCount = 1; + private float mOldPointerX; + private float mOldPointerY; + + private Drawable mKeyBackground; + private Drawable mKeyBackground2nd; + + private static final int REPEAT_INTERVAL = 50; + private static final int REPEAT_START_DELAY = 400; + private static final int LONGPRESS_TIMEOUT = ViewConfiguration.getLongPressTimeout(); + + private static int MAX_NEARBY_KEYS = 12; + private int[] mDistances = new int[MAX_NEARBY_KEYS]; + + private int mLastSentIndex; + private int mTapCount; + private long mLastTapTime; + private boolean mInMultiTap; + private static final int MULTITAP_INTERVAL = 800; + private StringBuilder mPreviewLabel = new StringBuilder(1); + + /** Whether the keyboard bitmap needs to be redrawn before it's blitted. **/ + private boolean mDrawPending; + /** The dirty region in the keyboard bitmap */ + private Rect mDirtyRect = new Rect(); + /** The keyboard bitmap for faster updates */ + private Bitmap mBuffer; + /** Notes if the keyboard just changed, so that we could possibly reallocate the mBuffer. */ + private boolean mKeyboardChanged; + /** The canvas for the above mutable keyboard bitmap */ + private Canvas mCanvas; + + Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_SHOW_PREVIEW: + showKey(msg.arg1); + break; + case MSG_REMOVE_PREVIEW: + mPreviewText.setVisibility(INVISIBLE); + break; + case MSG_REPEAT: + if (repeatKey()) { + Message repeat = Message.obtain(this, MSG_REPEAT); + sendMessageDelayed(repeat, REPEAT_INTERVAL); + } + break; + case MSG_LONGPRESS: + openPopupIfRequired((MotionEvent) msg.obj); + break; + } + } + }; + + /** Constructor */ + public KeyboardView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + /** Constructor */ + public KeyboardView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + TypedArray a = + context.obtainStyledAttributes( + attrs, android.R.styleable.KeyboardView, defStyle, R.style.WnnKeyboardView); + + LayoutInflater inflate = + (LayoutInflater) context + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + + int previewLayout = 0; + int keyTextSize = 0; + + int n = a.getIndexCount(); + + for (int i = 0; i < n; i++) { + int attr = a.getIndex(i); + + switch (attr) { + case android.R.styleable.KeyboardView_keyBackground: + mKeyBackground = a.getDrawable(attr); + break; + case android.R.styleable.KeyboardView_verticalCorrection: + mVerticalCorrection = a.getDimensionPixelOffset(attr, 0); + break; + case android.R.styleable.KeyboardView_keyPreviewLayout: + previewLayout = a.getResourceId(attr, 0); + break; + case android.R.styleable.KeyboardView_keyPreviewOffset: + mPreviewOffset = a.getDimensionPixelOffset(attr, 0); + break; + case android.R.styleable.KeyboardView_keyPreviewHeight: + mPreviewHeight = a.getDimensionPixelSize(attr, 80); + break; + case android.R.styleable.KeyboardView_keyTextSize: + mKeyTextSize = a.getDimensionPixelSize(attr, 18); + break; + case android.R.styleable.KeyboardView_keyTextColor: + mKeyTextColor = a.getColor(attr, 0xFF000000); + break; + case android.R.styleable.KeyboardView_labelTextSize: + mLabelTextSize = a.getDimensionPixelSize(attr, 14); + break; + case android.R.styleable.KeyboardView_popupLayout: + mPopupLayout = a.getResourceId(attr, 0); + break; + case android.R.styleable.KeyboardView_shadowColor: + mShadowColor = a.getColor(attr, 0); + break; + case android.R.styleable.KeyboardView_shadowRadius: + mShadowRadius = a.getFloat(attr, 0f); + break; + } + } + + a.recycle(); + a = context.obtainStyledAttributes(attrs, R.styleable.WnnKeyboardView, 0, 0); + mKeyBackground2nd = a.getDrawable(R.styleable.WnnKeyboardView_keyBackground2nd); + mKeyTextColor2nd = a.getColor(R.styleable.WnnKeyboardView_keyTextColor2nd, 0xFF000000); + + a.recycle(); + a = mContext.obtainStyledAttributes( + android.R.styleable.Theme); + mBackgroundDimAmount = a.getFloat(android.R.styleable.Theme_backgroundDimAmount, 0.5f); + + mPreviewPopup = new PopupWindow(context); + if (previewLayout != 0) { + mPreviewText = (TextView) inflate.inflate(previewLayout, null); + mPreviewTextSizeLarge = (int) mPreviewText.getTextSize(); + mPreviewPopup.setContentView(mPreviewText); + mPreviewPopup.setBackgroundDrawable(null); + } else { + mShowPreview = false; + } + + mPreviewPopup.setTouchable(false); + + mPopupKeyboard = new PopupWindow(context); + mPopupKeyboard.setBackgroundDrawable(null); + + mPopupParent = this; + + mPaint = new Paint(); + mPaint.setAntiAlias(true); + mPaint.setTextSize(keyTextSize); + mPaint.setTextAlign(Align.CENTER); + mPaint.setAlpha(255); + + mPadding = new Rect(0, 0, 0, 0); + mMiniKeyboardCache = new HashMap<Key,View>(); + mKeyBackground.getPadding(mPadding); + + mSwipeThreshold = (int) (500 * getResources().getDisplayMetrics().density); + + mDisambiguateSwipe = true; + + resetMultiTap(); + initGestureDetector(); + } + + private void initGestureDetector() { + mGestureDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() { + @Override + public boolean onFling(MotionEvent me1, MotionEvent me2, + float velocityX, float velocityY) { + if (mPossiblePoly) return false; + final float absX = Math.abs(velocityX); + final float absY = Math.abs(velocityY); + float deltaX = me2.getX() - me1.getX(); + float deltaY = me2.getY() - me1.getY(); + int travelX = getWidth() / 2; + int travelY = getHeight() / 2; + mSwipeTracker.computeCurrentVelocity(1000); + final float endingVelocityX = mSwipeTracker.getXVelocity(); + final float endingVelocityY = mSwipeTracker.getYVelocity(); + boolean sendDownKey = false; + if (velocityX > mSwipeThreshold && absY < absX && deltaX > travelX) { + if (mDisambiguateSwipe && endingVelocityX < velocityX / 4) { + sendDownKey = true; + } else { + swipeRight(); + return true; + } + } else if (velocityX < -mSwipeThreshold && absY < absX && deltaX < -travelX) { + if (mDisambiguateSwipe && endingVelocityX > velocityX / 4) { + sendDownKey = true; + } else { + swipeLeft(); + return true; + } + } else if (velocityY < -mSwipeThreshold && absX < absY && deltaY < -travelY) { + if (mDisambiguateSwipe && endingVelocityY > velocityY / 4) { + sendDownKey = true; + } else { + swipeUp(); + return true; + } + } else if (velocityY > mSwipeThreshold && absX < absY / 2 && deltaY > travelY) { + if (mDisambiguateSwipe && endingVelocityY < velocityY / 4) { + sendDownKey = true; + } else { + swipeDown(); + return true; + } + } + + if (sendDownKey) { + detectAndSendKey(mDownKey, mStartX, mStartY, me1.getEventTime()); + } + return false; + } + }); + + mGestureDetector.setIsLongpressEnabled(false); + } + + /** + * Set the {@link OnKeyboardActionListener} object. + * @param listener The OnKeyboardActionListener to set. + */ + public void setOnKeyboardActionListener(OnKeyboardActionListener listener) { + mKeyboardActionListener = listener; + } + + /** + * Returns the {@link OnKeyboardActionListener} object. + * @return the listener attached to this keyboard + */ + protected OnKeyboardActionListener getOnKeyboardActionListener() { + return mKeyboardActionListener; + } + + /** + * Attaches a keyboard to this view. The keyboard can be switched at any time and the + * view will re-layout itself to accommodate the keyboard. + * @see Keyboard + * @see #getKeyboard() + * @param keyboard the keyboard to display in this view + */ + public void setKeyboard(Keyboard keyboard) { + if (!keyboard.equals(mKeyboard)) { + clearWindowInfo(); + } + int oldRepeatKeyCode = NOT_A_KEY; + if (mKeyboard != null) { + showPreview(NOT_A_KEY); + if ((mRepeatKeyIndex != NOT_A_KEY) && (mRepeatKeyIndex < mKeys.length)) { + oldRepeatKeyCode = mKeys[mRepeatKeyIndex].codes[0]; + } + } + removeMessages(); + mKeyboard = keyboard; + List<Key> keys = mKeyboard.getKeys(); + mKeys = keys.toArray(new Key[keys.size()]); + requestLayout(); + mKeyboardChanged = true; + invalidateAllKeys(); + computeProximityThreshold(keyboard); + mMiniKeyboardCache.clear(); + boolean abort = true; + if (oldRepeatKeyCode != NOT_A_KEY) { + int keyIndex = getKeyIndices(mStartX, mStartY, null); + if ((keyIndex != NOT_A_KEY) + && (keyIndex < mKeys.length) + && (oldRepeatKeyCode == mKeys[keyIndex].codes[0])) { + abort = false; + mRepeatKeyIndex = keyIndex; + } + } + if (abort) { + mHandler.removeMessages(MSG_REPEAT); + } + mAbortKey = abort; + } + + /** + * Returns the current keyboard being displayed by this view. + * @return the currently attached keyboard + * @see #setKeyboard(Keyboard) + */ + public Keyboard getKeyboard() { + return mKeyboard; + } + + /** + * Sets the state of the shift key of the keyboard, if any. + * @param shifted whether or not to enable the state of the shift key + * @return true if the shift key state changed, false if there was no change + * @see KeyboardView#isShifted() + */ + public boolean setShifted(boolean shifted) { + if (mKeyboard != null) { + if (mKeyboard.setShifted(shifted)) { + invalidateAllKeys(); + return true; + } + } + return false; + } + + /** + * Returns the state of the shift key of the keyboard, if any. + * @return true if the shift is in a pressed state, false otherwise. If there is + * no shift key on the keyboard or there is no keyboard attached, it returns false. + * @see KeyboardView#setShifted(boolean) + */ + public boolean isShifted() { + if (mKeyboard != null) { + return mKeyboard.isShifted(); + } + return false; + } + + /** + * Enables or disables the key feedback popup. This is a popup that shows a magnified + * version of the depressed key. By default the preview is enabled. + * @param previewEnabled whether or not to enable the key feedback popup + * @see #isPreviewEnabled() + */ + public void setPreviewEnabled(boolean previewEnabled) { + mShowPreview = previewEnabled; + } + + /** + * Returns the enabled state of the key feedback popup. + * @return whether or not the key feedback popup is enabled + * @see #setPreviewEnabled(boolean) + */ + public boolean isPreviewEnabled() { + return mShowPreview; + } + + /** + * Returns the root parent has the enabled state of the key feedback popup. + * @return whether or not the key feedback popup is enabled + * @see #setPreviewEnabled(boolean) + */ + public boolean isParentPreviewEnabled() { + if ((mPopupParent != null) && (mPopupParent != this) + && (mPopupParent instanceof KeyboardView)) { + return ((KeyboardView)mPopupParent).isParentPreviewEnabled(); + } else { + return mShowPreview; + } + } + + public void setVerticalCorrection(int verticalOffset) { + + } + + /** + * Set View on the PopupParent. + * @param v The View to set. + */ + public void setPopupParent(View v) { + mPopupParent = v; + } + + /** + * Set parameters on the KeyboardOffset. + * @param x The value of KeyboardOffset. + * @param y The value of KeyboardOffset. + */ + public void setPopupOffset(int x, int y) { + mMiniKeyboardOffsetX = x; + mMiniKeyboardOffsetY = y; + if (mPreviewPopup.isShowing()) { + mPreviewPopup.dismiss(); + } + } + + /** + * When enabled, calls to {@link OnKeyboardActionListener#onKey} will include key + * codes for adjacent keys. When disabled, only the primary key code will be + * reported. + * @param enabled whether or not the proximity correction is enabled + */ + public void setProximityCorrectionEnabled(boolean enabled) { + mProximityCorrectOn = enabled; + } + + /** + * Returns true if proximity correction is enabled. + */ + public boolean isProximityCorrectionEnabled() { + return mProximityCorrectOn; + } + + /** + * Popup keyboard close button clicked. + * @hide + */ + public void onClick(View v) { + dismissPopupKeyboard(); + } + + private CharSequence adjustCase(CharSequence label) { + if (mKeyboard.isShifted() && label != null && label.length() < 3 + && Character.isLowerCase(label.charAt(0))) { + label = label.toString().toUpperCase(); + } + return label; + } + + @Override + public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (mKeyboard == null) { + setMeasuredDimension(mPaddingLeft + mPaddingRight, mPaddingTop + mPaddingBottom); + } else { + int width = mKeyboard.getMinWidth() + mPaddingLeft + mPaddingRight; + if (MeasureSpec.getSize(widthMeasureSpec) < width + 10) { + width = MeasureSpec.getSize(widthMeasureSpec); + } + setMeasuredDimension(width, mKeyboard.getHeight() + mPaddingTop + mPaddingBottom); + } + } + + /** + * Compute the average distance between adjacent keys (horizontally and vertically) + * and square it to get the proximity threshold. We use a square here and in computing + * the touch distance from a key's center to avoid taking a square root. + * @param keyboard + */ + private void computeProximityThreshold(Keyboard keyboard) { + if (keyboard == null) return; + final Key[] keys = mKeys; + if (keys == null) return; + int length = keys.length; + int dimensionSum = 0; + for (int i = 0; i < length; i++) { + Key key = keys[i]; + dimensionSum += Math.min(key.width, key.height) + key.gap; + } + if (dimensionSum < 0 || length == 0) return; + mProximityThreshold = (int) (dimensionSum * 1.4f / length); + mProximityThreshold *= mProximityThreshold; + } + + @Override + public void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + mBuffer = null; + } + + @Override + public void onDraw(Canvas canvas) { + super.onDraw(canvas); + if (mDrawPending || mBuffer == null || mKeyboardChanged) { + onBufferDraw(); + } + canvas.drawBitmap(mBuffer, 0, 0, null); + } + + private void onBufferDraw() { + boolean isBufferNull = (mBuffer == null); + if (isBufferNull || mKeyboardChanged) { + if (isBufferNull || mKeyboardChanged && + (mBuffer.getWidth() != getWidth() || mBuffer.getHeight() != getHeight())) { + final int width = Math.max(1, getWidth()); + final int height = Math.max(1, getHeight()); + mBuffer = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + mCanvas = new Canvas(mBuffer); + } + invalidateAllKeys(); + mKeyboardChanged = false; + } + final Canvas canvas = mCanvas; + canvas.clipRect(mDirtyRect, Op.REPLACE); + + if (mKeyboard == null) return; + + final Paint paint = mPaint; + final Rect clipRegion = mClipRegion; + final Rect padding = mPadding; + final int kbdPaddingLeft = mPaddingLeft; + final int kbdPaddingTop = mPaddingTop; + final Key[] keys = mKeys; + final Key invalidKey = mInvalidatedKey; + + paint.setColor(mKeyTextColor); + boolean drawSingleKey = false; + if (invalidKey != null && canvas.getClipBounds(clipRegion)) { + if (invalidKey.x + kbdPaddingLeft - 1 <= clipRegion.left && + invalidKey.y + kbdPaddingTop - 1 <= clipRegion.top && + invalidKey.x + invalidKey.width + kbdPaddingLeft + 1 >= clipRegion.right && + invalidKey.y + invalidKey.height + kbdPaddingTop + 1 >= clipRegion.bottom) { + drawSingleKey = true; + } + } + canvas.drawColor(0x00000000, PorterDuff.Mode.CLEAR); + final int keyCount = keys.length; + for (int i = 0; i < keyCount; i++) { + final Key key = keys[i]; + if (drawSingleKey && invalidKey != key) { + continue; + } + + paint.setColor(key.isSecondKey ? mKeyTextColor2nd : mKeyTextColor); + Drawable keyBackground = key.isSecondKey ? mKeyBackground2nd : mKeyBackground; + int[] drawableState = key.getCurrentDrawableState(); + keyBackground.setState(drawableState); + + String label = key.label == null? null : adjustCase(key.label).toString(); + + final Rect bounds = keyBackground.getBounds(); + if (key.width != bounds.right || + key.height != bounds.bottom) { + keyBackground.setBounds(0, 0, key.width, key.height); + } + canvas.translate(key.x + kbdPaddingLeft, key.y + kbdPaddingTop); + keyBackground.draw(canvas); + + if (label != null) { + if (OpenWnn.isXLarge()) { + if (label.length() > 1 && key.codes.length < 2) { + paint.setTextSize(mLabelTextSize); + paint.setTypeface(Typeface.DEFAULT); + } else { + paint.setTextSize(mKeyTextSize); + paint.setTypeface(Typeface.DEFAULT_BOLD); + } + } else { + if (label.length() > 1 && key.codes.length < 2) { + paint.setTextSize(mLabelTextSize); + paint.setTypeface(Typeface.DEFAULT_BOLD); + } else { + paint.setTextSize(mKeyTextSize); + paint.setTypeface(Typeface.DEFAULT_BOLD); + } + } + paint.setShadowLayer(mShadowRadius, 0, 0, mShadowColor); + if (OpenWnn.isXLarge()) { + canvas.drawText(label, + (key.width - padding.left + 7 - padding.right) / 2 + + padding.left, + (key.height - padding.top + 7 - padding.bottom) / 2 + + (paint.getTextSize() - paint.descent()) / 2 + padding.top, + paint); + } else { + canvas.drawText(label, + (key.width - padding.left - padding.right) / 2 + + padding.left, + (key.height - padding.top - padding.bottom) / 2 + + (paint.getTextSize() - paint.descent()) / 2 + padding.top, + paint); + } + paint.setShadowLayer(0, 0, 0, 0); + } else if (key.icon != null) { + int drawableX; + int drawableY; + if (OpenWnn.isXLarge()) { + drawableX = (key.width - padding.left + 12 - padding.right + - key.icon.getIntrinsicWidth()) / 2 + padding.left; + drawableY = (key.height - padding.top + 9 - padding.bottom + - key.icon.getIntrinsicHeight()) / 2 + padding.top; + } else { + drawableX = (key.width - padding.left - padding.right + - key.icon.getIntrinsicWidth()) / 2 + padding.left; + drawableY = (key.height - padding.top - padding.bottom + - key.icon.getIntrinsicHeight()) / 2 + padding.top; + } + canvas.translate(drawableX, drawableY); + key.icon.setBounds(0, 0, + key.icon.getIntrinsicWidth(), key.icon.getIntrinsicHeight()); + key.icon.draw(canvas); + canvas.translate(-drawableX, -drawableY); + } + canvas.translate(-key.x - kbdPaddingLeft, -key.y - kbdPaddingTop); + } + mInvalidatedKey = null; + if (mMiniKeyboardOnScreen) { + paint.setColor((int) (mBackgroundDimAmount * 0xFF) << 24); + canvas.drawRect(0, 0, getWidth(), getHeight(), paint); + } + + mDrawPending = false; + mDirtyRect.setEmpty(); + } + + private int getKeyIndices(int x, int y, int[] allKeys) { + final Key[] keys = mKeys; + int primaryIndex = NOT_A_KEY; + int closestKey = NOT_A_KEY; + int closestKeyDist = mProximityThreshold + 1; + java.util.Arrays.fill(mDistances, Integer.MAX_VALUE); + int [] nearestKeyIndices = mKeyboard.getNearestKeys(x, y); + final int keyCount = nearestKeyIndices.length; + for (int i = 0; i < keyCount; i++) { + final Key key = keys[nearestKeyIndices[i]]; + int dist = 0; + boolean isInside = key.isInside(x,y); + if (isInside) { + primaryIndex = nearestKeyIndices[i]; + } + + if (((mProximityCorrectOn + && (dist = key.squaredDistanceFrom(x, y)) < mProximityThreshold) + || isInside) + && key.codes[0] > 32) { + final int nCodes = key.codes.length; + if (dist < closestKeyDist) { + closestKeyDist = dist; + closestKey = nearestKeyIndices[i]; + } + + if (allKeys == null) continue; + + for (int j = 0; j < mDistances.length; j++) { + if (mDistances[j] > dist) { + System.arraycopy(mDistances, j, mDistances, j + nCodes, + mDistances.length - j - nCodes); + System.arraycopy(allKeys, j, allKeys, j + nCodes, + allKeys.length - j - nCodes); + for (int c = 0; c < nCodes; c++) { + allKeys[j + c] = key.codes[c]; + mDistances[j + c] = dist; + } + break; + } + } + } + } + if (primaryIndex == NOT_A_KEY) { + primaryIndex = closestKey; + } + return primaryIndex; + } + + private void detectAndSendKey(int index, int x, int y, long eventTime) { + if (index != NOT_A_KEY && index < mKeys.length) { + final Key key = mKeys[index]; + if (key.text != null) { + mKeyboardActionListener.onText(key.text); + mKeyboardActionListener.onRelease(NOT_A_KEY); + } else { + int code = key.codes[0]; + int[] codes = new int[MAX_NEARBY_KEYS]; + Arrays.fill(codes, NOT_A_KEY); + getKeyIndices(x, y, codes); + if (mInMultiTap) { + if (mTapCount != -1) { + mKeyboardActionListener.onKey(Keyboard.KEYCODE_DELETE, KEY_DELETE); + } else { + mTapCount = 0; + } + code = key.codes[mTapCount]; + } + mKeyboardActionListener.onKey(code, codes); + mKeyboardActionListener.onRelease(code); + } + mLastSentIndex = index; + mLastTapTime = eventTime; + } + } + + /** + * Handle multi-tap keys by producing the key label for the current multi-tap state. + */ + private CharSequence getPreviewText(Key key) { + if (mInMultiTap) { + mPreviewLabel.setLength(0); + mPreviewLabel.append((char) key.codes[mTapCount < 0 ? 0 : mTapCount]); + return adjustCase(mPreviewLabel); + } else { + return adjustCase(key.label); + } + } + + private void showPreview(int keyIndex) { + int oldKeyIndex = mCurrentKeyIndex; + final PopupWindow previewPopup = mPreviewPopup; + + mCurrentKeyIndex = keyIndex; + final Key[] keys = mKeys; + if (oldKeyIndex != mCurrentKeyIndex) { + if (oldKeyIndex != NOT_A_KEY && keys.length > oldKeyIndex) { + keys[oldKeyIndex].onReleased(mCurrentKeyIndex == NOT_A_KEY); + invalidateKey(oldKeyIndex); + } + if (mCurrentKeyIndex != NOT_A_KEY && keys.length > mCurrentKeyIndex) { + keys[mCurrentKeyIndex].onPressed(); + invalidateKey(mCurrentKeyIndex); + } + } + if (oldKeyIndex != mCurrentKeyIndex && mShowPreview && isParentPreviewEnabled()) { + mHandler.removeMessages(MSG_SHOW_PREVIEW); + if (previewPopup.isShowing()) { + if (keyIndex == NOT_A_KEY) { + mHandler.sendMessageDelayed(mHandler + .obtainMessage(MSG_REMOVE_PREVIEW), + DELAY_AFTER_PREVIEW); + } + } + if (keyIndex != NOT_A_KEY) { + if (previewPopup.isShowing() && mPreviewText.getVisibility() == VISIBLE) { + showKey(keyIndex); + } else { + mHandler.sendMessageDelayed( + mHandler.obtainMessage(MSG_SHOW_PREVIEW, keyIndex, 0), + DELAY_BEFORE_PREVIEW); + } + } + } + } + + private void showKey(final int keyIndex) { + final PopupWindow previewPopup = mPreviewPopup; + final Key[] keys = mKeys; + if (keyIndex < 0 || keyIndex >= mKeys.length) return; + Key key = keys[keyIndex]; + + mPreviewText.setBackgroundDrawable(getContext().getResources().getDrawable(R.drawable.keyboard_key_feedback)); + + if (key.icon != null) { + mPreviewText.setCompoundDrawables(null, null, null, + key.iconPreview != null ? key.iconPreview : key.icon); + mPreviewText.setText(null); + mPreviewText.setPadding(5, 0, 5, 20); + } else { + mPreviewText.setCompoundDrawables(null, null, null, null); + mPreviewText.setText(getPreviewText(key)); + if (key.label.length() > 1 && key.codes.length < 2) { + mPreviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mKeyTextSize); + mPreviewText.setTypeface(Typeface.DEFAULT_BOLD); + } else { + mPreviewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSizeLarge); + mPreviewText.setTypeface(Typeface.DEFAULT); + } + mPreviewText.setPadding(0, 0, 0, 10); + } + mPreviewText.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), + MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); + int popupWidth = Math.max(mPreviewText.getMeasuredWidth(), key.width + + mPreviewText.getPaddingLeft() + mPreviewText.getPaddingRight()); + final int popupHeight = mPreviewHeight; + LayoutParams lp = mPreviewText.getLayoutParams(); + if (lp != null) { + lp.width = popupWidth; + lp.height = popupHeight; + } + if (!mPreviewCentered) { + mPopupPreviewX = key.x - (Math.abs(popupWidth - key.width) / 2 ); + mPopupPreviewY = key.y - popupHeight + mPreviewOffset; + } else { + mPopupPreviewX = 160 - mPreviewText.getMeasuredWidth() / 2; + mPopupPreviewY = - mPreviewText.getMeasuredHeight(); + } + mPopupPreviewY = mPopupPreviewY + 20; + mHandler.removeMessages(MSG_REMOVE_PREVIEW); + if (mOffsetInWindow == null) { + mOffsetInWindow = new int[2]; + getLocationInWindow(mOffsetInWindow); + mOffsetInWindow[0] += mMiniKeyboardOffsetX; + mOffsetInWindow[1] += mMiniKeyboardOffsetY; + int[] mWindowLocation = new int[2]; + getLocationOnScreen(mWindowLocation); + mWindowY = mWindowLocation[1]; + } + mPreviewText.getBackground().setState( + key.popupResId != 0 ? LONG_PRESSABLE_STATE_SET : EMPTY_STATE_SET); + mPopupPreviewX += mOffsetInWindow[0]; + mPopupPreviewY += mOffsetInWindow[1]; + + if (mPopupPreviewY + mWindowY < 0) { + if (key.x + key.width <= getWidth() / 2) { + mPopupPreviewX += (int) (key.width * 2.5); + } else { + mPopupPreviewX -= (int) (key.width * 2.5); + } + mPopupPreviewY += popupHeight; + } + + if (previewPopup.isShowing()) { + previewPopup.update(mPopupPreviewX, mPopupPreviewY, + popupWidth, popupHeight); + } else { + previewPopup.setWidth(popupWidth); + previewPopup.setHeight(popupHeight); + previewPopup.showAtLocation(mPopupParent, Gravity.NO_GRAVITY, + mPopupPreviewX, mPopupPreviewY); + } + mPreviewText.setVisibility(VISIBLE); + } + + /** + * Requests a redraw of the entire keyboard. Calling {@link #invalidate} is not sufficient + * because the keyboard renders the keys to an off-screen buffer and an invalidate() only + * draws the cached buffer. + * @see #invalidateKey(int) + */ + public void invalidateAllKeys() { + mDirtyRect.union(0, 0, getWidth(), getHeight()); + mDrawPending = true; + invalidate(); + } + + /** + * Invalidates a key so that it will be redrawn on the next repaint. Use this method if only + * one key is changing it's content. Any changes that affect the position or size of the key + * may not be honored. + * @param keyIndex the index of the key in the attached {@link Keyboard}. + * @see #invalidateAllKeys + */ + public void invalidateKey(int keyIndex) { + if (mKeys == null) return; + if (keyIndex < 0 || keyIndex >= mKeys.length) { + return; + } + final Key key = mKeys[keyIndex]; + mInvalidatedKey = key; + mDirtyRect.union(key.x + mPaddingLeft, key.y + mPaddingTop, + key.x + key.width + mPaddingLeft, key.y + key.height + mPaddingTop); + onBufferDraw(); + invalidate(key.x + mPaddingLeft, key.y + mPaddingTop, + key.x + key.width + mPaddingLeft, key.y + key.height + mPaddingTop); + } + + private boolean openPopupIfRequired(MotionEvent me) { + if (mPopupLayout == 0) { + return false; + } + if (mCurrentKey < 0 || mCurrentKey >= mKeys.length) { + return false; + } + + Key popupKey = mKeys[mCurrentKey]; + boolean result = onLongPress(popupKey); + if (result) { + mAbortKey = true; + showPreview(NOT_A_KEY); + } + return result; + } + + /** + * Called when a key is long pressed. By default this will open any popup keyboard associated + * with this key through the attributes popupLayout and popupCharacters. + * @param popupKey the key that was long pressed + * @return true if the long press is handled, false otherwise. Subclasses should call the + * method on the base class if the subclass doesn't wish to handle the call. + */ + protected boolean onLongPress(Key popupKey) { + if (mKeyboardActionListener.onLongPress(popupKey)) { + return true; + } + int popupKeyboardId = popupKey.popupResId; + if (popupKeyboardId != 0) { + mMiniKeyboardContainer = mMiniKeyboardCache.get(popupKey); + if (mMiniKeyboardContainer == null) { + LayoutInflater inflater = (LayoutInflater) getContext().getSystemService( + Context.LAYOUT_INFLATER_SERVICE); + mMiniKeyboardContainer = inflater.inflate(mPopupLayout, null); + mMiniKeyboard = (KeyboardView) mMiniKeyboardContainer.findViewById(R.id.keyboardView); + View closeButton = mMiniKeyboardContainer.findViewById(R.id.closeButton); + if (closeButton != null) closeButton.setOnClickListener(this); + mMiniKeyboard.setOnKeyboardActionListener(new OnKeyboardActionListener() { + public void onKey(int primaryCode, int[] keyCodes) { + mKeyboardActionListener.onKey(primaryCode, keyCodes); + dismissPopupKeyboard(); + } + + public void onText(CharSequence text) { + mKeyboardActionListener.onText(text); + dismissPopupKeyboard(); + } + + public void swipeLeft() { } + public void swipeRight() { } + public void swipeUp() { } + public void swipeDown() { } + public void onPress(int primaryCode) { + mKeyboardActionListener.onPress(primaryCode); + } + public void onRelease(int primaryCode) { + mKeyboardActionListener.onRelease(primaryCode); + } + public boolean onLongPress(Keyboard.Key key) { + return false; + } + }); + Keyboard keyboard; + if (popupKey.popupCharacters != null) { + keyboard = new Keyboard(getContext(), popupKeyboardId, + popupKey.popupCharacters, -1, getPaddingLeft() + getPaddingRight()); + } else { + keyboard = new Keyboard(getContext(), popupKeyboardId); + } + mMiniKeyboard.setKeyboard(keyboard); + mMiniKeyboard.setPopupParent(this); + mMiniKeyboardContainer.measure( + MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST), + MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.AT_MOST)); + + mMiniKeyboardCache.put(popupKey, mMiniKeyboardContainer); + } else { + mMiniKeyboard = (KeyboardView) mMiniKeyboardContainer.findViewById(R.id.keyboardView); + } + if (mWindowOffset == null) { + mWindowOffset = new int[2]; + getLocationInWindow(mWindowOffset); + } + mPopupX = popupKey.x + mPaddingLeft; + mPopupY = popupKey.y + mPaddingTop; + mPopupX = mPopupX + popupKey.width - mMiniKeyboardContainer.getMeasuredWidth(); + mPopupY = mPopupY - mMiniKeyboardContainer.getMeasuredHeight(); + final int x = mPopupX + mMiniKeyboardContainer.getPaddingRight() + mWindowOffset[0]; + final int y = mPopupY + mMiniKeyboardContainer.getPaddingBottom() + mWindowOffset[1]; + mMiniKeyboard.setPopupOffset(x < 0 ? 0 : x, y); + mMiniKeyboard.setShifted(isShifted()); + mPopupKeyboard.setContentView(mMiniKeyboardContainer); + mPopupKeyboard.setWidth(mMiniKeyboardContainer.getMeasuredWidth()); + mPopupKeyboard.setHeight(mMiniKeyboardContainer.getMeasuredHeight()); + mPopupKeyboard.showAtLocation(this, Gravity.NO_GRAVITY, x, y); + mMiniKeyboardOnScreen = true; + invalidateAllKeys(); + return true; + } + return false; + } + + private long mOldEventTime; + private boolean mUsedVelocity; + + @Override + public boolean onTouchEvent(MotionEvent me) { + final int pointerCount = me.getPointerCount(); + final int action = me.getAction(); + boolean result = false; + final long now = me.getEventTime(); + final boolean isPointerCountOne = (pointerCount == 1); + + if (pointerCount != mOldPointerCount) { + if (isPointerCountOne) { + MotionEvent down = MotionEvent.obtain(now, now, MotionEvent.ACTION_DOWN, + me.getX(), me.getY(), me.getMetaState()); + result = onModifiedTouchEvent(down, false); + down.recycle(); + if (action == MotionEvent.ACTION_UP) { + result = onModifiedTouchEvent(me, true); + } + } else { + MotionEvent up = MotionEvent.obtain(now, now, MotionEvent.ACTION_UP, + mOldPointerX, mOldPointerY, me.getMetaState()); + result = onModifiedTouchEvent(up, true); + up.recycle(); + } + } else { + if (isPointerCountOne) { + result = onModifiedTouchEvent(me, false); + mOldPointerX = me.getX(); + mOldPointerY = me.getY(); + } else { + result = true; + } + } + mOldPointerCount = pointerCount; + + return result; + } + + private boolean onModifiedTouchEvent(MotionEvent me, boolean possiblePoly) { + int touchX = (int) me.getX() - mPaddingLeft; + int touchY = (int) me.getY() + mVerticalCorrection - mPaddingTop; + final int action = me.getAction(); + final long eventTime = me.getEventTime(); + mOldEventTime = eventTime; + int keyIndex = getKeyIndices(touchX, touchY, null); + mPossiblePoly = possiblePoly; + + if (action == MotionEvent.ACTION_DOWN) mSwipeTracker.clear(); + mSwipeTracker.addMovement(me); + + if (mAbortKey + && action != MotionEvent.ACTION_DOWN && action != MotionEvent.ACTION_CANCEL) { + return true; + } + + if (mGestureDetector.onTouchEvent(me)) { + showPreview(NOT_A_KEY); + mHandler.removeMessages(MSG_REPEAT); + mHandler.removeMessages(MSG_LONGPRESS); + return true; + } + + if (mMiniKeyboardOnScreen && action != MotionEvent.ACTION_CANCEL) { + return true; + } + + switch (action) { + case MotionEvent.ACTION_DOWN: + mAbortKey = false; + mStartX = touchX; + mStartY = touchY; + mLastCodeX = touchX; + mLastCodeY = touchY; + mLastKeyTime = 0; + mCurrentKeyTime = 0; + mLastKey = NOT_A_KEY; + mCurrentKey = keyIndex; + mDownKey = keyIndex; + mDownTime = me.getEventTime(); + mLastMoveTime = mDownTime; + checkMultiTap(eventTime, keyIndex); + mKeyboardActionListener.onPress(keyIndex != NOT_A_KEY ? + mKeys[keyIndex].codes[0] : 0); + if (mCurrentKey >= 0 && mKeys[mCurrentKey].repeatable) { + mRepeatKeyIndex = mCurrentKey; + Message msg = mHandler.obtainMessage(MSG_REPEAT); + mHandler.sendMessageDelayed(msg, REPEAT_START_DELAY); + repeatKey(); + if (mAbortKey) { + mRepeatKeyIndex = NOT_A_KEY; + break; + } + } + if (mCurrentKey != NOT_A_KEY) { + Message msg = mHandler.obtainMessage(MSG_LONGPRESS, me); + mHandler.sendMessageDelayed(msg, LONGPRESS_TIMEOUT); + } + showPreview(keyIndex); + break; + + case MotionEvent.ACTION_MOVE: + boolean continueLongPress = false; + if (keyIndex != NOT_A_KEY) { + if (mCurrentKey == NOT_A_KEY) { + mCurrentKey = keyIndex; + mCurrentKeyTime = eventTime - mDownTime; + } else { + if (keyIndex == mCurrentKey) { + mCurrentKeyTime += eventTime - mLastMoveTime; + continueLongPress = true; + } else if (mRepeatKeyIndex == NOT_A_KEY) { + resetMultiTap(); + mLastKey = mCurrentKey; + mLastCodeX = mLastX; + mLastCodeY = mLastY; + mLastKeyTime = + mCurrentKeyTime + eventTime - mLastMoveTime; + mCurrentKey = keyIndex; + mCurrentKeyTime = 0; + } + } + } + if (!continueLongPress) { + mHandler.removeMessages(MSG_LONGPRESS); + if (keyIndex != NOT_A_KEY) { + Message msg = mHandler.obtainMessage(MSG_LONGPRESS, me); + mHandler.sendMessageDelayed(msg, LONGPRESS_TIMEOUT); + } + } + showPreview(mCurrentKey); + mLastMoveTime = eventTime; + break; + + case MotionEvent.ACTION_UP: + removeMessages(); + if (keyIndex == mCurrentKey) { + mCurrentKeyTime += eventTime - mLastMoveTime; + } else { + resetMultiTap(); + mLastKey = mCurrentKey; + mLastKeyTime = mCurrentKeyTime + eventTime - mLastMoveTime; + mCurrentKey = keyIndex; + mCurrentKeyTime = 0; + } + if (mCurrentKeyTime < mLastKeyTime && mCurrentKeyTime < DEBOUNCE_TIME + && mLastKey != NOT_A_KEY) { + mCurrentKey = mLastKey; + touchX = mLastCodeX; + touchY = mLastCodeY; + } + showPreview(NOT_A_KEY); + Arrays.fill(mKeyIndices, NOT_A_KEY); + if (mRepeatKeyIndex == NOT_A_KEY && !mMiniKeyboardOnScreen && !mAbortKey) { + detectAndSendKey(mCurrentKey, touchX, touchY, eventTime); + } + invalidateKey(keyIndex); + mRepeatKeyIndex = NOT_A_KEY; + break; + case MotionEvent.ACTION_CANCEL: + removeMessages(); + dismissPopupKeyboard(); + mAbortKey = true; + showPreview(NOT_A_KEY); + invalidateKey(mCurrentKey); + break; + } + mLastX = touchX; + mLastY = touchY; + return true; + } + + private boolean repeatKey() { + Key key = mKeys[mRepeatKeyIndex]; + detectAndSendKey(mCurrentKey, key.x, key.y, mLastTapTime); + return true; + } + + protected void swipeRight() { + mKeyboardActionListener.swipeRight(); + } + + protected void swipeLeft() { + mKeyboardActionListener.swipeLeft(); + } + + protected void swipeUp() { + mKeyboardActionListener.swipeUp(); + } + + protected void swipeDown() { + mKeyboardActionListener.swipeDown(); + } + + public void closing() { + if (mPreviewPopup.isShowing()) { + mPreviewPopup.dismiss(); + } + removeMessages(); + + dismissPopupKeyboard(); + mBuffer = null; + mCanvas = null; + mMiniKeyboardCache.clear(); + } + + private void removeMessages() { + mHandler.removeMessages(MSG_REPEAT); + mHandler.removeMessages(MSG_LONGPRESS); + mHandler.removeMessages(MSG_SHOW_PREVIEW); + } + + @Override + public void onDetachedFromWindow() { + super.onDetachedFromWindow(); + closing(); + } + + private void dismissPopupKeyboard() { + if (mPopupKeyboard.isShowing()) { + mPopupKeyboard.dismiss(); + mMiniKeyboardOnScreen = false; + invalidateAllKeys(); + } + } + + public boolean handleBack() { + if (mPopupKeyboard.isShowing()) { + dismissPopupKeyboard(); + return true; + } + return false; + } + + private void resetMultiTap() { + mLastSentIndex = NOT_A_KEY; + mTapCount = 0; + mLastTapTime = -1; + mInMultiTap = false; + } + + private void checkMultiTap(long eventTime, int keyIndex) { + if (keyIndex == NOT_A_KEY) return; + Key key = mKeys[keyIndex]; + if (key.codes.length > 1) { + mInMultiTap = true; + if (eventTime < mLastTapTime + MULTITAP_INTERVAL + && keyIndex == mLastSentIndex) { + mTapCount = (mTapCount + 1) % key.codes.length; + return; + } else { + mTapCount = -1; + return; + } + } + if (eventTime > mLastTapTime + MULTITAP_INTERVAL || keyIndex != mLastSentIndex) { + resetMultiTap(); + } + } + + private static class SwipeTracker { + + static final int NUM_PAST = 4; + static final int LONGEST_PAST_TIME = 200; + + final float mPastX[] = new float[NUM_PAST]; + final float mPastY[] = new float[NUM_PAST]; + final long mPastTime[] = new long[NUM_PAST]; + + float mYVelocity; + float mXVelocity; + + public void clear() { + mPastTime[0] = 0; + } + + public void addMovement(MotionEvent ev) { + long time = ev.getEventTime(); + final int N = ev.getHistorySize(); + for (int i=0; i<N; i++) { + addPoint(ev.getHistoricalX(i), ev.getHistoricalY(i), + ev.getHistoricalEventTime(i)); + } + addPoint(ev.getX(), ev.getY(), time); + } + + private void addPoint(float x, float y, long time) { + int drop = -1; + int i; + final long[] pastTime = mPastTime; + for (i=0; i<NUM_PAST; i++) { + if (pastTime[i] == 0) { + break; + } else if (pastTime[i] < time-LONGEST_PAST_TIME) { + drop = i; + } + } + if (i == NUM_PAST && drop < 0) { + drop = 0; + } + if (drop == i) drop--; + final float[] pastX = mPastX; + final float[] pastY = mPastY; + if (drop >= 0) { + final int start = drop+1; + final int count = NUM_PAST-drop-1; + System.arraycopy(pastX, start, pastX, 0, count); + System.arraycopy(pastY, start, pastY, 0, count); + System.arraycopy(pastTime, start, pastTime, 0, count); + i -= (drop+1); + } + pastX[i] = x; + pastY[i] = y; + pastTime[i] = time; + i++; + if (i < NUM_PAST) { + pastTime[i] = 0; + } + } + + public void computeCurrentVelocity(int units) { + computeCurrentVelocity(units, Float.MAX_VALUE); + } + + public void computeCurrentVelocity(int units, float maxVelocity) { + final float[] pastX = mPastX; + final float[] pastY = mPastY; + final long[] pastTime = mPastTime; + + final float oldestX = pastX[0]; + final float oldestY = pastY[0]; + final long oldestTime = pastTime[0]; + float accumX = 0; + float accumY = 0; + int N=0; + while (N < NUM_PAST) { + if (pastTime[N] == 0) { + break; + } + N++; + } + + for (int i=1; i < N; i++) { + final int dur = (int)(pastTime[i] - oldestTime); + if (dur == 0) continue; + float dist = pastX[i] - oldestX; + float vel = (dist/dur) * units; + if (accumX == 0) accumX = vel; + else accumX = (accumX + vel) * .5f; + + dist = pastY[i] - oldestY; + vel = (dist/dur) * units; + if (accumY == 0) accumY = vel; + else accumY = (accumY + vel) * .5f; + } + mXVelocity = accumX < 0.0f ? Math.max(accumX, -maxVelocity) + : Math.min(accumX, maxVelocity); + mYVelocity = accumY < 0.0f ? Math.max(accumY, -maxVelocity) + : Math.min(accumY, maxVelocity); + } + + public float getXVelocity() { + return mXVelocity; + } + + public float getYVelocity() { + return mYVelocity; + } + } + + /** + * Clear window info. + */ + public void clearWindowInfo() { + mOffsetInWindow = null; + } +} diff --git a/src/jp/co/omronsoft/openwnn/LetterConverter.java b/src/jp/co/omronsoft/openwnn/LetterConverter.java index adb6226..15f0bfb 100644 --- a/src/jp/co/omronsoft/openwnn/LetterConverter.java +++ b/src/jp/co/omronsoft/openwnn/LetterConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/OpenWnn.java b/src/jp/co/omronsoft/openwnn/OpenWnn.java index fdc643b..12ca226 100644 --- a/src/jp/co/omronsoft/openwnn/OpenWnn.java +++ b/src/jp/co/omronsoft/openwnn/OpenWnn.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package jp.co.omronsoft.openwnn; +import jp.co.omronsoft.openwnn.JAJP.*; import android.inputmethodservice.InputMethodService; import android.view.WindowManager; import android.content.Context; @@ -32,10 +33,15 @@ import android.content.res.Configuration; import android.graphics.*; import android.graphics.drawable.*; +import java.util.ArrayList; +import java.util.List; + +import jp.co.omronsoft.openwnn.KeyAction; + /** * The OpenWnn IME's base class. * - * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. + * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. */ public class OpenWnn extends InputMethodService { @@ -59,6 +65,21 @@ public class OpenWnn extends InputMethodService { /** Flag for checking if the previous down key event is consumed by OpenWnn */ private boolean mConsumeDownEvent; + /** for isXLarge */ + private static boolean mIsXLarge = false; + + /** TextCandidatesViewManager */ + protected TextCandidatesViewManager mTextCandidatesViewManager = null; + + /** TextCandidates1LineViewManager */ + protected TextCandidates1LineViewManager mTextCandidates1LineViewManager = null; + + /** The instance of current IME */ + private static OpenWnn mCurrentIme; + + /** KeyAction list */ + private List<KeyAction> KeyActionList = new ArrayList<KeyAction>(); + /** * Constructor */ @@ -71,10 +92,22 @@ public class OpenWnn extends InputMethodService { **********************************************************************/ /** @see android.inputmethodservice.InputMethodService#onCreate */ @Override public void onCreate() { + updateXLargeMode(); super.onCreate(); SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); + mCurrentIme = this; + + + mTextCandidatesViewManager = new TextCandidatesViewManager(-1); + if (isXLarge()) { + mTextCandidates1LineViewManager = + new TextCandidates1LineViewManager(OpenWnnEngineJAJP.LIMIT_OF_CANDIDATES_1LINE); + mCandidatesViewManager = mTextCandidates1LineViewManager; + } else { + mCandidatesViewManager = mTextCandidatesViewManager; + } if (mConverter != null) { mConverter.init(); } if (mComposingText != null) { mComposingText.clear(); } @@ -84,6 +117,14 @@ public class OpenWnn extends InputMethodService { @Override public View onCreateCandidatesView() { if (mCandidatesViewManager != null) { WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); + if (isXLarge()) { + mCandidatesViewManager = mTextCandidates1LineViewManager; + mTextCandidatesViewManager.initView(this, + wm.getDefaultDisplay().getWidth(), + wm.getDefaultDisplay().getHeight()); + } else { + mCandidatesViewManager = mTextCandidatesViewManager; + } View view = mCandidatesViewManager.initView(this, wm.getDefaultDisplay().getWidth(), wm.getDefaultDisplay().getHeight()); @@ -112,13 +153,28 @@ public class OpenWnn extends InputMethodService { /** @see android.inputmethodservice.InputMethodService#onDestroy */ @Override public void onDestroy() { super.onDestroy(); - + mCurrentIme = null; close(); } /** @see android.inputmethodservice.InputMethodService#onKeyDown */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { mConsumeDownEvent = onEvent(new OpenWnnEvent(event)); + + KeyAction Keycodeinfo = new KeyAction(); + Keycodeinfo.mConsumeDownEvent = mConsumeDownEvent; + Keycodeinfo.mKeyCode = keyCode; + + int cnt = KeyActionList.size(); + if (cnt != 0) { + for (int i = 0; i < cnt; i++) { + if (KeyActionList.get(i).mKeyCode == keyCode) { + KeyActionList.remove(i); + break; + } + } + } + KeyActionList.add(Keycodeinfo); if (!mConsumeDownEvent) { return super.onKeyDown(keyCode, event); } @@ -128,13 +184,38 @@ public class OpenWnn extends InputMethodService { /** @see android.inputmethodservice.InputMethodService#onKeyUp */ @Override public boolean onKeyUp(int keyCode, KeyEvent event) { boolean ret = mConsumeDownEvent; + int cnt = KeyActionList.size(); + for (int i = 0; i < cnt; i++) { + KeyAction Keycodeinfo = KeyActionList.get(i); + if (Keycodeinfo.mKeyCode == keyCode) { + ret = Keycodeinfo.mConsumeDownEvent; + KeyActionList.remove(i); + break; + } + } if (!ret) { ret = super.onKeyUp(keyCode, event); }else{ - onEvent(new OpenWnnEvent(event)); + ret = onEvent(new OpenWnnEvent(event)); } return ret; } + + /** + * Called when the key long press event occurred. + * + * @see android.inputmethodservice.InputMethodService#onKeyLongPress + */ + @Override public boolean onKeyLongPress(int keyCode, KeyEvent event) { + if (mCurrentIme == null) { + Log.e("iWnn", "OpenWnn::onKeyLongPress() Unprocessing onCreate() "); + return super.onKeyLongPress(keyCode, event); + } + + OpenWnnEvent wnnEvent = new OpenWnnEvent(event); + wnnEvent.code = OpenWnnEvent.KEYLONGPRESS; + return onEvent(wnnEvent); + } /** @see android.inputmethodservice.InputMethodService#onStartInput */ @Override public void onStartInput(EditorInfo attribute, boolean restarting) { @@ -247,4 +328,99 @@ public class OpenWnn extends InputMethodService { protected void close() { if (mConverter != null) { mConverter.close(); } } + + /** + * Whether the x large mode. + * + * @return {@code true} if x large; {@code false} if not x large. + */ + public static boolean isXLarge() { + return mIsXLarge; + } + + /** + * Update the x large mode. + */ + public void updateXLargeMode() { + mIsXLarge = ((getResources().getConfiguration().screenLayout & + Configuration.SCREENLAYOUT_SIZE_MASK) + == Configuration.SCREENLAYOUT_SIZE_XLARGE); + } + + /** + * Get the instance of current IME. + * + * @return the instance of current IME, See {@link jp.co.omronsoft.openwnn.OpenWnn} + */ + public static OpenWnn getCurrentIme() { + return mCurrentIme; + } + + /** + * Check through key code in IME. + * + * @param keyCode check key code. + * @return {@code true} if through key code; {@code false} otherwise. + */ + protected boolean isThroughKeyCode(int keyCode) { + boolean result; + switch (keyCode) { + case KeyEvent.KEYCODE_CALL: + case KeyEvent.KEYCODE_VOLUME_DOWN: + case KeyEvent.KEYCODE_VOLUME_UP: + case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: + case KeyEvent.KEYCODE_MEDIA_NEXT: + case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: + case KeyEvent.KEYCODE_MEDIA_PREVIOUS: + case KeyEvent.KEYCODE_MEDIA_REWIND: + case KeyEvent.KEYCODE_MEDIA_STOP: + case KeyEvent.KEYCODE_MUTE: + case KeyEvent.KEYCODE_HEADSETHOOK: + case KeyEvent.KEYCODE_VOLUME_MUTE: + case KeyEvent.KEYCODE_MEDIA_CLOSE: + case KeyEvent.KEYCODE_MEDIA_EJECT: + case KeyEvent.KEYCODE_MEDIA_PAUSE: + case KeyEvent.KEYCODE_MEDIA_PLAY: + case KeyEvent.KEYCODE_MEDIA_RECORD: + case KeyEvent.KEYCODE_MANNER_MODE: + result = true; + break; + + default: + result = false; + break; + + } + return result; + } + + /** + * Check ten-key code. + * + * @param keyCode check key code. + * @return {@code true} if ten-key code; {@code false} not ten-key code. + */ + protected boolean isTenKeyCode(int keyCode) { + boolean result = false; + switch (keyCode) { + case KeyEvent.KEYCODE_NUMPAD_0: + case KeyEvent.KEYCODE_NUMPAD_1: + case KeyEvent.KEYCODE_NUMPAD_2: + case KeyEvent.KEYCODE_NUMPAD_3: + case KeyEvent.KEYCODE_NUMPAD_4: + case KeyEvent.KEYCODE_NUMPAD_5: + case KeyEvent.KEYCODE_NUMPAD_6: + case KeyEvent.KEYCODE_NUMPAD_7: + case KeyEvent.KEYCODE_NUMPAD_8: + case KeyEvent.KEYCODE_NUMPAD_9: + case KeyEvent.KEYCODE_NUMPAD_DOT: + result = true; + break; + + default: + break; + + } + return result; + } } diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnControlPanelJAJP.java b/src/jp/co/omronsoft/openwnn/OpenWnnControlPanelJAJP.java index 9a4c205..9fe9263 100644 --- a/src/jp/co/omronsoft/openwnn/OpenWnnControlPanelJAJP.java +++ b/src/jp/co/omronsoft/openwnn/OpenWnnControlPanelJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImpl.java b/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImpl.java index e5b7fe0..4b8ac2c 100644 --- a/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImpl.java +++ b/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -137,6 +137,8 @@ public class OpenWnnDictionaryImpl implements WnnDictionary { protected SQLiteDatabase mDbDic = null; /** The search cursor of the writable dictionary */ protected SQLiteCursor mDbCursor = null; + /** The writable dictionary object Access helper */ + protected OpenWnnSQLiteOpenHelper mDbOpenHelper = null; /** The number of queried items */ protected int mCountCursor = 0; /** The type of the search cursor object */ @@ -322,6 +324,7 @@ public class OpenWnnDictionaryImpl implements WnnDictionary { /* The SQLiteDataBase object must close() before releasing. */ mDbDic.close(); mDbDic = null; + mDbOpenHelper = null; } } /** @@ -351,7 +354,8 @@ public class OpenWnnDictionaryImpl implements WnnDictionary { public void setInUseState( boolean flag ) { if( flag ) { if( mDbDic == null ) { - mDbDic = SQLiteDatabase.openOrCreateDatabase( mDicFilePath, null ); + mDbOpenHelper = new OpenWnnSQLiteOpenHelper(OpenWnn.getCurrentIme(), mDicFilePath); + mDbDic = mDbOpenHelper.getWritableDatabase(); } } else { freeDatabase(); diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImplJni.java b/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImplJni.java index 34d533f..4d49a8b 100644 --- a/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImplJni.java +++ b/src/jp/co/omronsoft/openwnn/OpenWnnDictionaryImplJni.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnEN.java b/src/jp/co/omronsoft/openwnn/OpenWnnEN.java index 6bcce4f..0b9ae15 100644 --- a/src/jp/co/omronsoft/openwnn/OpenWnnEN.java +++ b/src/jp/co/omronsoft/openwnn/OpenWnnEN.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -167,7 +167,13 @@ public class OpenWnnEN extends OpenWnn { mComposingText = new ComposingText(); mCandidatesViewManager = new TextCandidatesViewManager(-1); mInputViewManager = new DefaultSoftKeyboardEN(); - mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic"); + + if (OpenWnn.getCurrentIme() != null) { + if (mConverterEN == null) { + mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic"); + } + } + mConverter = mConverterEN; mSymbolList = null; @@ -281,6 +287,10 @@ public class OpenWnnEN extends OpenWnn { super.onCreate(); mWordSeparators = getResources().getString(R.string.en_word_separators); + if (mConverterEN == null) { + mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic"); + } + if (mSymbolList == null) { mSymbolList = new SymbolList(this, SymbolList.LANG_EN); } @@ -327,10 +337,15 @@ public class OpenWnnEN extends OpenWnn { fitInputType(pref, attribute); ((DefaultSoftKeyboard) mInputViewManager).resetCurrentKeyboard(); + + if (OpenWnn.isXLarge()) { + mTextCandidatesViewManager.setPreferences(pref); + } } /** @see jp.co.omronsoft.openwnn.OpenWnn#hideWindow */ @Override public void hideWindow() { + ((BaseInputView)((DefaultSoftKeyboard) mInputViewManager).getCurrentView()).closeDialog(); mComposingText.clear(); mInputViewManager.onUpdateState(this); mHandler.removeMessages(MSG_START_TUTORIAL); @@ -521,7 +536,7 @@ public class OpenWnnEN extends OpenWnn { ret = processKeyEvent(ev.keyEvent); if (!ret) { int code = keyEvent.getKeyCode(); - if (code == KeyEvent.KEYCODE_ENTER) { + if (code == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_NUMPAD_ENTER) { sendKeyChar('\n'); } else { mInputConnection.sendKeyEvent(keyEvent); @@ -705,6 +720,7 @@ public class OpenWnnEN extends OpenWnn { return true; case KeyEvent.KEYCODE_ENTER: + case KeyEvent.KEYCODE_NUMPAD_ENTER: case KeyEvent.KEYCODE_DPAD_CENTER: commitText(1); mComposingText.clear(); @@ -715,7 +731,7 @@ public class OpenWnnEN extends OpenWnn { return true; default: - break; + return !isThroughKeyCode(key); } } else { /* if there is no composing string. */ @@ -732,6 +748,7 @@ public class OpenWnnEN extends OpenWnn { switch (key) { case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_ENTER: + case KeyEvent.KEYCODE_NUMPAD_ENTER: if (mEnableAutoHideKeyboard) { mInputViewManager.closing(); requestHideSelf(0); @@ -823,9 +840,9 @@ public class OpenWnnEN extends OpenWnn { mDisplayText.setSpan(SPAN_REMAIN_BGCOLOR_HL, cursor, disp.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mDisplayText.setSpan(SPAN_TEXTCOLOR, 0, disp.length(), - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } - + disp.setSpan(SPAN_UNDERLINE, 0, disp.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnEvent.java b/src/jp/co/omronsoft/openwnn/OpenWnnEvent.java index 06260e1..030fa57 100644 --- a/src/jp/co/omronsoft/openwnn/OpenWnnEvent.java +++ b/src/jp/co/omronsoft/openwnn/OpenWnnEvent.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ import java.util.*; /** * The definition class of event message used by OpenWnn framework. * - * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. + * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. */ public class OpenWnnEvent { /** Offset value for private events */ @@ -127,6 +127,11 @@ public class OpenWnnEvent { public static final int CHANGE_MODE = 0xF000000F; /** + * Key long press event. + */ + public static final int KEYLONGPRESS = 0xF0000024; + + /** * The definition class of engine's mode. */ public static final class Mode { @@ -224,6 +229,36 @@ public class OpenWnnEvent { */ public static final int TOUCH_OTHER_KEY = 0xF0000020; + /** + * Start focus candidate. + */ + public static final int FOCUS_CANDIDATE_START = 0xF0002000; + + /** + * End focus candidate. + */ + public static final int FOCUS_CANDIDATE_END = 0xF0002001; + + /** + * Scroll up for symbol keyboard. + */ + public static final int CANDIDATE_VIEW_SCROLL_UP = 0xF0001000; + + /** + * Scroll down for symbol keyboard. + */ + public static final int CANDIDATE_VIEW_SCROLL_DOWN = 0xF0001001; + + /** + * Scroll full up for symbol keyboard. + */ + public static final int CANDIDATE_VIEW_SCROLL_FULL_UP = 0xF0001002; + + /** + * Scroll full down for symbol keyboard. + */ + public static final int CANDIDATE_VIEW_SCROLL_FULL_DOWN = 0xF0001003; + /** Event code */ public int code = UNDEFINED; /** Detail mode of the event */ diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnJAJP.java b/src/jp/co/omronsoft/openwnn/OpenWnnJAJP.java index 880fd11..cbcc074 100644 --- a/src/jp/co/omronsoft/openwnn/OpenWnnJAJP.java +++ b/src/jp/co/omronsoft/openwnn/OpenWnnJAJP.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import jp.co.omronsoft.openwnn.EN.OpenWnnEngineEN; import jp.co.omronsoft.openwnn.JAJP.*; import android.content.SharedPreferences; import android.content.Context; +import android.content.Intent; import android.content.res.Configuration; import android.os.Handler; import android.os.Message; @@ -34,18 +35,23 @@ import android.text.style.UnderlineSpan; import android.util.Log; import android.view.KeyEvent; import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputConnection; import android.view.MotionEvent; import android.view.View; import android.view.KeyCharacterMap; import android.text.method.MetaKeyKeyListener; +import jp.co.omronsoft.openwnn.BaseInputView; +import jp.co.omronsoft.openwnn.OpenWnnControlPanelJAJP; + +import java.util.HashMap; import java.util.regex.Pattern; import java.util.regex.Matcher; /** * The OpenWnn Japanese IME class * - * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. + * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. */ public class OpenWnnJAJP extends OpenWnn { /** @@ -70,7 +76,9 @@ public class OpenWnnJAJP extends OpenWnn { * Mode of the convert engine (Symbol list). * Use with {@code OpenWnn.CHANGE_MODE} event. */ - public static final int ENGINE_MODE_SYMBOL = 104; + public static final int ENGINE_MODE_SYMBOL_NONE = 1040; + public static final int ENGINE_MODE_SYMBOL = 1041; + public static final int ENGINE_MODE_SYMBOL_KAO_MOJI = 1042; /** * Mode of the convert engine (Keyboard type is QWERTY). @@ -143,6 +151,24 @@ public class OpenWnnJAJP extends OpenWnn { /** Delay time(msec.) to start prediction after key input when the candidates view is shown. */ private static final int PREDICTION_DELAY_MS_SHOWING_CANDIDATE = 200; + /** H/W 12Keyboard keycode replace table */ + private static final HashMap<Integer, Integer> HW12KEYBOARD_KEYCODE_REPLACE_TABLE + = new HashMap<Integer, Integer>() {{ + put(KeyEvent.KEYCODE_0, DefaultSoftKeyboard.KEYCODE_JP12_0); + put(KeyEvent.KEYCODE_1, DefaultSoftKeyboard.KEYCODE_JP12_1); + put(KeyEvent.KEYCODE_2, DefaultSoftKeyboard.KEYCODE_JP12_2); + put(KeyEvent.KEYCODE_3, DefaultSoftKeyboard.KEYCODE_JP12_3); + put(KeyEvent.KEYCODE_4, DefaultSoftKeyboard.KEYCODE_JP12_4); + put(KeyEvent.KEYCODE_5, DefaultSoftKeyboard.KEYCODE_JP12_5); + put(KeyEvent.KEYCODE_6, DefaultSoftKeyboard.KEYCODE_JP12_6); + put(KeyEvent.KEYCODE_7, DefaultSoftKeyboard.KEYCODE_JP12_7); + put(KeyEvent.KEYCODE_8, DefaultSoftKeyboard.KEYCODE_JP12_8); + put(KeyEvent.KEYCODE_9, DefaultSoftKeyboard.KEYCODE_JP12_9); + put(KeyEvent.KEYCODE_POUND, DefaultSoftKeyboard.KEYCODE_JP12_SHARP); + put(KeyEvent.KEYCODE_STAR, DefaultSoftKeyboard.KEYCODE_JP12_ASTER); + put(KeyEvent.KEYCODE_CALL, DefaultSoftKeyboard.KEYCODE_JP12_REVERSE); + }}; + /** Convert engine's state */ private class EngineState { @@ -284,11 +310,11 @@ public class OpenWnnJAJP extends OpenWnn { /** Symbol lists to display when the symbol key is pressed */ private static final String[] SYMBOL_LISTS = { - SymbolList.SYMBOL_JAPANESE_FACE, SymbolList.SYMBOL_JAPANESE, SymbolList.SYMBOL_ENGLISH + SymbolList.SYMBOL_JAPANESE, SymbolList.SYMBOL_JAPANESE_FACE }; /** Current symbol list */ - private int mCurrentSymbol = 0; + private int mCurrentSymbol = -1; /** Romaji-to-Kana converter (HIRAGANA) */ private Romkan mPreConverterHiragana; @@ -395,6 +421,9 @@ public class OpenWnnJAJP extends OpenWnn { /** Whether text selection has started */ private boolean mHasStartedTextSelection = true; + /** Whether the H/W 12keyboard is active or not. */ + private boolean mEnableHardware12Keyboard = false; + /** {@code Handler} for drawing candidates/displaying tutorial */ Handler mHandler = new Handler() { @Override @@ -438,8 +467,16 @@ public class OpenWnnJAJP extends OpenWnn { mComposingText = new ComposingText(); mCandidatesViewManager = new TextCandidatesViewManager(-1); mInputViewManager = new DefaultSoftKeyboardJAJP(); - mConverter = mConverterJAJP = new OpenWnnEngineJAJP("/data/data/jp.co.omronsoft.openwnn/writableJAJP.dic"); - mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic"); + + if (OpenWnn.getCurrentIme() != null) { + if (mConverter == null || mConverterJAJP == null) { + mConverter = mConverterJAJP = new OpenWnnEngineJAJP("/data/data/jp.co.omronsoft.openwnn/writableJAJP.dic"); + } + if (mConverterEN == null) { + mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic"); + } + } + mPreConverter = mPreConverterHiragana = new Romkan(); mPreConverterFullKatakana = new RomkanFullKatakana(); mPreConverterHalfKatakana = new RomkanHalfKatakana(); @@ -463,8 +500,16 @@ public class OpenWnnJAJP extends OpenWnn { /** @see jp.co.omronsoft.openwnn.OpenWnn#onCreate */ @Override public void onCreate() { + updateXLargeMode(); super.onCreate(); + if (mConverter == null || mConverterJAJP == null) { + mConverter = mConverterJAJP = new OpenWnnEngineJAJP("/data/data/jp.co.omronsoft.openwnn/writableJAJP.dic"); + } + if (mConverterEN == null) { + mConverterEN = new OpenWnnEngineEN("/data/data/jp.co.omronsoft.openwnn/writableEN.dic"); + } + String delimiter = Pattern.quote(getResources().getString(R.string.en_word_separators)); mEnglishAutoCommitDelimiter = Pattern.compile(".*[" + delimiter + "]$"); if (mConverterSymbolEngineBack == null) { @@ -476,14 +521,20 @@ public class OpenWnnJAJP extends OpenWnn { @Override public View onCreateInputView() { int hiddenState = getResources().getConfiguration().hardKeyboardHidden; boolean hidden = (hiddenState == Configuration.HARDKEYBOARDHIDDEN_YES); + boolean type12Key + = (getResources().getConfiguration().keyboard == Configuration.KEYBOARD_12KEY); ((DefaultSoftKeyboardJAJP) mInputViewManager).setHardKeyboardHidden(hidden); + ((DefaultSoftKeyboard) mInputViewManager).setHardware12Keyboard(type12Key); + mTextCandidatesViewManager.setHardKeyboardHidden(hidden); mEnableTutorial = hidden; + mEnableHardware12Keyboard = type12Key; return super.onCreateInputView(); } /** @see jp.co.omronsoft.openwnn.OpenWnn#onStartInputView */ @Override public void onStartInputView(EditorInfo attribute, boolean restarting) { + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); if (restarting) { super.onStartInputView(attribute, restarting); } else { @@ -498,6 +549,10 @@ public class OpenWnnJAJP extends OpenWnn { super.onStartInputView(attribute, restarting); + if (OpenWnn.isXLarge()) { + mTextCandidatesViewManager.setPreferences(pref); + } + mCandidatesViewManager.clearCandidates(); mStatus = STATUS_INIT; mExactMatchMode = false; @@ -507,13 +562,15 @@ public class OpenWnnJAJP extends OpenWnn { mHardAlt = 0; updateMetaKeyStateDisplay(); } - /* load preferences */ - SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); /* initialize the engine's state */ fitInputType(pref, attribute); - ((TextCandidatesViewManager)mCandidatesViewManager).setAutoHide(true); + if (OpenWnn.isXLarge()) { + mTextCandidates1LineViewManager.setAutoHide(true); + } else { + ((TextCandidatesViewManager)mCandidatesViewManager).setAutoHide(true); + } if (isEnableL2Converter()) { breakSequence(); @@ -522,6 +579,12 @@ public class OpenWnnJAJP extends OpenWnn { /** @see jp.co.omronsoft.openwnn.OpenWnn#hideWindow */ @Override public void hideWindow() { + mCandidatesViewManager.setCandidateMsgRemove(); + + BaseInputView baseInputView = ((BaseInputView)((DefaultSoftKeyboard) mInputViewManager).getCurrentView()); + if (baseInputView != null) { + baseInputView.closeDialog(); + } mComposingText.clear(); mInputViewManager.onUpdateState(this); clearCommitInfo(); @@ -532,6 +595,12 @@ public class OpenWnnJAJP extends OpenWnn { mTutorial = null; } + if (OpenWnn.isXLarge()) { + mTextCandidates1LineViewManager.closeDialog(); + } else { + mTextCandidatesViewManager.closeDialog(); + } + super.hideWindow(); } @@ -556,6 +625,10 @@ public class OpenWnnJAJP extends OpenWnn { return; } + if (mEngineState.isSymbolList()) { + return; + } + boolean isNotComposing = ((candidatesStart < 0) && (candidatesEnd < 0)); if ((mComposingText.size(ComposingText.LAYER1) != 0) && !isNotComposing) { @@ -604,8 +677,12 @@ public class OpenWnnJAJP extends OpenWnn { /* Hardware keyboard */ int hiddenState = newConfig.hardKeyboardHidden; boolean hidden = (hiddenState == Configuration.HARDKEYBOARDHIDDEN_YES); + boolean type12Key = (newConfig.keyboard == Configuration.KEYBOARD_12KEY); ((DefaultSoftKeyboardJAJP) mInputViewManager).setHardKeyboardHidden(hidden); + ((DefaultSoftKeyboard) mInputViewManager).setHardware12Keyboard(type12Key); + mTextCandidatesViewManager.setHardKeyboardHidden(hidden); mEnableTutorial = hidden; + mEnableHardware12Keyboard = type12Key; } } catch (Exception ex) { /* do nothing if an error occurs. */ @@ -624,6 +701,9 @@ public class OpenWnnJAJP extends OpenWnn { onKeyUpEvent(ev.keyEvent); return true; + case OpenWnnEvent.KEYLONGPRESS: + return onKeyLongPressEvent(ev.keyEvent); + case OpenWnnEvent.INITIALIZE_LEARNING_DICTIONARY: mConverterEN.initializeDictionary(WnnEngine.DICTIONARY_TYPE_LEARN); mConverterJAJP.initializeDictionary(WnnEngine.DICTIONARY_TYPE_LEARN); @@ -689,6 +769,37 @@ public class OpenWnnJAJP extends OpenWnn { mStatus |= STATUS_INPUT_EDIT; return true; + case OpenWnnEvent.CANDIDATE_VIEW_SCROLL_UP: + if (mCandidatesViewManager instanceof TextCandidatesViewManager) { + ((TextCandidatesViewManager) mCandidatesViewManager).setScrollUp(); + } + return true; + + case OpenWnnEvent.CANDIDATE_VIEW_SCROLL_DOWN: + if (mCandidatesViewManager instanceof TextCandidatesViewManager) { + ((TextCandidatesViewManager) mCandidatesViewManager).setScrollDown(); + } + return true; + + case OpenWnnEvent.CANDIDATE_VIEW_SCROLL_FULL_UP: + if (mCandidatesViewManager instanceof TextCandidatesViewManager) { + ((TextCandidatesViewManager) mCandidatesViewManager).setScrollFullUp(); + } + return true; + + case OpenWnnEvent.CANDIDATE_VIEW_SCROLL_FULL_DOWN: + if (mCandidatesViewManager instanceof TextCandidatesViewManager) { + ((TextCandidatesViewManager) mCandidatesViewManager).setScrollFullDown(); + } + return true; + + case OpenWnnEvent.FOCUS_CANDIDATE_START: + return true; + + case OpenWnnEvent.FOCUS_CANDIDATE_END: + mInputViewManager.onUpdateState(this); + return true; + default: break; } @@ -723,6 +834,101 @@ public class OpenWnnJAJP extends OpenWnn { return false; } + if (mEngineState.isSymbolList()) { + if (keyEvent != null && keyEvent.isPrintingKey() && isTenKeyCode(keyCode) && !keyEvent.isNumLockOn()) { + return false; + } + switch (keyCode) { + case KeyEvent.KEYCODE_DEL: + return false; + + case KeyEvent.KEYCODE_BACK: + initializeScreen(); + return true; + + case KeyEvent.KEYCODE_DPAD_CENTER: + case KeyEvent.KEYCODE_ENTER: + case KeyEvent.KEYCODE_NUMPAD_ENTER: + if (mCandidatesViewManager.isFocusCandidate()) { + mCandidatesViewManager.selectFocusCandidate(); + return true; + } + return false; + + case KeyEvent.KEYCODE_DPAD_LEFT: + if (mCandidatesViewManager.isFocusCandidate()) { + processLeftKeyEvent(); + return true; + } + return false; + + case KeyEvent.KEYCODE_DPAD_RIGHT: + if (mCandidatesViewManager.isFocusCandidate()) { + processRightKeyEvent(); + return true; + } + return false; + + case KeyEvent.KEYCODE_DPAD_DOWN: + processDownKeyEvent(); + return true; + + case KeyEvent.KEYCODE_DPAD_UP: + if (mCandidatesViewManager.isFocusCandidate()) { + processUpKeyEvent(); + return true; + } + return false; + + case KeyEvent.KEYCODE_SPACE: + if (keyEvent != null) { + if (keyEvent.isShiftPressed()) { + onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_UP)); + } else if (keyEvent.isAltPressed()) { + if (keyEvent.getRepeatCount() == 0) { + switchSymbolList(); + } + } else { + onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_DOWN)); + } + } + return true; + + case KeyEvent.KEYCODE_SYM: + switchSymbolList(); + return true; + + case KeyEvent.KEYCODE_PAGE_UP: + onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_UP)); + return true; + + case KeyEvent.KEYCODE_PAGE_DOWN: + onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_SCROLL_DOWN)); + return true; + + case KeyEvent.KEYCODE_PICTSYMBOLS: + if (keyEvent != null) { + if (keyEvent.getRepeatCount() == 0) { + switchSymbolList(); + } + } + return true; + + default: + } + + if ((ev.code == OpenWnnEvent.INPUT_KEY) && + (keyCode != KeyEvent.KEYCODE_SEARCH) && + (keyCode != KeyEvent.KEYCODE_ALT_LEFT) && + (keyCode != KeyEvent.KEYCODE_ALT_RIGHT) && + (keyCode != KeyEvent.KEYCODE_SHIFT_LEFT) && + (keyCode != KeyEvent.KEYCODE_SHIFT_RIGHT)) { + state = new EngineState(); + state.temporaryMode = EngineState.TEMPORARY_DICTIONARY_MODE_NONE; + updateEngineState(state); + } + } + if (!((ev.code == OpenWnnEvent.COMMIT_COMPOSING_TEXT) || ((keyEvent != null) && ((keyCode == KeyEvent.KEYCODE_SHIFT_LEFT) @@ -751,13 +957,21 @@ public class OpenWnnJAJP extends OpenWnn { updateEngineState(state); } + if ((ev.code == OpenWnnEvent.INPUT_KEY) && processHardware12Keyboard(keyEvent)) { + return true; + } + if (ev.code == OpenWnnEvent.LIST_CANDIDATES_FULL) { mStatus |= STATUS_CANDIDATE_FULL; mCandidatesViewManager.setViewType(CandidatesViewManager.VIEW_TYPE_FULL); + if (!mEngineState.isSymbolList()) { + mInputViewManager.hideInputView(); + } return true; } else if (ev.code == OpenWnnEvent.LIST_CANDIDATES_NORMAL) { mStatus &= ~STATUS_CANDIDATE_FULL; mCandidatesViewManager.setViewType(CandidatesViewManager.VIEW_TYPE_NORMAL); + mInputViewManager.showInputView(); return true; } @@ -838,7 +1052,7 @@ public class OpenWnnJAJP extends OpenWnn { } mAltPressing = true; updateMetaKeyStateDisplay(); - return true; + return false; case KeyEvent.KEYCODE_SHIFT_LEFT: case KeyEvent.KEYCODE_SHIFT_RIGHT: @@ -847,7 +1061,7 @@ public class OpenWnnJAJP extends OpenWnn { } mShiftPressing = true; updateMetaKeyStateDisplay(); - return true; + return false; } /* handle other key event */ @@ -885,6 +1099,17 @@ public class OpenWnnJAJP extends OpenWnn { break; case OpenWnnEvent.CONVERT: + if (mEngineState.isRenbun()) { + if (mCandidatesViewManager instanceof TextCandidatesViewManager) { + if (!mCandidatesViewManager.isFocusCandidate()) { + processDownKeyEvent(); + } + processRightKeyEvent(); + } else { + mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT); + } + break; + } startConvert(EngineState.CONVERT_TYPE_RENBUN); break; @@ -942,6 +1167,20 @@ public class OpenWnnJAJP extends OpenWnn { /* keys which produce a glyph */ if (ev.isPrintingKey()) { + if (isTenKeyCode(key) && !ev.isNumLockOn()) { + return false; + } + if (ev.isCtrlPressed()){ + if (key == KeyEvent.KEYCODE_A || key == KeyEvent.KEYCODE_F || key == KeyEvent.KEYCODE_C || + key == KeyEvent.KEYCODE_V || key == KeyEvent.KEYCODE_X || key == KeyEvent.KEYCODE_Z) { + if (mComposingText.size(ComposingText.LAYER1) < 1) { + return false; + } else { + return true; + } + } + } + /* do nothing if the character is not able to display or the character is dead key */ if ((mHardShift > 0 && mHardAlt > 0) || (ev.isAltPressed() && ev.isShiftPressed())) { @@ -1009,7 +1248,7 @@ public class OpenWnnJAJP extends OpenWnn { updateMetaKeyStateDisplay(); } } - + if (str == null) { return true; } @@ -1066,6 +1305,7 @@ public class OpenWnnJAJP extends OpenWnn { if (mCandidatesViewManager.getViewType() == CandidatesViewManager.VIEW_TYPE_FULL) { mStatus &= ~STATUS_CANDIDATE_FULL; mCandidatesViewManager.setViewType(CandidatesViewManager.VIEW_TYPE_NORMAL); + mInputViewManager.showInputView(); } else { if (!mEngineState.isConvertState()) { initializeScreen(); @@ -1102,8 +1342,27 @@ public class OpenWnnJAJP extends OpenWnn { } return true; + case KeyEvent.KEYCODE_DPAD_DOWN: + processDownKeyEvent(); + return true; + + case KeyEvent.KEYCODE_DPAD_UP: + if (OpenWnn.isXLarge()) { + updateViewStatusForPrediction(true, true); + } else { + if (mCandidatesViewManager.isFocusCandidate()) { + processUpKeyEvent(); + } + } + return true; + case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_ENTER: + case KeyEvent.KEYCODE_NUMPAD_ENTER: + if (mCandidatesViewManager.isFocusCandidate()) { + mCandidatesViewManager.selectFocusCandidate(); + return true; + } if (!isEnglishPrediction()) { int cursor = mComposingText.getCursor(ComposingText.LAYER1); if (cursor < 1) { @@ -1130,7 +1389,7 @@ public class OpenWnnJAJP extends OpenWnn { return false; default: - return true; + return !isThroughKeyCode(key); } } else { /* if there is no composing string. */ @@ -1138,6 +1397,10 @@ public class OpenWnnJAJP extends OpenWnn { /* displaying relational prediction candidates */ switch (key) { case KeyEvent.KEYCODE_DPAD_LEFT: + if (mCandidatesViewManager.isFocusCandidate()) { + mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_LEFT); + return true; + } if (isEnableL2Converter()) { /* initialize the converter */ mConverter.init(); @@ -1147,6 +1410,10 @@ public class OpenWnnJAJP extends OpenWnn { return false; case KeyEvent.KEYCODE_DPAD_RIGHT: + if (mCandidatesViewManager.isFocusCandidate()) { + mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT); + return true; + } if (isEnableL2Converter()) { /* initialize the converter */ mConverter.init(); @@ -1155,6 +1422,26 @@ public class OpenWnnJAJP extends OpenWnn { updateViewStatusForPrediction(true, true); return false; + case KeyEvent.KEYCODE_DPAD_DOWN: + processDownKeyEvent(); + return true; + + case KeyEvent.KEYCODE_DPAD_UP: + if (mCandidatesViewManager.isFocusCandidate()) { + processUpKeyEvent(); + return true; + } + break; + + case KeyEvent.KEYCODE_DPAD_CENTER: + case KeyEvent.KEYCODE_ENTER: + case KeyEvent.KEYCODE_NUMPAD_ENTER: + if (mCandidatesViewManager.isFocusCandidate()) { + mCandidatesViewManager.selectFocusCandidate(); + return true; + } + break; + default: return processKeyEventNoInputCandidateShown(ev); } @@ -1192,14 +1479,27 @@ public class OpenWnnJAJP extends OpenWnn { mHardAlt = 0; mHardShift = 0; updateMetaKeyStateDisplay(); + + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); if (mEngineState.isEnglish()) { /* English mode to Japanese mode */ ((DefaultSoftKeyboardJAJP) mInputViewManager).changeKeyMode(DefaultSoftKeyboard.KEYMODE_JA_FULL_HIRAGANA); mConverter = mConverterJAJP; + + mEnableLearning = pref.getBoolean("opt_enable_learning_ja", true); + mEnablePrediction = pref.getBoolean("opt_prediction_ja", true); } else { /* Japanese mode to English mode */ ((DefaultSoftKeyboardJAJP) mInputViewManager).changeKeyMode(DefaultSoftKeyboard.KEYMODE_JA_HALF_ALPHABET); mConverter = mConverterEN; + + mEnableLearning = pref.getBoolean("opt_enable_learning_en", true); + mEnablePrediction = pref.getBoolean("opt_prediction_en", false); + if (OpenWnn.isXLarge()) { + mEnableSpellCorrection = pref.getBoolean("opt_spell_correction_en", false); + } else { + mEnableSpellCorrection = pref.getBoolean("opt_spell_correction_en", true); + } } mCandidatesViewManager.clearCandidates(); @@ -1225,7 +1525,15 @@ public class OpenWnnJAJP extends OpenWnn { checkCommitInfo(); } mEnableAutoDeleteSpace = false; - + } else if (mEngineState.isRenbun()) { + if (mCandidatesViewManager instanceof TextCandidatesViewManager) { + if (!mCandidatesViewManager.isFocusCandidate()) { + processDownKeyEvent(); + } + processRightKeyEvent(); + } else { + mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT); + } } else { /* start consecutive clause conversion if Japanese mode */ if (mComposingText.size(0) == 0) { @@ -1312,6 +1620,11 @@ public class OpenWnnJAJP extends OpenWnn { * Handle a left key event. */ private void processLeftKeyEvent() { + if (mCandidatesViewManager.isFocusCandidate()) { + mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_LEFT); + return; + } + if (mEngineState.isConvertState()) { if (mEngineState.isEisuKana()) { mExactMatchMode = true; @@ -1339,6 +1652,11 @@ public class OpenWnnJAJP extends OpenWnn { * Handle a right key event. */ private void processRightKeyEvent() { + if (mCandidatesViewManager.isFocusCandidate()) { + mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT); + return; + } + int layer = mTargetLayer; ComposingText composingText = mComposingText; if (mExactMatchMode || (mEngineState.isConvertState())) { @@ -1369,6 +1687,20 @@ public class OpenWnnJAJP extends OpenWnn { } /** + * Handle a down key event. + */ + private void processDownKeyEvent() { + mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_DOWN); + } + + /** + * Handle a up key event. + */ + private void processUpKeyEvent() { + mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_UP); + } + + /** * Handle a key event which is not right or left key when the * composing text is empty and some candidates are shown. * @@ -1377,12 +1709,14 @@ public class OpenWnnJAJP extends OpenWnn { */ boolean processKeyEventNoInputCandidateShown(KeyEvent ev) { boolean ret = true; + int key = ev.getKeyCode(); - switch (ev.getKeyCode()) { + switch (key) { case KeyEvent.KEYCODE_DEL: ret = true; break; case KeyEvent.KEYCODE_ENTER: + case KeyEvent.KEYCODE_NUMPAD_ENTER: case KeyEvent.KEYCODE_DPAD_UP: case KeyEvent.KEYCODE_DPAD_DOWN: case KeyEvent.KEYCODE_MENU: @@ -1402,6 +1736,7 @@ public class OpenWnnJAJP extends OpenWnn { if (mCandidatesViewManager.getViewType() == CandidatesViewManager.VIEW_TYPE_FULL) { mStatus &= ~STATUS_CANDIDATE_FULL; mCandidatesViewManager.setViewType(CandidatesViewManager.VIEW_TYPE_NORMAL); + mInputViewManager.showInputView(); return true; } else { ret = true; @@ -1409,7 +1744,7 @@ public class OpenWnnJAJP extends OpenWnn { break; default: - return true; + return !isThroughKeyCode(key); } if (mConverter != null) { @@ -1749,6 +2084,10 @@ public class OpenWnnJAJP extends OpenWnn { } return; + case ENGINE_MODE_SYMBOL_KAO_MOJI: + changeSymbolEngineState(state, ENGINE_MODE_SYMBOL_KAO_MOJI); + return; + default: break; } @@ -1757,6 +2096,7 @@ public class OpenWnnJAJP extends OpenWnn { state.temporaryMode = EngineState.TEMPORARY_DICTIONARY_MODE_NONE; updateEngineState(state); + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); state = new EngineState(); switch (mode) { case OpenWnnEvent.Mode.DIRECT: @@ -1771,6 +2111,14 @@ public class OpenWnnJAJP extends OpenWnn { updateEngineState(state); mConverter = mConverterEN; mPreConverter = null; + + mEnableLearning = pref.getBoolean("opt_enable_learning_en", true); + mEnablePrediction = pref.getBoolean("opt_prediction_en", false); + if (OpenWnn.isXLarge()) { + mEnableSpellCorrection = pref.getBoolean("opt_spell_correction_en", false); + } else { + mEnableSpellCorrection = pref.getBoolean("opt_spell_correction_en", true); + } break; case OpenWnnEvent.Mode.NO_LV2_CONV: @@ -1794,6 +2142,9 @@ public class OpenWnnJAJP extends OpenWnn { updateEngineState(state); mConverter = mConverterJAJP; mPreConverter = mPreConverterHiragana; + + mEnableLearning = pref.getBoolean("opt_enable_learning_ja", true); + mEnablePrediction = pref.getBoolean("opt_prediction_ja", true); break; } @@ -1860,10 +2211,19 @@ public class OpenWnnJAJP extends OpenWnn { case EngineState.TEMPORARY_DICTIONARY_MODE_NONE: if (myState.temporaryMode != EngineState.TEMPORARY_DICTIONARY_MODE_NONE) { setDictionary(mPrevDictionarySet); - mCurrentSymbol = 0; + mCurrentSymbol = -1; mPreConverter = mPreConverterBack; mConverter = mConverterBack; mDisableAutoCommitEnglishMask &= ~AUTO_COMMIT_ENGLISH_SYMBOL; + ((DefaultSoftKeyboard)mInputViewManager).setNormalKeyboard(); + mTextCandidatesViewManager.setSymbolMode(false, ENGINE_MODE_SYMBOL_NONE); + if (OpenWnn.isXLarge()) { + mCandidatesViewManager = mTextCandidates1LineViewManager; + View view = mTextCandidates1LineViewManager.getCurrentView(); + if (view != null) { + setCandidatesView(view); + } + } } break; @@ -1878,7 +2238,25 @@ public class OpenWnnJAJP extends OpenWnn { } mConverter = mConverterSymbolEngineBack; mDisableAutoCommitEnglishMask |= AUTO_COMMIT_ENGLISH_SYMBOL; + int engineModeSymbol = 0; + + if (SYMBOL_LISTS[mCurrentSymbol] == SymbolList.SYMBOL_JAPANESE) { + engineModeSymbol = ENGINE_MODE_SYMBOL; + } else if (SYMBOL_LISTS[mCurrentSymbol] == SymbolList.SYMBOL_JAPANESE_FACE) { + engineModeSymbol = ENGINE_MODE_SYMBOL_KAO_MOJI; + } else { + } + + mTextCandidatesViewManager.setSymbolMode(true, engineModeSymbol); + if (OpenWnn.isXLarge()) { + mCandidatesViewManager = mTextCandidatesViewManager; + View view = mTextCandidatesViewManager.getCurrentView(); + if (view != null) { + setCandidatesView(view); + } + } breakSequence(); + ((DefaultSoftKeyboard)mInputViewManager).setSymbolKeyboard(); break; default: @@ -2066,7 +2444,18 @@ public class OpenWnnJAJP extends OpenWnn { commitSpaceJustOne(); checkCommitInfo(); } else { - startConvert(EngineState.CONVERT_TYPE_RENBUN); + if (mEngineState.isRenbun()) { + if (mCandidatesViewManager instanceof TextCandidatesViewManager) { + if (!mCandidatesViewManager.isFocusCandidate()) { + processDownKeyEvent(); + } + processRightKeyEvent(); + } else { + mCandidatesViewManager.processMoveKeyEvent(KeyEvent.KEYCODE_DPAD_RIGHT); + } + } else { + startConvert(EngineState.CONVERT_TYPE_RENBUN); + } } } mEnableAutoDeleteSpace = false; @@ -2267,14 +2656,24 @@ public class OpenWnnJAJP extends OpenWnn { return; } - mEnableLearning = preference.getBoolean("opt_enable_learning", true); - mEnablePrediction = preference.getBoolean("opt_prediction", true); - mEnableSpellCorrection = preference.getBoolean("opt_spell_correction", true); + if (mConverter == mConverterEN) { + mEnableLearning = preference.getBoolean("opt_enable_learning_en", true); + mEnablePrediction = preference.getBoolean("opt_prediction_en", false); + if (OpenWnn.isXLarge()) { + mEnableSpellCorrection = preference.getBoolean("opt_spell_correction_en", false); + } else { + mEnableSpellCorrection = preference.getBoolean("opt_spell_correction_en", true); + } + } else { + mEnableLearning = preference.getBoolean("opt_enable_learning_ja", true); + mEnablePrediction = preference.getBoolean("opt_prediction_ja", true); + } mDisableAutoCommitEnglishMask &= ~AUTO_COMMIT_ENGLISH_OFF; int preferenceDictionary = EngineState.PREFERENCE_DICTIONARY_NONE; mEnableConverter = true; mEnableSymbolList = true; mEnableSymbolListNonHalf = true; + setEnabledTabs(true); mAutoCaps = preference.getBoolean("auto_caps", true); mFilter.filter = 0; mEnableAutoInsertSpace = true; @@ -2305,6 +2704,7 @@ public class OpenWnnJAJP extends OpenWnn { mEnableSymbolListNonHalf = false; mFilter.filter = CandidateFilter.FILTER_NON_ASCII; mDisableAutoCommitEnglishMask |= AUTO_COMMIT_ENGLISH_OFF; + mTextCandidatesViewManager.setEnableEmoticon(false); break; case EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS: @@ -2353,7 +2753,9 @@ public class OpenWnnJAJP extends OpenWnn { updateEngineState(state); updateMetaKeyStateDisplay(); - checkTutorial(info.privateImeOptions); + if (!OpenWnn.isXLarge()) { + checkTutorial(info.privateImeOptions); + } } /** @@ -2473,6 +2875,85 @@ public class OpenWnnJAJP extends OpenWnn { updateMetaKeyStateDisplay(); } } + if (mEnableHardware12Keyboard && !mDirectInputMode) { + if (isHardKeyboard12KeyLongPress(key) + && ((ev.getFlags() & KeyEvent.FLAG_CANCELED_LONG_PRESS) == 0)) { + switch (key) { + case KeyEvent.KEYCODE_SOFT_LEFT: + if (mEngineState.isSymbolList()) { + switchSymbolList(); + } else if ((mComposingText.size(0) != 0) && !mEngineState.isRenbun() + && (((DefaultSoftKeyboardJAJP)mInputViewManager).getKeyMode() + == DefaultSoftKeyboardJAJP.KEYMODE_JA_FULL_HIRAGANA)) { + startConvert(EngineState.CONVERT_TYPE_RENBUN); + } else { + ((DefaultSoftKeyboard) mInputViewManager).onKey( + DefaultSoftKeyboard.KEYCODE_JP12_EMOJI, null); + } + break; + + case KeyEvent.KEYCODE_SOFT_RIGHT: + ((DefaultSoftKeyboardJAJP) mInputViewManager).showInputModeSwitchDialog(); + break; + + case KeyEvent.KEYCODE_DEL: + int newKeyCode = KeyEvent.KEYCODE_FORWARD_DEL; + int composingTextSize = mComposingText.size(ComposingText.LAYER1); + if (composingTextSize > 0) { + if (mComposingText.getCursor(ComposingText.LAYER1) > (composingTextSize - 1)) { + newKeyCode = KeyEvent.KEYCODE_DEL; + } + KeyEvent keyEvent = new KeyEvent(ev.getAction(), newKeyCode); + if (!processKeyEvent(keyEvent)) { + sendDownUpKeyEvents(keyEvent.getKeyCode()); + } + } else { + if (mInputConnection != null) { + CharSequence text = mInputConnection.getTextAfterCursor(1, 0); + if ((text == null) || (text.length() == 0)) { + newKeyCode = KeyEvent.KEYCODE_DEL; + } + } + sendDownUpKeyEvents(newKeyCode); + } + break; + + default: + break; + + } + } + } + } + + /** + * Handling KeyEvent(KEYLONGPRESS) + * <br> + * This method is called from {@link #handleEvent}. + * + * @param ev An long press key event + * @return {@code true} if the event is processed in this method; {@code false} if not. + */ + private boolean onKeyLongPressEvent(KeyEvent ev) { + if (mEnableHardware12Keyboard) { + int keyCode = 0; + if (ev != null) { + keyCode = ev.getKeyCode(); + } + switch (keyCode) { + case KeyEvent.KEYCODE_DEL: + initializeScreen(); + if (mInputConnection != null) { + mInputConnection.deleteSurroundingText(Integer.MAX_VALUE, Integer.MAX_VALUE); + } + return true; + + default: + break; + + } + } + return false; } /** @@ -2574,4 +3055,84 @@ public class OpenWnnJAJP extends OpenWnn { mConverterJAJP.breakSequence(); mConverterEN.breakSequence(); } + + /** + * Switch symbol list. + */ + private void switchSymbolList(){ + changeSymbolEngineState(new EngineState(), ENGINE_MODE_SYMBOL); + mHardAlt = 0; + updateMetaKeyStateDisplay(); + } + + /** + * Change symbol engine state. + * + * @param state Engine state + * @param mode Engine mode + */ + private void changeSymbolEngineState(EngineState state, int mode) { + state.temporaryMode = EngineState.TEMPORARY_DICTIONARY_MODE_SYMBOL; + updateEngineState(state); + } + + /** + * Set enable tabs. + * + * @param enableEmoticon {@code true} - Emoticon is enabled. + * {@code false} - Emoticon is disabled. + */ + private void setEnabledTabs(boolean enableEmoticon) { + mTextCandidatesViewManager.setEnableEmoticon(enableEmoticon); + } + + /** + * Is enable hard keyboard 12Key long press keycode. + * + * @param keyCode keycode. + * @return {@code true} if enable long press keycode; {@code false} if not. + */ + private boolean isHardKeyboard12KeyLongPress(int keyCode) { + boolean isLongPress = false; + switch (keyCode) { + case KeyEvent.KEYCODE_SOFT_LEFT: + case KeyEvent.KEYCODE_SOFT_RIGHT: + case KeyEvent.KEYCODE_DEL: + isLongPress = true; + break; + + default: + break; + } + return isLongPress; + } + + /** + * Key event handler for hardware 12Keyboard. + * + * @param keyEvent A key event + * @return {@code true} if the event is handled in this method. + */ + private boolean processHardware12Keyboard(KeyEvent keyEvent) { + boolean ret = false; + if (mEnableHardware12Keyboard && (keyEvent != null)) { + int keyCode = keyEvent.getKeyCode(); + + if (isHardKeyboard12KeyLongPress(keyCode)) { + if (keyEvent.getRepeatCount() == 0) { + keyEvent.startTracking(); + } + ret = true; + } else { + Integer code = HW12KEYBOARD_KEYCODE_REPLACE_TABLE.get(keyCode); + if (code != null) { + if (keyEvent.getRepeatCount() == 0) { + ((DefaultSoftKeyboard) mInputViewManager).onKey(code.intValue(), null); + } + ret = true; + } + } + } + return ret; + } } diff --git a/src/jp/co/omronsoft/openwnn/OpenWnnSQLiteOpenHelper.java b/src/jp/co/omronsoft/openwnn/OpenWnnSQLiteOpenHelper.java new file mode 100644 index 0000000..382dc09 --- /dev/null +++ b/src/jp/co/omronsoft/openwnn/OpenWnnSQLiteOpenHelper.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package jp.co.omronsoft.openwnn; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +import android.util.Log; + +/** + * The implementation class of SQLiteOpenHelper . + * + * @author Copyright (C) 2012 OMRON SOFTWARE CO.,LTD. All Rights Reserved. + */ +public class OpenWnnSQLiteOpenHelper extends SQLiteOpenHelper { + private static final int DATABASE_VERSION = 1; + + public OpenWnnSQLiteOpenHelper(Context context, String dbname) { + super(context, dbname, null, DATABASE_VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db) { + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + } +} diff --git a/src/jp/co/omronsoft/openwnn/StrSegment.java b/src/jp/co/omronsoft/openwnn/StrSegment.java index b0715bc..481bb13 100644 --- a/src/jp/co/omronsoft/openwnn/StrSegment.java +++ b/src/jp/co/omronsoft/openwnn/StrSegment.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/StrSegmentClause.java b/src/jp/co/omronsoft/openwnn/StrSegmentClause.java index 210b3d8..1922210 100644 --- a/src/jp/co/omronsoft/openwnn/StrSegmentClause.java +++ b/src/jp/co/omronsoft/openwnn/StrSegmentClause.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/SymbolList.java b/src/jp/co/omronsoft/openwnn/SymbolList.java index e41bc4d..8000525 100644 --- a/src/jp/co/omronsoft/openwnn/SymbolList.java +++ b/src/jp/co/omronsoft/openwnn/SymbolList.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -98,10 +98,10 @@ public class SymbolList implements WnnEngine { case LANG_JA: /* symbols for Japanese IME */ - mSymbols.put(SYMBOL_ENGLISH, getXmlfile(R.xml.symbols_latin1_list)); mSymbols.put(SYMBOL_JAPANESE, getXmlfile(R.xml.symbols_japan_list)); mSymbols.put(SYMBOL_JAPANESE_FACE, getXmlfile(R.xml.symbols_japan_face_list)); - mCurrentList = mSymbols.get(SYMBOL_ENGLISH); + mSymbols.put(SYMBOL_ENGLISH, getXmlfile(R.xml.symbols_latin1_list)); + mCurrentList = mSymbols.get(SYMBOL_JAPANESE); break; case LANG_ZHCN: diff --git a/src/jp/co/omronsoft/openwnn/TextCandidates1LineViewManager.java b/src/jp/co/omronsoft/openwnn/TextCandidates1LineViewManager.java new file mode 100644 index 0000000..4b1a65b --- /dev/null +++ b/src/jp/co/omronsoft/openwnn/TextCandidates1LineViewManager.java @@ -0,0 +1,726 @@ +/* + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jp.co.omronsoft.openwnn; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.media.AudioManager; +import android.os.Handler; +import android.os.Message; +import android.os.Vibrator; +import android.text.Layout; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.style.AbsoluteSizeSpan; +import android.text.style.AlignmentSpan; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.View.OnClickListener; +import android.view.View.OnLongClickListener; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.HorizontalScrollView; +import android.widget.TextView; + +import java.util.ArrayList; + +/** + * The default candidates view manager using {@link android.widget.EditText}. + * + * @author Copyright (C) 2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. + */ +public class TextCandidates1LineViewManager extends CandidatesViewManager { + + /** displayCandidates() normal display */ + private static final int IS_NEXTCANDIDATE_NORMAL = 1; + /** displayCandidates() delay display */ + private static final int IS_NEXTCANDIDATE_DELAY = 2; + /** displayCandidates() display end */ + private static final int IS_NEXTCANDIDATE_END = 3; + + /** Delay of set candidate */ + private static final int SET_CANDIDATE_DELAY = 50; + /** Delay Millis */ + private static final int CANDIDATE_DELAY_MILLIS = 500; + + /** Scroll distance */ + private static final float SCROLL_DISTANCE = 0.9f; + + /** Body view of the candidates list */ + private ViewGroup mViewBody; + /** Scroller */ + private HorizontalScrollView mViewBodyScroll; + /** Left more button */ + private ImageView mLeftMoreButton; + /** Right more button */ + private ImageView mRightMoreButton; + /** Candidate view */ + private LinearLayout mViewCandidateList; + + /** {@link OpenWnn} instance using this manager */ + private OpenWnn mWnn; + /** View type (VIEW_TYPE_NORMAL or VIEW_TYPE_FULL or VIEW_TYPE_CLOSE) */ + private int mViewType; + + /** view width */ + private int mViewWidth; + /** Minimum width of candidate view */ + private int mCandidateMinimumWidth; + /** Minimum height of candidate view */ + private int mCandidateMinimumHeight; + + /** Minimum width of candidate view */ + private static final int CANDIDATE_MINIMUM_WIDTH = 48; + + /** Whether hide the view if there is no candidate */ + private boolean mAutoHideMode; + /** The converter to get candidates from and notice the selected candidate to. */ + private WnnEngine mConverter; + /** Limitation of displaying candidates */ + private int mDisplayLimit; + + /** Vibrator for touch vibration */ + private Vibrator mVibrator = null; + /** AudioManager for click sound */ + private AudioManager mSound = null; + + /** Number of candidates displaying */ + private int mWordCount; + /** List of candidates */ + private ArrayList<WnnWord> mWnnWordArray; + + /** Character width of the candidate area */ + private int mLineLength = 0; + /** Maximum width of candidate view */ + private int mCandidateMaxWidth = 0; + /** general information about a display */ + private final DisplayMetrics mMetrics = new DisplayMetrics(); + /** Focus is none now */ + private static final int FOCUS_NONE = -1; + /** Handler for set Candidate */ + private static final int MSG_SET_CANDIDATES = 1; + /** List of textView for CandiData List */ + private ArrayList<TextView> mTextViewArray = new ArrayList<TextView>(); + /** Now focus textView index */ + private int mCurrentFocusIndex = FOCUS_NONE; + /** Focused View */ + private View mFocusedView = null; + /** Focused View Background */ + private Drawable mFocusedViewBackground = null; + /** Scale up text size */ + private AbsoluteSizeSpan mSizeSpan; + /** Scale up text alignment */ + private AlignmentSpan.Standard mCenterSpan; + /** Whether candidates long click enable */ + private boolean mEnableCandidateLongClick = true; + + /** {@code Handler} Handler for focus Candidate wait delay */ + private Handler mHandler = new Handler() { + @Override public void handleMessage(Message msg) { + + switch (msg.what) { + case MSG_SET_CANDIDATES: + displayCandidatesDelay(mConverter); + break; + + default: + break; + } + } + }; + + /** Event listener for touching a candidate */ + private OnClickListener mCandidateOnClick = new OnClickListener() { + public void onClick(View v) { + if (!v.isShown()) { + return; + } + playSoundAndVibration(); + + if (v instanceof CandidateTextView) { + CandidateTextView text = (CandidateTextView)v; + int wordcount = text.getId(); + WnnWord word = getWnnWord(wordcount); + clearFocusCandidate(); + selectCandidate(word); + } + } + }; + + /** Event listener for long-clicking a candidate */ + private OnLongClickListener mCandidateOnLongClick = new OnLongClickListener() { + public boolean onLongClick(View v) { + if (!v.isShown()) { + return true; + } + + if (!mEnableCandidateLongClick) { + return false; + } + + clearFocusCandidate(); + + int wordcount = ((TextView)v).getId(); + mWord = mWnnWordArray.get(wordcount); + + displayDialog(v, mWord); + return true; + } + }; + + /** + * Constructor + */ + public TextCandidates1LineViewManager() { + this(300); + } + + /** + * Constructor + * + * @param displayLimit The limit of display + */ + public TextCandidates1LineViewManager(int displayLimit) { + mDisplayLimit = displayLimit; + mWnnWordArray = new ArrayList<WnnWord>(); + mAutoHideMode = true; + mMetrics.setToDefaults(); + } + + /** + * Set auto-hide mode. + * @param hide {@code true} if the view will hidden when no candidate exists; + * {@code false} if the view is always shown. + */ + public void setAutoHide(boolean hide) { + mAutoHideMode = hide; + } + + /** @see CandidatesViewManager */ + public View initView(OpenWnn parent, int width, int height) { + mWnn = parent; + mViewWidth = width; + + Resources r = mWnn.getResources(); + + mCandidateMinimumWidth = (int)(CANDIDATE_MINIMUM_WIDTH * mMetrics.density); + mCandidateMinimumHeight = r.getDimensionPixelSize(R.dimen.candidate_layout_height); + + LayoutInflater inflater = parent.getLayoutInflater(); + mViewBody = (ViewGroup)inflater.inflate(R.layout.candidates_1line, null); + mViewBodyScroll = (HorizontalScrollView)mViewBody.findViewById(R.id.candview_scroll_1line); + mViewBodyScroll.setOverScrollMode(View.OVER_SCROLL_NEVER); + mViewBodyScroll.setOnTouchListener(new View.OnTouchListener() { + public boolean onTouch(View v, MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + case MotionEvent.ACTION_MOVE: + if (mHandler.hasMessages(MSG_SET_CANDIDATES)) { + mHandler.removeMessages(MSG_SET_CANDIDATES); + mHandler.sendEmptyMessageDelayed(MSG_SET_CANDIDATES, CANDIDATE_DELAY_MILLIS); + } + break; + + default: + break; + + } + return false; + } + }); + + mLeftMoreButton = (ImageView)mViewBody.findViewById(R.id.left_more_imageview); + mLeftMoreButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + if (!v.isShown()) { + return; + } + playSoundAndVibration(); + if (mViewBodyScroll.getScrollX() > 0) { + mViewBodyScroll.smoothScrollBy( + (int)(mViewBodyScroll.getWidth() * -SCROLL_DISTANCE), 0); + } + } + }); + mLeftMoreButton.setOnLongClickListener(new View.OnLongClickListener() { + public boolean onLongClick(View v) { + if (!v.isShown()) { + return false; + } + if (!mViewBodyScroll.fullScroll(View.FOCUS_LEFT)) { + mViewBodyScroll.scrollTo(mViewBodyScroll.getChildAt(0).getWidth(), 0); + } + return true; + } + }); + + mRightMoreButton = (ImageView)mViewBody.findViewById(R.id.right_more_imageview); + mRightMoreButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + if (!v.isShown()) { + return; + } + int width = mViewBodyScroll.getWidth(); + int scrollMax = mViewBodyScroll.getChildAt(0).getRight(); + + if ((mViewBodyScroll.getScrollX() + width) < scrollMax) { + mViewBodyScroll.smoothScrollBy((int)(width * SCROLL_DISTANCE), 0); + } + } + }); + mRightMoreButton.setOnLongClickListener(new View.OnLongClickListener() { + public boolean onLongClick(View v) { + if (!v.isShown()) { + return false; + } + if (!mViewBodyScroll.fullScroll(View.FOCUS_RIGHT)) { + mViewBodyScroll.scrollTo(0, 0); + } + return true; + } + }); + + mViewLongPressDialog = (View)inflater.inflate(R.layout.candidate_longpress_dialog, null); + + /* select button */ + Button longPressDialogButton = (Button)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_select); + longPressDialogButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + playSoundAndVibration(); + clearFocusCandidate(); + selectCandidate(mWord); + closeDialog(); + } + }); + + /* cancel button */ + longPressDialogButton = (Button)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_cancel); + longPressDialogButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + playSoundAndVibration(); + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL)); + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.UPDATE_CANDIDATE)); + closeDialog(); + } + }); + + int buttonWidth = r.getDimensionPixelSize(R.dimen.candidate_layout_width); + mCandidateMaxWidth = (mViewWidth - buttonWidth * 2) / 2; + + mSizeSpan = new AbsoluteSizeSpan(r.getDimensionPixelSize(R.dimen.candidate_delete_word_size)); + mCenterSpan = new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER); + + createNormalCandidateView(); + + setViewType(CandidatesViewManager.VIEW_TYPE_CLOSE); + + return mViewBody; + } + + /** + * Create normal candidate view + */ + private void createNormalCandidateView() { + mViewCandidateList = (LinearLayout)mViewBody.findViewById(R.id.candidates_view_1line); + + Context context = mViewBodyScroll.getContext(); + for (int i = 0; i < mDisplayLimit; i++) { + mViewCandidateList.addView(new CandidateTextView(context, + mCandidateMinimumHeight, + mCandidateMinimumWidth, + mCandidateMaxWidth)); + } + } + + /** @see CandidatesViewManager#getCurrentView */ + public View getCurrentView() { + return mViewBody; + } + + /** @see CandidatesViewManager#setViewType */ + public void setViewType(int type) { + mViewType = type; + + if (type == CandidatesViewManager.VIEW_TYPE_NORMAL) { + mViewCandidateList.setMinimumHeight(mCandidateMinimumHeight); + } else { + mViewCandidateList.setMinimumHeight(-1); + mHandler.removeMessages(MSG_SET_CANDIDATES); + + if (mViewBody.isShown()) { + mWnn.setCandidatesViewShown(false); + } + } + } + + /** @see CandidatesViewManager#getViewType */ + public int getViewType() { + return mViewType; + } + + /** @see CandidatesViewManager#displayCandidates */ + public void displayCandidates(WnnEngine converter) { + + mHandler.removeMessages(MSG_SET_CANDIDATES); + + closeDialog(); + clearCandidates(); + mConverter = converter; + + int isNextCandidate = IS_NEXTCANDIDATE_NORMAL; + while(isNextCandidate == IS_NEXTCANDIDATE_NORMAL) { + isNextCandidate = displayCandidatesNormal(converter); + } + + if (isNextCandidate == IS_NEXTCANDIDATE_DELAY) { + isNextCandidate = displayCandidatesDelay(converter); + } + + mViewBodyScroll.scrollTo(0,0); + } + + + /** + * Display the candidates. + * @param converter {@link WnnEngine} which holds candidates. + */ + private int displayCandidatesNormal(WnnEngine converter) { + int isNextCandidate = IS_NEXTCANDIDATE_NORMAL; + + if (converter == null) { + return IS_NEXTCANDIDATE_END; + } + + /* Get candidates */ + WnnWord result = converter.getNextCandidate(); + if (result == null) { + return IS_NEXTCANDIDATE_END; + } + + mLineLength += setCandidate(result); + if (mLineLength >= mViewWidth) { + isNextCandidate = IS_NEXTCANDIDATE_DELAY; + } + + if (mWordCount < 1) { /* no candidates */ + if (mAutoHideMode) { + mWnn.setCandidatesViewShown(false); + return IS_NEXTCANDIDATE_END; + } + } + + if (mWordCount > mDisplayLimit) { + return IS_NEXTCANDIDATE_END; + } + + if (!(mViewBody.isShown())) { + mWnn.setCandidatesViewShown(true); + } + return isNextCandidate; + } + + /** + * Display the candidates. + * @param converter {@link WnnEngine} which holds candidates. + */ + private int displayCandidatesDelay(WnnEngine converter) { + int isNextCandidate = IS_NEXTCANDIDATE_DELAY; + + if (converter == null) { + return IS_NEXTCANDIDATE_END; + } + + /* Get candidates */ + WnnWord result = converter.getNextCandidate(); + if (result == null) { + return IS_NEXTCANDIDATE_END; + } + + setCandidate(result); + + if (mWordCount > mDisplayLimit) { + return IS_NEXTCANDIDATE_END; + } + + mHandler.sendEmptyMessageDelayed(MSG_SET_CANDIDATES, SET_CANDIDATE_DELAY); + + return isNextCandidate; + } + + /** + * Set the candidate for candidate view + * @param word set word + * @return int Set width + */ + private int setCandidate(WnnWord word) { + CandidateTextView candidateTextView = + (CandidateTextView) mViewCandidateList.getChildAt(mWordCount); + candidateTextView.setCandidateTextView(word, mWordCount, mCandidateOnClick, + mCandidateOnLongClick); + mWnnWordArray.add(mWordCount, word); + mWordCount++; + mTextViewArray.add(candidateTextView); + + return candidateTextView.getWidth(); + } + + /** + * Clear the candidate view + */ + private void clearNormalViewCandidate() { + int candidateNum = mViewCandidateList.getChildCount(); + for (int i = 0; i < candidateNum; i++) { + View v = mViewCandidateList.getChildAt(i); + v.setVisibility(View.GONE); + } + } + + /** @see CandidatesViewManager#clearCandidates */ + public void clearCandidates() { + clearFocusCandidate(); + clearNormalViewCandidate(); + + mLineLength = 0; + + mWordCount = 0; + mWnnWordArray.clear(); + mTextViewArray.clear(); + + if (mAutoHideMode && mViewBody.isShown()) { + mWnn.setCandidatesViewShown(false); + } + } + + /** @see CandidatesViewManager#setPreferences */ + public void setPreferences(SharedPreferences pref) { + try { + if (pref.getBoolean("key_vibration", false)) { + mVibrator = (Vibrator)mWnn.getSystemService(Context.VIBRATOR_SERVICE); + } else { + mVibrator = null; + } + if (pref.getBoolean("key_sound", false)) { + mSound = (AudioManager)mWnn.getSystemService(Context.AUDIO_SERVICE); + } else { + mSound = null; + } + } catch (Exception ex) { + Log.d("OpenWnn", "NO VIBRATOR"); + } + } + + /** + * Select a candidate. + * <br> + * This method notices the selected word to {@link OpenWnn}. + * + * @param word The selected word + */ + private void selectCandidate(WnnWord word) { + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.SELECT_CANDIDATE, word)); + } + + private void playSoundAndVibration() { + if (mVibrator != null) { + try { + mVibrator.vibrate(5); + } catch (Exception ex) { + Log.e("OpenWnn", "TextCandidates1LineViewManager::selectCandidate Vibrator " + ex.toString()); + } + } + if (mSound != null) { + try { + mSound.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD, 1.0f); + } catch (Exception ex) { + Log.e("OpenWnn", "TextCandidates1LineViewManager::selectCandidate Sound " + ex.toString()); + } + } + } + + /** + * KeyEvent action for the candidate view. + * + * @param key Key event + */ + public void processMoveKeyEvent(int key) { + if (!mViewBody.isShown()) { + return; + } + + switch (key) { + case KeyEvent.KEYCODE_DPAD_LEFT: + moveFocus(-1); + break; + + case KeyEvent.KEYCODE_DPAD_RIGHT: + moveFocus(1); + break; + + case KeyEvent.KEYCODE_DPAD_UP: + moveFocus(-1); + break; + + case KeyEvent.KEYCODE_DPAD_DOWN: + moveFocus(1); + break; + + default: + break; + + } + } + + /** + * Get a flag candidate is focused now. + * + * @return the Candidate is focused of a flag. + */ + public boolean isFocusCandidate(){ + if (mCurrentFocusIndex != FOCUS_NONE) { + return true; + } + return false; + } + + /** + * Give focus to View of candidate. + */ + private void setViewStatusOfFocusedCandidate() { + View view = mFocusedView; + if (view != null) { + view.setBackgroundDrawable(mFocusedViewBackground); + } + + TextView v = getFocusedView(); + mFocusedView = v; + if (v != null) { + mFocusedViewBackground = v.getBackground(); + v.setBackgroundResource(R.drawable.cand_back_focuse); + + int viewBodyLeft = getViewLeftOnScreen(mViewBodyScroll); + int viewBodyRight = viewBodyLeft + mViewBodyScroll.getWidth(); + int focusedViewLeft = getViewLeftOnScreen(v); + int focusedViewRight = focusedViewLeft + v.getWidth(); + + if (focusedViewRight > viewBodyRight) { + mViewBodyScroll.scrollBy((focusedViewRight - viewBodyRight), 0); + } else if (focusedViewLeft < viewBodyLeft) { + mViewBodyScroll.scrollBy((focusedViewLeft - viewBodyLeft), 0); + } + } + } + + /** + * Clear focus to selected candidate. + */ + private void clearFocusCandidate(){ + View view = mFocusedView; + if (view != null) { + view.setBackgroundDrawable(mFocusedViewBackground); + mFocusedView = null; + } + + mCurrentFocusIndex = FOCUS_NONE; + + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.FOCUS_CANDIDATE_END)); + } + + /** + * Select candidate that has focus. + */ + public void selectFocusCandidate(){ + if (mCurrentFocusIndex != FOCUS_NONE) { + selectCandidate(getFocusedWnnWord()); + } + } + + /** + * Get View of focus candidate. + */ + private TextView getFocusedView() { + if (mCurrentFocusIndex == FOCUS_NONE) { + return null; + } + return mTextViewArray.get(mCurrentFocusIndex); + } + + /** + * Move the focus to next candidate. + * + * @param direction The direction of increment or decrement. + */ + private void moveFocus(int direction) { + boolean isStart = (mCurrentFocusIndex == FOCUS_NONE); + int size = mTextViewArray.size(); + int index = isStart ? 0 : (mCurrentFocusIndex + direction); + + if (index < 0) { + index = size - 1; + } else { + if (index >= size) { + index = 0; + } + } + + mCurrentFocusIndex = index; + setViewStatusOfFocusedCandidate(); + + if (isStart) { + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.FOCUS_CANDIDATE_START)); + } + } + + /** + * Get view top position on screen. + * + * @param view target view. + * @return int view top position on screen + */ + private int getViewLeftOnScreen(View view) { + int[] location = new int[2]; + view.getLocationOnScreen(location); + return location[0]; + } + + /** @see CandidatesViewManager#getFocusedWnnWord */ + public WnnWord getFocusedWnnWord() { + return getWnnWord(mCurrentFocusIndex); + } + + /** + * Get WnnWord. + * + * @return WnnWord word + */ + public WnnWord getWnnWord(int index) { + return mWnnWordArray.get(index); + } + + /** @see CandidatesViewManager#setCandidateMsgRemove */ + public void setCandidateMsgRemove() { + mHandler.removeMessages(MSG_SET_CANDIDATES); + } +} diff --git a/src/jp/co/omronsoft/openwnn/TextCandidatesViewManager.java b/src/jp/co/omronsoft/openwnn/TextCandidatesViewManager.java index c84e845..81df56e 100644 --- a/src/jp/co/omronsoft/openwnn/TextCandidatesViewManager.java +++ b/src/jp/co/omronsoft/openwnn/TextCandidatesViewManager.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,13 +16,20 @@ package jp.co.omronsoft.openwnn; +import java.nio.channels.Selector; import java.util.ArrayList; +import java.util.LinkedList; import android.content.Context; import android.content.SharedPreferences; -import android.content.res.Configuration; import android.content.res.Resources; -import android.media.MediaPlayer; +import android.content.res.Configuration; +import android.graphics.drawable.Drawable; +import android.graphics.Rect; +import android.media.AudioManager; +import android.os.Handler; +import android.os.Message; import android.os.Vibrator; +import android.preference.PreferenceManager; import android.text.TextUtils; import android.text.TextPaint; import android.text.SpannableString; @@ -31,13 +38,14 @@ import android.text.style.ImageSpan; import android.text.style.DynamicDrawableSpan; import android.util.Log; import android.util.DisplayMetrics; +import android.util.TypedValue; import android.view.Gravity; +import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; -import android.view.View.OnTouchListener; import android.view.GestureDetector; import android.view.LayoutInflater; import android.widget.Button; @@ -47,16 +55,13 @@ import android.widget.TextView; import android.widget.EditText; import android.widget.AbsoluteLayout; import android.widget.ImageView; -import android.graphics.drawable.Drawable; /** * The default candidates view manager class using {@link EditText}. * - * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. + * @author Copyright (C) 2009-2011 OMRON SOFTWARE CO., LTD. All Rights Reserved. */ -public class TextCandidatesViewManager implements CandidatesViewManager, GestureDetector.OnGestureListener { - /** Height of a line */ - public static final int LINE_HEIGHT = 34; +public class TextCandidatesViewManager extends CandidatesViewManager implements GestureDetector.OnGestureListener { /** Number of lines to display (Portrait) */ public static final int LINE_NUM_PORTRAIT = 2; /** Number of lines to display (Landscape) */ @@ -64,29 +69,50 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture /** Maximum lines */ private static final int DISPLAY_LINE_MAX_COUNT = 1000; - /** Width of the view */ - private static final int CANDIDATE_MINIMUM_WIDTH = 48; - /** Height of the view */ - private static final int CANDIDATE_MINIMUM_HEIGHT = 35; - /** Align the candidate left if the width of the string exceeds this threshold */ - private static final int CANDIDATE_LEFT_ALIGN_THRESHOLD = 120; /** Maximum number of displaying candidates par one line (full view mode) */ private static final int FULL_VIEW_DIV = 4; + /** Maximum number of displaying candidates par one line (full view mode)(symbol)(portrait) */ + private static final int FULL_VIEW_SYMBOL_DIV_PORT = 6; + /** Maximum number of displaying candidates par one line (full view mode)(symbol)(landscape) */ + private static final int FULL_VIEW_SYMBOL_DIV_LAND = 10; + /** Delay of set candidate */ + private static final int SET_CANDIDATE_DELAY = 50; + /** First line count */ + private static final int SET_CANDIDATE_FIRST_LINE_COUNT = 7; + /** Delay line count */ + private static final int SET_CANDIDATE_DELAY_LINE_COUNT = 1; + + /** Focus is none now */ + private static final int FOCUS_NONE = -1; + /** Handler for focus Candidate */ + private static final int MSG_MOVE_FOCUS = 0; + /** Handler for set Candidate */ + private static final int MSG_SET_CANDIDATES = 1; + /** Handler for select Candidate */ + private static final int MSG_SELECT_CANDIDATES = 2; + + /** NUmber of Candidate display lines */ + private static final int SETTING_NUMBER_OF_LINEMAX = 5; /** Body view of the candidates list */ - private ViewGroup mViewBody; + private ViewGroup mViewBody = null; + + /** The view of the Symbol Tab */ + private TextView mViewTabSymbol; + /** The view of the Emoticon Tab */ + private TextView mViewTabEmoticon; /** Scroller of {@code mViewBodyText} */ private ScrollView mViewBodyScroll; /** Base of {@code mViewCandidateList1st}, {@code mViewCandidateList2nd} */ private ViewGroup mViewCandidateBase; /** Button displayed bottom of the view when there are more candidates. */ private ImageView mReadMoreButton; - /** The view of the scaling up candidate */ - private View mViewScaleUp; /** Layout for the candidates list on normal view */ private LinearLayout mViewCandidateList1st; /** Layout for the candidates list on full view */ private AbsoluteLayout mViewCandidateList2nd; + /** View for symbol tab */ + private LinearLayout mViewCandidateListTab; /** {@link OpenWnn} instance using this manager */ private OpenWnn mWnn; /** View type (VIEW_TYPE_NORMAL or VIEW_TYPE_FULL or VIEW_TYPE_CLOSE) */ @@ -96,42 +122,53 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture /** Width of the view */ private int mViewWidth; - /** Height of the view */ - private int mViewHeight; /** Minimum width of a candidate (density support) */ private int mCandidateMinimumWidth; /** Maximum width of a candidate (density support) */ private int mCandidateMinimumHeight; - - /** Whether hide the view if there is no candidates */ - private boolean mAutoHideMode; - /** The converter to be get candidates from and notice the selected candidate to. */ + /** Minimum height of the category candidate view */ + private int mCandidateCategoryMinimumHeight; + /** Left align threshold of the candidate view */ + private int mCandidateLeftAlignThreshold; + /** Height of keyboard */ + private int mKeyboardHeight; + /** Height of symbol keyboard */ + private int mSymbolKeyboardHeight; + /** Height of symbol keyboard tab */ + private int mSymbolKeyboardTabHeight; + /** Whether being able to use Emoticon */ + private boolean mEnableEmoticon = false; + + /** Whether hide the view if there is no candidate */ + private boolean mAutoHideMode = true; + /** The converter to get candidates from and notice the selected candidate to. */ private WnnEngine mConverter; /** Limitation of displaying candidates */ private int mDisplayLimit; /** Vibrator for touch vibration */ private Vibrator mVibrator = null; - /** MediaPlayer for click sound */ - private MediaPlayer mSound = null; - - /** Number of candidates displaying */ - private int mWordCount; - /** List of candidates */ - private ArrayList<WnnWord> mWnnWordArray; + /** AudioManager for click sound */ + private AudioManager mSound = null; + + /** Number of candidates displaying for 1st */ + private int mWordCount1st; + /** Number of candidates displaying for 2nd */ + private int mWordCount2nd; + /** List of candidates for 1st */ + private ArrayList<WnnWord> mWnnWordArray1st = new ArrayList<WnnWord>(); + /** List of candidates for 2nd */ + private ArrayList<WnnWord> mWnnWordArray2nd = new ArrayList<WnnWord>(); + /** List of select candidates */ + private LinkedList<WnnWord> mWnnWordSelectedList = new LinkedList<WnnWord>(); /** Gesture detector */ private GestureDetector mGestureDetector; - /** The word pressed */ - private WnnWord mWord; /** Character width of the candidate area */ private int mLineLength = 0; /** Number of lines displayed */ private int mLineCount = 1; - /** {@code true} if the candidate delete state is selected */ - private boolean mIsScaleUp = false; - /** {@code true} if the full screen mode is selected */ private boolean mIsFullView = false; @@ -142,8 +179,6 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture private int mDisplayEndOffset = 0; /** {@code true} if there are more candidates to display. */ private boolean mCanReadMore = false; - /** Width of {@code mReadMoreButton} */ - private int mReadMoreButtonWidth = 0; /** Color of the candidates */ private int mTextColor = 0; /** Template object for each candidate and normal/full view change button */ @@ -158,79 +193,150 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture private int mFullViewPrevLineTopId; /** Layout of the previous candidate (in full view) */ private ViewGroup.LayoutParams mFullViewPrevParams; - /** Whether all candidates is displayed */ + /** Whether all candidates are displayed */ private boolean mCreateCandidateDone; /** Number of lines in normal view */ private int mNormalViewWordCountOfLine; - /** general infomation about a display */ - private final DisplayMetrics mMetrics = new DisplayMetrics(); - - /** Event listener for touching a candidate */ - private OnTouchListener mCandidateOnTouch = new OnTouchListener() { - public boolean onTouch(View v, MotionEvent event) { - if (mMotionEvent != null) { - return true; - } - if ((event.getAction() == MotionEvent.ACTION_UP) - && (v instanceof TextView)) { - Drawable d = v.getBackground(); - if (d != null) { - d.setState(new int[] {}); + /** List of textView for CandiData List 1st for Symbol mode */ + private ArrayList<TextView> mTextViewArray1st = new ArrayList<TextView>(); + /** List of textView for CandiData List 2st for Symbol mode */ + private ArrayList<TextView> mTextViewArray2nd = new ArrayList<TextView>(); + /** Now focus textView index */ + private int mCurrentFocusIndex = FOCUS_NONE; + /** Focused View */ + private View mFocusedView = null; + /** Focused View Background */ + private Drawable mFocusedViewBackground = null; + /** Axis to find next TextView for Up/Down */ + private int mFocusAxisX = 0; + /** Now focused TextView in mTextViewArray1st */ + private boolean mHasFocusedArray1st = true; + + /** Portrait Number of Lines from Preference */ + private int mPortraitNumberOfLine = LINE_NUM_PORTRAIT; + /** Landscape Number of Lines from Preference */ + private int mLandscapeNumberOfLine = LINE_NUM_LANDSCAPE; + + /** Coordinates of line */ + private int mLineY = 0; + + /** {@code true} if the candidate is selected */ + private boolean mIsSymbolSelected = false; + + /** Whether candidates is symbol */ + private boolean mIsSymbolMode = false; + + /** Symbol mode */ + private int mSymbolMode = OpenWnnJAJP.ENGINE_MODE_SYMBOL; + + /** Text size of candidates */ + private float mCandNormalTextSize; + + /** Text size of category */ + private float mCandCategoryTextSize; + + /** HardKeyboard hidden({@code true}) or disp({@code false}) */ + private boolean mHardKeyboardHidden = true; + + /** Minimum height of the candidate 1line view */ + private int mCandidateOneLineMinimumHeight; + + /** Whether candidates long click enable */ + private boolean mEnableCandidateLongClick = true; + + /** Keyboard vertical gap value */ + private static final float KEYBOARD_VERTICAL_GAP = 0.009f; + + /** Keyboard vertical gap count */ + private static final int KEYBOARD_VERTICAL_GAP_COUNT = 3; + + /** {@code Handler} Handler for focus Candidate wait delay */ + private Handler mHandler = new Handler() { + @Override public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_MOVE_FOCUS: + moveFocus(msg.arg1, msg.arg2 == 1); + break; + + case MSG_SET_CANDIDATES: + if (mViewType == CandidatesViewManager.VIEW_TYPE_FULL && mIsSymbolMode) { + displayCandidates(mConverter, false, SET_CANDIDATE_DELAY_LINE_COUNT); } - } + break; - mMotionEvent = event; - boolean ret = mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CANDIDATE_VIEW_TOUCH)); - mMotionEvent = null; - return ret; - } - }; - - - /** Event listener for clicking a candidate */ - private OnClickListener mCandidateOnClick = new OnClickListener() { - public void onClick(View v) { - if (!v.isShown()) { - return; - } - - if (v instanceof TextView) { - TextView text = (TextView)v; - int wordcount = text.getId(); + case MSG_SELECT_CANDIDATES: WnnWord word = null; - word = mWnnWordArray.get(wordcount); - selectCandidate(word); + while ((word = mWnnWordSelectedList.poll()) != null) { + selectCandidate(word); + } + break; + + default: + break; } } }; - /** Event listener for long-clicking a candidate */ - private OnLongClickListener mCandidateOnLongClick = new OnLongClickListener() { - public boolean onLongClick(View v) { - if (mViewScaleUp == null) { - return false; - } + /** Event listener for touching a candidate for 1st */ + private OnClickListener mCandidateOnClick1st = new OnClickListener() { + public void onClick(View v) { + onClickCandidate(v, mWnnWordArray1st); + } + }; - if (!v.isShown()) { - return true; - } + /** Event listener for touching a candidate for 2nd */ + private OnClickListener mCandidateOnClick2nd = new OnClickListener() { + public void onClick(View v) { + onClickCandidate(v, mWnnWordArray2nd); + } + }; + + /** Event listener for long-clicking a candidate for 1st */ + private OnLongClickListener mCandidateOnLongClick1st = new OnLongClickListener() { + public boolean onLongClick(View v) { + return onLongClickCandidate(v, mWnnWordArray1st); + } + }; + + /** Event listener for long-clicking a candidate for for 2nd */ + private OnLongClickListener mCandidateOnLongClick2nd = new OnLongClickListener() { + public boolean onLongClick(View v) { + return onLongClickCandidate(v, mWnnWordArray2nd); + } + }; - Drawable d = v.getBackground(); - if (d != null) { - if(d.getState().length == 0){ - return true; + /** Event listener for click a symbol tab */ + private OnClickListener mTabOnClick = new OnClickListener() { + public void onClick(View v) { + if (!v.isShown()) { + return; + } + playSoundAndVibration(); + + if (v instanceof TextView) { + TextView text = (TextView)v; + switch (text.getId()) { + case R.id.candview_symbol: + if (mSymbolMode != OpenWnnJAJP.ENGINE_MODE_SYMBOL) { + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, + OpenWnnJAJP.ENGINE_MODE_SYMBOL)); } + break; + + case R.id.candview_emoticon: + if (mSymbolMode != OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI) { + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.CHANGE_MODE, + OpenWnnJAJP.ENGINE_MODE_SYMBOL)); + } + break; + + default: + break; } - - int wordcount = ((TextView)v).getId(); - mWord = mWnnWordArray.get(wordcount); - setViewScaleUp(true, mWord); - - return true; } - }; - + } + }; /** * Constructor @@ -245,10 +351,69 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture * @param displayLimit The limit of display */ public TextCandidatesViewManager(int displayLimit) { - this.mDisplayLimit = displayLimit; - this.mWnnWordArray = new ArrayList<WnnWord>(); - this.mAutoHideMode = true; - mMetrics.setToDefaults(); + mDisplayLimit = displayLimit; + } + + /** + * Handle a click event on the candidate. + * @param v View + * @param list List of candidates + */ + private void onClickCandidate(View v, ArrayList<WnnWord> list) { + if (!v.isShown()) { + return; + } + playSoundAndVibration(); + + if (v instanceof TextView) { + TextView text = (TextView)v; + int wordcount = text.getId(); + WnnWord word = list.get(wordcount); + + if (mHandler.hasMessages(MSG_SET_CANDIDATES)) { + mWnnWordSelectedList.add(word); + return; + } + clearFocusCandidate(); + selectCandidate(word); + } + } + + /** + * Handle a long click event on the candidate. + * @param v View + * @param list List of candidates + */ + public boolean onLongClickCandidate(View v, ArrayList<WnnWord> list) { + if (mViewLongPressDialog == null) { + return false; + } + + if (mIsSymbolMode) { + return false; + } + + if (!mEnableCandidateLongClick) { + return false; + } + + if (!v.isShown()) { + return true; + } + + Drawable d = v.getBackground(); + if (d != null) { + if(d.getState().length == 0){ + return true; + } + } + + int wordcount = ((TextView)v).getId(); + mWord = list.get(wordcount); + clearFocusCandidate(); + displayDialog(v, mWord); + + return true; } /** @@ -260,54 +425,75 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture mAutoHideMode = hide; } - /** @see CandidatesViewManager */ + /** @see CandidatesViewManager#initView */ public View initView(OpenWnn parent, int width, int height) { mWnn = parent; mViewWidth = width; - mViewHeight = height; - mCandidateMinimumWidth = (int)(CANDIDATE_MINIMUM_WIDTH * mMetrics.density); - mCandidateMinimumHeight = (int)(CANDIDATE_MINIMUM_HEIGHT * mMetrics.density); - mPortrait = - (parent.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE); - Resources r = mWnn.getResources(); + mCandidateMinimumWidth = r.getDimensionPixelSize(R.dimen.cand_minimum_width); + mCandidateMinimumHeight = r.getDimensionPixelSize(R.dimen.cand_minimum_height); + if (OpenWnn.isXLarge()) { + mCandidateOneLineMinimumHeight = r.getDimensionPixelSize(R.dimen.candidate_layout_height); + } + mCandidateCategoryMinimumHeight = r.getDimensionPixelSize(R.dimen.cand_category_minimum_height); + mCandidateLeftAlignThreshold = r.getDimensionPixelSize(R.dimen.cand_left_align_threshold); + mKeyboardHeight = r.getDimensionPixelSize(R.dimen.keyboard_height); + if (OpenWnn.isXLarge()) { + mKeyboardHeight += Math.round(height * KEYBOARD_VERTICAL_GAP) + * KEYBOARD_VERTICAL_GAP_COUNT; + } + mSymbolKeyboardHeight = r.getDimensionPixelSize(R.dimen.symbol_keyboard_height); + Drawable d = r.getDrawable(R.drawable.tab_no_select); + mSymbolKeyboardTabHeight = d.getMinimumHeight(); + + mPortrait = + (r.getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE); + + mCandNormalTextSize = r.getDimensionPixelSize(R.dimen.cand_normal_text_size); + mCandCategoryTextSize = r.getDimensionPixelSize(R.dimen.cand_category_text_size); LayoutInflater inflater = parent.getLayoutInflater(); mViewBody = (ViewGroup)inflater.inflate(R.layout.candidates, null); + mViewTabSymbol = (TextView)mViewBody.findViewById(R.id.candview_symbol); + mViewTabEmoticon = (TextView)mViewBody.findViewById(R.id.candview_emoticon); + mViewBodyScroll = (ScrollView)mViewBody.findViewById(R.id.candview_scroll); - mViewBodyScroll.setOnTouchListener(mCandidateOnTouch); mViewCandidateBase = (ViewGroup)mViewBody.findViewById(R.id.candview_base); + setNumeberOfDisplayLines(); createNormalCandidateView(); mViewCandidateList2nd = (AbsoluteLayout)mViewBody.findViewById(R.id.candidates_2nd_view); - mReadMoreButtonWidth = r.getDrawable(R.drawable.cand_up).getMinimumWidth(); - mTextColor = r.getColor(R.color.candidate_text); - - mReadMoreButton = (ImageView)mViewBody.findViewById(R.id.read_more_text); + + mReadMoreButton = (ImageView)mViewBody.findViewById(R.id.read_more_button); mReadMoreButton.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { + int resid = 0; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: if (mIsFullView) { - mReadMoreButton.setImageResource(R.drawable.cand_down_press); + resid = R.drawable.cand_up_press; } else { - mReadMoreButton.setImageResource(R.drawable.cand_up_press); + resid = R.drawable.cand_down_press; } - break; + break; case MotionEvent.ACTION_UP: if (mIsFullView) { - mReadMoreButton.setImageResource(R.drawable.cand_down); + resid = R.drawable.cand_up; } else { - mReadMoreButton.setImageResource(R.drawable.cand_up); + resid = R.drawable.cand_down; } break; default: break; } + + if (resid != 0) { + mReadMoreButton.setImageResource(resid); + } return false; } }); @@ -316,6 +502,7 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture if (!v.isShown()) { return; } + playSoundAndVibration(); if (mIsFullView) { mIsFullView = false; @@ -331,23 +518,27 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture mGestureDetector = new GestureDetector(this); - View scaleUp = (View)inflater.inflate(R.layout.candidate_scale_up, null); - mViewScaleUp = scaleUp; + mViewLongPressDialog = (View)inflater.inflate(R.layout.candidate_longpress_dialog, null); /* select button */ - Button b = (Button)scaleUp.findViewById(R.id.candidate_select); - b.setOnClickListener(new View.OnClickListener() { + Button longPressDialogButton = (Button)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_select); + longPressDialogButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { + playSoundAndVibration(); + clearFocusCandidate(); selectCandidate(mWord); + closeDialog(); } }); /* cancel button */ - b = (Button)scaleUp.findViewById(R.id.candidate_cancel); - b.setOnClickListener(new View.OnClickListener() { + longPressDialogButton = (Button)mViewLongPressDialog.findViewById(R.id.candidate_longpress_dialog_cancel); + longPressDialogButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { - setViewLayout(CandidatesViewManager.VIEW_TYPE_NORMAL); + playSoundAndVibration(); + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL)); mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.UPDATE_CANDIDATE)); + closeDialog(); } }); @@ -359,15 +550,20 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture */ private void createNormalCandidateView() { mViewCandidateList1st = (LinearLayout)mViewBody.findViewById(R.id.candidates_1st_view); - mViewCandidateList1st.setOnTouchListener(mCandidateOnTouch); - mViewCandidateList1st.setOnClickListener(mCandidateOnClick); + mViewCandidateList1st.setOnClickListener(mCandidateOnClick1st); - int line = getMaxLine(); + mViewCandidateListTab = (LinearLayout)mViewBody.findViewById(R.id.candview_tab); + TextView tSymbol = mViewTabSymbol; + tSymbol.setOnClickListener(mTabOnClick); + TextView tEmoticon = mViewTabEmoticon; + tEmoticon.setOnClickListener(mTabOnClick); + + int line = SETTING_NUMBER_OF_LINEMAX; int width = mViewWidth; for (int i = 0; i < line; i++) { LinearLayout lineView = new LinearLayout(mViewBodyScroll.getContext()); lineView.setOrientation(LinearLayout.HORIZONTAL); - LinearLayout.LayoutParams layoutParams = + LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); lineView.setLayoutParams(layoutParams); @@ -402,7 +598,7 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture if (readMore) { displayCandidates(this.mConverter, false, -1); - } else { + } else { if (type == CandidatesViewManager.VIEW_TYPE_NORMAL) { mIsFullView = false; if (mDisplayEndOffset > 0) { @@ -426,27 +622,51 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture * @return {@code true} if display is updated; {@code false} if otherwise */ private boolean setViewLayout(int type) { + + ViewGroup.LayoutParams params; + int line = (mPortrait) ? mPortraitNumberOfLine : mLandscapeNumberOfLine; + + if ((mViewType == CandidatesViewManager.VIEW_TYPE_FULL) + && (type == CandidatesViewManager.VIEW_TYPE_NORMAL)) { + clearFocusCandidate(); + } + mViewType = type; - setViewScaleUp(false, null); switch (type) { case CandidatesViewManager.VIEW_TYPE_CLOSE: + params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, + getCandidateMinimumHeight() * line); + mViewBodyScroll.setLayoutParams(params); + mViewCandidateListTab.setVisibility(View.GONE); mViewCandidateBase.setMinimumHeight(-1); + mHandler.removeMessages(MSG_SET_CANDIDATES); return false; case CandidatesViewManager.VIEW_TYPE_NORMAL: + params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, + getCandidateMinimumHeight() * line); + mViewBodyScroll.setLayoutParams(params); mViewBodyScroll.scrollTo(0, 0); + mViewCandidateListTab.setVisibility(View.GONE); mViewCandidateList1st.setVisibility(View.VISIBLE); mViewCandidateList2nd.setVisibility(View.GONE); mViewCandidateBase.setMinimumHeight(-1); - int line = (mPortrait) ? LINE_NUM_PORTRAIT : LINE_NUM_LANDSCAPE; - mViewCandidateList1st.setMinimumHeight(getCandidateMinimumHeight() * line); return false; case CandidatesViewManager.VIEW_TYPE_FULL: default: + params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, + getCandidateViewHeight()); + mViewBodyScroll.setLayoutParams(params); + if (mIsSymbolMode) { + updateSymbolType(); + mViewCandidateListTab.setVisibility(View.VISIBLE); + } else { + mViewCandidateListTab.setVisibility(View.GONE); + } mViewCandidateList2nd.setVisibility(View.VISIBLE); - mViewCandidateBase.setMinimumHeight(mViewHeight); + mViewCandidateBase.setMinimumHeight(-1); return true; } } @@ -459,39 +679,94 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture /** @see CandidatesViewManager#displayCandidates */ public void displayCandidates(WnnEngine converter) { + mHandler.removeMessages(MSG_SET_CANDIDATES); + + if (mIsSymbolSelected) { + mIsSymbolSelected = false; + if (mSymbolMode == OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI) { + return; + } + + int prevLineCount = mLineCount; + int prevWordCount1st = mWordCount1st; + clearNormalViewCandidate(); + mWordCount1st = 0; + mLineCount = 1; + mLineLength = 0; + mNormalViewWordCountOfLine = 0; + mWnnWordArray1st.clear(); + mTextViewArray1st.clear(); + if (((prevWordCount1st == 0) && (mWordCount1st == 1)) || + (prevLineCount < mLineCount)) { + mViewBodyScroll.scrollTo(0, mViewBodyScroll.getScrollY() + getCandidateMinimumHeight()); + } + if (isFocusCandidate() && mHasFocusedArray1st) { + mCurrentFocusIndex = 0; + Message m = mHandler.obtainMessage(MSG_MOVE_FOCUS, 0, 0); + mHandler.sendMessage(m); + } + return; + } + mCanReadMore = false; mDisplayEndOffset = 0; mIsFullView = false; mFullViewWordCount = 0; mFullViewOccupyCount = 0; mFullViewPrevLineTopId = 0; + mFullViewPrevView = null; mCreateCandidateDone = false; mNormalViewWordCountOfLine = 0; clearCandidates(); mConverter = converter; - setViewLayout(CandidatesViewManager.VIEW_TYPE_NORMAL); - + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL)); + mViewCandidateTemplate.setVisibility(View.VISIBLE); mViewCandidateTemplate.setBackgroundResource(R.drawable.cand_back); displayCandidates(converter, true, getMaxLine()); + + if (mIsSymbolMode) { + mIsFullView = true; + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_FULL)); + } } /** @see CandidatesViewManager#getMaxLine */ private int getMaxLine() { - int maxLine = (mPortrait) ? LINE_NUM_PORTRAIT : LINE_NUM_LANDSCAPE; + int maxLine = (mPortrait) ? mPortraitNumberOfLine : mLandscapeNumberOfLine; return maxLine; } /** + * Get categories text. + * @param String Source string replacement + * @return String Categories text + */ + private String getCategoriesText(String categoriesString) { + String ret = null; + + Resources r = mWnn.getResources(); + if(categoriesString.equals(r.getString(R.string.half_symbol_categories_txt))) { + ret = r.getString(R.string.half_symbol_txt); + } else if (categoriesString.equals(r.getString(R.string.full_symbol_categories_txt))) { + ret = r.getString(R.string.full_symbol_txt); + } else { + ret = new String(""); + } + + return ret; + } + + /** * Display the candidates. * * @param converter {@link WnnEngine} which holds candidates. * @param dispFirst Whether it is the first time displaying the candidates * @param maxLine The maximum number of displaying lines */ - synchronized private void displayCandidates(WnnEngine converter, boolean dispFirst, int maxLine) { + private void displayCandidates(WnnEngine converter, boolean dispFirst, int maxLine) { if (converter == null) { return; } @@ -499,21 +774,69 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture /* Concatenate the candidates already got and the last one in dispFirst mode */ int displayLimit = mDisplayLimit; - boolean isHistorySequence = false; + boolean isDelay = false; boolean isBreak = false; + if (converter instanceof SymbolList) { + if (!dispFirst) { + if (maxLine == -1) { + isDelay = true; + maxLine = mLineCount + SET_CANDIDATE_FIRST_LINE_COUNT; + + mHandler.sendEmptyMessageDelayed(MSG_SET_CANDIDATES, SET_CANDIDATE_DELAY); + + } else if (maxLine == SET_CANDIDATE_DELAY_LINE_COUNT) { + isDelay = true; + maxLine = mLineCount + SET_CANDIDATE_DELAY_LINE_COUNT; + + mHandler.sendEmptyMessageDelayed(MSG_SET_CANDIDATES, SET_CANDIDATE_DELAY); + } + } + if (mSymbolMode != OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI) { + displayLimit = -1; + } + } + /* Get candidates */ WnnWord result = null; - while ((displayLimit == -1 || mWordCount < displayLimit)) { - result = converter.getNextCandidate(); + String prevCandidate = null; + while ((displayLimit == -1 || getWordCount() < displayLimit)) { + for (int i = 0; i < DISPLAY_LINE_MAX_COUNT; i++) { + result = converter.getNextCandidate(); + if (result == null) { + break; + } + + if (converter instanceof SymbolList) { + break; + } + + if ((prevCandidate == null) || !prevCandidate.equals(result.candidate)) { + break; + } + } if (result == null) { break; + } else { + prevCandidate = result.candidate; + } + + if (converter instanceof SymbolList) { + if (isCategory(result)) { + if (getWordCount() != 0) { + createNextLine(false); + } + result.candidate = getCategoriesText(result.candidate); + setCandidate(true, result); + createNextLine(true); + continue; + } } setCandidate(false, result); - if (dispFirst && (maxLine < mLineCount)) { + if ((dispFirst || isDelay) && (maxLine < mLineCount)) { mCanReadMore = true; isBreak = true; break; @@ -522,11 +845,13 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture if (!isBreak && !mCreateCandidateDone) { /* align left if necessary */ - createNextLine(); + createNextLine(false); mCreateCandidateDone = true; + mHandler.removeMessages(MSG_SET_CANDIDATES); + mHandler.sendMessage(mHandler.obtainMessage(MSG_SELECT_CANDIDATES)); } - - if (mWordCount < 1) { /* no candidates */ + + if (getWordCount() < 1) { /* no candidates */ if (mAutoHideMode) { mWnn.setCandidatesViewShown(false); return; @@ -555,31 +880,51 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture TextView template = mViewCandidateTemplate; textLength += template.getPaddingLeft() + template.getPaddingRight(); int maxWidth = mViewWidth; - + boolean isEmojiSymbol = false; + if (mIsSymbolMode && (word.candidate.length() < 3)) { + isEmojiSymbol = true; + } TextView textView; - if (mIsFullView || getMaxLine() < mLineCount) { + + boolean is2nd = isFirstListOver(mIsFullView, mLineCount, word); + if (is2nd) { /* Full view */ - int indentWidth = mViewWidth / FULL_VIEW_DIV; - int occupyCount = Math.min((textLength + indentWidth) / indentWidth, FULL_VIEW_DIV); + int viewDivison = getCandidateViewDivison(); + int indentWidth = mViewWidth / viewDivison; + int occupyCount = Math.min((textLength + indentWidth + getCandidateSpaceWidth(isEmojiSymbol)) / indentWidth, viewDivison); if (isCategory) { - occupyCount = FULL_VIEW_DIV; + occupyCount = viewDivison; } - if (FULL_VIEW_DIV < (mFullViewOccupyCount + occupyCount)) { - if (FULL_VIEW_DIV != mFullViewOccupyCount) { - mFullViewPrevParams.width += (FULL_VIEW_DIV - mFullViewOccupyCount) * indentWidth; - mViewCandidateList2nd.updateViewLayout(mFullViewPrevView, mFullViewPrevParams); + if (viewDivison < (mFullViewOccupyCount + occupyCount)) { + if (viewDivison != mFullViewOccupyCount) { + mFullViewPrevParams.width += (viewDivison - mFullViewOccupyCount) * indentWidth; + if (mFullViewPrevView != null) { + mViewCandidateList2nd.updateViewLayout(mFullViewPrevView, mFullViewPrevParams); + } } mFullViewOccupyCount = 0; - mFullViewPrevLineTopId = mFullViewPrevView.getId(); + if (mFullViewPrevView != null) { + mFullViewPrevLineTopId = mFullViewPrevView.getId(); + } mLineCount++; + if (isCategory) { + mLineY += mCandidateCategoryMinimumHeight; + } else { + mLineY += getCandidateMinimumHeight(); + } + } + if (mFullViewWordCount == 0) { + mLineY = 0; } ViewGroup layout = mViewCandidateList2nd; int width = indentWidth * occupyCount; int height = getCandidateMinimumHeight(); - + if (isCategory) { + height = mCandidateCategoryMinimumHeight; + } ViewGroup.LayoutParams params = buildLayoutParams(mViewCandidateList2nd, width, height); @@ -599,24 +944,32 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture mFullViewPrevParams = params; } else { - textLength = Math.max(textLength, getCandidateMinimumWidth()); + int viewDivison = getCandidateViewDivison(); + int indentWidth = mViewWidth / viewDivison; + textLength = Math.max(textLength, indentWidth); /* Normal view */ int nextEnd = mLineLength + textLength; - if (mLineCount == 1) { + nextEnd += getCandidateSpaceWidth(isEmojiSymbol); + + if (mLineCount == 1 && !mIsSymbolMode) { maxWidth -= getCandidateMinimumWidth(); } - if ((maxWidth < nextEnd) && (mWordCount != 0)) { - createNextLine(); + if ((maxWidth < nextEnd) && (getWordCount() != 0)) { + + createNextLineFor1st(); if (getMaxLine() < mLineCount) { mLineLength = 0; /* Call this method again to add the candidate in the full view */ - setCandidate(isCategory, word); + if (!mIsSymbolSelected) { + setCandidate(isCategory, word); + } return; } mLineLength = textLength; + mLineLength += getCandidateSpaceWidth(isEmojiSymbol); } else { mLineLength = nextEnd; } @@ -628,28 +981,55 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture if (mLineCount == 1) { mViewCandidateTemplate.setBackgroundDrawable(null); } - mLineLength += CANDIDATE_LEFT_ALIGN_THRESHOLD; + mLineLength += mCandidateLeftAlignThreshold; + } else { + int CompareLength = textLength; + CompareLength += getCandidateSpaceWidth(isEmojiSymbol); } mNormalViewWordCountOfLine++; } textView.setText(word.candidate); - textView.setTextColor(mTextColor); - textView.setId(mWordCount); + if (is2nd) { + textView.setId(mWordCount2nd); + } else { + textView.setId(mWordCount1st); + } textView.setVisibility(View.VISIBLE); textView.setPressed(false); + textView.setFocusable(false); if (isCategory) { + textView.setText(" " + word.candidate); + + textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCandCategoryTextSize); + textView.setBackgroundDrawable(null); + textView.setGravity(Gravity.CENTER_VERTICAL); + textView.setMinHeight(mCandidateCategoryMinimumHeight); + textView.setHeight(mCandidateCategoryMinimumHeight); + textView.setOnClickListener(null); textView.setOnLongClickListener(null); - textView.setBackgroundDrawable(null); + textView.setTextColor(mTextColor); } else { - textView.setOnClickListener(mCandidateOnClick); - textView.setOnLongClickListener(mCandidateOnLongClick); + textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCandNormalTextSize); + textView.setGravity(Gravity.CENTER); + textView.setMinHeight(getCandidateMinimumHeight()); + textView.setHeight(getCandidateMinimumHeight()); + + if (is2nd) { + textView.setOnClickListener(mCandidateOnClick2nd); + textView.setOnLongClickListener(mCandidateOnLongClick2nd); + } else { + textView.setOnClickListener(mCandidateOnClick1st); + textView.setOnLongClickListener(mCandidateOnLongClick1st); + } + textView.setBackgroundResource(R.drawable.cand_back); + + textView.setTextColor(mTextColor); } - textView.setOnTouchListener(mCandidateOnTouch); if (maxWidth < textLength) { textView.setEllipsize(TextUtils.TruncateAt.END); @@ -668,54 +1048,59 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture if (span != null) { SpannableString spannable = new SpannableString(" "); - spannable.setSpan(span, 1, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + spannable.setSpan(span, 1, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(spannable); } + textView.setPadding(0, 0, 0, 0); - mWnnWordArray.add(mWordCount, word); - mWordCount++; + if (is2nd) { + mWnnWordArray2nd.add(mWordCount2nd, word); + mWordCount2nd++; + mTextViewArray2nd.add(textView); + } else { + mWnnWordArray1st.add(mWordCount1st, word); + mWordCount1st++; + mTextViewArray1st.add(textView); + } } /** * Create AbsoluteLayout.LayoutParams * @param layout AbsoluteLayout - * @param width - * @param height - * @return ViewGroup.LayoutParams + * @param width The width of the display + * @param height The height of the display + * @return Layout parameter */ private ViewGroup.LayoutParams buildLayoutParams(AbsoluteLayout layout, int width, int height) { - int indentWidth = mViewWidth / FULL_VIEW_DIV; + int viewDivison = getCandidateViewDivison(); + int indentWidth = mViewWidth / viewDivison; int x = indentWidth * mFullViewOccupyCount; - int nomalLine = (mPortrait) ? LINE_NUM_PORTRAIT : LINE_NUM_LANDSCAPE; - int y = getCandidateMinimumHeight() * (mLineCount - nomalLine - 1); + int y = mLineY; ViewGroup.LayoutParams params = new AbsoluteLayout.LayoutParams(width, height, x, y); return params; } - - - - - /** * Create a view for a candidate. * @return the view */ private TextView createCandidateView() { - TextView text = new TextView(mViewBodyScroll.getContext()); - text.setTextSize(20); + TextView text = new CandidateTextView(mViewBodyScroll.getContext()); + text.setTextSize(TypedValue.COMPLEX_UNIT_PX, mCandNormalTextSize); text.setBackgroundResource(R.drawable.cand_back); + text.setCompoundDrawablePadding(0); text.setGravity(Gravity.CENTER); text.setSingleLine(); - text.setPadding(4, 4, 4, 4); + text.setPadding(0, 0, 0, 0); text.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f)); text.setMinHeight(getCandidateMinimumHeight()); text.setMinimumWidth(getCandidateMinimumWidth()); + text.setSoundEffectsEnabled(false); return text; } @@ -723,24 +1108,30 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture * Display {@code mReadMoreText} if there are more candidates. */ private void setReadMore() { - if (mIsScaleUp) { + if (mIsSymbolMode) { mReadMoreButton.setVisibility(View.GONE); mViewCandidateTemplate.setVisibility(View.GONE); return; } + int resid = 0; + if (mIsFullView) { mReadMoreButton.setVisibility(View.VISIBLE); - mReadMoreButton.setImageResource(R.drawable.cand_down); + resid = R.drawable.cand_up; } else { if (mCanReadMore) { mReadMoreButton.setVisibility(View.VISIBLE); - mReadMoreButton.setImageResource(R.drawable.cand_up); + resid = R.drawable.cand_down; } else { mReadMoreButton.setVisibility(View.GONE); mViewCandidateTemplate.setVisibility(View.GONE); } } + + if (resid != 0) { + mReadMoreButton.setImageResource(resid); + } } /** @@ -759,9 +1150,11 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture } } } - + /** @see CandidatesViewManager#clearCandidates */ public void clearCandidates() { + closeDialog(); + clearFocusCandidate(); clearNormalViewCandidate(); ViewGroup layout = mViewCandidateList2nd; @@ -770,15 +1163,20 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture View v = layout.getChildAt(i); v.setVisibility(View.GONE); } - - mLineCount = 1; - mWordCount = 0; - mWnnWordArray.clear(); + mLineCount = 1; + mWordCount1st = 0; + mWordCount2nd = 0; + mWnnWordArray1st.clear(); + mWnnWordArray2nd.clear(); + mTextViewArray1st.clear(); + mTextViewArray2nd.clear(); mLineLength = 0; + mLineY = 0; + mIsFullView = false; - setViewLayout(CandidatesViewManager.VIEW_TYPE_NORMAL); + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL)); if (mAutoHideMode) { setViewLayout(CandidatesViewManager.VIEW_TYPE_CLOSE); } @@ -799,18 +1197,83 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture mVibrator = null; } if (pref.getBoolean("key_sound", false)) { - mSound = MediaPlayer.create(mWnn, R.raw.type); + mSound = (AudioManager)mWnn.getSystemService(Context.AUDIO_SERVICE); } else { mSound = null; } + setNumeberOfDisplayLines(); } catch (Exception ex) { - Log.d("iwnn", "NO VIBRATOR"); + Log.e("OpenWnn", "NO VIBRATOR"); } } /** - * Process {@code OpenWnnEvent.CANDIDATE_VIEW_TOUCH} event. - * + * Set normal mode. + */ + public void setNormalMode() { + setReadMore(); + mIsFullView = false; + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL)); + } + + /** + * Set full mode. + */ + public void setFullMode() { + mIsFullView = true; + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_FULL)); + } + + /** + * Set symbol mode. + */ + public void setSymbolMode(boolean enable, int mode) { + if (mIsSymbolMode && !enable) { + setViewType(CandidatesViewManager.VIEW_TYPE_CLOSE); + } + mSymbolMode = mode; + mIsSymbolMode = enable; + } + + /** + * Set scroll up. + */ + public void setScrollUp() { + if (!mViewBodyScroll.pageScroll(ScrollView.FOCUS_UP)) { + mViewBodyScroll.scrollTo(0, mViewBodyScroll.getChildAt(0).getHeight()); + } + } + + /** + * Set scroll down. + */ + public void setScrollDown() { + if (!mViewBodyScroll.pageScroll(ScrollView.FOCUS_DOWN)) { + mViewBodyScroll.scrollTo(0, 0); + } + } + + /** + * Set scroll full up. + */ + public void setScrollFullUp() { + if (!mViewBodyScroll.fullScroll(ScrollView.FOCUS_UP)) { + mViewBodyScroll.scrollTo(0, mViewBodyScroll.getChildAt(0).getHeight()); + } + } + + /** + * Set scroll full down. + */ + public void setScrollFullDown() { + if (!mViewBodyScroll.fullScroll(ScrollView.FOCUS_DOWN)) { + mViewBodyScroll.scrollTo(0, 0); + } + } + + /** + * Process {@link OpenWnnEvent#CANDIDATE_VIEW_TOUCH} event. + * * @return {@code true} if event is processed; {@code false} if otherwise */ public boolean onTouchSync() { @@ -825,14 +1288,29 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture * @param word The selected word */ private void selectCandidate(WnnWord word) { - setViewLayout(CandidatesViewManager.VIEW_TYPE_NORMAL); + if (!mIsSymbolMode) { + mIsFullView = false; + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL)); + } + mIsSymbolSelected = mIsSymbolMode; + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.SELECT_CANDIDATE, word)); + } + + private void playSoundAndVibration() { if (mVibrator != null) { - try { mVibrator.vibrate(30); } catch (Exception ex) { } + try { + mVibrator.vibrate(5); + } catch (Exception ex) { + Log.e("OpenWnn", "TextCandidatesViewManager::selectCandidate Vibrator " + ex.toString()); + } } if (mSound != null) { - try { mSound.seekTo(0); mSound.start(); } catch (Exception ex) { } + try { + mSound.playSoundEffect(AudioManager.FX_KEYPRESS_STANDARD, -1); + } catch (Exception ex) { + Log.e("OpenWnn", "TextCandidatesViewManager::selectCandidate Sound " + ex.toString()); + } } - mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.SELECT_CANDIDATE, word)); } /** @see android.view.GestureDetector.OnGestureListener#onDown */ @@ -842,15 +1320,15 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture /** @see android.view.GestureDetector.OnGestureListener#onFling */ public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2, float arg3) { - if (mIsScaleUp) { - return false; - } - boolean consumed = false; if (arg1 != null && arg0 != null && arg1.getY() < arg0.getY()) { if ((mViewType == CandidatesViewManager.VIEW_TYPE_NORMAL) && mCanReadMore) { if (mVibrator != null) { - try { mVibrator.vibrate(30); } catch (Exception ex) { } + try { + mVibrator.vibrate(5); + } catch (Exception ex) { + Log.e("iwnn", "TextCandidatesViewManager::onFling Vibrator " + ex.toString()); + } } mIsFullView = true; mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_FULL)); @@ -859,7 +1337,11 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture } else { if (mViewBodyScroll.getScrollY() == 0) { if (mVibrator != null) { - try { mVibrator.vibrate(30); } catch (Exception ex) { } + try { + mVibrator.vibrate(5); + } catch (Exception ex) { + Log.e("iwnn", "TextCandidatesViewManager::onFling Sound " + ex.toString()); + } } mIsFullView = false; mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.LIST_CANDIDATES_NORMAL)); @@ -907,87 +1389,523 @@ public class TextCandidatesViewManager implements CandidatesViewManager, Gesture } /** - * Switch list/enlarge view mode. - * @param up {@code true}:enlarge, {@code false}:list - * @param word The candidate word to be enlarged. + * Create a layout for the next line. + */ + private void createNextLine(boolean isCategory) { + if (isFirstListOver(mIsFullView, mLineCount, null)) { + /* Full view */ + mFullViewOccupyCount = 0; + if (mFullViewPrevView != null) { + mFullViewPrevLineTopId = mFullViewPrevView.getId(); + } + if (isCategory) { + mLineY += mCandidateCategoryMinimumHeight; + } else { + mLineY += getCandidateMinimumHeight(); + } + mLineCount++; + } else { + createNextLineFor1st(); + } + } + + /** + * Create a layout for the next line. + */ + private void createNextLineFor1st() { + LinearLayout lineView = (LinearLayout) mViewCandidateList1st.getChildAt(mLineCount - 1); + float weight = 0; + if (mLineLength < mCandidateLeftAlignThreshold) { + if (mLineCount == 1) { + mViewCandidateTemplate.setVisibility(View.GONE); + } + } else { + weight = 1.0f; + } + + LinearLayout.LayoutParams params + = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT, + weight); + + int child = lineView.getChildCount(); + for (int i = 0; i < child; i++) { + View view = lineView.getChildAt(i); + + if (view != mViewCandidateTemplate) { + view.setLayoutParams(params); + view.setPadding(0, 0, 0, 0); + } + } + + mLineLength = 0; + mNormalViewWordCountOfLine = 0; + mLineCount++; + } + + /** + * Judge if it's a category. + * + * @return {@code true} if category + */ + boolean isCategory(WnnWord word) { + int length = word.candidate.length(); + return ((length > 3) && (word.candidate.charAt(0) == '[')); + } + + /** + * Get a minimum width of a candidate view. + * + * @return the minimum width of a candidate view. + */ + private int getCandidateMinimumWidth() { + return mCandidateMinimumWidth; + } + + /** + * @return the minimum height of a candidate view. + */ + private int getCandidateMinimumHeight() { + return mCandidateMinimumHeight; + } + + /** + * Get a height of a candidate view. + * + * @return the height of a candidate view. + */ + private int getCandidateViewHeight() { + if (OpenWnn.isXLarge()) { + return mKeyboardHeight + mCandidateOneLineMinimumHeight - mSymbolKeyboardHeight + - mSymbolKeyboardTabHeight; + } else { + int numberOfLine = (mPortrait) ? mPortraitNumberOfLine : mLandscapeNumberOfLine; + Resources resource = mWnn.getResources(); + Drawable keyboardBackground = resource.getDrawable(R.drawable.keyboard_background); + Rect keyboardPadding = new Rect(0 ,0 ,0 ,0); + keyboardBackground.getPadding(keyboardPadding); + int keyboardTotalPadding = keyboardPadding.top + keyboardPadding.bottom; + if (mIsSymbolMode) { + return mKeyboardHeight + numberOfLine * getCandidateMinimumHeight() + - mSymbolKeyboardHeight - mSymbolKeyboardTabHeight; + } else if (!mHardKeyboardHidden) { + return mKeyboardHeight + numberOfLine * getCandidateMinimumHeight() + - mSymbolKeyboardHeight; + } else { + return mKeyboardHeight + keyboardTotalPadding + + numberOfLine * getCandidateMinimumHeight(); + } + } + } + + /** + * Update symbol type. + */ + private void updateSymbolType() { + switch (mSymbolMode) { + case OpenWnnJAJP.ENGINE_MODE_SYMBOL: + updateTabStatus(mViewTabSymbol, true, true); + updateTabStatus(mViewTabEmoticon, mEnableEmoticon, false); + break; + + case OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI: + updateTabStatus(mViewTabSymbol, true, false); + updateTabStatus(mViewTabEmoticon, mEnableEmoticon, true); + break; + + default: + updateTabStatus(mViewTabSymbol, true, false); + updateTabStatus(mViewTabEmoticon, mEnableEmoticon, false); + break; + } + } + + /** + * Update tab status. + * + * @param tab The tab view. + * @param enabled The tab is enabled. + * @param selected The tab is selected. + */ + private void updateTabStatus(TextView tab, boolean enabled, boolean selected) { + tab.setVisibility(View.VISIBLE); + tab.setEnabled(enabled); + int backgroundId = 0; + int colorId = 0; + if (enabled) { + if (selected) { + backgroundId = R.drawable.cand_tab; + colorId = R.color.tab_textcolor_select; + } else { + backgroundId = R.drawable.cand_tab_noselect; + colorId = R.color.tab_textcolor_no_select; + } + } else { + backgroundId = R.drawable.cand_tab_noselect; + colorId = R.color.tab_textcolor_disable; + } + tab.setBackgroundResource(backgroundId); + tab.setTextColor(mWnn.getResources().getColor(colorId)); + } + + /** + * Get candidate number of division. + * @return Number of division + */ + private int getCandidateViewDivison() { + int viewDivison; + + if (mIsSymbolMode) { + int mode = mSymbolMode; + switch (mode) { + case OpenWnnJAJP.ENGINE_MODE_SYMBOL: + viewDivison = (mPortrait) ? FULL_VIEW_SYMBOL_DIV_PORT : FULL_VIEW_SYMBOL_DIV_LAND; + break; + case OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI: + default: + viewDivison = FULL_VIEW_DIV; + break; + } + } else { + viewDivison = FULL_VIEW_DIV; + } + return viewDivison; + } + + /** + * @return Word count + */ + private int getWordCount() { + return mWordCount1st + mWordCount2nd; + } + + /** + * @return Add second */ - private void setViewScaleUp(boolean up, WnnWord word) { - if (up == mIsScaleUp || (mViewScaleUp == null)) { + private boolean isFirstListOver(boolean isFullView, int lineCount, WnnWord word) { + + if (mIsSymbolMode) { + switch (mSymbolMode) { + case OpenWnnJAJP.ENGINE_MODE_SYMBOL_KAO_MOJI: + return true; + case OpenWnnJAJP.ENGINE_MODE_SYMBOL: + return true; + default: + return (isFullView || getMaxLine() < lineCount); + } + } else { + return (isFullView || getMaxLine() < lineCount); + } + } + + /** + * @return Candidate space width + */ + private int getCandidateSpaceWidth(boolean isEmojiSymbol) { + Resources r = mWnn.getResources(); + if (mPortrait) { + if (isEmojiSymbol) { + return 0; + } else { + return r.getDimensionPixelSize(R.dimen.cand_space_width); + } + } else { + if (isEmojiSymbol) { + return r.getDimensionPixelSize(R.dimen.cand_space_width_emoji_symbol); + } else { + return r.getDimensionPixelSize(R.dimen.cand_space_width); + } + } + } + + /** + * KeyEvent action for the candidate view. + * + * @param key Key event + */ + public void processMoveKeyEvent(int key) { + if (!mViewBody.isShown()) { return; } - if (up) { - setViewLayout(CandidatesViewManager.VIEW_TYPE_NORMAL); - mViewCandidateList1st.setVisibility(View.GONE); - mViewCandidateBase.setMinimumHeight(-1); - mViewCandidateBase.addView(mViewScaleUp); - TextView text = (TextView)mViewScaleUp.findViewById(R.id.candidate_scale_up_text); - text.setText(word.candidate); - if (!mPortrait) { - Resources r = mViewBodyScroll.getContext().getResources(); - text.setTextSize(r.getDimensionPixelSize(R.dimen.candidate_delete_word_size_landscape)); + switch (key) { + case KeyEvent.KEYCODE_DPAD_UP: + moveFocus(-1, true); + break; + + case KeyEvent.KEYCODE_DPAD_DOWN: + moveFocus(1, true); + break; + + case KeyEvent.KEYCODE_DPAD_LEFT: + moveFocus(-1, false); + break; + + case KeyEvent.KEYCODE_DPAD_RIGHT: + moveFocus(1, false); + break; + + default: + break; + } + } + + /** + * Get a flag candidate is focused now. + * + * @return the Candidate is focused of a flag. + */ + public boolean isFocusCandidate(){ + if (mCurrentFocusIndex != FOCUS_NONE) { + return true; + } + return false; + } + + /** + * Give focus to View of candidate. + */ + public void setViewStatusOfFocusedCandidate(){ + View view = mFocusedView; + if (view != null) { + view.setBackgroundDrawable(mFocusedViewBackground); + view.setPadding(0, 0, 0, 0); + } + + TextView v = getFocusedView(); + mFocusedView = v; + if (v != null) { + mFocusedViewBackground = v.getBackground(); + v.setBackgroundResource(R.drawable.cand_back_focuse); + v.setPadding(0, 0, 0, 0); + + int viewBodyTop = getViewTopOnScreen(mViewBodyScroll); + int viewBodyBottom = viewBodyTop + mViewBodyScroll.getHeight(); + int focusedViewTop = getViewTopOnScreen(v); + int focusedViewBottom = focusedViewTop + v.getHeight(); + + if (focusedViewBottom > viewBodyBottom) { + mViewBodyScroll.scrollBy(0, (focusedViewBottom - viewBodyBottom)); + } else if (focusedViewTop < viewBodyTop) { + mViewBodyScroll.scrollBy(0, (focusedViewTop - viewBodyTop)); } + } + } + + /** + * Clear focus to selected candidate. + */ + public void clearFocusCandidate(){ + View view = mFocusedView; + if (view != null) { + view.setBackgroundDrawable(mFocusedViewBackground); + view.setPadding(0, 0, 0, 0); + mFocusedView = null; + } + + mFocusAxisX = 0; + mHasFocusedArray1st = true; + mCurrentFocusIndex = FOCUS_NONE; + mHandler.removeMessages(MSG_MOVE_FOCUS); + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.FOCUS_CANDIDATE_END)); + } + + /** + * @see CandidatesViewManager#selectFocusCandidate + */ + public void selectFocusCandidate(){ + if (mCurrentFocusIndex != FOCUS_NONE) { + WnnWord word = getFocusedWnnWord(); + + if (mHandler.hasMessages(MSG_SET_CANDIDATES)) { + mWnnWordSelectedList.add(word); + } else { + selectCandidate(word); + } + } + } + + /** @see CandidatesViewManager#getFocusedWnnWord */ + public WnnWord getFocusedWnnWord() { + return getWnnWord(mCurrentFocusIndex); + } - mIsScaleUp = true; - setReadMore(); + /** + * Get WnnWord. + * + * @return WnnWord word + */ + public WnnWord getWnnWord(int index) { + WnnWord word = null; + if (index < 0) { + index = 0; + mHandler.removeMessages(MSG_MOVE_FOCUS); + Log.i("iwnn", "TextCandidatesViewManager::getWnnWord index < 0 "); } else { - mIsScaleUp = false; - mViewCandidateBase.removeView(mViewScaleUp); + int size = mHasFocusedArray1st ? mWnnWordArray1st.size() : mWnnWordArray2nd.size(); + if (index >= size) { + index = size - 1; + mHandler.removeMessages(MSG_MOVE_FOCUS); + Log.i("iwnn", "TextCandidatesViewManager::getWnnWord index > candidate max "); + } + } + + if (mHasFocusedArray1st) { + word = mWnnWordArray1st.get(index); + } else { + word = mWnnWordArray2nd.get(index); } + return word; } /** - * Create a layout for the next line. + * Set display candidate line from SharedPreferences. */ - private void createNextLine() { - int lineCount = mLineCount; - if (mIsFullView || getMaxLine() < lineCount) { - /* Full view */ - mFullViewOccupyCount = 0; - mFullViewPrevLineTopId = mFullViewPrevView.getId(); + private void setNumeberOfDisplayLines(){ + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mWnn); + mPortraitNumberOfLine = Integer.parseInt(pref.getString("setting_portrait", "2")); + mLandscapeNumberOfLine = Integer.parseInt(pref.getString("setting_landscape", "1")); + } + + /** + * Set emoticon enabled. + */ + public void setEnableEmoticon(boolean enableEmoticon) { + mEnableEmoticon = enableEmoticon; + } + + /** + * Get View of focus candidate. + */ + public TextView getFocusedView() { + if (mCurrentFocusIndex == FOCUS_NONE) { + return null; + } + TextView t; + if (mHasFocusedArray1st) { + t = mTextViewArray1st.get(mCurrentFocusIndex); } else { - /* Normal view */ - LinearLayout lineView = (LinearLayout) mViewCandidateList1st.getChildAt(lineCount - 1); - float weight = 0; - if (mLineLength < CANDIDATE_LEFT_ALIGN_THRESHOLD) { - if (lineCount == 1) { - mViewCandidateTemplate.setVisibility(View.GONE); + t = mTextViewArray2nd.get(mCurrentFocusIndex); + } + return t; + } + + /** + * Move the focus to next candidate. + * + * @param direction The direction of increment or decrement. + * @param updown {@code true} if move is up or down. + */ + public void moveFocus(int direction, boolean updown) { + boolean isStart = (mCurrentFocusIndex == FOCUS_NONE); + if (direction == 0) { + setViewStatusOfFocusedCandidate(); + } + + int size1st = mTextViewArray1st.size(); + if (mHasFocusedArray1st && (size1st == 0)) { + mHasFocusedArray1st = false; + } + ArrayList<TextView> list = mHasFocusedArray1st ? mTextViewArray1st : mTextViewArray2nd; + int size = list.size(); + int start = (mCurrentFocusIndex == FOCUS_NONE) ? 0 : (mCurrentFocusIndex + direction); + + int index = -1; + boolean hasChangedLine = false; + for (int i = start; (0 <= i) && (i < size); i += direction) { + TextView view = list.get(i); + if (!view.isShown()) { + break; + } + + if (mIsSymbolMode && (view.getBackground() == null)) { + continue; + } + + if (updown) { + int left = view.getLeft(); + if ((left <= mFocusAxisX) + && (mFocusAxisX < view.getRight())) { + index = i; + break; + } + + if (left == 0) { + hasChangedLine = true; } } else { - weight = 1.0f; + index = i; + break; } + } - LinearLayout.LayoutParams params - = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, - ViewGroup.LayoutParams.WRAP_CONTENT, - weight); - - int child = lineView.getChildCount(); - for (int i = 0; i < child; i++) { - View view = lineView.getChildAt(i); + if ((index < 0) && hasChangedLine && !mHasFocusedArray1st && (0 < direction)) { + index = mTextViewArray2nd.size() - 1; + } + + if (0 <= index) { + mCurrentFocusIndex = index; + setViewStatusOfFocusedCandidate(); + if (!updown) { + mFocusAxisX = getFocusedView().getLeft(); + } + } else { + if (mCanReadMore && (0 < size1st)) { + + if ((mHasFocusedArray1st && (direction < 0)) + || (!mHasFocusedArray1st && (0 < direction))) { + updown = false; + } + + mHasFocusedArray1st = !mHasFocusedArray1st; - if (view != mViewCandidateTemplate) { - view.setLayoutParams(params); + if (!mHasFocusedArray1st && !mIsFullView) { + setFullMode(); } } - mLineLength = 0; - mNormalViewWordCountOfLine = 0; + if (size1st == 0) { + updown = false; + } + + if (0 < direction) { + mCurrentFocusIndex = -1; + } else { + mCurrentFocusIndex = (mHasFocusedArray1st ? size1st : mTextViewArray2nd.size()); + } + Message m = mHandler.obtainMessage(MSG_MOVE_FOCUS, direction, updown ? 1 : 0); + mHandler.sendMessage(m); + } + + if (isStart) { + mWnn.onEvent(new OpenWnnEvent(OpenWnnEvent.FOCUS_CANDIDATE_START)); } - mLineCount++; } /** - * @return the minimum width of a candidate view. + * Set hardkeyboard hidden. + * + * @param hardKeyboardHidden hardkeyaboard hidden. */ - private int getCandidateMinimumWidth() { - return mCandidateMinimumWidth; + public void setHardKeyboardHidden(boolean hardKeyboardHidden) { + mHardKeyboardHidden = hardKeyboardHidden; } /** - * @return the minimum height of a candidate view. + * Get view top position on screen. + * + * @param view target view. + * @return int view top position on screen */ - private int getCandidateMinimumHeight() { - return mCandidateMinimumHeight; + public int getViewTopOnScreen(View view) { + int[] location = new int[2]; + view.getLocationOnScreen(location); + return location[1]; + } + + + /** @see CandidatesViewManager#setCandidateMsgRemove */ + public void setCandidateMsgRemove() { + mHandler.removeMessages(MSG_SET_CANDIDATES); } } diff --git a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsEdit.java b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsEdit.java index 9a023e5..cf774ce 100644 --- a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsEdit.java +++ b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsEdit.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -113,7 +113,6 @@ public abstract class UserDictionaryToolsEdit extends Activity implements View.O super.onCreate(savedInstanceState); /* create view from XML layout */ - requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.user_dictionary_tools_edit); /* get widgets */ diff --git a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsList.java b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsList.java index 15d1f4a..0c584b6 100644 --- a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsList.java +++ b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsList.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,11 +21,15 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; +import android.content.res.Configuration; import android.graphics.Color; +import android.graphics.Paint.FontMetricsInt; import android.os.Bundle; +import android.text.TextPaint; import android.text.TextUtils; import android.util.Log; import android.view.Display; +import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; @@ -144,6 +148,9 @@ public abstract class UserDictionaryToolsList extends Activity /** Page right button */ private Button mRightButton = null; + /** for isXLarge */ + private static boolean mIsXLarge = false; + /** * Send the specified event to IME * @@ -154,10 +161,8 @@ public abstract class UserDictionaryToolsList extends Activity /** Get the comparator for sorting the list */ protected abstract Comparator<WnnWord> getComparator(); - /** - * Create the header - */ - protected abstract void headerCreate(); + /** Show Dialog Num */ + private int mDialogShow = -1; /** @see android.app.Activity#onCreate */ @Override protected void onCreate(Bundle savedInstanceState) { @@ -166,7 +171,6 @@ public abstract class UserDictionaryToolsList extends Activity super.onCreate(savedInstanceState); /* create XML layout */ - requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.user_dictionary_tools_list); mTableLayout = (TableLayout)findViewById(R.id.user_dictionary_tools_table); @@ -201,18 +205,39 @@ public abstract class UserDictionaryToolsList extends Activity /** @see android.app.Activity#onStart */ @Override protected void onStart() { super.onStart(); + mDialogShow = -1; sBeforeSelectedViewID = -1; sJustBeforeActionTime = -1; mWordList = getWords(); - headerCreate(); final TextView leftText = (TextView) findViewById(R.id.user_dictionary_tools_list_title_words_count); leftText.setText(mWordList.size() + "/" + MAX_WORD_COUNT); + mIsXLarge = ((getResources().getConfiguration().screenLayout & + Configuration.SCREENLAYOUT_SIZE_MASK) + == Configuration.SCREENLAYOUT_SIZE_XLARGE); updateWordList(); } /** + * Called when the system is about to start resuming a previous activity. + * + * @see android.app.Activity#onPause + */ + @Override protected void onPause() { + + if (mDialogShow == DIALOG_CONTROL_DELETE_CONFIRM) { + dismissDialog(DIALOG_CONTROL_DELETE_CONFIRM); + mDialogShow = -1; + } else if (mDialogShow == DIALOG_CONTROL_INIT_CONFIRM){ + dismissDialog(DIALOG_CONTROL_INIT_CONFIRM); + mDialogShow = -1; + } + + super.onPause(); + } + + /** * Set parameters of table * * @param w The width of the table @@ -308,12 +333,14 @@ public abstract class UserDictionaryToolsList extends Activity case MENU_ITEM_DELETE: /* delete the word (show dialog) */ showDialog(DIALOG_CONTROL_DELETE_CONFIRM); + mDialogShow = DIALOG_CONTROL_DELETE_CONFIRM; ret = true; break; case MENU_ITEM_INIT: /* clear the dictionary (show dialog) */ showDialog(DIALOG_CONTROL_INIT_CONFIRM); + mDialogShow = DIALOG_CONTROL_INIT_CONFIRM; ret = true; break; @@ -372,6 +399,7 @@ public abstract class UserDictionaryToolsList extends Activity new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int button) { + mDialogShow = -1; CharSequence focusString = ((TextView)sFocusingView).getText(); CharSequence focusPairString = ((TextView)sFocusingPairView).getText(); WnnWord wnnWordSearch = new WnnWord(); @@ -422,6 +450,7 @@ public abstract class UserDictionaryToolsList extends Activity new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int button) { + mDialogShow = -1; /* clear the user dictionary */ OpenWnnEvent ev = new OpenWnnEvent(OpenWnnEvent.INITIALIZE_USER_DICTIONARY, new WnnWord()); @@ -638,6 +667,12 @@ public abstract class UserDictionaryToolsList extends Activity Display display = windowManager.getDefaultDisplay(); int system_width = display.getWidth(); + UserDictionaryToolsListFocus dummy = new UserDictionaryToolsListFocus(this); + dummy.setTextSize(WORD_TEXT_SIZE); + TextPaint paint = dummy.getPaint(); + FontMetricsInt fontMetrics = paint.getFontMetricsInt(); + int row_hight = (Math.abs(fontMetrics.top) + fontMetrics.bottom) * 2; + for (int i = 1; i <= MAX_LIST_WORD_COUNT; i++) { TableRow row = new TableRow(this); UserDictionaryToolsListFocus stroke = new UserDictionaryToolsListFocus(this); @@ -654,6 +689,10 @@ public abstract class UserDictionaryToolsList extends Activity stroke.setFocusableInTouchMode(true); stroke.setOnTouchListener(this); stroke.setOnFocusChangeListener(this); + if (isXLarge()) { + stroke.setHeight(row_hight); + stroke.setGravity(Gravity.CENTER_VERTICAL); + } UserDictionaryToolsListFocus candidate = new UserDictionaryToolsListFocus(this); candidate.setId(i+MAX_WORD_COUNT); @@ -670,6 +709,10 @@ public abstract class UserDictionaryToolsList extends Activity candidate.setOnTouchListener(this); candidate.setOnFocusChangeListener(this); + if (isXLarge()) { + candidate.setHeight(row_hight); + candidate.setGravity(Gravity.CENTER_VERTICAL); + } stroke.setPairView(candidate); candidate.setPairView(stroke); @@ -726,4 +769,14 @@ public abstract class UserDictionaryToolsList extends Activity } mTableLayout.requestLayout(); } + + /** + * Whether the x large mode. + * + * @return {@code true} if x large; {@code false} if not x large. + */ + public static boolean isXLarge() { + return mIsXLarge; + } + } diff --git a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsListFocus.java b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsListFocus.java index 4a6a8fe..51b9bf6 100644 --- a/src/jp/co/omronsoft/openwnn/UserDictionaryToolsListFocus.java +++ b/src/jp/co/omronsoft/openwnn/UserDictionaryToolsListFocus.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/WnnClause.java b/src/jp/co/omronsoft/openwnn/WnnClause.java index 6d4babd..aabd2ce 100644 --- a/src/jp/co/omronsoft/openwnn/WnnClause.java +++ b/src/jp/co/omronsoft/openwnn/WnnClause.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/WnnDictionary.java b/src/jp/co/omronsoft/openwnn/WnnDictionary.java index c4b2aa5..e58955e 100644 --- a/src/jp/co/omronsoft/openwnn/WnnDictionary.java +++ b/src/jp/co/omronsoft/openwnn/WnnDictionary.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/WnnEngine.java b/src/jp/co/omronsoft/openwnn/WnnEngine.java index 4d23966..a24aa37 100644 --- a/src/jp/co/omronsoft/openwnn/WnnEngine.java +++ b/src/jp/co/omronsoft/openwnn/WnnEngine.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/WnnPOS.java b/src/jp/co/omronsoft/openwnn/WnnPOS.java index dd61f2e..33fd6a0 100644 --- a/src/jp/co/omronsoft/openwnn/WnnPOS.java +++ b/src/jp/co/omronsoft/openwnn/WnnPOS.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/WnnSentence.java b/src/jp/co/omronsoft/openwnn/WnnSentence.java index c6ffbca..6644b7d 100644 --- a/src/jp/co/omronsoft/openwnn/WnnSentence.java +++ b/src/jp/co/omronsoft/openwnn/WnnSentence.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/jp/co/omronsoft/openwnn/WnnWord.java b/src/jp/co/omronsoft/openwnn/WnnWord.java index fb2f7c6..0ac065c 100644 --- a/src/jp/co/omronsoft/openwnn/WnnWord.java +++ b/src/jp/co/omronsoft/openwnn/WnnWord.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008,2009 OMRON SOFTWARE Co., Ltd. + * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. |