Coin3D is Free Software, published under the BSD 3-clause license. |
https://bitbucket.org/Coin3D/ http://www.kongsberg.com/kogt/ |
The SoKeyboardEvent class contains information about keyboard interaction. More...
#include <Inventor/events/SoKeyboardEvent.h>
Public Types | |
enum | Key { ANY = 0, UNDEFINED = 1, LEFT_SHIFT = 0xffe1, RIGHT_SHIFT, LEFT_CONTROL, RIGHT_CONTROL, LEFT_ALT = 0xffe9, RIGHT_ALT, NUMBER_0 = 0x0030, NUMBER_1, NUMBER_2, NUMBER_3, NUMBER_4, NUMBER_5, NUMBER_6, NUMBER_7, NUMBER_8, NUMBER_9, A = 0x0061, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, HOME = 0xff50, LEFT_ARROW, UP_ARROW, RIGHT_ARROW, DOWN_ARROW, PAGE_UP, PAGE_DOWN, END, PRIOR = 0xff55, NEXT, PAD_ENTER = 0xff8d, PAD_F1 = 0xff91, PAD_F2, PAD_F3, PAD_F4, PAD_0 = 0xff9e, PAD_1 = 0xff9c, PAD_2 = 0xff99, PAD_3 = 0xff9b, PAD_4 = 0xff96, PAD_5 = 0xff9d, PAD_6 = 0xff98, PAD_7 = 0xff95, PAD_8 = 0xff97, PAD_9 = 0xff9a, PAD_ADD = 0xffab, PAD_SUBTRACT = 0xffad, PAD_MULTIPLY = 0xffaa, PAD_DIVIDE = 0xffaf, PAD_SPACE = 0xff8d, PAD_TAB = 0xff89, PAD_INSERT = 0xff9e, PAD_DELETE = 0xff9f, PAD_PERIOD = 0xff9f, F1 = 0xffbe, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, BACKSPACE = 0xff08, TAB = 0xff09, RETURN = 0xff0d, ENTER = 0xff0d, PAUSE = 0xff13, SCROLL_LOCK = 0xff14, ESCAPE = 0xff1b, DELETE = 0xffff, KEY_DELETE = DELETE, PRINT = 0xff61, INSERT = 0xff63, NUM_LOCK = 0xff7f, CAPS_LOCK = 0xffe5, SHIFT_LOCK = 0xffe6, SPACE = 0x0020, APOSTROPHE = 0x0027, COMMA = 0x002c, MINUS = 0x002d, PERIOD = 0x002e, SLASH = 0x002f, SEMICOLON = 0x003b, EQUAL = 0x003d, BRACKETLEFT = 0x005b, BACKSLASH = 0x005c, BRACKETRIGHT = 0x005d, GRAVE = 0x0060 } |
Public Types inherited from SoButtonEvent | |
enum | State { UP, DOWN, UNKNOWN } |
Public Member Functions | |
virtual SoType | getTypeId (void) const |
SoKeyboardEvent (void) | |
virtual | ~SoKeyboardEvent () |
void | setKey (Key key) |
Key | getKey (void) const |
void | setPrintableCharacter (const char c) |
char | getPrintableCharacter (void) const |
Public Member Functions inherited from SoButtonEvent | |
SoButtonEvent (void) | |
virtual | ~SoButtonEvent () |
void | setState (State state) |
State | getState (void) const |
Public Member Functions inherited from SoEvent | |
SoEvent (void) | |
virtual | ~SoEvent () |
SbBool | isOfType (SoType type) const |
void | setTime (const SbTime t) |
SbTime | getTime (void) const |
void | setPosition (const SbVec2s &p) |
const SbVec2s & | getPosition (void) const |
const SbVec2s & | getPosition (const SbViewportRegion &vpRgn) const |
const SbVec2f & | getNormalizedPosition (const SbViewportRegion &vpRgn) const |
void | setShiftDown (SbBool isDown) |
SbBool | wasShiftDown (void) const |
void | setCtrlDown (SbBool isDown) |
SbBool | wasCtrlDown (void) const |
void | setAltDown (SbBool isDown) |
SbBool | wasAltDown (void) const |
Static Public Member Functions | |
static SoType | getClassTypeId (void) |
static void | initClass (void) |
static SbBool | isKeyPressEvent (const SoEvent *e, Key whichKey) |
static SbBool | isKeyReleaseEvent (const SoEvent *e, Key whichKey) |
static SbBool | enumToString (Key enumval, SbString &stringrep) |
Static Public Member Functions inherited from SoButtonEvent | |
static SoType | getClassTypeId (void) |
static void | initClass (void) |
static SbBool | enumToString (State enumval, SbString &stringrep) |
Static Public Member Functions inherited from SoEvent | |
static SoType | getClassTypeId (void) |
static void | initClass (void) |
The SoKeyboardEvent class contains information about keyboard interaction.
When the user presses any keys on the keyboard, these will be translated from a system specific event into a Coin event and sent to the scenegraph by using instances of this class.
enum SoKeyboardEvent::Key |
This enum contains all keys detected by Coin.
SoKeyboardEvent::SoKeyboardEvent | ( | void | ) |
Constructor.
|
virtual |
Destructor.
|
virtual |
Returns the actual type id of an instantiated object.
Reimplemented from SoButtonEvent.
|
static |
Initialize the type information data.
void SoKeyboardEvent::setKey | ( | SoKeyboardEvent::Key | keyarg | ) |
Set the value of the key which the user interacted with.
This method is used from the window specific device classes when translating events to the generic Coin library.
SoKeyboardEvent::Key SoKeyboardEvent::getKey | ( | void | ) | const |
Returns the value of the key which was pressed or released.
Coin adds a new key value called UNDEFINED. This is needed to support GUI toolkits where it's not possible to find exactly which key is pressed, and/or to support non-US keyboards. The Open Inventor design for this class is flawed, since it assumes everybody uses a US keyboard. We recommend using getPrintableCharacter() to find which key is pressed/released, at least for printable non-alphanumerical characters.
void SoKeyboardEvent::setPrintableCharacter | ( | const char | c | ) |
Sets the printable character for this keyboard event. If this method is not called when creating an event, getPrintableCharacter() will convert the SoKeyboardEvent::Key value into a printable character. This conversion does not work on non-US keyboards, so we recommend that you set the printable character using this method instead.
This printable character is cleared each time setKey() is called.
This method is an extension versus the Open Inventor API.
char SoKeyboardEvent::getPrintableCharacter | ( | void | ) | const |
Return ASCII value which would be generated by the key and modifier combination.
NB! If setPrintableCharacter() hasn't been called, this function does not always work as expected, particularly not on non-US keyboards. The Coin GUI toolkits (SoGtk/SoQt/SoWin/SoXt/Sc21) will set the printable character correctly.
|
static |
Convenience method for quickly checking if the given event is a keypress on the given key, whichKey
.
|
static |
Convenience method for quickly checking if the given event is a key release of the given key, whichKey
.
Converts from an enum value of type SoKeyboardEvent::State to a string containing the enum symbol.
This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.