PIP  0.4.0_beta2
Platform-Independent Primitives
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PIKbdListener Class Reference

Keyboard console input listener. More...

+ Inheritance diagram for PIKbdListener:

Public Types

enum  SpecialSymbol {
  UpArrow = -1, DownArrow = -2, RightArrow = -3, LeftArrow = -4,
  CtrlUpArrow = -5, CtrlDownArrow = -6, CtrlRightArrow = -7, CtrlLeftArrow = -8
}
 Special keyboard keys. More...
 
- Public Types inherited from PIThread
enum  Priority {
  piHighest, piHigh, piNormal, piLow,
  piLowerst
}
 Priority of thread. More...
 

Public Member Functions

 PIKbdListener (KBFunc slot=0, void *data=0)
 Constructs keyboard listener with external function "slot" and custom data "data".
 
void * data ()
 Returns custom data.
 
void setData (void *_data)
 Set custom data to "_data".
 
void setSlot (KBFunc slot)
 Set external function to "slot".
 
bool exitCaptured () const
 Returns if exit key if awaiting.
 
char exitKey () const
 Returns exit key, default 'Q'.
 
bool isActive ()
 Returns if keyboard listening is active (not running!)
 
- Public Member Functions inherited from PIThread
 PIThread (void *data, ThreadFunc func, bool startNow=false, int timer_delay=-1)
 Contructs thread with custom data "data", external function "func" and main cycle delay "timer_delay".
 
 PIThread (bool startNow=false, int timer_delay=-1)
 Contructs thread with main cycle delay "timer_delay".
 
void setData (void *d)
 Set common data passed to external function.
 
void setSlot (ThreadFunc func)
 Set external function that will be executed after every run()
 
void setPriority (PIThread::Priority prior)
 Set priority of thread.
 
PIThread::Priority priority () const
 Return priority of thread.
 
bool isRunning () const
 Return true if thread is running.
 
void needLockRun (bool need)
 Set necessity of lock every run with internal mutex.
 
PIMutexmutex ()
 Return internal mutex.
 
bool start (int timer_delay)
 Start thread. More...
 
bool start (ThreadFunc func, int timer_delay)
 Start thread. More...
 
bool startOnce ()
 Start thread without internal loop. More...
 
bool startOnce (ThreadFunc func)
 Start thread without internal loop. More...
 
void stop (bool wait)
 Stop thread. More...
 
void terminate ()
 Strongly stop thread. More...
 
bool waitForStart (int timeout_msecs)
 Wait for thread start. More...
 
bool waitForFinish (int timeout_msecs)
 Wait for thread finish. More...
 
void lock ()
 Lock internal mutex.
 
void unlock ()
 Unlock internal mutex.
 
void started ()
 Raise on thread start.
 
void stopped ()
 Raise on thread stop.
 
- Public Member Functions inherited from PIObject
 PIObject (const PIString &name=PIString())
 Contructs PIObject with name "name".
 
PIString name () const
 Returns object name.
 
virtual const char * className () const
 Returns object class name.
 
bool debug () const
 Return if debug of this object is active.
 
void setName (const PIString &name)
 Set object name.
 
void setDebug (bool debug)
 Set object debug active.
 
const PIMap< PIString,
PIVariant > & 
properties () const
 Returns properties of the object.
 
int propertiesCount () const
 Returns properties count of the object.
 
PIVariant property (const PIString &name) const
 Returns property with name "name".
 
void setProperty (const PIString &name, const PIVariant &value)
 Set property with name "name" to "value". If there is no such property in object it will be added.
 
bool isPropertyExists (const PIString &name) const
 Returns if property with name "name" exists.
 

Handlers

void enableExitCapture (char key)
 Enable exit key "key" awaiting.
 
void disableExitCapture ()
 Disable exit key awaiting.
 
void setActive (bool yes)
 Set keyboard listening is active or not.
 

Events

void keyPressed (char key, void *data)
 Raise on key "key" pressed, "data" is custom data.
 

Additional Inherited Members

- Static Public Member Functions inherited from PIObject
static void piDisconnect (PIObject *src, const PIString &sig)
 Disconnect object "src" from all connections with event name "sig".
 
static void piDisconnect (PIObject *src)
 Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 
- Protected Member Functions inherited from PIObject
PIObjectemitter () const
 Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
 
virtual void propertyChanged (const PIString &name)
 Virtual function executes after property with name "name" has been changed.
 

Detailed Description

Keyboard console input listener.

This class provide listening of console keyboard input. There is two ways to receive pressed key:

  • external static functionwith format "void func(char key, void * data_)"
  • event keyPressed()

Also there is static variable exiting which by default is set to false. If enableExitCapture() was called and listener was started with function start(), this variable will be set to true if exit key will be pressed. By default exit key is 'Q' = shift + 'q'. To wait for this variable changes to true there is WAIT_FOR_EXIT macro

void key_event(char key, void * ) {
piCout << "key" << key << "pressed";
}
int main(int argc, char ** argv) {
kbd.enableExitCapture();
kbd.start();
WAIT_FOR_EXIT
return 0;
}

Member Enumeration Documentation

Special keyboard keys.

Enumerator
UpArrow 

Up arrow key

DownArrow 

Down arrow key

RightArrow 

Right arrow key

LeftArrow 

Left arrow key

CtrlUpArrow 

Ctrl + Up arrow key

CtrlDownArrow 

Ctrl + Down arrow key

CtrlRightArrow 

Ctrl + Right arrow key

CtrlLeftArrow 

Ctrl + Left arrow key