参考PhoneWindowManager.java的adjustConfigurationLw()方法,可以找出以下关键因素:

config_lidKeyboardAccessibility:在frameworks/base/core/res/res/values/config.xml中定义,含义如下:

 Indicate whether the lid state impacts the accessibility of the physical keyboard. 

0 means it doesn't,

1 means it is accessible when the lid is open,

2 means it is accessible when the lid is closed.

The default is 1.

意为物理键盘是否受滑盖影响,0表示不受滑盖影响,1表示当滑盖打开时物理键盘可用,2表示滑盖关闭时物理键盘可用。

 

另外PhoneWindowManager.java还有个常量也对物理键盘的状态有影响:

// Debugging: set this to have the system act like there is no hard keyboard.
static final boolean KEYBOARD_ALWAYS_HIDDEN = false;

 

InputMethodService.java: 判断是否显示软键盘的代码:

onShowInputRequested() {

        if (!onEvaluateInputViewShown()) {
            return false;
        }
       ......................

}

    public boolean onEvaluateInputViewShown() {
        Configuration config = getResources().getConfiguration();
        return config.keyboard == Configuration.KEYBOARD_NOKEYS
                || config.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_YES;
    }

其中两项config.hardKeyboardHidden就是framworks中config.xml的config_lidKeyboardAccessibility取值

 

 

物理键盘映射过程:
手机/system/usr/keylayout/*.kl :内核将keyCode映射成有含义的字符串
KeycodeLabels.h : framework 将字符串映射成keyEvent的keyCode
frameworks/.../res/values/attrs.xml

 

更多相关文章

  1. android 字符串转换成JSON对象
  2. Android中 字符串-数字 的转化
  3. Android 让界面不被弹出的键盘挤上去
  4. android 数字键盘
  5. Android禁用键盘的所有按键
  6. 【android】禁止Edittext弹出软键盘并且使光标正常显示
  7. 输入键盘始终停留以及尺寸转换得到默认字体大小
  8. Android全屏模式,监听软键盘弹出事件。
  9. Android应用程序键盘(Keyboard)消息处理机制分析(2)

随机推荐

  1. Android(安卓)隐藏显示键盘
  2. 安卓报错:java.lang.RuntimeException: Un
  3. ListPreference
  4. Android(安卓)JB 4.2 中InputManager 启
  5. AndroidManifest.xml文件详解(service)
  6. 笔记——Android(安卓)中的小细节
  7. java.lang.ClassCastException: android.
  8. Android创建和删除桌面快捷方式
  9. Android处理各种触摸事件
  10. android 开机自启动程序2