1 /* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.text.method; 18 19 import android.text.Editable; 20 import android.view.KeyEvent; 21 import android.view.View; 22 23 /** 24 * Interface for converting text key events into edit operations on an 25 * Editable class. Note that for most cases this interface has been 26 * superceded by general soft input methods as defined by 27 * {@link android.view.inputmethod.InputMethod}; it should only be used 28 * for cases where an application has its own on-screen keypad and also wants 29 * to process hard keyboard events to match it. 30 * <p></p> 31 * Key presses on soft input methods are not required to trigger the methods 32 * in this listener, and are in fact discouraged to do so. The default 33 * android keyboard will not trigger these for any key to any application 34 * targetting Jelly Bean or later, and will only deliver it for some 35 * key presses to applications targetting Ice Cream Sandwich or earlier. 36 */ 37 public interface KeyListener { 38 /** 39 * Return the type of text that this key listener is manipulating, 40 * as per {@link android.text.InputType}. This is used to 41 * determine the mode of the soft keyboard that is shown for the editor. 42 * 43 * <p>If you return 44 * {@link android.text.InputType#TYPE_NULL} 45 * then <em>no</em> soft keyboard will provided. In other words, you 46 * must be providing your own key pad for on-screen input and the key 47 * listener will be used to handle input from a hard keyboard. 48 * 49 * <p>If you 50 * return any other value, a soft input method will be created when the 51 * user puts focus in the editor, which will provide a keypad and also 52 * consume hard key events. This means that the key listener will generally 53 * not be used, instead the soft input method will take care of managing 54 * key input as per the content type returned here. 55 */ getInputType()56 public int getInputType(); 57 58 /** 59 * If the key listener wants to handle this key, return true, 60 * otherwise return false and the caller (i.e. the widget host) 61 * will handle the key. 62 */ onKeyDown(View view, Editable text, int keyCode, KeyEvent event)63 public boolean onKeyDown(View view, Editable text, 64 int keyCode, KeyEvent event); 65 66 /** 67 * If the key listener wants to handle this key release, return true, 68 * otherwise return false and the caller (i.e. the widget host) 69 * will handle the key. 70 */ onKeyUp(View view, Editable text, int keyCode, KeyEvent event)71 public boolean onKeyUp(View view, Editable text, 72 int keyCode, KeyEvent event); 73 74 /** 75 * If the key listener wants to other kinds of key events, return true, 76 * otherwise return false and the caller (i.e. the widget host) 77 * will handle the key. 78 */ onKeyOther(View view, Editable text, KeyEvent event)79 public boolean onKeyOther(View view, Editable text, KeyEvent event); 80 81 /** 82 * Remove the given shift states from the edited text. 83 */ clearMetaKeyState(View view, Editable content, int states)84 public void clearMetaKeyState(View view, Editable content, int states); 85 } 86