Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Inherited Constants](https://developer.android.com/reference/android/text/method/MultiTapKeyListener#inhconstants) \| [Ctors](https://developer.android.com/reference/android/text/method/MultiTapKeyListener#pubctors) \| [Methods](https://developer.android.com/reference/android/text/method/MultiTapKeyListener#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/text/method/MultiTapKeyListener#inhmethods)

# MultiTapKeyListener

*** ** * ** ***


`
public


class
MultiTapKeyListener
`


`


`

`


`

`

extends https://developer.android.com/reference/android/text/method/BaseKeyListener


`

`


implements

https://developer.android.com/reference/android/text/SpanWatcher


`

|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||||
| ↳ | [android.text.method.MetaKeyKeyListener](https://developer.android.com/reference/android/text/method/MetaKeyKeyListener) |||
|   | ↳ | [android.text.method.BaseKeyListener](https://developer.android.com/reference/android/text/method/BaseKeyListener) ||
|   |   | ↳ | android.text.method.MultiTapKeyListener |

<br />

*** ** * ** ***

This is the standard key listener for alphabetic input on 12-key
keyboards. You should generally not need to instantiate this yourself;
TextKeyListener will do it for you.

<br />

As for all implementations of `https://developer.android.com/reference/android/text/method/KeyListener`, this class is only concerned with hardware keyboards. Software input methods have no obligation to trigger the methods in this class.

<br />

## Summary

| ### Inherited constants |
|---|
| From class `https://developer.android.com/reference/android/text/method/MetaKeyKeyListener` |---|---| | `int` | `https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_ALT_LOCKED` Flag that indicates that the ALT key is locked. | | `int` | `https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_ALT_ON` Flag that indicates that the ALT key is on. | | `int` | `https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_CAP_LOCKED` Flag that indicates that the SHIFT key is locked in CAPS mode. | | `int` | `https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_SHIFT_ON` Flag that indicates that the SHIFT key is on. | | `int` | `https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_SYM_LOCKED` Flag that indicates that the SYM key is locked. | | `int` | `https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#META_SYM_ON` Flag that indicates that the SYM key is on. | |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/text/method/MultiTapKeyListener#MultiTapKeyListener(android.text.method.TextKeyListener.Capitalize,%20boolean)(https://developer.android.com/reference/android/text/method/TextKeyListener.Capitalize cap, boolean autotext) ` |

| ### Public methods ||
|---|---|
| ` int` | ` https://developer.android.com/reference/android/text/method/MultiTapKeyListener#getInputType()() ` |
| ` static https://developer.android.com/reference/android/text/method/MultiTapKeyListener` | ` https://developer.android.com/reference/android/text/method/MultiTapKeyListener#getInstance(boolean,%20android.text.method.TextKeyListener.Capitalize)(boolean autotext, https://developer.android.com/reference/android/text/method/TextKeyListener.Capitalize cap) ` Returns a new or existing instance with the specified capitalization and correction properties. |
| ` boolean` | ` https://developer.android.com/reference/android/text/method/MultiTapKeyListener#onKeyDown(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable content, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` Handles presses of the meta keys. |
| ` void` | ` https://developer.android.com/reference/android/text/method/MultiTapKeyListener#onSpanAdded(android.text.Spannable,%20java.lang.Object,%20int,%20int)(https://developer.android.com/reference/android/text/Spannable s, https://developer.android.com/reference/java/lang/Object what, int start, int end) ` This method is called to notify you that the specified object has been attached to the specified range of the text. |
| ` void` | ` https://developer.android.com/reference/android/text/method/MultiTapKeyListener#onSpanChanged(android.text.Spannable,%20java.lang.Object,%20int,%20int,%20int,%20int)(https://developer.android.com/reference/android/text/Spannable buf, https://developer.android.com/reference/java/lang/Object what, int s, int e, int start, int stop) ` This method is called to notify you that the specified object has been relocated from the range `ostart...oend` to the new range `nstart...nend` of the text. |
| ` void` | ` https://developer.android.com/reference/android/text/method/MultiTapKeyListener#onSpanRemoved(android.text.Spannable,%20java.lang.Object,%20int,%20int)(https://developer.android.com/reference/android/text/Spannable s, https://developer.android.com/reference/java/lang/Object what, int start, int end) ` This method is called to notify you that the specified object has been detached from the specified range of the text. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/android/text/method/BaseKeyListener ` |---|---| | ` boolean` | ` https://developer.android.com/reference/android/text/method/BaseKeyListener#backspace(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable content, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` Performs the action that happens when you press the `https://developer.android.com/reference/android/view/KeyEvent#KEYCODE_DEL` key in a `https://developer.android.com/reference/android/widget/TextView`. | | ` boolean` | ` https://developer.android.com/reference/android/text/method/BaseKeyListener#forwardDelete(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable content, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` Performs the action that happens when you press the `https://developer.android.com/reference/android/view/KeyEvent#KEYCODE_FORWARD_DEL` key in a `https://developer.android.com/reference/android/widget/TextView`. | | ` boolean` | ` https://developer.android.com/reference/android/text/method/BaseKeyListener#onKeyDown(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable content, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` Handles presses of the meta keys. | | ` boolean` | ` https://developer.android.com/reference/android/text/method/BaseKeyListener#onKeyOther(android.view.View,%20android.text.Editable,%20android.view.KeyEvent)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable content, https://developer.android.com/reference/android/view/KeyEvent event) ` Base implementation handles ACTION_MULTIPLE KEYCODE_UNKNOWN by inserting the event's text into the content. | ||
| From class ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener ` |---|---| | ` static void` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#adjustMetaAfterKeypress(android.text.Spannable)(https://developer.android.com/reference/android/text/Spannable content) ` Call this method after you handle a keypress so that the meta state will be reset to unshifted (if it is not still down) or primed to be reset to unshifted (once it is released). | | ` static long` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#adjustMetaAfterKeypress(long)(long state) ` Call this method after you handle a keypress so that the meta state will be reset to unshifted (if it is not still down) or primed to be reset to unshifted (once it is released). | | ` static void` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#clearMetaKeyState(android.text.Editable,%20int)(https://developer.android.com/reference/android/text/Editable content, int states) ` | | ` long` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#clearMetaKeyState(long,%20int)(long state, int which) ` Clears the state of the specified meta key if it is locked. | | ` void` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#clearMetaKeyState(android.view.View,%20android.text.Editable,%20int)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable content, int states) ` | | ` static final int` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(java.lang.CharSequence)(https://developer.android.com/reference/java/lang/CharSequence text) ` Gets the state of the meta keys. | | ` static final int` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(java.lang.CharSequence,%20int)(https://developer.android.com/reference/java/lang/CharSequence text, int meta) ` Gets the state of a particular meta key. | | ` static final int` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(long)(long state) ` Gets the state of the meta keys. | | ` static final int` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(java.lang.CharSequence,%20android.view.KeyEvent)(https://developer.android.com/reference/java/lang/CharSequence text, https://developer.android.com/reference/android/view/KeyEvent event) ` Gets the state of the meta keys for a specific key event. | | ` static final int` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(long,%20int)(long state, int meta) ` Gets the state of a particular meta key. | | ` static final int` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#getMetaState(java.lang.CharSequence,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/java/lang/CharSequence text, int meta, https://developer.android.com/reference/android/view/KeyEvent event) ` Gets the state of a particular meta key to use with a particular key event. | | ` static long` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#handleKeyDown(long,%20int,%20android.view.KeyEvent)(long state, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` Handles presses of the meta keys. | | ` static long` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#handleKeyUp(long,%20int,%20android.view.KeyEvent)(long state, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` Handles release of the meta keys. | | ` static boolean` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#isMetaTracker(java.lang.CharSequence,%20java.lang.Object)(https://developer.android.com/reference/java/lang/CharSequence text, https://developer.android.com/reference/java/lang/Object what) ` Returns true if this object is one that this class would use to keep track of any meta state in the specified text. | | ` static boolean` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#isSelectingMetaTracker(java.lang.CharSequence,%20java.lang.Object)(https://developer.android.com/reference/java/lang/CharSequence text, https://developer.android.com/reference/java/lang/Object what) ` Returns true if this object is one that this class would use to keep track of the selecting meta state in the specified text. | | ` boolean` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#onKeyDown(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable content, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` Handles presses of the meta keys. | | ` boolean` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#onKeyUp(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable content, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` Handles release of the meta keys. | | ` static long` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#resetLockedMeta(long)(long state) ` Call this if you are a method that ignores the locked meta state (arrow keys, for example) and you handle a key. | | ` static void` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#resetLockedMeta(android.text.Spannable)(https://developer.android.com/reference/android/text/Spannable content) ` Call this if you are a method that ignores the locked meta state (arrow keys, for example) and you handle a key. | | ` static void` | ` https://developer.android.com/reference/android/text/method/MetaKeyKeyListener#resetMetaState(android.text.Spannable)(https://developer.android.com/reference/android/text/Spannable text) ` Resets all meta state to inactive. | ||
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||
| From interface ` https://developer.android.com/reference/android/text/method/KeyListener ` |---|---| | ` abstract void` | ` https://developer.android.com/reference/android/text/method/KeyListener#clearMetaKeyState(android.view.View,%20android.text.Editable,%20int)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable content, int states) ` Remove the given shift states from the edited text. | | ` abstract int` | ` https://developer.android.com/reference/android/text/method/KeyListener#getInputType()() ` Return the type of text that this key listener is manipulating, as per `https://developer.android.com/reference/android/text/InputType`. | | ` abstract boolean` | ` https://developer.android.com/reference/android/text/method/KeyListener#onKeyDown(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable text, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` If the key listener wants to handle this key, return true, otherwise return false and the caller (i.e. the widget host) will handle the key. | | ` abstract boolean` | ` https://developer.android.com/reference/android/text/method/KeyListener#onKeyOther(android.view.View,%20android.text.Editable,%20android.view.KeyEvent)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable text, https://developer.android.com/reference/android/view/KeyEvent event) ` If the key listener wants to other kinds of key events, return true, otherwise return false and the caller (i.e. the widget host) will handle the key. | | ` abstract boolean` | ` https://developer.android.com/reference/android/text/method/KeyListener#onKeyUp(android.view.View,%20android.text.Editable,%20int,%20android.view.KeyEvent)(https://developer.android.com/reference/android/view/View view, https://developer.android.com/reference/android/text/Editable text, int keyCode, https://developer.android.com/reference/android/view/KeyEvent event) ` If the key listener wants to handle this key release, return true, otherwise return false and the caller (i.e. the widget host) will handle the key. | ||
| From interface ` https://developer.android.com/reference/android/text/SpanWatcher ` |---|---| | ` abstract void` | ` https://developer.android.com/reference/android/text/SpanWatcher#onSpanAdded(android.text.Spannable,%20java.lang.Object,%20int,%20int)(https://developer.android.com/reference/android/text/Spannable text, https://developer.android.com/reference/java/lang/Object what, int start, int end) ` This method is called to notify you that the specified object has been attached to the specified range of the text. | | ` abstract void` | ` https://developer.android.com/reference/android/text/SpanWatcher#onSpanChanged(android.text.Spannable,%20java.lang.Object,%20int,%20int,%20int,%20int)(https://developer.android.com/reference/android/text/Spannable text, https://developer.android.com/reference/java/lang/Object what, int ostart, int oend, int nstart, int nend) ` This method is called to notify you that the specified object has been relocated from the range `ostart...oend` to the new range `nstart...nend` of the text. | | ` abstract void` | ` https://developer.android.com/reference/android/text/SpanWatcher#onSpanRemoved(android.text.Spannable,%20java.lang.Object,%20int,%20int)(https://developer.android.com/reference/android/text/Spannable text, https://developer.android.com/reference/java/lang/Object what, int start, int end) ` This method is called to notify you that the specified object has been detached from the specified range of the text. | ||

## Public constructors

### MultiTapKeyListener

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public MultiTapKeyListener (TextKeyListener.Capitalize cap, 
                boolean autotext)
```

<br />

<br />

| Parameters ||
|---|---|
| `cap` | `TextKeyListener.Capitalize` <br /> |
| `autotext` | `boolean` <br /> |

## Public methods

### getInputType

Added in [API level 3](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getInputType ()
```

<br />

<br />

| Returns ||
|---|---|
| `int` | <br /> |

### getInstance

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static MultiTapKeyListener getInstance (boolean autotext, 
                TextKeyListener.Capitalize cap)
```

Returns a new or existing instance with the specified capitalization
and correction properties.

<br />

| Parameters ||
|---|---|
| `autotext` | `boolean` <br /> |
| `cap` | `TextKeyListener.Capitalize` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/text/method/MultiTapKeyListener` | <br /> |

### onKeyDown

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean onKeyDown (View view, 
                Editable content, 
                int keyCode, 
                KeyEvent event)
```

Handles presses of the meta keys.

<br />

| Parameters ||
|---|---|
| `view` | `View` <br /> |
| `content` | `Editable` <br /> |
| `keyCode` | `int` <br /> |
| `event` | `KeyEvent` <br /> |

| Returns ||
|---|---|
| `boolean` | <br /> |

### onSpanAdded

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onSpanAdded (Spannable s, 
                Object what, 
                int start, 
                int end)
```

This method is called to notify you that the specified object
has been attached to the specified range of the text.

<br />

| Parameters ||
|---|---|
| `s` | `Spannable` <br /> |
| `what` | `Object` <br /> |
| `start` | `int` <br /> |
| `end` | `int` <br /> |

### onSpanChanged

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onSpanChanged (Spannable buf, 
                Object what, 
                int s, 
                int e, 
                int start, 
                int stop)
```

This method is called to notify you that the specified object
has been relocated from the range `ostart...oend`
to the new range `nstart...nend` of the text.

<br />

| Parameters ||
|---|---|
| `buf` | `Spannable` <br /> |
| `what` | `Object` <br /> |
| `s` | `int` <br /> |
| `e` | `int` <br /> |
| `start` | `int` <br /> |
| `stop` | `int` <br /> |

### onSpanRemoved

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onSpanRemoved (Spannable s, 
                Object what, 
                int start, 
                int end)
```

This method is called to notify you that the specified object
has been detached from the specified range of the text.

<br />

| Parameters ||
|---|---|
| `s` | `Spannable` <br /> |
| `what` | `Object` <br /> |
| `start` | `int` <br /> |
| `end` | `int` <br /> |