Я пытаюсь сделать контроллер клавиатуры PS/2, и я не могу заставить его работать.
outb(0x60, 0xED);
outb(0x60, 2); /* Turn on CapsLock LED (doesn't works)*/
char c = 0;
while (c != 1)
{
if (inb(0x60) != c)
{
c = inb(0x60);
if (c > 0)
putch(scan2char(c));
}
}
функция scan2char:
char scan2char(char scn)
{
char keych;
switch (scn)
{
case 0x15:
keych = 'q';
break;
case 0x1D:
keych = 'w';
break;
case 0x24:
keych = 'e';
break;
case 0x2D:
keych = 'r';
break;
case 0x2C:
keych = 't';
break;
case 0x35:
keych = 'y';
break;
}
return keych;
}
Он читает клавиши, но раскладка клавиатуры странным образом сместилась; например: если я нажму 9, я получу q, если я нажму 0, я получу w, вы понимаете. Сначала я подумал, что это может быть функция putch, но, проведя некоторые тесты, я понял, что проблема не в putch.
protected-mode
заставил меня заподозрить... - person linuxfan says Reinstate Monica   schedule 24.12.2018