The Pedigree Project  0.1
Public Types | Public Member Functions | List of all members
Keyboard Class Referenceabstract

#include <Keyboard.h>

+ Inheritance diagram for Keyboard:
+ Collaboration diagram for Keyboard:

Public Types

enum  KeyFlags {
  Special = 1ULL << 63, Ctrl = 1ULL << 62, Shift = 1ULL << 61, Alt = 1ULL << 60,
  AltGr = 1ULL << 59, Special = 1ULL << 63, Ctrl = 1ULL << 62, Shift = 1ULL << 61,
  Alt = 1ULL << 60, AltGr = 1ULL << 59
}
 
enum  KeyboardLeds {
  ScrollLock = 1 << 0, NumLock = 1 << 1, CapsLock = 1 << 2, Led1 = 1 << 3,
  Led2 = 1 << 4, Led3 = 1 << 5, Led4 = 1 << 6, Led5 = 1 << 7
}
 Bit numbers follow the same format as the PS/2 keyboard LED byte. More...
 
enum  KeyFlags {
  Special = 1ULL << 63, Ctrl = 1ULL << 62, Shift = 1ULL << 61, Alt = 1ULL << 60,
  AltGr = 1ULL << 59, Special = 1ULL << 63, Ctrl = 1ULL << 62, Shift = 1ULL << 61,
  Alt = 1ULL << 60, AltGr = 1ULL << 59
}
 

Public Member Functions

virtual void initialise ()=0
 
virtual void setDebugState (bool enableDebugState)=0
 
virtual bool getDebugState ()=0
 
virtual char getChar ()=0
 
virtual char getCharNonBlock ()=0
 
virtual char getLedState ()
 
virtual void setLedState (char state)
 

Detailed Description

Keyboard device abstraction.

Definition at line 26 of file include/pedigree/kernel/machine/Keyboard.h.

Member Enumeration Documentation

Bit numbers follow the same format as the PS/2 keyboard LED byte.

Enumerator
ScrollLock 

Scroll Lock LED.

NumLock 

Number Lock LED.

CapsLock 

Caps Lock LED.

Led1 

LEDs 1-5 cover non-standard LEDs that might be present on some keyboards - very vendor-specific.

Definition at line 39 of file include/pedigree/kernel/machine/Keyboard.h.

Member Function Documentation

virtual char Keyboard::getChar ( )
pure virtual

Retrieves a character from the keyboard. Blocking I/O. If DebugState is false this returns zero. If DebugState is true this returns the next character received, or zero if the character is non-ASCII.

Implemented in PPCKeyboard, X86Keyboard, ArmBeagleKeyboard, ArmVersatileKeyboard, MaltaKeyboard, and HostedKeyboard.

Referenced by LocalIO::getChar().

+ Here is the caller graph for this function:

virtual char Keyboard::getCharNonBlock ( )
pure virtual

Retrieves a character from the keyboard. Non blocking I/O. If DebugState is false this returns zero. If DebugState is true this returns the next character received, or zero if the character is non-ASCII.

Implemented in PPCKeyboard, ArmBeagleKeyboard, ArmVersatileKeyboard, MaltaKeyboard, X86Keyboard, and HostedKeyboard.

Referenced by LocalIO::enableCli().

+ Here is the caller graph for this function:

char Keyboard::getLedState ( )
virtual

Gets the current state of the LEDs on the keyboard. A single byte bitmap is returned with flags from KeyboardLeds identifying which LEDs are on or off.

Reimplemented in X86Keyboard, and HostedKeyboard.

Definition at line 25 of file Keyboard.cc.

virtual void Keyboard::initialise ( )
pure virtual
virtual void Keyboard::setDebugState ( bool  enableDebugState)
pure virtual

Sets the state of the device. When debugging, it is unwise to rely on interrupt- driven I/O, however in normal use polling is extremely slow and CPU-intensive.

The debugger therefore will set the device to "debug state" by calling this function with the argument "true". In "debug state", any buffered input will be discarded, the device's interrupt masked, and the device will rely on polling only. This will be the default state.

When the device is set to "normal state" by calling this function with the argument "false", interrupts may be used, along with buffered input, and it is recommended that during blocking I/O a Semaphore is used to signal incoming interrupts, so that the blocked thread may go to sleep.

Implemented in ArmBeagleKeyboard, ArmVersatileKeyboard, X86Keyboard, PPCKeyboard, and HostedKeyboard.

Referenced by Debugger::start().

+ Here is the caller graph for this function:

void Keyboard::setLedState ( char  state)
virtual

Sets the current state of LEDs on the keyboard. If a keyboard does not have any LEDs this is essentially a no-op.

Reimplemented in X86Keyboard, and HostedKeyboard.

Definition at line 30 of file Keyboard.cc.

Referenced by X86Keyboard::setLedState().

+ Here is the caller graph for this function:


The documentation for this class was generated from the following files: