This repository has been archived on 2025-04-11. You can view files and clone it, but cannot push or open issues or pull requests.
csce410pine64backup/MP3/MP3_Sources/simple_keyboard.H

68 lines
1.8 KiB
C++
Executable file

/*
File: simple_keyboard.H
Author: R. Bettati
Department of Computer Science
Texas A&M University
Date : 2017/02/17
Implements an interrupt handler for the keyboard.
The function is implemented in 'handle_interrupt'.
*/
#ifndef _SIMPLE_KEYBOARD_H_
#define _SIMPLE_KEYBOARD_H_
/*--------------------------------------------------------------------------*/
/* DEFINES */
/*--------------------------------------------------------------------------*/
/* -- (none) -- */
/*--------------------------------------------------------------------------*/
/* INCLUDES */
/*--------------------------------------------------------------------------*/
#include "interrupts.H"
/*--------------------------------------------------------------------------*/
/* S I M P L E K E Y B O A R D */
/*--------------------------------------------------------------------------*/
class SimpleKeyboard : public InterruptHandler {
public :
SimpleKeyboard();
/* Initialize the simple keyboard. */
virtual void handle_interrupt(REGS *_r);
/* This must be installed as the interrupt handler for the keyboard
when the system gets initialized. (e.g. in "kernel.C")
*/
static void init();
static void wait();
/* Wait until keyboard is pressed. The implementation is based
on busy looping! */
static char read();
/* Wait until keyboard is pressed and return the keycode.
Note: The keycode is not the same as the character!
Note2: This is a very "approximate" implementation. Not complete,
and likely not correct. Use only under duress!
The implementation is based on busy looping! */
private:
bool key_pressed;
char key_code;
static SimpleKeyboard kb;
static const unsigned short STATUS_PORT = 0x64;
static const unsigned short DATA_PORT = 0x60;
};
#endif