Handout
This commit is contained in:
40
device/keydecoder.h
Normal file
40
device/keydecoder.h
Normal file
@@ -0,0 +1,40 @@
|
||||
/*! \file
|
||||
* \brief \ref KeyDecoder decodes a keystroke to the corresponding \ref Key
|
||||
* object
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include "../object/key.h"
|
||||
#include "../types.h"
|
||||
|
||||
/*! \brief Decoder for \ref ps2keyboardset1 "keyboard codes" received from the
|
||||
* \ref PS2Controller
|
||||
* \ingroup io
|
||||
*
|
||||
* Extracts the make and break codes, modifier and scan codes from the pressed
|
||||
* key.
|
||||
*/
|
||||
class KeyDecoder {
|
||||
unsigned char prefix; ///< Prefix byte for keys
|
||||
Key modifier; ///< activated modifier keys (e.g., caps lock)
|
||||
|
||||
public:
|
||||
/*! \brief Current state (pressed or released) of all keys.
|
||||
*/
|
||||
bool status[Key::Scancode::KEYS];
|
||||
|
||||
/*! \brief Default constructor
|
||||
*/
|
||||
KeyDecoder() {}
|
||||
|
||||
/*! \brief Interprets the \ref ps2keyboardset1 "make and break codes"
|
||||
* received from the keyboard and derives the corresponding scan code and
|
||||
* further information about other pressed keys, such as \key{shift} and
|
||||
* \key{ctrl}.
|
||||
*
|
||||
* \param code Byte from Keyboard to decode
|
||||
* \return Pressed key (\ref Key::valid returns `false` if the key is not yet
|
||||
* complete)
|
||||
*/
|
||||
Key decode(unsigned char code);
|
||||
};
|
||||
Reference in New Issue
Block a user