Keyboard codes

本文详尽地列举了键盘上的各种键及其对应的ASCII码和十六进制码,包括从基本键到控制面板的所有功能键,如方向键、删除、结束等,并详细解释了每个键的功能及编码方式。

Keyboard codes

top keyboard row: escape key and function keys

keytop
ASCII,hex
escesc,0x1b 
f1esc,0x1b[,0x5b1,0x311,0x31~,0x7e
f2esc,0x1b[,0x5b1,0x312,0x32~,0x7e
f3esc,0x1b[,0x5b1,0x313,0x33~,0x7e
f4esc,0x1b[,0x5b1,0x314,0x34~,0x7e
f5esc,0x1b[,0x5b1,0x315,0x35~,0x7e
f6esc,0x1b[,0x5b1,0x317,0x37~,0x7e
f7esc,0x1b[,0x5b1,0x318,0x38~,0x7e
f8esc,0x1b[,0x5b1,0x319,0x39~,0x7e
f9esc,0x1b[,0x5b2,0x320,0x30~,0x7e
f10esc,0x1b[,0x5b2,0x321,0x31~,0x7e
f11esc,0x1b[,0x5b2,0x323,0x33~,0x7e
f12esc,0x1b[,0x5b2,0x324,0x34~,0x7e

cursor-control pad

keytop
ASCII,hex
left arrowesc,0x1b[,0x5bD,0x44
up arrowesc,0x1b[,0x5bA,0x41
right arrowesc,0x1b[,0x5bC,0x43
down arrowesc,0x1b[,0x5bB,0x42
deleteesc,0x1b[,0x5b3,0x33~,0x7e
endesc,0x1b[,0x5b4,0x34~,0x7e
page downesc,0x1b[,0x5b6,0x36~,0x7e
insertesc,0x1b[,0x5b2,0x32~,0x7e
homeesc,0x1b[,0x5b1,0x31~,0x7e
page upesc,0x1b[,0x5b5,0x35~,0x7e
print scrnno code transmitted
scroll lockno code transmitted
pause/break(graphic?),0x1a

numeric pad, numlock OFF

keytop
ASCII,hex
0/insesc,0x1b[,0x5b2,0x32~,0x7e
./delesc,0x1b[,0x5b3,0x33~,0x7e
1/endesc,0x1b[,0x5b4,0x34~,0x7e
2esc,0x1b[,0x5bB,0x42
3/pg-dnesc,0x1b[,0x5b6,0x36~,0x7e
4esc,0x1b[,0x5bD,0x44
5esc,0x1b[,0x5bG,0x47
6esc,0x1b[,0x5bC,0x43
7/homeesc,0x1b[,0x5b1,0x31~,0x7e
8esc,0x1b[,0x5bA,0x41
9/pg-upesc,0x1b[,0x5b5,0x35~,0x7e
numlockno code transmitted
virgule/,0x2f
**,0x2a
--,0x2d
++,0x2b
entercr,0xd


====

http://www.pwilson.net/kbhit_notes.html

在 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、付费专栏及课程。

余额充值