为了验证编写了个例子

首先是输入法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class RemoteKeyboard extends InputMethodService  {
 
  @Override public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (processKey(event, 0 != event.getRepeatCount()))
            return true;
        return super.onKeyDown(keyCode, event);
    }
 
    @Override public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (processKey(event, true))
            return true;
        return super.onKeyUp(keyCode, event);
    }
 
    private boolean processKey(KeyEvent event, boolean doIt) {
         Log.e("======= " ," ============ processKey");
         return false;
    }
}

其次是app view

1
2
3
4
5
6
7
final TextView et1 = (TextView)findViewById(R.id.editText1);
et1.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        Log.e("====================","====OnKeyListener ");
    }

运行程序打印

============================ : ============ processKey

==================== :====OnKeyListener

============================ : ============ processKey

==================== :====OnKeyListener

第一遍应该是KeyDown, 第二遍应该是 KeyUp, 说明Android 输入法截取key优先于view

又试验了一下改写system/usr/keychars/Generic.kcm

把 B 改为

key B {
base: 'b' fallback DPAD_CENTER
}

在一个不可编辑框, log 如下

12-23 05:18:09.093 118 118 E ============================ : ============ processKey

12-23 05:18:09.094 118 118 E ============================ : ============ processKey
12-23 05:18:09.163 118 118 E ============================ : ============ processKey
12-23 05:18:09.163 118 118 E ============================ : ============ processKey

说明b没有被 accept,而后又调用了 DPAD_CENTER

在一个可编辑框,b被accept, log 如下

============================ : ============ processKey

============================ : ============ processKey

说明没有调用 fallback

如果改法如下

key B {
base: fallback DPAD_CENTER
}

在一个可编辑框也要打4行log, 说明 fallback被调用了

结伴旅游,一个免费的交友网站:www.jieberu.com

推推族,免费得门票,游景区:www.tuituizu.com

最新文章

  1. 第一弹:Java 中创建对象的4种方式
  2. java日期和字符串的相互转换
  3. php将数据库导出成excel的方法
  4. [Everyday Mathematics]20150118
  5. 给jdk写注释系列之jdk1.6容器(12)-PriorityQueue源码解析
  6. 如何在一台机器上安装两个MYSQL数据库
  7. 数据结构之单链表,c#实现
  8. js数据显示在文本框中(页面加载显示和按钮触动显示)
  9. matlab中axis的使用
  10. HTML: width,height
  11. PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法
  12. Windows环境下,从零开始搭建Nodejs+Express+Ejs框架(一)---安装nodejs
  13. Swift3的playground中对UI直接测试支持的改变
  14. 基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(一)
  15. C语言实例:结构体
  16. C# 动态生成的按钮及定义按钮的事件的代码
  17. Android内存优化(一)Dalvik虚拟机和ART虚拟机对比
  18. 潭州课堂25班:Ph201805201 tornado 项目 第四课 增加用户注册登录(课堂笔记)
  19. Software Engineer Title Ladder
  20. koa中返回404并且刷新后才正常的解决方案

热门文章

  1. html中设置height=100%无效的问题
  2. 网络爬虫之HTTPClient
  3. ajax使用jsonp跨域调用webservice error错误信息"readyState":4,"status":200,"statusText":"success"
  4. Vue 创建多页面应用模式
  5. react面试题——理解setState(源码object.assign)
  6. Tomcat报java.io.IOException: Broken pipe错误
  7. mock.js模拟ajax数据请求
  8. 图像语义分割出的json文件和原图,用plt绘制图像mask
  9. python数字图像处理(二)关键镜头检测
  10. 闲着没事写点啥之springmvc梳理