ArKeyHandler Class Reference

#include <ArKeyHandler.h>

List of all members.


Detailed Description

This class will read input from the keyboard.

This class is for handling input from the keyboard, you just addKeyHandler the keys you want to deal with.

You should also register the keyhandler with Aria::setKeyHandler, and before you create a key handler you should see if one is already there with Aria::getKeyHandler.

You can attach a key handler to a robot with ArRobot::attachKeyHandler which will put a task into the robots list of tasks so that it'll get checked every cycle or you can just call checkKeys yourself (like in its own thread or in the main thread). You should only attach a key handler to one robot, even if you're using multiple robots.

Examples:

actionGroupExample.cpp, actsColorFollowingExample.cpp, demo.cpp, dpptuExample.cpp, gotoActionExample.cpp, gripperExample.cpp, gyroExample.cpp, lineFinderExample.cpp, sonyPTZDemo.cpp, triangleDriveToActionExample.cpp, vcc4CameraExample.cpp, and wander.cpp.

Definition at line 56 of file ArKeyHandler.h.

Public Types

 _EndFKeys
 F key range (don't use).
 _StartFKeys
 F key offset (don't use).
 BACKSPACE
 Backspace key.
 DEL
 Special delete key (often forward-delete) (not supported on Windows yet).
 DOWN
 Down arrow (keypad or 4 key dirs).
 END
 End key (not supported on Windows yet).
 ENTER
 Enter key.
 ESCAPE
 Escape key.
 F1
 F1.
 F10
 F10 (not supported on Windows yet).
 F11
 F11 (not supported on Windows yet).
 F12
 F12 (not supported on Windows yet).
 F2
 F2.
 F3
 F3.
 F4
 F4.
 F5
 F5 (not supported on Windows yet).
 F6
 F6 (not supported on Windows yet).
 F7
 F7 (not supported on Windows yet).
 F8
 F8 (not supported on Windows yet).
 F9
 F9 (not supported on Windows yet).
 HOME
 Home key (not supported on Windows yet).
 INSERT
 Insert key (not supported on Windows yet).
enum  KEY {
  UP = 256, DOWN, LEFT, RIGHT,
  ESCAPE, SPACE, TAB, ENTER,
  BACKSPACE, _StartFKeys, F1, F2,
  F3, F4, F5, F6,
  F7, F8, F9, F10,
  F11, F12, _EndFKeys, PAGEUP,
  PAGEDOWN, HOME, END, INSERT,
  DEL
}
 These are enums for the non-ascii keys. More...
 LEFT
 Left arrow (keypad or 4 key dirs).
 PAGEDOWN
 Page Down (not supported on Windows yet).
 PAGEUP
 Page Up (not supported on Windows yet).
 RIGHT
 Right arrow (keypad or 4 key dirs).
 SPACE
 Space key.
 TAB
 Tab key.
 UP = 256
 Up arrow (keypad or 4 key dirs).

Public Member Functions

bool addKeyHandler (int keyToHandle, ArFunctor *functor)
 This adds a keyhandler, when the keyToHandle is hit, functor will fire.
 ArKeyHandler (bool blocking=false, bool addAriaExitCB=true)
void checkKeys (void)
 intnernal, use addKeyHandler, Checks for keys and handles them
int getKey (void)
bool remKeyHandler (ArFunctor *functor)
 This removes a key handler, by key.
bool remKeyHandler (int keyToHandler)
 This removes a key handler, by key.
void restore (void)
void takeKeys (bool blocking=false)
 ~ArKeyHandler ()

Protected Attributes

ArFunctorC< ArKeyHandlermyAriaExitCB
bool myBlocking
std::map< int, ArFunctor * > myMap
termios myOriginalTermios
bool myRestored


Member Enumeration Documentation

enum ArKeyHandler::KEY

These are enums for the non-ascii keys.

Enumerator:
UP  Up arrow (keypad or 4 key dirs).
DOWN  Down arrow (keypad or 4 key dirs).
LEFT  Left arrow (keypad or 4 key dirs).
RIGHT  Right arrow (keypad or 4 key dirs).
ESCAPE  Escape key.
SPACE  Space key.
TAB  Tab key.
ENTER  Enter key.
BACKSPACE  Backspace key.
_StartFKeys  F key offset (don't use).
F1  F1.
F2  F2.
F3  F3.
F4  F4.
F5  F5 (not supported on Windows yet).
F6  F6 (not supported on Windows yet).
F7  F7 (not supported on Windows yet).
F8  F8 (not supported on Windows yet).
F9  F9 (not supported on Windows yet).
F10  F10 (not supported on Windows yet).
F11  F11 (not supported on Windows yet).
F12  F12 (not supported on Windows yet).
_EndFKeys  F key range (don't use).
PAGEUP  Page Up (not supported on Windows yet).
PAGEDOWN  Page Down (not supported on Windows yet).
HOME  Home key (not supported on Windows yet).
END  End key (not supported on Windows yet).
INSERT  Insert key (not supported on Windows yet).
DEL  Special delete key (often forward-delete) (not supported on Windows yet).

Definition at line 68 of file ArKeyHandler.h.


Constructor & Destructor Documentation

ArKeyHandler::ArKeyHandler ( bool  blocking = false,
bool  addAriaExitCB = true 
)

This object will take over key capture when constructed, and release key capture when destroyed.

Definition at line 45 of file ArKeyHandler.cpp.

ArKeyHandler::~ArKeyHandler (  ) 

Destructor. Reseases control of the keyboard and restores state before this key handler was created.

Definition at line 54 of file ArKeyHandler.cpp.


Member Function Documentation

bool ArKeyHandler::addKeyHandler ( int  keyToHandle,
ArFunctor functor 
)

This adds a keyhandler, when the keyToHandle is hit, functor will fire.

Parameters:
keyToHandle A character value, such as 'a' or '1' or '[', or a member of the KEY enum.
functor Functor to call when keyToHandle is received
Returns:
true If no previous key handler functor exists for keyToHandle and the handler functor was stored, or false if a handler for that key already exists. that key
Examples:
actionGroupExample.cpp, dpptuExample.cpp, gripperExample.cpp, gyroExample.cpp, lineFinderExample.cpp, sonyPTZDemo.cpp, triangleDriveToActionExample.cpp, and vcc4CameraExample.cpp.

Definition at line 113 of file ArKeyHandler.cpp.

int ArKeyHandler::getKey ( void   ) 

internal, use addKeyHandler instead... Gets a key from the stdin if ones available, -1 if there aren't any available

Definition at line 203 of file ArKeyHandler.cpp.

bool ArKeyHandler::remKeyHandler ( ArFunctor functor  ) 

This removes a key handler, by key.

Parameters:
functor the functor of the handler to remove
Returns:
true if the remKeyHandler succeeded, which means that the functor was found and removed from the handlers, or false if no handler with the given functor was found.

Definition at line 154 of file ArKeyHandler.cpp.

bool ArKeyHandler::remKeyHandler ( int  keyToHandle  ) 

This removes a key handler, by key.

Parameters:
keyToHandle The character value or code to clear the handler for.
Returns:
true if the remKeyHandler succeeded, which means that a key handler for keyToHandle was found and rmeoved, or false if no handler for that value was found.

Definition at line 134 of file ArKeyHandler.cpp.

void ArKeyHandler::restore ( void   ) 

Sets stdin back to its original settings, if its been restored it won't read anymore. For internal or special use, since it's called in the destructor.

Examples:
actsColorFollowingExample.cpp, and wander.cpp.

Definition at line 93 of file ArKeyHandler.cpp.

void ArKeyHandler::takeKeys ( bool  blocking = false  ) 

Takes the key control over. For internal or special use, since it's called in the constructor.

Definition at line 59 of file ArKeyHandler.cpp.


The documentation for this class was generated from the following files:
Generated on Fri Dec 1 10:55:17 2006 for Aria by  doxygen 1.4.7