KeyboardUtil.java revision f8ec169d022fbed42fd82091d24c45f3767cdfe7
182d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir/* 282d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * Copyright (C) 2017 The Android Open Source Project 382d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * 482d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * Licensed under the Apache License, Version 2.0 (the "License"); 582d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * you may not use this file except in compliance with the License. 682d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * You may obtain a copy of the License at 782d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * 882d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * http://www.apache.org/licenses/LICENSE-2.0 982d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * 1082d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * Unless required by applicable law or agreed to in writing, software 1182d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * distributed under the License is distributed on an "AS IS" BASIS, 1282d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * See the License for the specific language governing permissions and 1482d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * limitations under the License. 1582d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir */ 1682d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinirpackage android.support.text.emoji.util; 1782d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 1882d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinirimport android.view.KeyEvent; 19f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.view.inputmethod.InputConnection; 2082d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 2182d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir/** 2282d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir * Utility class for KeyEvents 2382d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir */ 2482d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinirpublic class KeyboardUtil { 2582d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir private static final int ALT = KeyEvent.META_ALT_ON | KeyEvent.META_ALT_LEFT_ON; 2682d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir private static final int CTRL = KeyEvent.META_CTRL_ON | KeyEvent.META_CTRL_LEFT_ON; 2782d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir private static final int SHIFT = KeyEvent.META_SHIFT_ON | KeyEvent.META_SHIFT_LEFT_ON; 2882d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir private static final int FN = KeyEvent.META_FUNCTION_ON; 2982d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 3082d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir public static KeyEvent zero() { 3182d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir return keyEvent(KeyEvent.KEYCODE_0); 3282d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir } 3382d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 3482d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir public static KeyEvent del() { 3582d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir return keyEvent(KeyEvent.KEYCODE_DEL); 3682d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir } 3782d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 3882d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir public static KeyEvent altDel() { 3982d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir return keyEvent(KeyEvent.KEYCODE_DEL, ALT); 4082d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir } 4182d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 4282d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir public static KeyEvent ctrlDel() { 4382d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir return keyEvent(KeyEvent.KEYCODE_DEL, CTRL); 4482d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir } 4582d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 4682d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir public static KeyEvent shiftDel() { 4782d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir return keyEvent(KeyEvent.KEYCODE_DEL, SHIFT); 4882d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir } 4982d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 5082d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir public static KeyEvent fnDel() { 5182d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir return keyEvent(KeyEvent.KEYCODE_DEL, FN); 5282d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir } 5382d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 5482d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir public static KeyEvent forwardDel() { 5582d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir return keyEvent(KeyEvent.KEYCODE_FORWARD_DEL); 5682d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir } 5782d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 5882d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir public static KeyEvent keyEvent(int keycode, int metaState) { 5982d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir final long currentTime = System.currentTimeMillis(); 6082d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir return new KeyEvent(currentTime, currentTime, KeyEvent.ACTION_DOWN, keycode, 0, metaState); 6182d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir } 6282d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir 6382d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir public static KeyEvent keyEvent(int keycode) { 6482d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir final long currentTime = System.currentTimeMillis(); 6582d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir return new KeyEvent(currentTime, currentTime, KeyEvent.ACTION_DOWN, keycode, 0); 6682d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir } 67f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 68f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir public static void setComposingTextInBatch(InputConnection input, CharSequence text) { 69f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir input.beginBatchEdit(); 70f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir input.setComposingText(text, 1); 71f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir input.endBatchEdit(); 72f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir } 73f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 74f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir public static void deleteSurrondingText(InputConnection input, int before, int after) { 75f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir input.beginBatchEdit(); 76f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir input.deleteSurroundingText(before, after); 77f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir input.endBatchEdit(); 78f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir } 7982d2cc1cf0c2bfdd5121e6d6913dfe9fcaacf439Siyamed Sinir} 80