【问题标题】:Implementing Ctrl, Alt, Shift, Delete keys in Keyboard XML在键盘 XML 中实现 Ctrl、Alt、Shift、Delete 键
【发布时间】:2015-03-07 18:10:20
【问题描述】:

我正在尝试编写一个简单的键盘并希望实现上述 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 码。但我不确定如何使用 CtrlAltDeleteShift 键。我已将-5 用于Backspace,如发现here。但不确定如何实现 Delete 键。

KEYCODE_ALTKEYCODE_SHIFT 是否与 AltShift 相同?而且我几乎被 Ctrl 键所困扰,因为我在文档中找不到任何对它的引用。我错过了什么傻事?

编辑:如果有人能提供一些关于箭头键的指针,那也很有帮助。

【问题讨论】:

    标签: android keyboard-events


    【解决方案1】:

    我找到了一个代码 sn-p,它显示了所有可以映射的键。

    <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

    经过更多研究,可以实现箭头键,但我不知道如何。我建议在网站上问另一个问题,特别是关于箭头键的问题。

    【讨论】:

    • 我以前见过这个。我不认为这个列表有所有可能的键。例如。 -1 和 -5 列在我提供的网址中。该列表中还有几个键不在此处。所以我希望能有更多可能的钥匙。
    • 我知道箭头键没有 ASCII 码。我正在寻找实现它们的方法。 ASCII 与否。
    • 我已经尝试过我网址中的代码。 -6 不能作为 Alt。 -5 是退格,但我需要删除,即在光标后删除。感谢您的努力。如果我有任何解决方案,我会更新。
    猜你喜欢
    • 1970-01-01
    • 2020-10-30
    • 2018-06-30
    • 1970-01-01
    • 2010-11-23
    • 2012-08-15
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多