由于工作关系,客户出外单,经常提到:连接USB键盘,默认键盘布局为法语,西班牙语。跟踪了下代码,终于搞定:
frameworks/base/packages/InputDevices/res/xml/keyboard_layouts.xml 此文件定义了所支持的语言键盘布局
修改路径: frameworks\base\packages\SystemUI\
AndroidManifest.xml
InputMethodButton.java
具体修改参照附件。
private void updateHardKeyboards() {
if (getResources().getConfiguration().keyboard == Configuration.KEYBOARD_QWERTY){
final int[] devices = InputDevice.getDeviceIds();
for (int i = 0; i < devices.length; i++) {
InputDevice device = InputDevice.getDevice(devices[i]);
if (device != null
&& !device.isVirtual()
&& device.isFullKeyboard()) {
final String inputDeviceDescriptor = device.getDescriptor();
final String keyboardLayoutDescriptor =
mIm.getCurrentKeyboardLayoutForInputDevice(inputDeviceDescriptor);
final KeyboardLayout keyboardLayout = keyboardLayoutDescriptor != null ?
mIm.getKeyboardLayout(keyboardLayoutDescriptor) : null;
if (keyboardLayout == null) {
String defaultKeyboardLayoutDescriptor = "com.android.inputdevices/com.android.inputdevices.InputDeviceReceiver/keyboard_layout_german";//默认德语键盘布局
KeyboardLayout defaultKeyboardLayout;
mIm.addKeyboardLayoutForInputDevice(inputDeviceDescriptor,
defaultKeyboardLayoutDescriptor);
}
}
}
}
}
mIm.addKeyboardLayoutForInputDevice(inputDeviceDescriptor,defaultKeyboardLayoutDescriptor); 具体改法可以参照附件。
注意 AndroidManifest.xml 必须添加权限。