在键盘XML中实现Ctrl,Alt,Shift,Delete键

时间:2015-03-07 18:10:21

标签: android keyboard-events

我正在尝试编写一个简单的键盘,并希望实现上述4个键。在我的keyboard.xml文件中,我一直在定义这样的布局 -

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    android:keyWidth="10%p"
    android:horizontalGap="0px"
    android:verticalGap="0px"
    android:keyHeight="40dp"
    >
    <Row>
        <Key android:codes="9" android:keyLabel="↹" android:keyEdgeFlags="left"/>
        <Key android:codes="126,96" android:keyLabel="~`"/>
        <Key android:codes="95,45" android:keyLabel="_-"/>
        <Key android:codes="43,61" android:keyLabel="+="/>
        <Key android:codes="123,91" android:keyLabel="{["/>
    ...

我一直在android:codes内使用ASCII码。但我不知道如何处理 Ctrl Alt 删除 Shift 键。我使用-5作为 Backspace 找到here。但不确定如何实现删除键。

KEYCODE_ALTKEYCODE_SHIFT是否与 Alt Shift 相同?而且我几乎坚持使用 Ctrl 键,因为我在doc中找不到任何对它的引用。我错过了什么愚蠢的事情?

编辑:如果有人可以提供一些关于箭头键的指示,那也会有所帮助。

1 个答案:

答案 0 :(得分:2)

我找到了一个代码片段,其中显示了可以映射的所有键。

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    android:keyWidth="10%p"
    android:horizontalGap="0px"
    android:verticalGap="0px"  
    android:keyHeight="60dp"
>
    <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"/>
    </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"/>
    </Row>
    <Row>
        <Key android:codes="97" android:keyLabel="a" 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"/>
        <Key android:codes="35,64" android:keyLabel="\# \@" android:keyEdgeFlags="right"/>
    </Row>
    <Row>
        <Key android:codes="-1" android:keyLabel="CAPS" 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:codes="46" android:keyLabel="."/>
        <Key android:codes="63,33,58" android:keyLabel="\? ! :" android:keyEdgeFlags="right"/>   
    </Row>
    <Row android:rowEdgeFlags="bottom">
        <Key android:codes="44" android:keyLabel="," android:keyWidth="10%p"  android:keyEdgeFlags="left"/>  
        <Key android:codes="47" android:keyLabel="/" android:keyWidth="10%p" />
        <Key android:codes="32" android:keyLabel="SPACE" android:keyWidth="40%p"android:isRepeatable="true"/>       
        <Key android:codes="-5" android:keyLabel="DEL" android:keyWidth="20%p" android:isRepeatable="true"/>
        <Key android:codes="-4" android:keyLabel="DONE" android:keyWidth="20%p" android:keyEdgeFlags="right"/>
    </Row>

正如您所看到的,ctrl或alt没有ASCII代码。我相信第44行的CAPS(-1)用作移位,第59行的DEL(-5)用作退格。

修改

为了响应您的编辑,箭头键没有ASCII代码。完整列表可在http://www.asciitable.com/

上找到

修改2

查看链接后,我发现:

-1 = shift
-2 = changes keyboard mode (to show letters or symbols)
-3 = your link says KEYCODE_CANCEL. I am not sure what this is for.
-4 = Remove the keyboard from the screen (to stop typing)
-5 = Backspace
-6 = Alt

编辑3

在做了一些研究后,可以实现箭头键,但我不知道如何。我建议在网站上提出另一个问题,特别是关于箭头键的问题。