覆盖安卓上的删除密钥?

2022-09-03 07:53:28

我主要修复了调度KeyEvent中这些行的问题:

byte[] cmdLeft = { (byte) 27, (byte) '[', (byte) 'D' };
byte[] cmdErase = { (byte) 27, (byte) '[', (byte) 'P' };


mSession.appendToEmulator(cmdLeft, 0, cmdLeft.length);
mSession.appendToEmulator(cmdErase, 0, cmdErase.length);

现在唯一的问题是,如果我选择editText并点击删除,那么一个字符将被删除,但屏幕上似乎有两个字符。因此,如果我编写启用并点击删除,它将更改为enab,但实际上发送的是启用

我覆盖了调度KeyEvent,它有点工作。如果选择了 editText,终端现在会删除串行字符,因此这是一个不错的步骤。然而,主要问题仍然存在,如果选择终端本身,奇怪的小盒子会被写入屏幕而不是删除一个字符。好吧,写了一个,如果我继续按删除,它会停留在那个框中,但是下次我键入时,我按下的删除量会显示为框。这很奇怪...

这就像它只是被编辑文本覆盖,而不是终端。

奇怪的小盒子在他们所有的荣耀:

Enter image description here

public boolean dispatchKeyEvent(KeyEvent event) {
    if (event != null && event.getAction() == KeyEvent.ACTION_UP) {

        return false;
    }
    if (event.getKeyCode() == KeyEvent.KEYCODE_DEL) {

        try {
            sendOverSerial("\b".getBytes("UTF-8"));
        }
        catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    return super.dispatchKeyEvent(event);
};

我正在使用Android中的库连接到终端仿真器,这连接到串行设备(交换机)并向我显示发送/接收的数据。我通过终端下方的文本框或通过输入终端本身并在键盘上按回车键发送数据。它将永远是使用的软键盘。如果我发送了不正确的字符串,由于没有删除键实现,我将处于不可恢复的状态。我的editTxt中的退格线工作正常,我只是希望它在终端突出显示并且我正在编写时工作。

目前,如果我按删除一个小奇怪的框字符出现并且没有其他任何反应,我会在日志中出现异常几次(http://i.imgur.com/wMRaLPX.png)。我想知道的是如何更改删除键功能,以便当我按下它时,我可以像这样发送删除字符,同时保留删除编辑文本框中的字符的功能等:

sendOverSerial("\b".getBytes("UTF-8"))

这发送了一个正确的后空间,我只需要合并它。

但是软键盘似乎没有注册按键?我不断得到一个0的键码,只有输入才能工作。

我目前正在尝试 https://stackoverflow.com/questions/4...62035_11377462,但任何其他建议都会很棒,因为到目前为止,大约有10个建议还没有奏效。我的退格键不会与 editText 相关联,而是与终端视图相关联。我甚至无法检测到正在按下的删除键。


答案 1

看起来您正在使用的终端控件必须使用KEYCODE_DEL而不是让它传播到窗口,并且它必须向远程端而不是\b发送不同的字符。因此,当您的编辑文本聚焦时,您的调度KeyEvent正在处理新闻 - 但是当终端具有焦点时,您看不到它。您是否确认当终端具有焦点时,even 处理程序正在通过调试器触发?你没有说你为终端使用了哪个库,但我会看看它,看看你是否可以设置一个键处理程序或其他东西。


答案 2

我对Android没有任何经验,我也承认我从未尝试过实现删除/退格键绑定。但是,如果我试图这样做,并且我不知道一个好的标准实现,我可以想到一个可能运行良好的解决方法。使用关联的操作侦听器进行键绑定以删除。使操作侦听器 getText() 脱离文本字段,并将其存储为字符串。对该字符串进行子字符串以包含除最后一个字符之外的所有内容。然后对包含新字符串的文本字段使用 setText()。有点像手动操作,但它肯定会起作用。


推荐