git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed keyboard bug where keypresses were not being registered, working on libreadline
[tpg/acess2.git]
/
Kernel
/
drv
/
kb.c
diff --git
a/Kernel/drv/kb.c
b/Kernel/drv/kb.c
index
65d340e
..
ba9eb72
100644
(file)
--- a/
Kernel/drv/kb.c
+++ b/
Kernel/drv/kb.c
@@
-11,6
+11,7
@@
// === CONSTANTS ===
#define KB_BUFFER_SIZE 1024
// === CONSTANTS ===
#define KB_BUFFER_SIZE 1024
+#define USE_KERNEL_MAGIC 1
// === IMPORTS ===
void Threads_Dump();
// === IMPORTS ===
void Threads_Dump();
@@
-63,6
+64,7
@@
int KB_Install(char **Arguments)
temp = inb(0x61);
outb(0x61, temp | 0x80);
outb(0x61, temp & 0x7F);
temp = inb(0x61);
outb(0x61, temp | 0x80);
outb(0x61, temp & 0x7F);
+ inb(0x60); // Clear keyboard buffer
IRQ_AddHandler(1, KB_IRQHandler);
DevFS_AddDevice( &gKB_DevInfo );
IRQ_AddHandler(1, KB_IRQHandler);
DevFS_AddDevice( &gKB_DevInfo );
@@
-80,9
+82,11
@@
void KB_IRQHandler()
Uint32 ch;
// int keyNum;
Uint32 ch;
// int keyNum;
- //if( inportb(0x64) & 0x20 ) return;
+ // Check port 0x64 to tell if this is from the aux port
+ if( inb(0x64) & 0x20 ) return;
scancode = inb(0x60); // Read from the keyboard's data buffer
scancode = inb(0x60); // Read from the keyboard's data buffer
+ //Log_Debug("Keyboard", "scancode = %02x", scancode);
//Log("KB_IRQHandler: scancode = 0x%02x", scancode);
//Log("KB_IRQHandler: scancode = 0x%02x", scancode);
@@
-124,7
+128,7
@@
void KB_IRQHandler()
//keyNum = giKB_KeyLayer * 256 + scancode;
// Check for unknown key
if(!ch && !gbKB_KeyUp)
//keyNum = giKB_KeyLayer * 256 + scancode;
// Check for unknown key
if(!ch && !gbKB_KeyUp)
-
Warning(
"UNK %i %x", giKB_KeyLayer, scancode);
+
Log_Warning("Keyboard",
"UNK %i %x", giKB_KeyLayer, scancode);
// Key Up?
if (gbKB_KeyUp)
// Key Up?
if (gbKB_KeyUp)
@@
-169,8
+173,14
@@
void KB_IRQHandler()
// --- Check for Kernel Magic Combos
#if USE_KERNEL_MAGIC
// --- Check for Kernel Magic Combos
#if USE_KERNEL_MAGIC
- if(ch == KEY_LCTRL) gbKB_MagicState |= 1;
- if(ch == KEY_LALT) gbKB_MagicState |= 2;
+ if(ch == KEY_LCTRL) {
+ gbKB_MagicState |= 1;
+ //Log_Log("Keyboard", "Kernel Magic LCTRL Down\n");
+ }
+ if(ch == KEY_LALT) {
+ gbKB_MagicState |= 2;
+ //Log_Log("Keyboard", "Kernel Magic LALT Down\n");
+ }
if(gbKB_MagicState == 3)
{
switch(ch)
if(gbKB_MagicState == 3)
{
switch(ch)
UCC
git Repository :: git.ucc.asn.au