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