当前位置: 首页 > 知识库问答 >
问题:

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

姚德容
2023-03-14

我试图编码一个简单的键盘,并想实现上述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。但不确定如何实现delete键。

编辑:如果有人能在箭头键上加入一些指针,那也会很有帮助。

共有1个答案

韶云瀚
2023-03-14

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

<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)起到了shift的作用,而第59行的DEL(-5)起到了backspace的作用。

编辑

-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

在做了一些更多的研究后,实现箭头键是可能的,但我不知道如何实现。我建议在网站上问另一个问题,但具体是关于箭头键的。

 类似资料:
  • 这在Python中似乎很难。 目前,我只能使用sys.stdin.read()读取击键,但是stdin.read()像文件一样工作,不会返回修饰符。 我在函数返回击键组合的方式上很灵活。首先想到的是返回一个列表或一个带有组合的dict…但主要问题是,如何检测它?!

  • 我使用下面的代码通过传递特殊键。我正面临一个奇怪的问题。如果用户发送Alt//Ctrl/Shift,则键保持按下状态。例如,如果用户通过Alt+F4,代码正常运行,操作成功完成,但Alt键保持按下状态。我需要在操作完成后手动单击Alt键。请让我知道处理同样的代码本身。下面是用于发送特殊密钥的代码。 }

  • 问题内容: 我怎么能确定 哪个 / / 下面的代码键被按下? 问题答案: 好吧,这仅适用于IE 8,因此无法在所有浏览器中使用。Microsoft实现了确定按下哪个(右/左)键的功能。 我也发现这篇关于浏览器中的按键,按键,按键事件的奇妙文章。

  • 本文向大家介绍JS实现屏蔽shift,Ctrl,alt等功能键的方法,包括了JS实现屏蔽shift,Ctrl,alt等功能键的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现屏蔽shift,Ctrl,alt等功能键的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 问题内容: 我正在使用Qt Designer构建UI,并且我希望按钮使用不同的修饰符执行不同的操作。因此,我认为我可以调用具有动态字符串属性的函数,这些函数将根据修饰符执行操作。 如果有人知道更简单的方法,我将不胜感激。 问题答案: 看起来您需要做的就是检查按钮处理程序中的keyboardModifiers,并根据需要选择其他操作。可以对各种修饰符进行“或”运算以检查多键组合: PyQt5 : P

  • JavaFX8控制器如何判断Shift、Ctrl、Alt或Enter键位于键盘的左边还是右边? 尝试使用JNativeHook(他们最近移动了),它几乎可以作为一个解决方案,但不能识别一些键,时间不精确,实现起来有点笨拙,尤其是因为我不能为所有平台编译本机代码。许可条款也有点混乱(稳定版本的GPL,在我的情况下不是一个选项,可能会转向LGPL...)。