u8 checksum;
} PACKED;
-struct usbkeyinfo {
- union {
- struct {
- u8 modifiers;
- u8 repeatcount;
- u8 keys[6];
- };
- u64 data;
- };
-};
-
struct extended_bios_data_area_s {
u8 size;
u8 reserved1[0x21];
u8 other2[0xC4];
// 0x121 - Begin custom storage.
- struct usbkeyinfo usbkey_last;
// El Torito Emulation data
struct cdemu_s cdemu;
}
}
+struct usbkeyinfo {
+ union {
+ struct {
+ u8 modifiers;
+ u8 repeatcount;
+ u8 keys[6];
+ };
+ u64 data;
+ };
+};
+struct usbkeyinfo LastUSBkey VARLOW;
+
// Process USB keyboard data.
static void noinline
handle_key(struct keyevent *data)
dprintf(9, "Got key %x %x\n", data->modifiers, data->keys[0]);
// Load old keys.
- u16 ebda_seg = get_ebda_seg();
struct usbkeyinfo old;
- old.data = GET_EBDA2(ebda_seg, usbkey_last.data);
+ old.data = GET_LOW(LastUSBkey.data);
// Check for keys no longer pressed.
int addpos = 0;
}
// Update old keys
- SET_EBDA2(ebda_seg, usbkey_last.data, old.data);
+ SET_LOW(LastUSBkey.data, old.data);
}
// Check if a USB keyboard event is pending and process it if so.