自定义OS中PS/2键盘驱动无法切换至Scancode Set 2问题
自定义操作系统PS/2键盘驱动问题
我正在开发一款自定义操作系统,遇到PS/2键盘驱动问题:尽管尝试将键盘设置为Scancode Set 2,它仍持续发送Scancode Set 1编码。
设置扫描码集的函数
static void set_default_scancode_set(void) { uint8_t resp; int i = 0; do { if (i++ == MAX_RETRY_COUNT) { stop(); } outb(PS2_KEYBOARD_DATA, COMMAND_SET_SCANCODE_SET); io_wait(); resp = inb(PS2_KEYBOARD_DATA); } while (resp == RESP_RESEND); if (resp != RESP_ACK) { stop(); } i = 0; do { if (i++ == MAX_RETRY_COUNT) { stop(); } outb(PS2_KEYBOARD_DATA, DEFAULT_SCANCODE_SET); io_wait(); resp = inb(PS2_KEYBOARD_DATA); } while (resp == RESP_RESEND); if (resp != RESP_ACK) { stop(); } }
键盘初始化函数
void init_keyboard(void) { set_default_scancode_set(); enable_scanning(); install_irq_driver(1, ps2_keyboard_callback); }
补充信息
DEFAULT_SCANCODE_SET定义为2。- 使用的其他常量(
COMMAND_SET_SCANCODE_SET、PS2_KEYBOARD_DATA等)定义正确。 - 键盘仍持续发送Scancode Set 1编码。
问题解决
该问题已通过设置PS/2控制器命令字节(禁用扫描码转换功能)解决。
内容的提问来源于stack exchange,提问作者Viliam Holly
相关产品推荐
相关产品推荐

