标签: keyevent

如何在C#app中捕获Control-V?

我试图覆盖WndProc,但粘贴事件上没有显示任何消息.

然后我尝试创建自定义过滤器并使用方法PreFilterMessage我能够捕获值为257(KEYUP事件)的消息,但这还不够......

c# message keyevent

6
推荐指数
1
解决办法
2万
查看次数

Fire Form KeyPress事件

我有一个C#winform,我有1个按钮.
现在,当我运行我的应用程序时,该按钮会自动获得焦点.

问题是KeyPress我的表单事件不起作用,因为按钮是聚焦的.

我曾尝试this.Focus();FormLoad()事件,但仍然KeyPress事件不工作.

.net c# events keyevent winforms

6
推荐指数
2
解决办法
9358
查看次数

通过Android API发送组合键(元键和键码)

我无法弄清楚如何使用Android发送元键(例如CTRL)和键码(例如用于RETURN)的组合(我使用API​​级别11 =版本3.0).

KeyEvent类的文档提到了诸如META_CTRL_ON之类的常量,并且还支持元键的键码常量(例如KEYCODE_CTRL_LEFT).

我正在使用Javascript Key Event Tester测试输入法编辑器(IME)生成的输出.顺便说一句,我的目标是开发一个软件键盘.

如果我理解正确的文件,这将足以执行以下代码发送CTRL键唯一:

this.sendDownUpKeyEvents(KeyEvent.KEYCODE_CTRL_RIGHT);
Run Code Online (Sandbox Code Playgroud)

但是当针对Javascript Key Event Tester(见上文)执行此操作时,没有任何反应.

因此,我需要了解如何仅发送元密钥以及将元密钥与另一个密钥组合发送.我也尝试了以下发送SHIFT + ENTER(一个具体的例子):

