15a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka/* 28632bff2d5a8e1160989008dea6eff4b94b065ddTadashi G. Takaoka * Copyright (C) 2010 The Android Open Source Project 35a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * 48aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 58aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * you may not use this file except in compliance with the License. 68aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * You may obtain a copy of the License at 75a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * 88aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 95a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * 105a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 118aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 128aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * See the License for the specific language governing permissions and 148aa9963a895f9dd5bb1bc92ab2e4f461e058f87aTadashi G. Takaoka * limitations under the License. 155a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka */ 165a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 175a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaokapackage com.android.inputmethod.keyboard; 185a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 19ac78633be28e8990fc3b3a8de192c80966e746e3Tadashi G. Takaokaimport com.android.inputmethod.latin.Constants; 20eea34598bf63f670f47d7b3f37b6436921e5fe02Tom Ouyangimport com.android.inputmethod.latin.InputPointers; 21eea34598bf63f670f47d7b3f37b6436921e5fe02Tom Ouyang 225a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaokapublic interface KeyboardActionListener { 235a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 245a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka /** 25a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka * Called when the user presses a key. This is sent before the {@link #onCodeInput} is called. 26a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka * For keys that repeat, this is only called once. 275a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * 28a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka * @param primaryCode the unicode of the key being pressed. If the touch is not on a valid key, 29a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka * the value will be zero. 3041016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka * @param isSinglePointer true if pressing has occurred while no other key is being pressed. 315a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka */ 3241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka public void onPressKey(int primaryCode, boolean isSinglePointer); 335a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 345a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka /** 35a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka * Called when the user releases a key. This is sent after the {@link #onCodeInput} is called. 36a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka * For keys that repeat, this is only called once. 375a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * 38a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka * @param primaryCode the code of the key that was released 39e59491460b0411bed430a5ca6eca0c56c5bf18d9Tadashi G. Takaoka * @param withSliding true if releasing has occurred because the user slid finger from the key 40e59491460b0411bed430a5ca6eca0c56c5bf18d9Tadashi G. Takaoka * to other key without releasing the finger. 415a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka */ 422a88440419f49d100c73e067a823390f64aba3b1Tadashi G. Takaoka public void onReleaseKey(int primaryCode, boolean withSliding); 435a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 445a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka /** 458aa3f5a3ad6095a3355841ce30bce4877319d0a0Tadashi G. Takaoka * Send a key code to the listener. 465a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * 47a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka * @param primaryCode this is the code of the key that was pressed 48a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka * @param x x-coordinate pixel of touched event. If {@link #onCodeInput} is not called by 49ac78633be28e8990fc3b3a8de192c80966e746e3Tadashi G. Takaoka * {@link PointerTracker} or so, the value should be 50ac78633be28e8990fc3b3a8de192c80966e746e3Tadashi G. Takaoka * {@link Constants#NOT_A_COORDINATE}. If it's called on insertion from the 51ac78633be28e8990fc3b3a8de192c80966e746e3Tadashi G. Takaoka * suggestion strip, it should be {@link Constants#SUGGESTION_STRIP_COORDINATE}. 52a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka * @param y y-coordinate pixel of touched event. If {@link #onCodeInput} is not called by 53ac78633be28e8990fc3b3a8de192c80966e746e3Tadashi G. Takaoka * {@link PointerTracker} or so, the value should be 54ac78633be28e8990fc3b3a8de192c80966e746e3Tadashi G. Takaoka * {@link Constants#NOT_A_COORDINATE}.If it's called on insertion from the 55ac78633be28e8990fc3b3a8de192c80966e746e3Tadashi G. Takaoka * suggestion strip, it should be {@link Constants#SUGGESTION_STRIP_COORDINATE}. 565a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka */ 57ca7ec2097ca6af1505c1e6aa8b81b6068ba46daesatok public void onCodeInput(int primaryCode, int x, int y); 58a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka 595a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka /** 60bc464e2952e102219f0b977fc1e9140ad5bd03e4Tadashi G. Takaoka * Sends a string of characters to the listener. 615a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * 62bc464e2952e102219f0b977fc1e9140ad5bd03e4Tadashi G. Takaoka * @param text the string of characters to be registered. 635a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka */ 64bc464e2952e102219f0b977fc1e9140ad5bd03e4Tadashi G. Takaoka public void onTextInput(String text); 655a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka 664be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka /** 674be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka * Called when user started batch input. 684be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka */ 694be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka public void onStartBatchInput(); 704be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka 71eea34598bf63f670f47d7b3f37b6436921e5fe02Tom Ouyang /** 7210102f02af1216cfca115d1742740f567b909e2cTadashi G. Takaoka * Sends the ongoing batch input points data. 73eea34598bf63f670f47d7b3f37b6436921e5fe02Tom Ouyang * @param batchPointers the batch input points representing the user input 74eea34598bf63f670f47d7b3f37b6436921e5fe02Tom Ouyang */ 7510102f02af1216cfca115d1742740f567b909e2cTadashi G. Takaoka public void onUpdateBatchInput(InputPointers batchPointers); 76eea34598bf63f670f47d7b3f37b6436921e5fe02Tom Ouyang 774be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka /** 7810102f02af1216cfca115d1742740f567b909e2cTadashi G. Takaoka * Sends the final batch input points data. 794be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka * 8010102f02af1216cfca115d1742740f567b909e2cTadashi G. Takaoka * @param batchPointers the batch input points representing the user input 814be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka */ 8210102f02af1216cfca115d1742740f567b909e2cTadashi G. Takaoka public void onEndBatchInput(InputPointers batchPointers); 834be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka 84b3f789799a2983a9c97288686f11dfab369243c0Tadashi G. Takaoka public void onCancelBatchInput(); 85b3f789799a2983a9c97288686f11dfab369243c0Tadashi G. Takaoka 865a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka /** 875a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka * Called when user released a finger outside any key. 885a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka */ 89a96574fdd5e38a237a35b21a2b7c20a29138c648Tadashi G. Takaoka public void onCancelInput(); 90cadb2128f54b49be31bb4dc06374afe81ed028b7Ken Wakasa 91cadb2128f54b49be31bb4dc06374afe81ed028b7Ken Wakasa /** 9241016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka * Called when user finished sliding key input. 9341016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka */ 9441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka public void onFinishSlidingInput(); 9541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka 9641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka /** 97cadb2128f54b49be31bb4dc06374afe81ed028b7Ken Wakasa * Send a non-"code input" custom request to the listener. 98cadb2128f54b49be31bb4dc06374afe81ed028b7Ken Wakasa * @return true if the request has been consumed, false otherwise. 99cadb2128f54b49be31bb4dc06374afe81ed028b7Ken Wakasa */ 100cadb2128f54b49be31bb4dc06374afe81ed028b7Ken Wakasa public boolean onCustomRequest(int requestCode); 101e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka 102e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka public static class Adapter implements KeyboardActionListener { 10384ac8f31fbe30f03c14a85ffb8c827edb6e47ab0Tadashi G. Takaoka public static final Adapter EMPTY_LISTENER = new Adapter(); 10484ac8f31fbe30f03c14a85ffb8c827edb6e47ab0Tadashi G. Takaoka 105e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka @Override 10641016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka public void onPressKey(int primaryCode, boolean isSinglePointer) {} 107e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka @Override 1082a88440419f49d100c73e067a823390f64aba3b1Tadashi G. Takaoka public void onReleaseKey(int primaryCode, boolean withSliding) {} 109e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka @Override 110ca7ec2097ca6af1505c1e6aa8b81b6068ba46daesatok public void onCodeInput(int primaryCode, int x, int y) {} 111e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka @Override 112bc464e2952e102219f0b977fc1e9140ad5bd03e4Tadashi G. Takaoka public void onTextInput(String text) {} 113e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka @Override 1144be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka public void onStartBatchInput() {} 1154be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka @Override 11610102f02af1216cfca115d1742740f567b909e2cTadashi G. Takaoka public void onUpdateBatchInput(InputPointers batchPointers) {} 117eea34598bf63f670f47d7b3f37b6436921e5fe02Tom Ouyang @Override 11810102f02af1216cfca115d1742740f567b909e2cTadashi G. Takaoka public void onEndBatchInput(InputPointers batchPointers) {} 1194be03befe3cf771a33448367f50c517dc01ced21Tadashi G. Takaoka @Override 120b3f789799a2983a9c97288686f11dfab369243c0Tadashi G. Takaoka public void onCancelBatchInput() {} 121b3f789799a2983a9c97288686f11dfab369243c0Tadashi G. Takaoka @Override 122e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka public void onCancelInput() {} 123e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka @Override 12441016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka public void onFinishSlidingInput() {} 12541016acacfa21354f59ed51db1f85ea3d99bf6a4Tadashi G. Takaoka @Override 126e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka public boolean onCustomRequest(int requestCode) { 127e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka return false; 128e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka } 129e3be3bcebc11892b536fdf650f74bba21af13383Tadashi G. Takaoka } 1305a309f57155fb95667c2ccdda730eaf175de8876Tadashi G. Takaoka} 131