Ejemplo n.º 1
0
static int init_kbd(unsigned ss, unsigned typematic, unsigned xlat)
{
	while(read_kbd() != -1)
		/* nothing */;
/* disable keyboard before programming it */
	write_kbd_await_ack(0xF5);
/* disable PS/2 mouse, set SYS bit, and Enable Keyboard Interrupt... */
	write_kbd(0x64, 0x60);
/*jach: enable mouse */
	//write_kbd(0x64, 0xA8);
/* ...and either disable or enable AT-to-XT keystroke conversion */
	write_kbd(0x60, xlat ? 0x65 : 0x25);
/* program desired scancode set */
	write_kbd_await_ack(0xF0);
	write_kbd_await_ack(ss);
/* we want all keys to return both a make code (when pressed)
and a break code (when released -- scancode set 3 only) */
	if(ss == 3)
	{
		write_kbd_await_ack(0xFA);
	}
/* set typematic delay and rate */
	write_kbd_await_ack(0xF3);
	write_kbd_await_ack(typematic);
/* enable keyboard */
	write_kbd_await_ack(0xF4);
	return 0;
}
Ejemplo n.º 2
0
void bioscon_read(register struct tty * tty)
{
    char c = read_kbd();

    if (c == '\r')
	c = '\n';
    chq_addch(&tty->inq, c, 0);
}
Ejemplo n.º 3
0
// 1 = succes
u_char write_kbd_await_ack(u_char val)
{
	u_char got;

	write_kbd(0x60, val);
	got = read_kbd();
	if(got != 0xFA)
	{
		k_printf("write_kbd_await_ack: expected acknowledge (0xFA), got 0x%x\n", got);
		return 0;
	};
	return 1;
};
Ejemplo n.º 4
0
static int write_kbd_await_ack(unsigned val)
{
	int got;

	write_kbd(0x60, val);
	got = read_kbd();
	if(got != 0xFA)
	{
		
		return -1;
	}
	return 0;
};
Ejemplo n.º 5
0
// returns current scancode set, or 0 upon failer
u_char kbd_curr_scancode_set()
{
	write_kbd_await_ack(0xF0);
	write_kbd(0x60, 0);
	return(read_kbd());	// return scancode set
};