private void _sendShiftEnter() {
    this.sendDownKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT);
    final long eventTime = SystemClock.uptimeMillis();
    this.getCurrentInputConnection().sendKeyEvent(
        new KeyEvent(
            eventTime, // The time (in uptimeMillis()) at which this key code originally went down.
            eventTime, // The time (in uptimeMillis()) at which this event happened.
            KeyEvent.ACTION_DOWN, // Action code: either ACTION_DOWN, ACTION_UP, or ACTION_MULTIPLE.
            KeyEvent.KEYCODE_ENTER, // The key code.
            0, …
Run Code Online (Sandbox Code Playgroud)

android key-events keyevent android-input-method

6
推荐指数
1
解决办法
3368
查看次数

我可以使用Java的Robot类(Java.awt.robot)模拟游戏手柄按钮按下吗?

我正在使用Arduino Uno通过USB或蓝牙将(真正的)SNES控制器连接到计算机.

Arduino使用snespad库捕获控制器的按钮按下和释放.它将按钮按下和释放作为字符进行通信(例如,用于按A的'a',用于释放'A'的'A').接下来,Java程序使用rxtx库监听串行输出.最后,Java机器人使用keyPresskeyRelease模拟按键.

不幸的是,这种方法有一些缺点.主要问题是关键映射.我有点随意决定哪些键盘是键盘键.

Java似乎没有任何游戏手柄KeyEvents.当我说"游戏键盘KeyEvent"时,我指的是类似于Android SDK的东西:http://developer.android.com/reference/android/view/KeyEvent.html(ctrl + f"游戏手柄"或"按钮" .)

我的问题是,有没有办法模拟游戏手柄按钮按下而不是使用Java的机器人类按键?

java arduino rxtx keyevent awtrobot

6
推荐指数
1
解决办法
1769
查看次数

Java将keycode转换为字符串或char

我想将keyevent键码值转换为字符串或char值.任何人都会这样做.

例如,当我按下'SPACE'时,'让我们说'有一个键码20,我想将该值转换为char或字符串.有没有标准的方法,或者我必须为键盘上的每个键写一堆'if'语句?

java string keycode keyevent

6
推荐指数
2
解决办法
2万
查看次数

自定义关键事件

如何发送自定义SWT键事件,以便在不进行任何转换的情况下输入该确切的文字字符?

我们正在制作一个自定义的屏幕图形键盘,允许多种可能的布局 - QWERTY是主要的布局,但其他几个计划,包括可视化模拟iPhone键盘布局或其他相对于PC非标准的布局.

我希望能够将我选择的任意字符作为事件发送,这样就会导致输入该确切的字符.但是,每当我发送一个具有给定字符的事件时,SWT似乎会根据系统的键盘设置和状态自动解释和转换它,将其更改为大写/小写或使用移位的符号,具体取决于移位键(按下实际键盘上的真实键盘.例如,将字符'T'传递给键事件将导致't'或'T',具体取决于shift键.它的表现类似于'4'字符,根据班次做'4'或'$'.

这是有问题的,因为我希望手动执行字符移位,并且实际上可能不希望在任何给定情况下使用与标准QWERTY键盘相同的移位字符(例如,我可能希望'$'被移位(或'功能'键)版本的'R'在较小的手机式键盘上).我怎样才能使用这些事件,以免它假设使用QWERTY键?

SWT事件中"字符"字段的文档说明如下:

键入的键所代表的字符.这是应用所有修改器后生成的最终字符.例如,当用户键入Ctrl + A时,字符值为0x01.重要的是,应用程序不会尝试基于stateMask(例如SWT.CTRL)修改字符值,否则生成的字符将不正确.

这让我相信它不应该像我一样转换我的角色,因为我命令它使用我的"最终"结果.

我已经创建了一个简单的独立示例来演示我的问题(请注意,这不是我在做实际键盘的方式,而只是为了突出显示关键事件问题):

截图

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Button;

public class KeyboardIssueExample extends Shell {
    private Text txtTextArea;
    private Composite cmpButtons;
    private Button btnBigA;
    private Button btnBigS;
    private Button btnLittleD;
    private Button btnSix;
    private Button btnSeven;
    private Button btnDollah;
    private Button btnStar;

    private SelectionListener mainListener = new SelectionAdapter() {
        @Override
        public …
Run Code Online (Sandbox Code Playgroud)

java keyboard events swt keyevent

6
推荐指数
1
解决办法
882
查看次数

模拟ADB终端的按键组合

我想将" CTRL + W "发送到Chrome for Android以关闭活动标签.我尝试了很多东西,但从终端实现它并没有成功.(如果我用USB键连接USB键盘,我可以用CTRL + W关闭标签)

首先,我不想为此编写应用程序,我只想要一个shell命令来从Tasker中使用它.

我读到了要实现这个目标的地方(CTRL + W按键),我必须模拟这样的按键:

向下CTRL
向下W
向上W
向上CTRL

而要从终端实现这一点,似乎我必须使用" sendevent ".

我可以使用"sendevent"模拟所有硬件按键,但不能用它来模拟普通键.

例如,向下和向上键到POWER键:

sendevent /dev/input/event1 1 116 1
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 1 116 0
sendevent /dev/input/event1 0 0 0
Run Code Online (Sandbox Code Playgroud)

我使用此命令,但我不能使用此命令发送普通键.(例如a,b,c等)

event1是gpio-keys,所以我正在使用它.所有其他输入事件都是传感器,其中一个是充电驱动器.(max77693-MUIC)

"getevent -p"的输出表示:

add device 1: /dev/input/event9
  name:     "compass_sensor"
  events:
    REL (0002): 0000  0001  0002  0003  0004  0005  0006  0007 
                0008  0009 
  input props:
    <none>
add device 2: /dev/input/event6
  name:     "barometer_sensor"
  events:
    REL (0002): 0000  0001  0002 …
Run Code Online (Sandbox Code Playgroud)

shell android keyevent adb tasker

6
推荐指数
1
解决办法
5000
查看次数

如何在android自定义InputMethodService上使用回车键进行搜索?

我想用我的Android自定义键盘用enter键搜索,但它不起作用.
我已经映射了密钥,我只需要在搜索文本字段上触发"搜索操作",就像在Google上搜索一样.

我尝试使用此代码来触发搜索操作,但它不起作用:

ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));
Run Code Online (Sandbox Code Playgroud)

这是我覆盖enter键事件的方法:

public class Keyboard extends InputMethodService
    implements KeyboardView.OnKeyboardActionListener {

@Override
public void onStartInputView(EditorInfo info, boolean restarting) {
    super.onStartInputView(info, restarting);

    setInputView(onCreateInputView());

    switch (EditorInfo.IME_MASK_ACTION | EditorInfo.IME_FLAG_NO_ENTER_ACTION) {

        case EditorInfo.IME_ACTION_SEARCH:
            Toast.makeText(this, "test", Toast.LENGTH_SHORT).show();
            //Action Search
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的xml布局是:

<?xml version="1.0" encoding="UTF-8"?>
<android.inputmethodservice.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/keyboard"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:keyPreviewHeight="60dp"
    android:keyPreviewOffset="12dp"
    android:keyPreviewLayout="@layout/preview"
    android:visibility="visible"/>
Run Code Online (Sandbox Code Playgroud)

我的布局中没有任何EditText可供设置android:imeOptions="actionSearch".

keyboard android keyevent android-softkeyboard android-input-method

6
推荐指数
1
解决办法
1344
查看次数

在EditText android中禁用SPACE键

我创建了EditText,如下所示.

<EditText
        android:id="@+id/et_regis_num"
        android:maxLines="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:digits="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        android:hint="@string/txt_reg_num"
        android:inputType="textCapCharacters"
        android:maxLength="10" />
Run Code Online (Sandbox Code Playgroud)

在这个edittext中,我不想按SPACE键,但是当我按下SPACE键时,它正在作为BACKSPACE键.意味着它每次按两次按下一个字符.

android keycode keyevent android-edittext

6
推荐指数
2
解决办法
6153
查看次数

Android KeyEvent.getCharacters() 或 keyEvent.characters 已弃用

根据 API 29 中的文档,KeyEvent.getCharacters()已弃用,但我无法找到相同的替代方案。

根据文档,它"@deprecated no longer used by the input system."来自 API 29。这实际上意味着什么?

android keyevent

6
推荐指数
1
解决办法
349
查看次数