| // Copyright 2010-2014, Google Inc. |
| // All rights reserved. |
| // |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions are |
| // met: |
| // |
| // * Redistributions of source code must retain the above copyright |
| // notice, this list of conditions and the following disclaimer. |
| // * Redistributions in binary form must reproduce the above |
| // copyright notice, this list of conditions and the following disclaimer |
| // in the documentation and/or other materials provided with the |
| // distribution. |
| // * Neither the name of Google Inc. nor the names of its |
| // contributors may be used to endorse or promote products derived from |
| // this software without specific prior written permission. |
| // |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| package org.mozc.android.inputmethod.japanese.hardwarekeyboard; |
| |
| import org.mozc.android.inputmethod.japanese.JapaneseKeyboard.KeyboardSpecification; |
| import org.mozc.android.inputmethod.japanese.KeycodeConverter.KeyEventInterface; |
| import org.mozc.android.inputmethod.japanese.hardwarekeyboard.HardwareKeyboard.CompositionSwitchMode; |
| import org.mozc.android.inputmethod.japanese.preference.ClientSidePreference.HardwareKeyMap; |
| import org.mozc.android.inputmethod.japanese.protobuf.ProtoCommands; |
| import org.mozc.android.inputmethod.japanese.protobuf.ProtoCommands.KeyEvent.ModifierKey; |
| import org.mozc.android.inputmethod.japanese.protobuf.ProtoCommands.KeyEvent.SpecialKey; |
| import org.mozc.android.inputmethod.japanese.testing.MozcPreferenceUtil; |
| import org.mozc.android.inputmethod.japanese.testing.Parameter; |
| import com.google.common.base.Optional; |
| |
| import android.content.SharedPreferences; |
| import android.content.res.Configuration; |
| import android.os.Build; |
| import android.test.InstrumentationTestCase; |
| import android.test.MoreAsserts; |
| import android.test.suitebuilder.annotation.SmallTest; |
| import android.view.InputDevice; |
| import android.view.KeyEvent; |
| |
| import java.util.Collections; |
| import java.util.HashSet; |
| import java.util.Set; |
| |
| /** |
| * |
| */ |
| public class HardwareKeyboardSpecificationTest extends InstrumentationTestCase { |
| |
| @SmallTest |
| public void testIsPrintable() { |
| int[] printables = {'a', ' ', '猫', '☀'}; |
| int[] nonPrintables = {'\t', '\n', '\0', '\uFFFF'}; |
| |
| for (int codepoint : printables) { |
| assertTrue(String.format("%d is printable.", codepoint), |
| HardwareKeyboardSpecification.isPrintable(codepoint)); |
| } |
| for (int codepoint : nonPrintables) { |
| assertFalse(String.format("%d is not printable.", codepoint), |
| HardwareKeyboardSpecification.isPrintable(codepoint)); |
| } |
| } |
| |
| @SmallTest |
| public void testDefaultConverter() { |
| HardwareKeyboardSpecification keyboardSpecification = |
| HardwareKeyboardSpecification.DEFAULT; |
| |
| class KeyEventMock extends KeyEvent { |
| private int unicode; |
| KeyEventMock(int action, int keycode, int meta, int unicode) { |
| super(0, 0, action, keycode, 0, meta); |
| this.unicode = unicode; |
| } |
| @Override |
| public int getUnicodeChar() { |
| return unicode; |
| } |
| } |
| |
| { |
| KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_A); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| |
| ProtoCommands.KeyEvent mozcKeyEvent = keyboardSpecification.getMozcKeyEvent(keyEvent); |
| assertEquals(keyEvent.getUnicodeChar(), mozcKeyEvent.getKeyCode()); |
| |
| KeyEventInterface keyEventInterface = keyboardSpecification.getKeyEventInterface(keyEvent); |
| assertEquals(keyEvent, keyEventInterface.getNativeEvent()); |
| } |
| |
| { |
| KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SPACE); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| |
| ProtoCommands.KeyEvent mozcKeyEvent = keyboardSpecification.getMozcKeyEvent(keyEvent); |
| assertFalse(mozcKeyEvent.hasKeyCode()); |
| assertEquals(SpecialKey.SPACE, mozcKeyEvent.getSpecialKey()); |
| |
| KeyEventInterface keyEventInterface = keyboardSpecification.getKeyEventInterface(keyEvent); |
| assertEquals(keyEvent, keyEventInterface.getNativeEvent()); |
| } |
| |
| { |
| KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| |
| ProtoCommands.KeyEvent mozcKeyEvent = keyboardSpecification.getMozcKeyEvent(keyEvent); |
| assertFalse(mozcKeyEvent.hasKeyCode()); |
| assertEquals(SpecialKey.ENTER, mozcKeyEvent.getSpecialKey()); |
| |
| KeyEventInterface keyEventInterface = keyboardSpecification.getKeyEventInterface(keyEvent); |
| assertEquals(keyEvent, keyEventInterface.getNativeEvent()); |
| } |
| |
| { |
| KeyEvent keyEvent = new KeyEventMock(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_A, |
| KeyEvent.META_SHIFT_ON, 'A'); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| |
| ProtoCommands.KeyEvent mozcKeyEvent = keyboardSpecification.getMozcKeyEvent(keyEvent); |
| assertEquals(keyEvent.getUnicodeChar(), mozcKeyEvent.getKeyCode()); |
| // shift+a is printable ('A') so no modifier shouldn't be sent. |
| assertEquals(0, mozcKeyEvent.getModifierKeysCount()); |
| |
| KeyEventInterface keyEventInterface = keyboardSpecification.getKeyEventInterface(keyEvent); |
| assertEquals(keyEvent, keyEventInterface.getNativeEvent()); |
| } |
| |
| { |
| KeyEvent keyEvent = new KeyEventMock(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_A, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| |
| ProtoCommands.KeyEvent mozcKeyEvent = keyboardSpecification.getMozcKeyEvent(keyEvent); |
| assertEquals('a', mozcKeyEvent.getKeyCode()); |
| // shift+alt+a is not printable so modifier should be sent. |
| HashSet<ModifierKey> expected = new HashSet<ProtoCommands.KeyEvent.ModifierKey>(); |
| expected.add(ModifierKey.SHIFT); |
| expected.add(ModifierKey.ALT); |
| MoreAsserts.assertEquals(expected, |
| new HashSet<ModifierKey>(mozcKeyEvent.getModifierKeysList())); |
| |
| KeyEventInterface keyEventInterface = keyboardSpecification.getKeyEventInterface(keyEvent); |
| assertEquals(keyEvent, keyEventInterface.getNativeEvent()); |
| } |
| |
| { |
| KeyEvent keyEvent = new KeyEventMock( |
| KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_A, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| |
| ProtoCommands.KeyEvent mozcKeyEvent = keyboardSpecification.getMozcKeyEvent(keyEvent); |
| assertEquals('a', mozcKeyEvent.getKeyCode()); |
| // shift+ctrl+alt+a is not printable so modifier should be sent. |
| HashSet<ModifierKey> expected = new HashSet<ProtoCommands.KeyEvent.ModifierKey>(); |
| expected.add(ModifierKey.SHIFT); |
| expected.add(ModifierKey.ALT); |
| expected.add(ModifierKey.CTRL); |
| MoreAsserts.assertEquals(expected, |
| new HashSet<ModifierKey>(mozcKeyEvent.getModifierKeysList())); |
| |
| KeyEventInterface keyEventInterface = keyboardSpecification.getKeyEventInterface(keyEvent); |
| assertEquals(keyEvent, keyEventInterface.getNativeEvent()); |
| } |
| |
| { |
| KeyEvent keyEvent = new KeyEventMock( |
| KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_GRAVE, KeyEvent.META_ALT_ON, 0); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| assertEquals(Optional.of(CompositionSwitchMode.TOGGLE), |
| keyboardSpecification.getCompositionSwitchMode(keyEvent)); |
| } |
| |
| assertFalse(keyboardSpecification.getCompositionSwitchMode(new KeyEvent(0, 0)).isPresent()); |
| |
| assertEquals(KeyboardSpecification.HARDWARE_QWERTY_KANA, |
| keyboardSpecification.getKanaKeyboardSpecification()); |
| |
| assertEquals(KeyboardSpecification.HARDWARE_QWERTY_ALPHABET, |
| keyboardSpecification.getAlphabetKeyboardSpecification()); |
| } |
| |
| // TODO(matsuzakit): This test is overkill. Simplify. |
| @SmallTest |
| public void testOADG109A() { |
| HardwareKeyboardSpecification keyboardSpecification = |
| HardwareKeyboardSpecification.JAPANESE109A; |
| |
| class TestData extends Parameter{ |
| final int scanCode; |
| final int keyCode; |
| final int metaState; |
| final int expectKeyCode; |
| final SpecialKey expectSpecialKey; |
| final Optional<CompositionSwitchMode> expectCompositionSwitchMode; |
| final Set<ModifierKey> expectModifierKeySet; |
| TestData(int scanCode, int keyCode, int metaState, |
| int expectKeyCode, SpecialKey expectSpecialKey, |
| Set<ModifierKey> expectModifierKeySet, |
| CompositionSwitchMode expectCompositionSwitchMode) { |
| this.scanCode = scanCode; |
| this.keyCode = keyCode; |
| this.metaState = metaState; |
| this.expectKeyCode = expectKeyCode; |
| this.expectSpecialKey = expectSpecialKey; |
| this.expectCompositionSwitchMode = Optional.fromNullable(expectCompositionSwitchMode); |
| this.expectModifierKeySet = expectModifierKeySet; |
| } |
| } |
| |
| final Set<ModifierKey> noModifierKeys = Collections.emptySet(); |
| final Set<ModifierKey> shiftModified = new HashSet<ModifierKey>( |
| Collections.singletonList(ModifierKey.SHIFT)); |
| Set<ModifierKey> shiftAltModified = new HashSet<ModifierKey>(); |
| shiftAltModified.add(ModifierKey.SHIFT); |
| shiftAltModified.add(ModifierKey.ALT); |
| Set<ModifierKey> shiftAltCtrlModified = new HashSet<ModifierKey>(); |
| shiftAltCtrlModified.add(ModifierKey.SHIFT); |
| shiftAltCtrlModified.add(ModifierKey.ALT); |
| shiftAltCtrlModified.add(ModifierKey.CTRL); |
| |
| int keycodeYen; |
| int keycodeRo; |
| int keycodeMunhenkan; |
| int keycodeHenkan; |
| int keycodeKana; |
| int keycodeKatakana; |
| int keycodeZenkakuHankaku; |
| if (Build.VERSION.SDK_INT >= 16) { |
| keycodeYen = KeyEvent.KEYCODE_YEN; |
| keycodeRo = KeyEvent.KEYCODE_RO; |
| keycodeMunhenkan = KeyEvent.KEYCODE_MUHENKAN; |
| keycodeHenkan = KeyEvent.KEYCODE_HENKAN; |
| keycodeKana = KeyEvent.KEYCODE_KANA; |
| keycodeKatakana = KeyEvent.KEYCODE_KATAKANA_HIRAGANA; |
| keycodeZenkakuHankaku = KeyEvent.KEYCODE_ZENKAKU_HANKAKU; |
| } else { |
| keycodeYen = 0; |
| keycodeRo = 0; |
| keycodeMunhenkan = 0; |
| keycodeHenkan = 0; |
| keycodeKana = 0; |
| keycodeKatakana = 0; |
| keycodeZenkakuHankaku = KeyEvent.KEYCODE_GRAVE; |
| } |
| |
| TestData[] testDataList = { |
| new TestData(0x02, KeyEvent.KEYCODE_1, 0, '1', null, noModifierKeys, null), |
| new TestData(0x02, KeyEvent.KEYCODE_1, |
| KeyEvent.META_SHIFT_ON, '!', null, noModifierKeys, null), |
| new TestData(0x03, KeyEvent.KEYCODE_2, 0, '2', null, noModifierKeys, null), |
| new TestData(0x03, KeyEvent.KEYCODE_2, |
| KeyEvent.META_SHIFT_ON, '"', null, noModifierKeys, null), |
| new TestData(0x04, KeyEvent.KEYCODE_3, 0, '3', null, noModifierKeys, null), |
| new TestData(0x04, KeyEvent.KEYCODE_3, |
| KeyEvent.META_SHIFT_ON, '#', null, noModifierKeys, null), |
| new TestData(0x05, KeyEvent.KEYCODE_4, 0, '4', null, noModifierKeys, null), |
| new TestData(0x05, KeyEvent.KEYCODE_4, |
| KeyEvent.META_SHIFT_ON, '$', null, noModifierKeys, null), |
| new TestData(0x06, KeyEvent.KEYCODE_5, 0, '5', null, noModifierKeys, null), |
| new TestData(0x06, KeyEvent.KEYCODE_5, |
| KeyEvent.META_SHIFT_ON, '%', null, noModifierKeys, null), |
| new TestData(0x07, KeyEvent.KEYCODE_6, 0, '6', null, noModifierKeys, null), |
| new TestData(0x07, KeyEvent.KEYCODE_6, |
| KeyEvent.META_SHIFT_ON, '&', null, noModifierKeys, null), |
| new TestData(0x08, KeyEvent.KEYCODE_7, 0, '7', null, noModifierKeys, null), |
| new TestData(0x08, KeyEvent.KEYCODE_7, |
| KeyEvent.META_SHIFT_ON, '\'', null, noModifierKeys, null), |
| new TestData(0x09, KeyEvent.KEYCODE_8, 0, '8', null, noModifierKeys, null), |
| new TestData(0x09, KeyEvent.KEYCODE_8, |
| KeyEvent.META_SHIFT_ON, '(', null, noModifierKeys, null), |
| new TestData(0x0A, KeyEvent.KEYCODE_9, 0, '9', null, noModifierKeys, null), |
| new TestData(0x0A, KeyEvent.KEYCODE_9, |
| KeyEvent.META_SHIFT_ON, ')', null, noModifierKeys, null), |
| new TestData(0x0B, KeyEvent.KEYCODE_0, 0, '0', null, noModifierKeys, null), |
| // Note: Expect nothing for shift+0. |
| new TestData(0x0C, KeyEvent.KEYCODE_MINUS, 0, '-', null, noModifierKeys, null), |
| new TestData(0x0C, KeyEvent.KEYCODE_MINUS, |
| KeyEvent.META_SHIFT_ON, '=', null, noModifierKeys, null), |
| new TestData(0x0D, KeyEvent.KEYCODE_EQUALS, 0, '^', null, noModifierKeys, null), |
| new TestData(0x0D, KeyEvent.KEYCODE_EQUALS, |
| KeyEvent.META_SHIFT_ON, '~', null, noModifierKeys, null), |
| new TestData(0x7C, keycodeYen, 0, '\u00a5', null, noModifierKeys, null), |
| new TestData(0x7C, keycodeYen, KeyEvent.META_SHIFT_ON, '|', null, noModifierKeys, null), |
| |
| new TestData(0x10, KeyEvent.KEYCODE_Q, 0, 'q', null, noModifierKeys, null), |
| new TestData(0x10, KeyEvent.KEYCODE_Q, |
| KeyEvent.META_SHIFT_ON, 'Q', null, noModifierKeys, null), |
| new TestData(0x11, KeyEvent.KEYCODE_W, 0, 'w', null, noModifierKeys, null), |
| new TestData(0x11, KeyEvent.KEYCODE_W, |
| KeyEvent.META_SHIFT_ON, 'W', null, noModifierKeys, null), |
| new TestData(0x12, KeyEvent.KEYCODE_E, 0, 'e', null, noModifierKeys, null), |
| new TestData(0x12, KeyEvent.KEYCODE_E, |
| KeyEvent.META_SHIFT_ON, 'E', null, noModifierKeys, null), |
| new TestData(0x13, KeyEvent.KEYCODE_R, 0, 'r', null, noModifierKeys, null), |
| new TestData(0x13, KeyEvent.KEYCODE_R, |
| KeyEvent.META_SHIFT_ON, 'R', null, noModifierKeys, null), |
| new TestData(0x14, KeyEvent.KEYCODE_T, 0, 't', null, noModifierKeys, null), |
| new TestData(0x14, KeyEvent.KEYCODE_T, |
| KeyEvent.META_SHIFT_ON, 'T', null, noModifierKeys, null), |
| new TestData(0x15, KeyEvent.KEYCODE_Y, 0, 'y', null, noModifierKeys, null), |
| new TestData(0x15, KeyEvent.KEYCODE_Y, |
| KeyEvent.META_SHIFT_ON, 'Y', null, noModifierKeys, null), |
| new TestData(0x16, KeyEvent.KEYCODE_U, 0, 'u', null, noModifierKeys, null), |
| new TestData(0x16, KeyEvent.KEYCODE_U, |
| KeyEvent.META_SHIFT_ON, 'U', null, noModifierKeys, null), |
| new TestData(0x17, KeyEvent.KEYCODE_I, 0, 'i', null, noModifierKeys, null), |
| new TestData(0x17, KeyEvent.KEYCODE_I, |
| KeyEvent.META_SHIFT_ON, 'I', null, noModifierKeys, null), |
| new TestData(0x18, KeyEvent.KEYCODE_O, 0, 'o', null, noModifierKeys, null), |
| new TestData(0x18, KeyEvent.KEYCODE_O, |
| KeyEvent.META_SHIFT_ON, 'O', null, noModifierKeys, null), |
| new TestData(0x19, KeyEvent.KEYCODE_P, 0, 'p', null, noModifierKeys, null), |
| new TestData(0x19, KeyEvent.KEYCODE_P, |
| KeyEvent.META_SHIFT_ON, 'P', null, noModifierKeys, null), |
| new TestData(0x1A, KeyEvent.KEYCODE_LEFT_BRACKET, 0, '@', null, noModifierKeys, null), |
| new TestData(0x1A, KeyEvent.KEYCODE_LEFT_BRACKET, |
| KeyEvent.META_SHIFT_ON, '`', null, noModifierKeys, null), |
| new TestData(0x1B, KeyEvent.KEYCODE_RIGHT_BRACKET, 0, '[', null, noModifierKeys, null), |
| new TestData(0x1B, KeyEvent.KEYCODE_RIGHT_BRACKET, |
| KeyEvent.META_SHIFT_ON, '{', null, noModifierKeys, null), |
| |
| new TestData(0x1E, KeyEvent.KEYCODE_A, 0, 'a', null, noModifierKeys, null), |
| new TestData(0x1E, KeyEvent.KEYCODE_A, |
| KeyEvent.META_SHIFT_ON, 'A', null, noModifierKeys, null), |
| new TestData(0x1F, KeyEvent.KEYCODE_S, 0, 's', null, noModifierKeys, null), |
| new TestData(0x1F, KeyEvent.KEYCODE_S, |
| KeyEvent.META_SHIFT_ON, 'S', null, noModifierKeys, null), |
| new TestData(0x20, KeyEvent.KEYCODE_D, 0, 'd', null, noModifierKeys, null), |
| new TestData(0x20, KeyEvent.KEYCODE_D, |
| KeyEvent.META_SHIFT_ON, 'D', null, noModifierKeys, null), |
| new TestData(0x21, KeyEvent.KEYCODE_F, 0, 'f', null, noModifierKeys, null), |
| new TestData(0x21, KeyEvent.KEYCODE_F, |
| KeyEvent.META_SHIFT_ON, 'F', null, noModifierKeys, null), |
| new TestData(0x22, KeyEvent.KEYCODE_G, 0, 'g', null, noModifierKeys, null), |
| new TestData(0x22, KeyEvent.KEYCODE_G, |
| KeyEvent.META_SHIFT_ON, 'G', null, noModifierKeys, null), |
| new TestData(0x23, KeyEvent.KEYCODE_H, 0, 'h', null, noModifierKeys, null), |
| new TestData(0x23, KeyEvent.KEYCODE_H, |
| KeyEvent.META_SHIFT_ON, 'H', null, noModifierKeys, null), |
| new TestData(0x24, KeyEvent.KEYCODE_J, 0, 'j', null, noModifierKeys, null), |
| new TestData(0x24, KeyEvent.KEYCODE_J, |
| KeyEvent.META_SHIFT_ON, 'J', null, noModifierKeys, null), |
| new TestData(0x25, KeyEvent.KEYCODE_K, 0, 'k', null, noModifierKeys, null), |
| new TestData(0x25, KeyEvent.KEYCODE_K, |
| KeyEvent.META_SHIFT_ON, 'K', null, noModifierKeys, null), |
| new TestData(0x26, KeyEvent.KEYCODE_L, 0, 'l', null, noModifierKeys, null), |
| new TestData(0x26, KeyEvent.KEYCODE_L, |
| KeyEvent.META_SHIFT_ON, 'L', null, noModifierKeys, null), |
| new TestData(0x27, KeyEvent.KEYCODE_SEMICOLON, 0, ';', null, noModifierKeys, null), |
| new TestData(0x27, KeyEvent.KEYCODE_SEMICOLON, |
| KeyEvent.META_SHIFT_ON, '+', null, noModifierKeys, null), |
| new TestData(0x28, KeyEvent.KEYCODE_APOSTROPHE, 0, ':', null, noModifierKeys, null), |
| new TestData(0x28, KeyEvent.KEYCODE_APOSTROPHE, |
| KeyEvent.META_SHIFT_ON, '*', null, noModifierKeys, null), |
| new TestData(0x2B, KeyEvent.KEYCODE_BACKSLASH, 0, ']', null, noModifierKeys, null), |
| new TestData(0x2B, KeyEvent.KEYCODE_BACKSLASH, |
| KeyEvent.META_SHIFT_ON, '}', null, noModifierKeys, null), |
| |
| new TestData(0x2C, KeyEvent.KEYCODE_Z, 0, 'z', null, noModifierKeys, null), |
| new TestData(0x2C, KeyEvent.KEYCODE_Z, |
| KeyEvent.META_SHIFT_ON, 'Z', null, noModifierKeys, null), |
| new TestData(0x2D, KeyEvent.KEYCODE_X, 0, 'x', null, noModifierKeys, null), |
| new TestData(0x2D, KeyEvent.KEYCODE_X, |
| KeyEvent.META_SHIFT_ON, 'X', null, noModifierKeys, null), |
| new TestData(0x2E, KeyEvent.KEYCODE_C, 0, 'c', null, noModifierKeys, null), |
| new TestData(0x2E, KeyEvent.KEYCODE_C, |
| KeyEvent.META_SHIFT_ON, 'C', null, noModifierKeys, null), |
| new TestData(0x2F, KeyEvent.KEYCODE_V, 0, 'v', null, noModifierKeys, null), |
| new TestData(0x2F, KeyEvent.KEYCODE_V, |
| KeyEvent.META_SHIFT_ON, 'V', null, noModifierKeys, null), |
| new TestData(0x30, KeyEvent.KEYCODE_B, 0, 'b', null, noModifierKeys, null), |
| new TestData(0x30, KeyEvent.KEYCODE_B, |
| KeyEvent.META_SHIFT_ON, 'B', null, noModifierKeys, null), |
| new TestData(0x31, KeyEvent.KEYCODE_N, 0, 'n', null, noModifierKeys, null), |
| new TestData(0x31, KeyEvent.KEYCODE_N, |
| KeyEvent.META_SHIFT_ON, 'N', null, noModifierKeys, null), |
| new TestData(0x32, KeyEvent.KEYCODE_M, 0, 'm', null, noModifierKeys, null), |
| new TestData(0x32, KeyEvent.KEYCODE_M, |
| KeyEvent.META_SHIFT_ON, 'M', null, noModifierKeys, null), |
| new TestData(0x33, KeyEvent.KEYCODE_COMMA, 0, ',', null, noModifierKeys, null), |
| new TestData(0x33, KeyEvent.KEYCODE_COMMA, |
| KeyEvent.META_SHIFT_ON, '<', null, noModifierKeys, null), |
| new TestData(0x34, KeyEvent.KEYCODE_PERIOD, 0, '.', null, noModifierKeys, null), |
| new TestData(0x34, KeyEvent.KEYCODE_PERIOD, |
| KeyEvent.META_SHIFT_ON, '>', null, noModifierKeys, null), |
| new TestData(0x35, KeyEvent.KEYCODE_SLASH, 0, '/', null, noModifierKeys, null), |
| new TestData(0x35, KeyEvent.KEYCODE_SLASH, |
| KeyEvent.META_SHIFT_ON, '?', null, noModifierKeys, null), |
| new TestData(0x59, keycodeRo, 0, '\\', null, noModifierKeys, null), |
| new TestData(0x59, keycodeRo, KeyEvent.META_SHIFT_ON, '_', null, noModifierKeys, null), |
| |
| new TestData(0x01, KeyEvent.KEYCODE_ESCAPE, 0, 0, SpecialKey.ESCAPE, noModifierKeys, null), |
| new TestData(0x01, KeyEvent.KEYCODE_ESCAPE, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.ESCAPE, shiftModified, null), |
| new TestData(0x01, KeyEvent.KEYCODE_ESCAPE, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.ESCAPE, shiftAltModified, null), |
| new TestData(0x01, KeyEvent.KEYCODE_ESCAPE, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.ESCAPE, shiftAltCtrlModified, null), |
| new TestData(0x3B, KeyEvent.KEYCODE_F1, 0, 0, SpecialKey.F1, noModifierKeys, null), |
| new TestData(0x3B, KeyEvent.KEYCODE_F1, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F1, shiftModified, null), |
| new TestData(0x3B, KeyEvent.KEYCODE_F1, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F1, shiftAltModified, null), |
| new TestData(0x3B, KeyEvent.KEYCODE_F1, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F1, shiftAltCtrlModified, null), |
| new TestData(0x3C, KeyEvent.KEYCODE_F2, 0, 0, SpecialKey.F2, noModifierKeys, null), |
| new TestData(0x3C, KeyEvent.KEYCODE_F2, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F2, shiftModified, null), |
| new TestData(0x3C, KeyEvent.KEYCODE_F2, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F2, shiftAltModified, null), |
| new TestData(0x3C, KeyEvent.KEYCODE_F2, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F2, shiftAltCtrlModified, null), |
| new TestData(0x3D, KeyEvent.KEYCODE_F3, 0, 0, SpecialKey.F3, noModifierKeys, null), |
| new TestData(0x3D, KeyEvent.KEYCODE_F3, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F3, shiftModified, null), |
| new TestData(0x3D, KeyEvent.KEYCODE_F3, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F3, shiftAltModified, null), |
| new TestData(0x3D, KeyEvent.KEYCODE_F3, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F3, shiftAltCtrlModified, null), |
| new TestData(0x3E, KeyEvent.KEYCODE_F4, 0, 0, SpecialKey.F4, noModifierKeys, null), |
| new TestData(0x3E, KeyEvent.KEYCODE_F4, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F4, shiftModified, null), |
| new TestData(0x3E, KeyEvent.KEYCODE_F4, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F4, shiftAltModified, null), |
| new TestData(0x3E, KeyEvent.KEYCODE_F4, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F4, shiftAltCtrlModified, null), |
| new TestData(0x3F, KeyEvent.KEYCODE_F5, 0, 0, SpecialKey.F5, noModifierKeys, null), |
| new TestData(0x3F, KeyEvent.KEYCODE_F5, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F5, shiftModified, null), |
| new TestData(0x3F, KeyEvent.KEYCODE_F5, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F5, shiftAltModified, null), |
| new TestData(0x3F, KeyEvent.KEYCODE_F5, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F5, shiftAltCtrlModified, null), |
| new TestData(0x40, KeyEvent.KEYCODE_F6, 0, 0, SpecialKey.F6, noModifierKeys, null), |
| new TestData(0x40, KeyEvent.KEYCODE_F6, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F6, shiftModified, null), |
| new TestData(0x40, KeyEvent.KEYCODE_F6, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F6, shiftAltModified, null), |
| new TestData(0x40, KeyEvent.KEYCODE_F6, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F6, shiftAltCtrlModified, null), |
| new TestData(0x41, KeyEvent.KEYCODE_F7, 0, 0, SpecialKey.F7, noModifierKeys, null), |
| new TestData(0x41, KeyEvent.KEYCODE_F7, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F7, shiftModified, null), |
| new TestData(0x41, KeyEvent.KEYCODE_F7, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F7, shiftAltModified, null), |
| new TestData(0x41, KeyEvent.KEYCODE_F7, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F7, shiftAltCtrlModified, null), |
| new TestData(0x42, KeyEvent.KEYCODE_F8, 0, 0, SpecialKey.F8, noModifierKeys, null), |
| new TestData(0x42, KeyEvent.KEYCODE_F8, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F8, shiftModified, null), |
| new TestData(0x42, KeyEvent.KEYCODE_F8, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F8, shiftAltModified, null), |
| new TestData(0x42, KeyEvent.KEYCODE_F8, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F8, shiftAltCtrlModified, null), |
| new TestData(0x43, KeyEvent.KEYCODE_F9, 0, 0, SpecialKey.F9, noModifierKeys, null), |
| new TestData(0x43, KeyEvent.KEYCODE_F9, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F9, shiftModified, null), |
| new TestData(0x43, KeyEvent.KEYCODE_F9, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F9, shiftAltModified, null), |
| new TestData(0x43, KeyEvent.KEYCODE_F9, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F9, shiftAltCtrlModified, null), |
| new TestData(0x44, KeyEvent.KEYCODE_F10, 0, 0, SpecialKey.F10, noModifierKeys, null), |
| new TestData(0x44, KeyEvent.KEYCODE_F10, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F10, shiftModified, null), |
| new TestData(0x44, KeyEvent.KEYCODE_F10, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F10, shiftAltModified, null), |
| new TestData(0x44, KeyEvent.KEYCODE_F10, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F10, shiftAltCtrlModified, null), |
| new TestData(0x57, KeyEvent.KEYCODE_F11, 0, 0, SpecialKey.F11, noModifierKeys, null), |
| new TestData(0x57, KeyEvent.KEYCODE_F11, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F11, shiftModified, null), |
| new TestData(0x57, KeyEvent.KEYCODE_F11, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F11, shiftAltModified, null), |
| new TestData(0x57, KeyEvent.KEYCODE_F11, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F11, shiftAltCtrlModified, null), |
| new TestData(0x58, KeyEvent.KEYCODE_F12, 0, 0, SpecialKey.F12, noModifierKeys, null), |
| new TestData(0x58, KeyEvent.KEYCODE_F12, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.F12, shiftModified, null), |
| new TestData(0x58, KeyEvent.KEYCODE_F12, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.F12, shiftAltModified, null), |
| new TestData(0x58, KeyEvent.KEYCODE_F12, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.F12, shiftAltCtrlModified, null), |
| new TestData(0x6F, KeyEvent.KEYCODE_FORWARD_DEL, |
| 0, 0, SpecialKey.DEL, noModifierKeys, null), |
| new TestData(0x6F, KeyEvent.KEYCODE_FORWARD_DEL, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.DEL, shiftModified, null), |
| new TestData(0x6F, KeyEvent.KEYCODE_FORWARD_DEL, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.DEL, shiftAltModified, null), |
| new TestData(0x6F, KeyEvent.KEYCODE_FORWARD_DEL, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.DEL, shiftAltCtrlModified, null), |
| |
| new TestData(0x0E, KeyEvent.KEYCODE_DEL, |
| 0, 0, SpecialKey.BACKSPACE, noModifierKeys, null), |
| new TestData(0x0E, KeyEvent.KEYCODE_DEL, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.BACKSPACE, shiftModified, null), |
| new TestData(0x0E, KeyEvent.KEYCODE_DEL, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.BACKSPACE, shiftAltModified, null), |
| new TestData(0x0E, KeyEvent.KEYCODE_DEL, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.BACKSPACE, shiftAltCtrlModified, null), |
| new TestData(0x0F, KeyEvent.KEYCODE_TAB, 0, 0, SpecialKey.TAB, noModifierKeys, null), |
| new TestData(0x0F, KeyEvent.KEYCODE_TAB, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.TAB, shiftModified, null), |
| new TestData(0x0F, KeyEvent.KEYCODE_TAB, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.TAB, shiftAltModified, null), |
| new TestData(0x0F, KeyEvent.KEYCODE_TAB, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.TAB, shiftAltCtrlModified, null), |
| new TestData(0x1C, KeyEvent.KEYCODE_ENTER, |
| 0, 0, SpecialKey.ENTER, noModifierKeys, null), |
| new TestData(0x1C, KeyEvent.KEYCODE_ENTER, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.ENTER, shiftModified, null), |
| new TestData(0x1C, KeyEvent.KEYCODE_ENTER, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.ENTER, shiftAltModified, null), |
| new TestData(0x1C, KeyEvent.KEYCODE_ENTER, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.ENTER, shiftAltCtrlModified, null), |
| |
| new TestData(0x5E, keycodeMunhenkan, 0, 0, SpecialKey.MUHENKAN, noModifierKeys, null), |
| new TestData(0x5E, keycodeMunhenkan, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.MUHENKAN, shiftModified, null), |
| new TestData(0x5E, keycodeMunhenkan, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.MUHENKAN, shiftAltModified, null), |
| new TestData(0x5E, keycodeMunhenkan, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.MUHENKAN, shiftAltCtrlModified, null), |
| new TestData(0x39, KeyEvent.KEYCODE_SPACE, |
| 0, 0, SpecialKey.SPACE, noModifierKeys, null), |
| new TestData(0x39, KeyEvent.KEYCODE_SPACE, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.SPACE, shiftModified, null), |
| new TestData(0x39, KeyEvent.KEYCODE_SPACE, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.SPACE, shiftAltModified, null), |
| new TestData(0x39, KeyEvent.KEYCODE_SPACE, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.SPACE, shiftAltCtrlModified, null), |
| new TestData(0x5C, keycodeHenkan, 0, 0, SpecialKey.HENKAN, noModifierKeys, null), |
| new TestData(0x5C, keycodeHenkan, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.HENKAN, shiftModified, null), |
| new TestData(0x5C, keycodeHenkan, KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.HENKAN, shiftAltModified, null), |
| new TestData(0x5C, keycodeHenkan, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.HENKAN, shiftAltCtrlModified, null), |
| new TestData(0x5D, keycodeKatakana, 0, 0, SpecialKey.KATAKANA, noModifierKeys, null), |
| new TestData(0x5D, keycodeKatakana, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.KATAKANA, shiftModified, null), |
| new TestData(0x5D, keycodeKatakana, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.KATAKANA, shiftAltModified, null), |
| new TestData(0x5D, keycodeKatakana, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.KATAKANA, shiftAltCtrlModified, null), |
| new TestData(0x7A, keycodeKana, 0, 0, SpecialKey.KANA, noModifierKeys, null), |
| new TestData(0x7A, keycodeKana, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.KANA, shiftModified, null), |
| new TestData(0x7A, keycodeKana, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.KANA, shiftAltModified, null), |
| new TestData(0x7A, keycodeKana, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.KANA, shiftAltCtrlModified, null), |
| |
| new TestData(0x67, KeyEvent.KEYCODE_DPAD_UP, |
| 0, 0, SpecialKey.UP, noModifierKeys, null), |
| new TestData(0x67, KeyEvent.KEYCODE_DPAD_UP, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.UP, shiftModified, null), |
| new TestData(0x67, KeyEvent.KEYCODE_DPAD_UP, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.UP, shiftAltModified, null), |
| new TestData(0x67, KeyEvent.KEYCODE_DPAD_UP, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.UP, shiftAltCtrlModified, null), |
| new TestData(0x69, KeyEvent.KEYCODE_DPAD_LEFT, |
| 0, 0, SpecialKey.LEFT, noModifierKeys, null), |
| new TestData(0x69, KeyEvent.KEYCODE_DPAD_LEFT, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.LEFT, shiftModified, null), |
| new TestData(0x69, KeyEvent.KEYCODE_DPAD_LEFT, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.LEFT, shiftAltModified, null), |
| new TestData(0x69, KeyEvent.KEYCODE_DPAD_LEFT, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.LEFT, shiftAltCtrlModified, null), |
| new TestData(0x6C, KeyEvent.KEYCODE_DPAD_DOWN, |
| 0, 0, SpecialKey.DOWN, noModifierKeys, null), |
| new TestData(0x6C, KeyEvent.KEYCODE_DPAD_DOWN, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.DOWN, shiftModified, null), |
| new TestData(0x6C, KeyEvent.KEYCODE_DPAD_DOWN, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.DOWN, shiftAltModified, null), |
| new TestData(0x6C, KeyEvent.KEYCODE_DPAD_DOWN, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.DOWN, shiftAltCtrlModified, null), |
| new TestData(0x6A, KeyEvent.KEYCODE_DPAD_RIGHT, |
| 0, 0, SpecialKey.RIGHT, noModifierKeys, null), |
| new TestData(0x6A, KeyEvent.KEYCODE_DPAD_RIGHT, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.RIGHT, shiftModified, null), |
| new TestData(0x6A, KeyEvent.KEYCODE_DPAD_RIGHT, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.RIGHT, shiftAltModified, null), |
| new TestData(0x6A, KeyEvent.KEYCODE_DPAD_RIGHT, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.RIGHT, shiftAltCtrlModified, null), |
| |
| new TestData(0x66, KeyEvent.KEYCODE_MOVE_HOME, |
| 0, 0, SpecialKey.HOME, noModifierKeys, null), |
| new TestData(0x66, KeyEvent.KEYCODE_MOVE_HOME, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.HOME, shiftModified, null), |
| new TestData(0x66, KeyEvent.KEYCODE_MOVE_HOME, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.HOME, shiftAltModified, null), |
| new TestData(0x66, KeyEvent.KEYCODE_MOVE_HOME, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.HOME, shiftAltCtrlModified, null), |
| new TestData(0x6B, KeyEvent.KEYCODE_MOVE_END, |
| 0, 0, SpecialKey.END, noModifierKeys, null), |
| new TestData(0x6B, KeyEvent.KEYCODE_MOVE_END, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.END, shiftModified, null), |
| new TestData(0x6B, KeyEvent.KEYCODE_MOVE_END, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.END, shiftAltModified, null), |
| new TestData(0x6B, KeyEvent.KEYCODE_MOVE_END, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.END, shiftAltCtrlModified, null), |
| new TestData(0x6E, KeyEvent.KEYCODE_INSERT, |
| 0, 0, SpecialKey.INSERT, noModifierKeys, null), |
| new TestData(0x6E, KeyEvent.KEYCODE_INSERT, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.INSERT, shiftModified, null), |
| new TestData(0x6E, KeyEvent.KEYCODE_INSERT, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.INSERT, shiftAltModified, null), |
| new TestData(0x6E, KeyEvent.KEYCODE_INSERT, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.INSERT, shiftAltCtrlModified, null), |
| new TestData(0x68, KeyEvent.KEYCODE_PAGE_UP, |
| 0, 0, SpecialKey.PAGE_UP, noModifierKeys, null), |
| new TestData(0x68, KeyEvent.KEYCODE_PAGE_UP, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.PAGE_UP, shiftModified, null), |
| new TestData(0x68, KeyEvent.KEYCODE_PAGE_UP, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.PAGE_UP, shiftAltModified, null), |
| new TestData(0x68, KeyEvent.KEYCODE_PAGE_UP, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.PAGE_UP, shiftAltCtrlModified, null), |
| new TestData(0x6D, KeyEvent.KEYCODE_PAGE_DOWN, |
| 0, 0, SpecialKey.PAGE_DOWN, noModifierKeys, null), |
| new TestData(0x6D, KeyEvent.KEYCODE_PAGE_DOWN, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.PAGE_DOWN, shiftModified, null), |
| new TestData(0x6D, KeyEvent.KEYCODE_PAGE_DOWN, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.PAGE_DOWN, shiftAltModified, null), |
| new TestData(0x6D, KeyEvent.KEYCODE_PAGE_DOWN, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.PAGE_DOWN, shiftAltCtrlModified, null), |
| |
| new TestData(0x62, KeyEvent.KEYCODE_NUMPAD_DIVIDE, |
| 0, 0, SpecialKey.DIVIDE, noModifierKeys, null), |
| new TestData(0x62, KeyEvent.KEYCODE_NUMPAD_DIVIDE, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.DIVIDE, shiftModified, null), |
| new TestData(0x62, KeyEvent.KEYCODE_NUMPAD_DIVIDE, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.DIVIDE, shiftAltModified, null), |
| new TestData(0x62, KeyEvent.KEYCODE_NUMPAD_DIVIDE, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.DIVIDE, shiftAltCtrlModified, null), |
| new TestData(0x37, KeyEvent.KEYCODE_NUMPAD_MULTIPLY, |
| 0, 0, SpecialKey.MULTIPLY, noModifierKeys, null), |
| new TestData(0x37, KeyEvent.KEYCODE_NUMPAD_MULTIPLY, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.MULTIPLY, shiftModified, null), |
| new TestData(0x37, KeyEvent.KEYCODE_NUMPAD_MULTIPLY, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.MULTIPLY, shiftAltModified, null), |
| new TestData(0x37, KeyEvent.KEYCODE_NUMPAD_MULTIPLY, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.MULTIPLY, shiftAltCtrlModified, null), |
| new TestData(0x4A, KeyEvent.KEYCODE_NUMPAD_SUBTRACT, |
| 0, 0, SpecialKey.SUBTRACT, noModifierKeys, null), |
| new TestData(0x4A, KeyEvent.KEYCODE_NUMPAD_SUBTRACT, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.SUBTRACT, shiftModified, null), |
| new TestData(0x4A, KeyEvent.KEYCODE_NUMPAD_SUBTRACT, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.SUBTRACT, shiftAltModified, null), |
| new TestData(0x4A, KeyEvent.KEYCODE_NUMPAD_SUBTRACT, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.SUBTRACT, shiftAltCtrlModified, null), |
| new TestData(0x4E, KeyEvent.KEYCODE_NUMPAD_ADD, |
| 0, 0, SpecialKey.ADD, noModifierKeys, null), |
| new TestData(0x4E, KeyEvent.KEYCODE_NUMPAD_ADD, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.ADD, shiftModified, null), |
| new TestData(0x4E, KeyEvent.KEYCODE_NUMPAD_ADD, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.ADD, shiftAltModified, null), |
| new TestData(0x4E, KeyEvent.KEYCODE_NUMPAD_ADD, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.ADD, shiftAltCtrlModified, null), |
| new TestData(0x60, KeyEvent.KEYCODE_NUMPAD_ENTER, |
| 0, 0, SpecialKey.SEPARATOR, noModifierKeys, null), |
| new TestData(0x60, KeyEvent.KEYCODE_NUMPAD_ENTER, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.SEPARATOR, shiftModified, null), |
| new TestData(0x60, KeyEvent.KEYCODE_NUMPAD_ENTER, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.SEPARATOR, shiftAltModified, null), |
| new TestData(0x60, KeyEvent.KEYCODE_NUMPAD_ENTER, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.SEPARATOR, shiftAltCtrlModified, null), |
| new TestData(0x53, KeyEvent.KEYCODE_NUMPAD_DOT, |
| 0, 0, SpecialKey.DECIMAL, noModifierKeys, null), |
| new TestData(0x53, KeyEvent.KEYCODE_NUMPAD_DOT, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.DECIMAL, shiftModified, null), |
| new TestData(0x53, KeyEvent.KEYCODE_NUMPAD_DOT, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.DECIMAL, shiftAltModified, null), |
| new TestData(0x53, KeyEvent.KEYCODE_NUMPAD_DOT, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.DECIMAL, shiftAltCtrlModified, null), |
| |
| new TestData(0x52, KeyEvent.KEYCODE_NUMPAD_0, |
| 0, 0, SpecialKey.NUMPAD0, noModifierKeys, null), |
| new TestData(0x52, KeyEvent.KEYCODE_NUMPAD_0, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.NUMPAD0, shiftModified, null), |
| new TestData(0x52, KeyEvent.KEYCODE_NUMPAD_0, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.NUMPAD0, shiftAltModified, null), |
| new TestData(0x52, KeyEvent.KEYCODE_NUMPAD_0, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.NUMPAD0, shiftAltCtrlModified, null), |
| new TestData(0x4F, KeyEvent.KEYCODE_NUMPAD_1, |
| 0, 0, SpecialKey.NUMPAD1, noModifierKeys, null), |
| new TestData(0x4F, KeyEvent.KEYCODE_NUMPAD_1, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.NUMPAD1, shiftModified, null), |
| new TestData(0x4F, KeyEvent.KEYCODE_NUMPAD_1, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.NUMPAD1, shiftAltModified, null), |
| new TestData(0x4F, KeyEvent.KEYCODE_NUMPAD_1, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.NUMPAD1, shiftAltCtrlModified, null), |
| new TestData(0x50, KeyEvent.KEYCODE_NUMPAD_2, |
| 0, 0, SpecialKey.NUMPAD2, noModifierKeys, null), |
| new TestData(0x50, KeyEvent.KEYCODE_NUMPAD_2, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.NUMPAD2, shiftModified, null), |
| new TestData(0x50, KeyEvent.KEYCODE_NUMPAD_2, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.NUMPAD2, shiftAltModified, null), |
| new TestData(0x50, KeyEvent.KEYCODE_NUMPAD_2, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.NUMPAD2, shiftAltCtrlModified, null), |
| new TestData(0x51, KeyEvent.KEYCODE_NUMPAD_3, |
| 0, 0, SpecialKey.NUMPAD3, noModifierKeys, null), |
| new TestData(0x51, KeyEvent.KEYCODE_NUMPAD_3, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.NUMPAD3, shiftModified, null), |
| new TestData(0x51, KeyEvent.KEYCODE_NUMPAD_3, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.NUMPAD3, shiftAltModified, null), |
| new TestData(0x51, KeyEvent.KEYCODE_NUMPAD_3, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.NUMPAD3, shiftAltCtrlModified, null), |
| new TestData(0x4B, KeyEvent.KEYCODE_NUMPAD_4, |
| 0, 0, SpecialKey.NUMPAD4, noModifierKeys, null), |
| new TestData(0x4B, KeyEvent.KEYCODE_NUMPAD_4, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.NUMPAD4, shiftModified, null), |
| new TestData(0x4B, KeyEvent.KEYCODE_NUMPAD_4, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.NUMPAD4, shiftAltModified, null), |
| new TestData(0x4B, KeyEvent.KEYCODE_NUMPAD_4, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.NUMPAD4, shiftAltCtrlModified, null), |
| new TestData(0x4C, KeyEvent.KEYCODE_NUMPAD_5, |
| 0, 0, SpecialKey.NUMPAD5, noModifierKeys, null), |
| new TestData(0x4C, KeyEvent.KEYCODE_NUMPAD_5, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.NUMPAD5, shiftModified, null), |
| new TestData(0x4C, KeyEvent.KEYCODE_NUMPAD_5, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.NUMPAD5, shiftAltModified, null), |
| new TestData(0x4C, KeyEvent.KEYCODE_NUMPAD_5, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.NUMPAD5, shiftAltCtrlModified, null), |
| new TestData(0x4D, KeyEvent.KEYCODE_NUMPAD_6, |
| 0, 0, SpecialKey.NUMPAD6, noModifierKeys, null), |
| new TestData(0x4D, KeyEvent.KEYCODE_NUMPAD_6, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.NUMPAD6, shiftModified, null), |
| new TestData(0x4D, KeyEvent.KEYCODE_NUMPAD_6, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.NUMPAD6, shiftAltModified, null), |
| new TestData(0x4D, KeyEvent.KEYCODE_NUMPAD_6, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.NUMPAD6, shiftAltCtrlModified, null), |
| new TestData(0x47, KeyEvent.KEYCODE_NUMPAD_7, |
| 0, 0, SpecialKey.NUMPAD7, noModifierKeys, null), |
| new TestData(0x47, KeyEvent.KEYCODE_NUMPAD_7, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.NUMPAD7, shiftModified, null), |
| new TestData(0x47, KeyEvent.KEYCODE_NUMPAD_7, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.NUMPAD7, shiftAltModified, null), |
| new TestData(0x47, KeyEvent.KEYCODE_NUMPAD_7, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.NUMPAD7, shiftAltCtrlModified, null), |
| new TestData(0x48, KeyEvent.KEYCODE_NUMPAD_8, |
| 0, 0, SpecialKey.NUMPAD8, noModifierKeys, null), |
| new TestData(0x48, KeyEvent.KEYCODE_NUMPAD_8, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.NUMPAD8, shiftModified, null), |
| new TestData(0x48, KeyEvent.KEYCODE_NUMPAD_8, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.NUMPAD8, shiftAltModified, null), |
| new TestData(0x48, KeyEvent.KEYCODE_NUMPAD_8, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.NUMPAD8, shiftAltCtrlModified, null), |
| new TestData(0x49, KeyEvent.KEYCODE_NUMPAD_9, |
| 0, 0, SpecialKey.NUMPAD9, noModifierKeys, null), |
| new TestData(0x49, KeyEvent.KEYCODE_NUMPAD_9, |
| KeyEvent.META_SHIFT_ON, 0, SpecialKey.NUMPAD9, shiftModified, null), |
| new TestData(0x49, KeyEvent.KEYCODE_NUMPAD_9, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| SpecialKey.NUMPAD9, shiftAltModified, null), |
| new TestData(0x49, KeyEvent.KEYCODE_NUMPAD_9, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| SpecialKey.NUMPAD9, shiftAltCtrlModified, null), |
| |
| new TestData(0x29, keycodeZenkakuHankaku, |
| 0, 0, null, noModifierKeys, CompositionSwitchMode.TOGGLE), |
| new TestData(0x29, keycodeZenkakuHankaku, |
| KeyEvent.META_SHIFT_ON, 0, null, shiftModified, null), |
| new TestData(0x29, keycodeZenkakuHankaku, KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON, 0, |
| null, noModifierKeys, null), |
| new TestData(0x29, keycodeZenkakuHankaku, |
| KeyEvent.META_SHIFT_ON | KeyEvent.META_ALT_ON | KeyEvent.META_CTRL_ON, 0, |
| null, noModifierKeys, null), |
| }; |
| |
| for (final TestData testData : testDataList) { |
| KeyEvent keyEvent = |
| new KeyEvent(0, 0, 0, testData.keyCode, 0, testData.metaState, 0, testData.scanCode) { |
| @Override |
| public int getUnicodeChar() { |
| return testData.expectKeyCode; |
| } |
| }; |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| |
| ProtoCommands.KeyEvent mozcKeyEvent = keyboardSpecification.getMozcKeyEvent(keyEvent); |
| if (testData.expectKeyCode == 0 && testData.expectSpecialKey == null) { |
| assertNull(testData.toString(), mozcKeyEvent); |
| } else if (testData.expectKeyCode != 0) { |
| assertNotNull(testData.toString(), mozcKeyEvent); |
| assertEquals(testData.toString(), testData.expectKeyCode, mozcKeyEvent.getKeyCode()); |
| assertFalse(testData.toString(), mozcKeyEvent.hasSpecialKey()); |
| } else if (testData.expectSpecialKey != null) { |
| assertNotNull(testData.toString(), mozcKeyEvent); |
| assertEquals(testData.toString(), testData.expectSpecialKey, mozcKeyEvent.getSpecialKey()); |
| assertFalse(testData.toString(), mozcKeyEvent.hasKeyCode()); |
| } |
| |
| if (mozcKeyEvent != null) { |
| MoreAsserts.assertEquals(testData.toString(), testData.expectModifierKeySet, |
| new HashSet<ModifierKey>(mozcKeyEvent.getModifierKeysList())); |
| } |
| |
| assertEquals(testData.toString(), keyEvent, |
| keyboardSpecification.getKeyEventInterface(keyEvent).getNativeEvent()); |
| |
| assertEquals(testData.toString(), testData.expectCompositionSwitchMode, |
| keyboardSpecification.getCompositionSwitchMode(keyEvent)); |
| } |
| |
| assertEquals(KeyboardSpecification.HARDWARE_QWERTY_KANA, |
| keyboardSpecification.getKanaKeyboardSpecification()); |
| assertEquals(KeyboardSpecification.HARDWARE_QWERTY_ALPHABET, |
| keyboardSpecification.getAlphabetKeyboardSpecification()); |
| } |
| |
| @SmallTest |
| public void testTweleveKeyConverter() { |
| HardwareKeyboardSpecification keyboardSpecification = |
| HardwareKeyboardSpecification.TWELVEKEY; |
| |
| KeyEvent keyEventA = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_A); |
| keyEventA.setSource(InputDevice.SOURCE_KEYBOARD); |
| assertEquals(keyEventA.getUnicodeChar(), |
| keyboardSpecification.getMozcKeyEvent(keyEventA).getKeyCode()); |
| |
| class TestData extends Parameter { |
| final int keyCode; |
| final int expectMozcKeyCode; |
| |
| TestData(int keyCode, int expectMozcKeyCode) { |
| this.keyCode = keyCode; |
| this.expectMozcKeyCode = expectMozcKeyCode; |
| } |
| } |
| |
| TestData[] testDataList = { |
| new TestData(KeyEvent.KEYCODE_0, '0'), |
| new TestData(KeyEvent.KEYCODE_1, '1'), |
| new TestData(KeyEvent.KEYCODE_2, '2'), |
| new TestData(KeyEvent.KEYCODE_3, '3'), |
| new TestData(KeyEvent.KEYCODE_4, '4'), |
| new TestData(KeyEvent.KEYCODE_5, '5'), |
| new TestData(KeyEvent.KEYCODE_6, '6'), |
| new TestData(KeyEvent.KEYCODE_7, '7'), |
| new TestData(KeyEvent.KEYCODE_8, '8'), |
| new TestData(KeyEvent.KEYCODE_9, '9'), |
| new TestData(KeyEvent.KEYCODE_STAR, '*'), |
| }; |
| |
| for (TestData testData : testDataList) { |
| KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, testData.keyCode); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| assertEquals(testData.toString(), testData.expectMozcKeyCode, |
| keyboardSpecification.getMozcKeyEvent(keyEvent).getKeyCode()); |
| KeyEventInterface keyEventInterface = keyboardSpecification.getKeyEventInterface(keyEvent); |
| assertNotNull(testData.toString(), keyEventInterface.getNativeEvent()); |
| assertEquals(testData.toString(), keyEvent.getKeyCode(), keyEventInterface.getKeyCode()); |
| } |
| |
| { |
| KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_POUND); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| assertEquals(SpecialKey.ENTER, |
| keyboardSpecification.getMozcKeyEvent(keyEvent).getSpecialKey()); |
| KeyEventInterface keyEventInterface = keyboardSpecification.getKeyEventInterface(keyEvent); |
| assertNotNull(keyEventInterface.getNativeEvent()); |
| assertEquals(KeyEvent.KEYCODE_ENTER, keyEventInterface.getKeyCode()); |
| } |
| |
| { |
| KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_CENTER); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| assertEquals(SpecialKey.ENTER, |
| keyboardSpecification.getMozcKeyEvent(keyEvent).getSpecialKey()); |
| KeyEventInterface keyEventInterface = keyboardSpecification.getKeyEventInterface(keyEvent); |
| assertNotNull(keyEventInterface.getNativeEvent()); |
| assertEquals(KeyEvent.KEYCODE_ENTER, keyEventInterface.getKeyCode()); |
| } |
| |
| // No corresponding entry. |
| KeyEvent keyEvent = new KeyEvent(0, 0); |
| keyEvent.setSource(InputDevice.SOURCE_KEYBOARD); |
| assertFalse(keyboardSpecification.getCompositionSwitchMode(keyEvent).isPresent()); |
| |
| assertEquals(KeyboardSpecification.TWELVE_KEY_TOGGLE_KANA, |
| keyboardSpecification.getKanaKeyboardSpecification()); |
| assertEquals(KeyboardSpecification.TWELVE_KEY_TOGGLE_ALPHABET, |
| keyboardSpecification.getAlphabetKeyboardSpecification()); |
| } |
| |
| @SmallTest |
| public void testMaybeSetDetectedHardwareKeyMap() { |
| class TestData extends Parameter { |
| final HardwareKeyMap presetHardwareKeyMap; |
| final int keyboard; |
| final boolean forceToSet; |
| final HardwareKeyMap expectHardwareKeyMap; |
| |
| TestData(HardwareKeyMap presetHardwareKeyMap, |
| int keyboard, |
| boolean forceToSet, |
| HardwareKeyMap expectHardwareKeyMap) { |
| this.presetHardwareKeyMap = presetHardwareKeyMap; |
| this.keyboard = keyboard; |
| this.forceToSet = forceToSet; |
| this.expectHardwareKeyMap = expectHardwareKeyMap; |
| } |
| } |
| |
| TestData[] testDataList = { |
| new TestData(HardwareKeyMap.JAPANESE109A, Configuration.KEYBOARD_12KEY, false, |
| HardwareKeyMap.JAPANESE109A), |
| new TestData(null, Configuration.KEYBOARD_12KEY, false, HardwareKeyMap.TWELVEKEY), |
| new TestData(null, Configuration.KEYBOARD_QWERTY, false, HardwareKeyMap.JAPANESE109A), |
| new TestData(null, Configuration.KEYBOARD_NOKEYS, false, null), |
| new TestData(null, Configuration.KEYBOARD_UNDEFINED, false, null), |
| new TestData(null, Configuration.KEYBOARD_NOKEYS, true, HardwareKeyMap.DEFAULT), |
| new TestData(null, Configuration.KEYBOARD_UNDEFINED, true, HardwareKeyMap.DEFAULT), |
| }; |
| |
| SharedPreferences sharedPreferences = MozcPreferenceUtil.getSharedPreferences( |
| getInstrumentation().getContext(), "HARDWARE_KEYMAP"); |
| for (TestData testData : testDataList) { |
| sharedPreferences.edit().clear().commit(); |
| if (testData.presetHardwareKeyMap != null) { |
| HardwareKeyboardSpecification.setHardwareKeyMap( |
| sharedPreferences, testData.presetHardwareKeyMap); |
| } |
| Configuration configuration = new Configuration(); |
| configuration.keyboard = testData.keyboard; |
| HardwareKeyboardSpecification.maybeSetDetectedHardwareKeyMap( |
| sharedPreferences, configuration, testData.forceToSet); |
| assertEquals(testData.toString(), testData.expectHardwareKeyMap, |
| HardwareKeyboardSpecification.getHardwareKeyMap(sharedPreferences)); |
| } |
| |
| } |
| } |