summaryrefslogtreecommitdiff
path: root/src/kbd.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2010-03-13 18:51:46 -0500
committerKevin O'Connor <kevin@koconnor.net>2010-03-13 18:51:46 -0500
commit6704cf9aa1f7e6bd7405044f222c23459d4b4d93 (patch)
tree49cc2d4267efdea92e112c2cd5eca1328900eeed /src/kbd.c
parent808939c17f603f3c7ad5abfb882cee55f636867b (diff)
downloadqemu-seabios-6704cf9aa1f7e6bd7405044f222c23459d4b4d93.tar.gz
Revert "Rework disabling of ps2 port irqs."
This reverts commit 6f702dd6987b22e9bce472fe61910392af17416a. That patch introduced a regression by enabling mouse interrupts by default. It also appears that disabling interrupts by software alone will not work well with some old DOS programs that hook the keyboard irq.
Diffstat (limited to 'src/kbd.c')
-rw-r--r--src/kbd.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/kbd.c b/src/kbd.c
index 44dce57..6f3ae15 100644
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -11,6 +11,28 @@
#include "bregs.h" // struct bregs
#include "ps2port.h" // kbd_command
+// Bit definitions for BDA kbd_flag[012]
+#define KF0_RSHIFT (1<<0)
+#define KF0_LSHIFT (1<<1)
+#define KF0_CTRLACTIVE (1<<2)
+#define KF0_ALTACTIVE (1<<3)
+#define KF0_SCROLLACTIVE (1<<4)
+#define KF0_NUMACTIVE (1<<5)
+#define KF0_CAPSACTIVE (1<<6)
+
+#define KF1_LCTRL (1<<0)
+#define KF1_LALT (1<<1)
+#define KF1_PAUSEACTIVE (1<<3)
+#define KF1_SCROLL (1<<4)
+#define KF1_NUM (1<<5)
+#define KF1_CAPS (1<<6)
+
+#define KF2_LAST_E1 (1<<0)
+#define KF2_LAST_E0 (1<<1)
+#define KF2_RCTRL (1<<2)
+#define KF2_RALT (1<<3)
+#define KF2_101KBD (1<<4)
+
void
kbd_setup(void)
{
@@ -201,7 +223,7 @@ static void
set_leds(void)
{
u8 shift_flags = (GET_BDA(kbd_flag0) >> 4) & 0x07;
- u8 kbd_led = GET_BDA(kbd_flag3);
+ u8 kbd_led = GET_BDA(kbd_led);
u8 led_flags = kbd_led & 0x07;
if (shift_flags == led_flags)
return;
@@ -211,7 +233,7 @@ set_leds(void)
// Error
return;
kbd_led = (kbd_led & ~0x07) | shift_flags;
- SET_BDA(kbd_flag3, kbd_led);
+ SET_BDA(kbd_led, kbd_led);
}
// INT 16h Keyboard Service Entry Point