}
}
- /**
- * Sets keyboard extension. Keyboard extension is shown when input is detected above keyboard
- * while keyboard has focus.
- *
- * @param resId
- */
- public void setExtension(int resId) {
- mExtensionResId = resId;
- }
-
- /**
- * Get current extesion resource id.
- *
- * @return resource id, 0 if not set.
- */
- public int getExtension() {
- return mExtensionResId;
- }
-
- private void updateSpaceBarForLocale() {
- if (mLocale != null) {
- // Create the graphic for spacebar
- Bitmap buffer = Bitmap.createBitmap(mSpaceKey.width, mSpaceIcon.getIntrinsicHeight(),
- Bitmap.Config.ARGB_8888);
- Canvas canvas = new Canvas(buffer);
- canvas.drawColor(0x00000000, PorterDuff.Mode.CLEAR);
- Paint paint = new Paint();
- paint.setAntiAlias(true);
- // TODO: Make the text size a customizable attribute
- paint.setTextSize(22);
- paint.setTextAlign(Align.CENTER);
- // Draw a drop shadow for the text
- paint.setShadowLayer(1f, 0, 0, 0xFF000000);
- paint.setColor(0x80C0C0C0);
- canvas.drawText(mLocale.getDisplayLanguage(mLocale),
- buffer.getWidth() / 2, - paint.ascent() + 2, paint);
- int x = (buffer.getWidth() - mSpaceIcon.getIntrinsicWidth()) / 2;
- int y = buffer.getHeight() - mSpaceIcon.getIntrinsicHeight();
- mSpaceIcon.setBounds(x, y,
- x + mSpaceIcon.getIntrinsicWidth(), y + mSpaceIcon.getIntrinsicHeight());
- mSpaceIcon.draw(canvas);
- mSpaceKey.icon = new BitmapDrawable(mRes, buffer);
- mSpaceKey.repeatable = false;
- } else {
- mSpaceKey.icon = mRes.getDrawable(R.drawable.sym_keyboard_space);
- mSpaceKey.repeatable = true;
- }
- }
-
- public void setLanguage(Locale locale) {
- if (mLocale != null && mLocale.equals(locale)) return;
- mLocale = locale;
- updateSpaceBarForLocale();
- }
-
static class LatinKey extends Keyboard.Key {
private boolean mShiftLockEnabled;
private boolean mEnabled = true;
import android.inputmethodservice.KeyboardView.OnKeyboardActionListener;
import android.os.Handler;
import android.os.SystemClock;
-import android.text.Editable;
-import android.text.Selection;
-import android.util.Log;
+import android.provider.Settings;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewRoot;
-import android.view.inputmethod.InputConnection;
-import android.widget.EditText;
import com.android.internal.R;
public class PasswordEntryKeyboardHelper implements OnKeyboardActionListener {
private static final int KEYBOARD_STATE_NORMAL = 0;
private static final int KEYBOARD_STATE_SHIFTED = 1;
private static final int KEYBOARD_STATE_CAPSLOCK = 2;
- private static final String TAG = "PasswordEntryKeyboardHelper";
private int mKeyboardMode = KEYBOARD_MODE_ALPHA;
private int mKeyboardState = KEYBOARD_STATE_NORMAL;
private PasswordEntryKeyboard mQwertyKeyboard;
case KEYBOARD_MODE_ALPHA:
mKeyboardView.setKeyboard(mQwertyKeyboard);
mKeyboardState = KEYBOARD_STATE_NORMAL;
+ final boolean visiblePassword = Settings.System.getInt(
+ mContext.getContentResolver(),
+ Settings.System.TEXT_SHOW_PASSWORD, 1) != 0;
+ mKeyboardView.setPreviewEnabled(visiblePassword);
break;
case KEYBOARD_MODE_NUMERIC:
mKeyboardView.setKeyboard(mNumericKeyboard);
mKeyboardState = KEYBOARD_STATE_NORMAL;
+ mKeyboardView.setPreviewEnabled(false); // never show popup for numeric keypad
break;
}
mKeyboardMode = mode;
}
public void onKey(int primaryCode, int[] keyCodes) {
- Log.v(TAG, "Key code = " + Integer.toHexString(primaryCode));
if (primaryCode == Keyboard.KEYCODE_DELETE) {
handleBackspace();
} else if (primaryCode == Keyboard.KEYCODE_SHIFT) {
}
public void onPress(int primaryCode) {
-
+ // TODO: vibration support.
}
public void onRelease(int primaryCode) {
package com.android.internal.widget;
import android.content.Context;
-import android.inputmethodservice.Keyboard;
import android.inputmethodservice.KeyboardView;
import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.widget.PopupWindow;
-import com.android.internal.R;
public class PasswordEntryKeyboardView extends KeyboardView {
- public static final int KEYCODE_OPTIONS = -100;
+ static final int KEYCODE_OPTIONS = -100;
static final int KEYCODE_SHIFT_LONGPRESS = -101;
static final int KEYCODE_VOICE = -102;
static final int KEYCODE_F1 = -103;
static final int KEYCODE_NEXT_LANGUAGE = -104;
- private boolean mExtensionVisible;
- private PasswordEntryKeyboardView mExtension;
- private PopupWindow mExtensionPopup;
- private boolean mFirstEvent;
-
public PasswordEntryKeyboardView(Context context, AttributeSet attrs) {
super(context, attrs);
}
super(context, attrs, defStyle);
}
- @Override
- public boolean onTouchEvent(MotionEvent me) {
- if (((PasswordEntryKeyboard) getKeyboard()).getExtension() == 0) {
- return super.onTouchEvent(me);
- }
- if (me.getY() < 0) {
- if (mExtensionVisible) {
- int action = me.getAction();
- if (mFirstEvent) action = MotionEvent.ACTION_DOWN;
- mFirstEvent = false;
- MotionEvent translated = MotionEvent.obtain(me.getEventTime(), me.getEventTime(),
- action,
- me.getX(), me.getY() + mExtension.getHeight(), me.getMetaState());
- boolean result = mExtension.onTouchEvent(translated);
- translated.recycle();
- if (me.getAction() == MotionEvent.ACTION_UP
- || me.getAction() == MotionEvent.ACTION_CANCEL) {
- closeExtension();
- }
- return result;
- } else {
- if (openExtension()) {
- MotionEvent cancel = MotionEvent.obtain(me.getDownTime(), me.getEventTime(),
- MotionEvent.ACTION_CANCEL, me.getX() - 100, me.getY() - 100, 0);
- super.onTouchEvent(cancel);
- cancel.recycle();
- if (mExtension.getHeight() > 0) {
- MotionEvent translated = MotionEvent.obtain(me.getEventTime(),
- me.getEventTime(),
- MotionEvent.ACTION_DOWN,
- me.getX(), me.getY() + mExtension.getHeight(),
- me.getMetaState());
- mExtension.onTouchEvent(translated);
- translated.recycle();
- } else {
- mFirstEvent = true;
- }
- }
- return true;
- }
- } else if (mExtensionVisible) {
- closeExtension();
- // Send a down event into the main keyboard first
- MotionEvent down = MotionEvent.obtain(me.getEventTime(), me.getEventTime(),
- MotionEvent.ACTION_DOWN, me.getX(), me.getY(), me.getMetaState());
- super.onTouchEvent(down);
- down.recycle();
- // Send the actual event
- return super.onTouchEvent(me);
- } else {
- return super.onTouchEvent(me);
- }
- }
-
- private boolean openExtension() {
- if (((PasswordEntryKeyboard) getKeyboard()).getExtension() == 0) return false;
- makePopupWindow();
- mExtensionVisible = true;
- return true;
- }
-
- private void makePopupWindow() {
- if (mExtensionPopup == null) {
- int[] windowLocation = new int[2];
- mExtensionPopup = new PopupWindow(getContext());
- mExtensionPopup.setBackgroundDrawable(null);
- LayoutInflater li = (LayoutInflater) getContext().getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
- mExtension = (PasswordEntryKeyboardView) li.inflate(
- R.layout.password_keyboard_input, null);
- mExtension.setOnKeyboardActionListener(getOnKeyboardActionListener());
- mExtension.setPopupParent(this);
- mExtension.setPopupOffset(0, -windowLocation[1]);
- Keyboard keyboard;
- mExtension.setKeyboard(keyboard = new PasswordEntryKeyboard(getContext(),
- ((PasswordEntryKeyboard) getKeyboard()).getExtension()));
- mExtensionPopup.setContentView(mExtension);
- mExtensionPopup.setWidth(getWidth());
- mExtensionPopup.setHeight(keyboard.getHeight());
- getLocationInWindow(windowLocation);
- // TODO: Fix the "- 30".
- mExtension.setPopupOffset(0, -windowLocation[1] - 30);
- mExtensionPopup.showAtLocation(this, 0, 0, -keyboard.getHeight()
- + windowLocation[1]);
- } else {
- mExtension.setVisibility(VISIBLE);
- }
- }
-
- @Override
- public void closing() {
- super.closing();
- if (mExtensionPopup != null && mExtensionPopup.isShowing()) {
- mExtensionPopup.dismiss();
- mExtensionPopup = null;
- }
- }
-
- private void closeExtension() {
- mExtension.setVisibility(INVISIBLE);
- mExtension.closing();
- mExtensionVisible = false;
- }
}
android:layout_marginLeft="6dip"
android:layout_marginTop="10dip"
android:layout_marginBottom="10dip"
- android:gravity="center"
+ android:gravity="left"
android:ellipsize="marquee"
android:text="@android:string/keyguard_password_enter_password_code"
android:textAppearance="?android:attr/textAppearanceLarge"
android:inputType="textPassword"
android:gravity="center"
android:layout_gravity="center"
- android:textSize="32sp"
+ android:textSize="24sp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:background="@drawable/password_field_default"
android:textColor="#ffffffff"
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2008, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-
-<com.android.passwordunlockdemo.LatinKeyboardView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@android:id/keyboardView"
- android:layout_alignParentBottom="true"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="#00000000"
- android:keyBackground="@drawable/btn_keyboard_key_fulltrans"
- />
>
<Row>
- <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
- <Key android:codes="119" android:keyLabel="w"/>
- <Key android:codes="101" android:keyLabel="e"/>
- <Key android:codes="114" android:keyLabel="r"/>
- <Key android:codes="116" android:keyLabel="t"/>
- <Key android:codes="121" android:keyLabel="y"/>
- <Key android:codes="117" android:keyLabel="u"/>
- <Key android:codes="105" android:keyLabel="i"/>
- <Key android:codes="111" android:keyLabel="o"/>
- <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="q" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="w"/>
+ <Key android:keyLabel="e"/>
+ <Key android:keyLabel="r"/>
+ <Key android:keyLabel="t"/>
+ <Key android:keyLabel="y"/>
+ <Key android:keyLabel="u"/>
+ <Key android:keyLabel="i"/>
+ <Key android:keyLabel="o"/>
+ <Key android:keyLabel="p" android:keyEdgeFlags="right"/>
</Row>
<Row>
- <Key android:codes="97" android:keyLabel="a" android:horizontalGap="5%p"
- android:keyEdgeFlags="left"/>
- <Key android:codes="115" android:keyLabel="s"/>
- <Key android:codes="100" android:keyLabel="d"/>
- <Key android:codes="102" android:keyLabel="f"/>
- <Key android:codes="103" android:keyLabel="g"/>
- <Key android:codes="104" android:keyLabel="h"/>
- <Key android:codes="106" android:keyLabel="j"/>
- <Key android:codes="107" android:keyLabel="k"/>
- <Key android:codes="108" android:keyLabel="l" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="a" android:horizontalGap="5%p" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="s"/>
+ <Key android:keyLabel="d"/>
+ <Key android:keyLabel="f"/>
+ <Key android:keyLabel="g"/>
+ <Key android:keyLabel="h"/>
+ <Key android:keyLabel="j"/>
+ <Key android:keyLabel="k"/>
+ <Key android:keyLabel="l" android:keyEdgeFlags="right"/>
</Row>
<Row>
android:keyWidth="15%p" android:isModifier="true"
android:iconPreview="@drawable/sym_keyboard_feedback_shift"
android:isSticky="true" android:keyEdgeFlags="left"/>
- <Key android:codes="122" android:keyLabel="z"/>
- <Key android:codes="120" android:keyLabel="x"/>
- <Key android:codes="99" android:keyLabel="c"/>
- <Key android:codes="118" android:keyLabel="v"/>
- <Key android:codes="98" android:keyLabel="b"/>
- <Key android:codes="110" android:keyLabel="n"/>
- <Key android:codes="109" android:keyLabel="m"/>
+ <Key android:keyLabel="z"/>
+ <Key android:keyLabel="x"/>
+ <Key android:keyLabel="c"/>
+ <Key android:keyLabel="v"/>
+ <Key android:keyLabel="b"/>
+ <Key android:keyLabel="n"/>
+ <Key android:keyLabel="m"/>
<Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete"
android:keyWidth="15%p" android:keyEdgeFlags="right"
android:iconPreview="@drawable/sym_keyboard_feedback_delete"
<Key android:keyLabel="-" />
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
+ android:keyWidth="20%p"/>
<Key android:keyLabel="=" />
- <Key android:codes="46" android:keyLabel="."
+ <Key android:keyLabel="."
android:keyWidth="10%p"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
android:iconPreview="@drawable/sym_keyboard_feedback_return"
>
<Row>
- <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
- <Key android:codes="119" android:keyLabel="w"/>
- <Key android:codes="101" android:keyLabel="e"/>
- <Key android:codes="114" android:keyLabel="r"/>
- <Key android:codes="116" android:keyLabel="t"/>
- <Key android:codes="121" android:keyLabel="y"/>
- <Key android:codes="117" android:keyLabel="u"/>
- <Key android:codes="105" android:keyLabel="i"/>
- <Key android:codes="111" android:keyLabel="o"/>
- <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="q" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="w"/>
+ <Key android:keyLabel="e"/>
+ <Key android:keyLabel="r"/>
+ <Key android:keyLabel="t"/>
+ <Key android:keyLabel="y"/>
+ <Key android:keyLabel="u"/>
+ <Key android:keyLabel="i"/>
+ <Key android:keyLabel="o"/>
+ <Key android:keyLabel="p" android:keyEdgeFlags="right"/>
</Row>
<Row>
- <Key android:codes="97" android:keyLabel="a" android:horizontalGap="5%p"
+ <Key android:keyLabel="a" android:horizontalGap="5%p"
android:keyEdgeFlags="left"/>
- <Key android:codes="115" android:keyLabel="s"/>
- <Key android:codes="100" android:keyLabel="d"/>
- <Key android:codes="102" android:keyLabel="f"/>
- <Key android:codes="103" android:keyLabel="g"/>
- <Key android:codes="104" android:keyLabel="h"/>
- <Key android:codes="106" android:keyLabel="j"/>
- <Key android:codes="107" android:keyLabel="k"/>
- <Key android:codes="108" android:keyLabel="l" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="s"/>
+ <Key android:keyLabel="d"/>
+ <Key android:keyLabel="f"/>
+ <Key android:keyLabel="g"/>
+ <Key android:keyLabel="h"/>
+ <Key android:keyLabel="j"/>
+ <Key android:keyLabel="k"/>
+ <Key android:keyLabel="l" android:keyEdgeFlags="right"/>
</Row>
<Row>
android:keyWidth="15%p" android:isModifier="true"
android:iconPreview="@drawable/sym_keyboard_feedback_shift"
android:isSticky="true" android:keyEdgeFlags="left"/>
- <Key android:codes="122" android:keyLabel="z"/>
- <Key android:codes="120" android:keyLabel="x"/>
- <Key android:codes="99" android:keyLabel="c"/>
- <Key android:codes="118" android:keyLabel="v"/>
- <Key android:codes="98" android:keyLabel="b"/>
- <Key android:codes="110" android:keyLabel="n"/>
- <Key android:codes="109" android:keyLabel="m"/>
+ <Key android:keyLabel="z"/>
+ <Key android:keyLabel="x"/>
+ <Key android:keyLabel="c"/>
+ <Key android:keyLabel="v"/>
+ <Key android:keyLabel="b"/>
+ <Key android:keyLabel="n"/>
+ <Key android:keyLabel="m"/>
<Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete"
android:keyWidth="15%p" android:keyEdgeFlags="right"
android:iconPreview="@drawable/sym_keyboard_feedback_delete"
<Key android:keyLabel="_" />
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
+ android:keyWidth="20%p"/>
<Key android:keyLabel="+" />
- <Key android:codes="46" android:keyLabel="."/>
- <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
+ <Key android:keyLabel="."/>
+ <Key android:keyIcon="@drawable/sym_keyboard_return"
android:iconPreview="@drawable/sym_keyboard_feedback_return"
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
</Row>
</Row>
<Row android:rowEdgeFlags="bottom">
- <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"
- />
- <Key android:codes="50" android:keyLabel="2"
- />
- <Key android:codes="51" android:keyLabel="3"
- />
- <Key android:codes="52" android:keyLabel="4"
- />
- <Key android:codes="53" android:keyLabel="5"
- />
- <Key android:codes="54" android:keyLabel="6"/>
- <Key android:codes="55" android:keyLabel="7"
- />
- <Key android:codes="56" android:keyLabel="8"/>
- <Key android:codes="57" android:keyLabel="9"/>
- <Key android:codes="48" android:keyLabel="0"
- android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="1" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="2"/>
+ <Key android:keyLabel="3"/>
+ <Key android:keyLabel="4"/>
+ <Key android:keyLabel="5"/>
+ <Key android:keyLabel="6"/>
+ <Key android:keyLabel="7"/>
+ <Key android:keyLabel="8"/>
+ <Key android:keyLabel="9"/>
+ <Key android:keyLabel="0" android:keyEdgeFlags="right"/>
</Row>
</Keyboard>
>
<Row android:rowEdgeFlags="top">
- <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
- <Key android:codes="50" android:keyLabel="2"/>
- <Key android:codes="51" android:keyLabel="3"/>
- <Key android:codes="52" android:keyLabel="4"/>
- <Key android:codes="53" android:keyLabel="5"/>
- <Key android:codes="54" android:keyLabel="6"/>
- <Key android:codes="55" android:keyLabel="7"/>
- <Key android:codes="56" android:keyLabel="8"/>
- <Key android:codes="57" android:keyLabel="9"/>
- <Key android:codes="48" android:keyLabel="0" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="1" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="2"/>
+ <Key android:keyLabel="3"/>
+ <Key android:keyLabel="4"/>
+ <Key android:keyLabel="5"/>
+ <Key android:keyLabel="6"/>
+ <Key android:keyLabel="7"/>
+ <Key android:keyLabel="8"/>
+ <Key android:keyLabel="9"/>
+ <Key android:keyLabel="0" android:keyEdgeFlags="right"/>
</Row>
<Row>
- <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
- <Key android:codes="119" android:keyLabel="w"/>
- <Key android:codes="101" android:keyLabel="e"/>
- <Key android:codes="114" android:keyLabel="r"/>
- <Key android:codes="116" android:keyLabel="t"/>
- <Key android:codes="121" android:keyLabel="y"/>
- <Key android:codes="117" android:keyLabel="u"/>
- <Key android:codes="105" android:keyLabel="i"/>
- <Key android:codes="111" android:keyLabel="o"/>
- <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="q" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="w"/>
+ <Key android:keyLabel="e"/>
+ <Key android:keyLabel="r"/>
+ <Key android:keyLabel="t"/>
+ <Key android:keyLabel="y"/>
+ <Key android:keyLabel="u"/>
+ <Key android:keyLabel="i"/>
+ <Key android:keyLabel="o"/>
+ <Key android:keyLabel="p" android:keyEdgeFlags="right"/>
</Row>
<Row>
- <Key android:codes="97" android:keyLabel="a" android:horizontalGap="5%p"
+ <Key android:keyLabel="a" android:horizontalGap="5%p"
android:keyEdgeFlags="left"/>
- <Key android:codes="115" android:keyLabel="s"/>
- <Key android:codes="100" android:keyLabel="d"/>
- <Key android:codes="102" android:keyLabel="f"/>
- <Key android:codes="103" android:keyLabel="g"/>
- <Key android:codes="104" android:keyLabel="h"/>
- <Key android:codes="106" android:keyLabel="j"/>
- <Key android:codes="107" android:keyLabel="k"/>
- <Key android:codes="108" android:keyLabel="l" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="s"/>
+ <Key android:keyLabel="d"/>
+ <Key android:keyLabel="f"/>
+ <Key android:keyLabel="g"/>
+ <Key android:keyLabel="h"/>
+ <Key android:keyLabel="j"/>
+ <Key android:keyLabel="k"/>
+ <Key android:keyLabel="l" android:keyEdgeFlags="right"/>
</Row>
<Row>
android:keyWidth="15%p" android:isModifier="true"
android:iconPreview="@drawable/sym_keyboard_feedback_shift"
android:isSticky="true" android:keyEdgeFlags="left"/>
- <Key android:codes="122" android:keyLabel="z"/>
- <Key android:codes="120" android:keyLabel="x"/>
- <Key android:codes="99" android:keyLabel="c"/>
- <Key android:codes="118" android:keyLabel="v"/>
- <Key android:codes="98" android:keyLabel="b"/>
- <Key android:codes="110" android:keyLabel="n"/>
- <Key android:codes="109" android:keyLabel="m"/>
+ <Key android:keyLabel="z"/>
+ <Key android:keyLabel="x"/>
+ <Key android:keyLabel="c"/>
+ <Key android:keyLabel="v"/>
+ <Key android:keyLabel="b"/>
+ <Key android:keyLabel="n"/>
+ <Key android:keyLabel="m"/>
<Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete"
android:keyWidth="15%p" android:keyEdgeFlags="right"
android:iconPreview="@drawable/sym_keyboard_feedback_delete"
<Key android:keyLabel="-" />
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
+ android:keyWidth="20%p"/>
<Key android:keyLabel="=" />
- <Key android:codes="46" android:keyLabel="."
+ <Key android:keyLabel="."
android:keyWidth="10%p"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_ok"
android:iconPreview="@drawable/sym_keyboard_feedback_ok"
>
<Row android:rowEdgeFlags="top">
- <Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="left"/>
- <Key android:codes="35" android:keyLabel="\#"/>
- <Key android:codes="36" android:keyLabel="$"/>
- <Key android:codes="37" android:keyLabel="%"/>
- <Key android:codes="38" android:keyLabel="&"/>
- <Key android:codes="42" android:keyLabel="*"/>
- <Key android:codes="45" android:keyLabel="-"/>
+ <Key android:keyLabel="\@" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="\#"/>
+ <Key android:keyLabel="$"/>
+ <Key android:keyLabel="%"/>
+ <Key android:keyLabel="&"/>
+ <Key android:keyLabel="*"/>
+ <Key android:keyLabel="-"/>
<Key android:keyLabel="+"/>
- <Key android:codes="40" android:keyLabel="("/>
- <Key android:codes="41" android:keyLabel=")" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="("/>
+ <Key android:keyLabel=")" android:keyEdgeFlags="right"/>
</Row>
<Row>
- <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
- <Key android:codes="119" android:keyLabel="w"/>
- <Key android:codes="101" android:keyLabel="e"/>
- <Key android:codes="114" android:keyLabel="r"/>
- <Key android:codes="116" android:keyLabel="t"/>
- <Key android:codes="121" android:keyLabel="y"/>
- <Key android:codes="117" android:keyLabel="u"/>
- <Key android:codes="105" android:keyLabel="i"/>
- <Key android:codes="111" android:keyLabel="o"/>
- <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="q" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="w"/>
+ <Key android:keyLabel="e"/>
+ <Key android:keyLabel="r"/>
+ <Key android:keyLabel="t"/>
+ <Key android:keyLabel="y"/>
+ <Key android:keyLabel="u"/>
+ <Key android:keyLabel="i"/>
+ <Key android:keyLabel="o"/>
+ <Key android:keyLabel="p" android:keyEdgeFlags="right"/>
</Row>
<Row>
- <Key android:codes="97" android:keyLabel="a" android:horizontalGap="5%p"
+ <Key android:keyLabel="a" android:horizontalGap="5%p"
android:keyEdgeFlags="left"/>
- <Key android:codes="115" android:keyLabel="s"/>
- <Key android:codes="100" android:keyLabel="d"/>
- <Key android:codes="102" android:keyLabel="f"/>
- <Key android:codes="103" android:keyLabel="g"/>
- <Key android:codes="104" android:keyLabel="h"/>
- <Key android:codes="106" android:keyLabel="j"/>
- <Key android:codes="107" android:keyLabel="k"/>
- <Key android:codes="108" android:keyLabel="l" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="s"/>
+ <Key android:keyLabel="d"/>
+ <Key android:keyLabel="f"/>
+ <Key android:keyLabel="g"/>
+ <Key android:keyLabel="h"/>
+ <Key android:keyLabel="j"/>
+ <Key android:keyLabel="k"/>
+ <Key android:keyLabel="l" android:keyEdgeFlags="right"/>
</Row>
<Row>
android:keyWidth="15%p" android:isModifier="true"
android:iconPreview="@drawable/sym_keyboard_feedback_shift"
android:isSticky="true" android:keyEdgeFlags="left"/>
- <Key android:codes="122" android:keyLabel="z"/>
- <Key android:codes="120" android:keyLabel="x"/>
- <Key android:codes="99" android:keyLabel="c"/>
- <Key android:codes="118" android:keyLabel="v"/>
- <Key android:codes="98" android:keyLabel="b"/>
- <Key android:codes="110" android:keyLabel="n"/>
- <Key android:codes="109" android:keyLabel="m"/>
+ <Key android:keyLabel="z"/>
+ <Key android:keyLabel="x"/>
+ <Key android:keyLabel="c"/>
+ <Key android:keyLabel="v"/>
+ <Key android:keyLabel="b"/>
+ <Key android:keyLabel="n"/>
+ <Key android:keyLabel="m"/>
<Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete"
android:keyWidth="15%p" android:keyEdgeFlags="right"
android:iconPreview="@drawable/sym_keyboard_feedback_delete"
<Key android:keyLabel="_" />
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:keyWidth="20%p" android:isRepeatable="true"/>
+ android:keyWidth="20%p"/>
<Key android:keyLabel="+" />
- <Key android:codes="46" android:keyLabel="."/>
+ <Key android:keyLabel="."/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_ok"
android:iconPreview="@drawable/sym_keyboard_feedback_ok"
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
>
<Row>
- <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
- <Key android:codes="50" android:keyLabel="2"/>
- <Key android:codes="51" android:keyLabel="3"/>
- <Key android:codes="52" android:keyLabel="4"/>
- <Key android:codes="53" android:keyLabel="5"/>
- <Key android:codes="54" android:keyLabel="6"/>
- <Key android:codes="55" android:keyLabel="7"/>
- <Key android:codes="56" android:keyLabel="8"/>
- <Key android:codes="57" android:keyLabel="9"/>
- <Key android:codes="48" android:keyLabel="0" android:keyEdgeFlags="right"/>
+ <Key android:keyLabel="1" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="2"/>
+ <Key android:keyLabel="3"/>
+ <Key android:keyLabel="4"/>
+ <Key android:keyLabel="5"/>
+ <Key android:keyLabel="6"/>
+ <Key android:keyLabel="7"/>
+ <Key android:keyLabel="8"/>
+ <Key android:keyLabel="9"/>
+ <Key android:keyLabel="0" android:keyEdgeFlags="right"/>
</Row>
<Row>
- <Key android:codes="64" android:keyLabel="\@" android:keyEdgeFlags="left"/>
- <Key android:codes="35" android:keyLabel="\#"/>
- <Key android:codes="36" android:keyLabel="$"/>
- <Key android:codes="37" android:keyLabel="%"/>
- <Key android:codes="38" android:keyLabel="&"/>
- <Key android:codes="42" android:keyLabel="*"/>
- <Key android:codes="45" android:keyLabel="-"/>
+ <Key android:keyLabel="\@" android:keyEdgeFlags="left"/>
+ <Key android:keyLabel="\#"/>
+ <Key android:keyLabel="$"/>
+ <Key android:keyLabel="%"/>
+ <Key android:keyLabel="&"/>
+ <Key android:keyLabel="*"/>
+ <Key android:keyLabel="-"/>
<Key android:keyLabel="+"/>
- <Key android:codes="40" android:keyLabel="("
+ <Key android:keyLabel="("
android:popupKeyboard="@xml/password_kbd_popup_template"
android:popupCharacters="[{<"
/>
- <Key android:codes="41" android:keyLabel=")" android:keyEdgeFlags="right"
+ <Key android:keyLabel=")" android:keyEdgeFlags="right"
android:popupKeyboard="@xml/password_kbd_popup_template"
android:popupCharacters="]}>"
/>
<Key android:codes="-1" android:keyLabel="@string/password_keyboard_label_alt_key"
android:keyWidth="15%p" android:isModifier="true"
android:isSticky="true" android:keyEdgeFlags="left"/>
- <Key android:codes="33" android:keyLabel="!"/>
- <Key android:codes="34" android:keyLabel="""/>
- <Key android:codes="39" android:keyLabel="\'"/>
- <Key android:codes="58" android:keyLabel=":"/>
- <Key android:codes="59" android:keyLabel=";"/>
- <Key android:codes="47" android:keyLabel="/" />
- <Key android:codes="63" android:keyLabel="\?"/>
+ <Key android:keyLabel="!"/>
+ <Key android:keyLabel="""/>
+ <Key android:keyLabel="\'"/>
+ <Key android:keyLabel=":"/>
+ <Key android:keyLabel=";"/>
+ <Key android:keyLabel="/" />
+ <Key android:keyLabel="\?"/>
<Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete"
android:keyWidth="15%p" android:keyEdgeFlags="right"
android:iconPreview="@drawable/sym_keyboard_feedback_delete"
<Key android:keyLabel="," android:keyWidth="10%p"/>
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:keyWidth="40%p"
- android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:isRepeatable="true"/>
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"/>
<Key android:keyLabel="." android:keyWidth="10%p" />
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_ok"
android:keyWidth="20%p" android:keyEdgeFlags="right"
<Key android:keyLabel="„" android:keyWidth="10%p" />
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
android:keyWidth="40%p"
- android:iconPreview="@drawable/sym_keyboard_feedback_space"
- android:isRepeatable="true"/>
+ android:iconPreview="@drawable/sym_keyboard_feedback_space"/>
<Key android:keyLabel="…" android:keyWidth="10%p" />
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_ok"
android:keyWidth="20%p" android:keyEdgeFlags="right"