Keyboard Codes

字母和数字键的键码值(keyCode)数字键盘上的键的键码值(keyCode)功能键键码值(keyCode)
按键键码按键键码按键键码按键键码按键键码按键键码按键键码按键键码
A65J74S831490968104F1112F7118
B66K75T842501979105F2113F8119
C67L76U85351298*106F3114F9120
D68M77V86452399+107F4115F10121
E69N78W875534100Enter108F5116F11122
F70O79X886545101-109F6117F12123
G71P80Y897556102.110    
H72Q81Z908567103/111    
I73R82048957        

 

控制键键码值(keyCode)多媒体键码值(keyCode)
按键键码按键键码按键键码按键键码按键键码
BackSpace 8Esc27Right Arrow39-_189音量加175
Tab9Spacebar32Dw Arrow40.>190音量减174
Clear12Page Up33Insert45/?191停止179
Enter13Page Down34Delete46`~192静音173
Shift16End35Num Lock144[{219浏览器172
Control17Home36;:186/| 220邮件180
Alt18Left Arrow37=+187]}221搜索170
Cape Lock20Up Arrow38,<188'"222收藏171
在 Android 系统中,将 Split Keyboard(分拆式键盘)修改为 Standard Keyboard(标准键盘)类型,通常涉及系统级的键盘布局配置和输入法服务的定制。以下是一些关键步骤和实现思路: ### 1. 理解键盘类型与系统支持 Android 支持多种键盘设备,包括紧凑型嵌入式 QWERTY 键盘、全功能 PC 风格外接键盘等。Split Keyboard 是一种特殊布局的软键盘,常见于 iPad 等设备,在 Android 中实现类似行为通常需要定制输入法(IME)[^1]。 ### 2. 定制输入法服务(IME) 要将 Split Keyboard 转换为 Standard Keyboard,通常需要开发或修改一个 Android 输入法服务。标准键盘布局通常使用全尺寸的 QWERTY 布局,并支持标准的按键事件分发机制。 - **创建输入法服务类**:继承 `InputMethodService` 并实现 `onCreateInputView()` 方法以返回标准键盘布局。 - **定义键盘布局资源**:使用 XML 定义标准键盘的布局,例如 `keyboard.xml`。 - **处理键盘事件**:在 `KeyboardView.OnKeyboardActionListener` 中实现按键按下、释放、字符输入等逻辑。 ```java public class StandardKeyboardService extends InputMethodService implements KeyboardView.OnKeyboardActionListener { private KeyboardView kv; private Keyboard keyboard; @Override public View onCreateInputView() { kv = (KeyboardView) getLayoutInflater().inflate(R.layout.keyboard_view, null); keyboard = new Keyboard(this, R.xml.qwerty); kv.setKeyboard(keyboard); kv.setOnKeyboardActionListener(this); return kv; } @Override public void onKey(int primaryCode, int[] keyCodes) { InputConnection ic = getCurrentInputConnection(); if (ic != null) { switch (primaryCode) { case Keyboard.KEYCODE_DELETE: ic.deleteSurroundingText(1, 0); break; case Keyboard.KEYCODE_SHIFT: // Handle shift key break; case Keyboard.KEYCODE_DONE: ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); break; default: char code = (char) primaryCode; ic.commitText(String.valueOf(code), 1); } } } // Implement other methods like onPress, onRelease, etc. } ``` ### 3. 修改系统配置(可选) 如果目标是系统级修改(例如在系统源码中修改默认键盘行为),则需要修改 AOSP 源码中的键盘服务组件。这通常涉及: - 修改 `/frameworks/base/packages/SystemUI/src/com/android/systemui/keyboard/` 中的键盘相关类。 - 在 `config.xml` 或 `build.prop` 中配置默认的输入法服务。 - 重新编译并刷入系统镜像。 ### 4. 处理键盘可见性与布局更新 在某些情况下,需要监听键盘的显示与隐藏状态,以便动态调整 UI 布局。可以通过监听 `UIKeyboardDidChangeFrame` 通知来实现: ```objective-c - (void)keyboardDidChangeFrame:(NSNotification *)notification { CGRect keyboardEndFrame; [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame]; CGRect keyboardFrame = [self.view convertRect:keyboardEndFrame fromView:nil]; if (CGRectIntersectsRect(keyboardFrame, self.view.frame)) { // 键盘显示,调整布局 } else { // 键盘隐藏,恢复布局 } } ``` ### 5. 配置 AndroidManifest.xml 为避免系统在配置更改时自动重启 Activity,可以在 `AndroidManifest.xml` 中添加 `android:configChanges="screenLayout"` 属性: ```xml <activity android:name=".MainActivity" android:configChanges="screenLayout" android:inputType="text" /> ``` 该配置可防止系统在键盘布局变化时调用 `onCreate()` 方法[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值