minor enhancements
This commit is contained in:
parent
d47f234261
commit
8a6cfd07c6
|
@ -26,8 +26,8 @@
|
||||||
#include <kernel/base.h>
|
#include <kernel/base.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _KALKERN_IDT_H
|
#ifndef _KALKERN_PWMGNT_H
|
||||||
#define _KALKERN_IDT_H
|
#define _KALKERN_PWMGNT_H
|
||||||
|
|
||||||
//----------------------------------------------------------------------------//
|
//----------------------------------------------------------------------------//
|
||||||
|
|
||||||
|
|
|
@ -25,10 +25,13 @@
|
||||||
#include <kernel/base.h>
|
#include <kernel/base.h>
|
||||||
#include <kernel/iomisc.h>
|
#include <kernel/iomisc.h>
|
||||||
#include <extras/buf.h>
|
#include <extras/buf.h>
|
||||||
|
#include <kernel/keyboard.h>
|
||||||
|
|
||||||
static char ScanCodes[100] = { 0 };
|
static char EarlyScanCodes[100] = { 0 };
|
||||||
static char Invisible[100] = { 0 };
|
static char Invisible[100] = { 0 };
|
||||||
|
|
||||||
|
char *ScanCodes = 0;
|
||||||
|
|
||||||
void KeybPrint(char code)
|
void KeybPrint(char code)
|
||||||
{
|
{
|
||||||
uchar ch = ScanCodes[(int)code];
|
uchar ch = ScanCodes[(int)code];
|
||||||
|
@ -43,7 +46,9 @@ void KeybPrint(char code)
|
||||||
|
|
||||||
void ScanCodesInit(void)
|
void ScanCodesInit(void)
|
||||||
{
|
{
|
||||||
ScanCodes[0x01] = 27; // ESC
|
ScanCodes = &EarlyScanCodes[0];
|
||||||
|
|
||||||
|
ScanCodes[0x01] = KEY_ESC;
|
||||||
Invisible[0x01] = 1;
|
Invisible[0x01] = 1;
|
||||||
ScanCodes[0x02] = '1';
|
ScanCodes[0x02] = '1';
|
||||||
ScanCodes[0x03] = '2';
|
ScanCodes[0x03] = '2';
|
||||||
|
@ -100,14 +105,14 @@ void ScanCodesInit(void)
|
||||||
ScanCodes[0x1C] = '\n';
|
ScanCodes[0x1C] = '\n';
|
||||||
ScanCodes[0x39] = ' ';
|
ScanCodes[0x39] = ' ';
|
||||||
|
|
||||||
ScanCodes[0x40] = 7; // BEL
|
ScanCodes[0x40] = KEY_BEL;
|
||||||
Invisible[0x40] = 1;
|
Invisible[0x40] = 1;
|
||||||
|
|
||||||
// Numpad
|
// Numpad
|
||||||
ScanCodes[0x48] = 17; // DC1, will serve as Arrow Up
|
ScanCodes[0x48] = KEY_DC1; // DC1, will serve as Arrow Up
|
||||||
ScanCodes[0x50] = 18; // DC2, will serve as Arrow Down
|
ScanCodes[0x50] = KEY_DC2; // DC2, will serve as Arrow Down
|
||||||
ScanCodes[0x4B] = 19; // DC3, will serve as Arrow Left
|
ScanCodes[0x4B] = KEY_DC3; // DC3, will serve as Arrow Left
|
||||||
ScanCodes[0x4D] = 20; // DC4, will serve as Arrow Right
|
ScanCodes[0x4D] = KEY_DC4; // DC4, will serve as Arrow Right
|
||||||
Invisible[0x48] = 1;
|
Invisible[0x48] = 1;
|
||||||
Invisible[0x50] = 1;
|
Invisible[0x50] = 1;
|
||||||
Invisible[0x4B] = 1;
|
Invisible[0x4B] = 1;
|
||||||
|
@ -139,7 +144,7 @@ void IoCreateInputBuffer(void)
|
||||||
|
|
||||||
rc = BOpenPureBuf(&BStdIn, BS_RDWR, 4 * KB);
|
rc = BOpenPureBuf(&BStdIn, BS_RDWR, 4 * KB);
|
||||||
|
|
||||||
if (rc) KeStartPanic("Couldn't create BStdIn");
|
if (rc) KeStartPanic("[Keyb] Couldn't create BStdIn");
|
||||||
|
|
||||||
BEnableLineBuffering(BStdIn);
|
BEnableLineBuffering(BStdIn);
|
||||||
}
|
}
|
||||||
|
@ -159,3 +164,8 @@ void IoEnableKeyb(void)
|
||||||
|
|
||||||
IoCreateInputBuffer();
|
IoCreateInputBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IoChangeCodePage(char *CodePage)
|
||||||
|
{
|
||||||
|
ScanCodes = &CodePage[0];
|
||||||
|
}
|
||||||
|
|
|
@ -25,7 +25,9 @@
|
||||||
#include <extras/buf.h>
|
#include <extras/buf.h>
|
||||||
#include <kernel/time.h>
|
#include <kernel/time.h>
|
||||||
#include <kernel/speaker.h>
|
#include <kernel/speaker.h>
|
||||||
|
#include <kernel/iomisc.h>
|
||||||
#include <kernel/pwmgnt.h>
|
#include <kernel/pwmgnt.h>
|
||||||
|
#include <kernel/keyboard.h>
|
||||||
|
|
||||||
extern void IoScrollDown(void);
|
extern void IoScrollDown(void);
|
||||||
extern void IoScrollUp(void);
|
extern void IoScrollUp(void);
|
||||||
|
@ -41,7 +43,7 @@ void KeStartShell(void)
|
||||||
while ((rc = bgetc(BStdIn, &ch)) == EOK) {
|
while ((rc = bgetc(BStdIn, &ch)) == EOK) {
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
|
|
||||||
case 7: // BEL
|
case KEY_BEL:
|
||||||
if (rand() % 64 == 0) {
|
if (rand() % 64 == 0) {
|
||||||
IoDoStarWars();
|
IoDoStarWars();
|
||||||
}
|
}
|
||||||
|
@ -51,18 +53,23 @@ void KeStartShell(void)
|
||||||
BFlushBuf(BStdOut);
|
BFlushBuf(BStdOut);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 17: // DC1
|
case KEY_DC1:
|
||||||
IoScrollUp();
|
IoScrollUp();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 18: // DC2
|
case KEY_DC2:
|
||||||
IoScrollDown();
|
IoScrollDown();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 27: // ESC
|
case KEY_ESC:
|
||||||
PoShutdownQemu();
|
PoShutdownQemu();
|
||||||
break;
|
break;
|
||||||
|
case '\n':
|
||||||
|
KernLog("shell > ");
|
||||||
|
BFlushBuf(BStdOut);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
KePauseCPU();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
noreturn void PoShutdownQemu(void)
|
noreturn void PoShutdownQemu(void)
|
||||||
{
|
{
|
||||||
KernLog("Shutdown QEMU at %s...\n", IoGetRtcTimeChar());
|
KernLog("\nShutdown QEMU at %s...\n", IoGetRtcTimeChar());
|
||||||
|
|
||||||
IoRtcWait(1000);
|
IoRtcWait(1000);
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ noreturn void PoShutdownQemu(void)
|
||||||
|
|
||||||
noreturn void PoShutdownVirtualbox(void)
|
noreturn void PoShutdownVirtualbox(void)
|
||||||
{
|
{
|
||||||
KernLog("Shutdown VirtualBox at %s...\n", IoGetRtcTimeChar());
|
KernLog("\nShutdown VirtualBox at %s...\n", IoGetRtcTimeChar());
|
||||||
|
|
||||||
IoRtcWait(1000);
|
IoRtcWait(1000);
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ noreturn void PoShutdownVirtualbox(void)
|
||||||
|
|
||||||
noreturn void PoShutdownBochs(void)
|
noreturn void PoShutdownBochs(void)
|
||||||
{
|
{
|
||||||
KernLog("Shutdown Bochs at %s...\n", IoGetRtcTimeChar());
|
KernLog("\nShutdown Bochs at %s...\n", IoGetRtcTimeChar());
|
||||||
|
|
||||||
IoRtcWait(1000);
|
IoRtcWait(1000);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue