SoKeyboardEvent(3)

πŸ“¦ version 2.5.0, in fedora 43, fedora 44

πŸ’– SoKeyboardEvent β€” like, the manual, but make it make sense πŸ’–

okay bestie, so this is a page from the Library Functions Manual (that's the manual name, we're folding it in here, you're welcome) and it's all about SoKeyboardEvent(3) β€” the class that knows every time you smash a key. let's get into it πŸ’…


✨ NAME ✨

SoKeyboardEvent β€” the class that holds literally all the tea about keyboard interaction. ⌨️


🌸 SYNOPSIS 🌸

#include <Inventor/events/SoKeyboardEvent.h>

Inherits SoButtonEvent. πŸ‘‘

πŸŽ€ 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 (SoKeyboardEvent::Key key)
SoKeyboardEvent::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 (SoButtonEvent::State state)
SoButtonEvent::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 SbBool isKeyPressEvent (const SoEvent *e, SoKeyboardEvent::Key
    whichKey)
static SbBool isKeyReleaseEvent (const SoEvent *e, SoKeyboardEvent::Key
    whichKey)
static void initClass (void)

Static Public Member Functions inherited from SoButtonEvent

static SoType getClassTypeId (void)
static void initClass (void)

Static Public Member Functions inherited from SoEvent

static SoType getClassTypeId (void)
static void initClass (void)

πŸ’œ Detailed Description πŸ’œ

The SoKeyboardEvent class contains information about keyboard interaction. no cap, that's literally its whole job. 😌

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. so your key smash becomes a whole situation in the scene graph. iconic behavior fr fr. ✨

See also

  • SoEvent, SoButtonEvent, SoMouseButtonEvent, SoSpaceballButtonEvent
  • SoEventCallback, SoHandleEventAction

🧚 Member Enumeration Documentation 🧚

enum SoKeyboardEvent::Key

This enum contains all keys detected by Coin. every single one, she's thorough. πŸ‘‘


πŸŽ€ Constructor & Destructor Documentation πŸŽ€

SoKeyboardEvent::SoKeyboardEvent (void )

Constructor. the birth of an event, main character origin story. 🫢

Referenced by getTypeId(), initClass(), isKeyPressEvent(), and isKeyReleaseEvent().

SoKeyboardEvent::~SoKeyboardEvent () [virtual]

Destructor. rest in peace little event, you did amazing sweetie. πŸ’€


🌈 Member Function Documentation 🌈

SoType SoKeyboardEvent::getTypeId (void ) const [virtual]

Returns the actual type id of an instantiated object. like a little ID card but for types. πŸͺͺ

Reimplemented from SoButtonEvent.

References SoKeyboardEvent().

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.

See also

  • getKey()

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.

bestie this is a real callout in the docs β€” the original design just assumed everyone's on a US keyboard and that's simply not the vibe. the docs themselves say it's flawed. use getPrintableCharacter(). πŸ’…

See also

  • getPrintableCharacter(), getState()
  • wasShiftDown(), wasCtrlDown(), wasAltDown(), getPosition(), getTime()

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. ✨ (so yes it's extra, and yes it's better)

See also

  • getPrintableCharacter()

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.

See also

  • getKey(), wasShiftDown(), wasCtrlDown(), wasAltDown(), setPrintableCharacter()

References SoEvent::wasShiftDown().

SbBool SoKeyboardEvent::isKeyPressEvent (const SoEvent * e, SoKeyboardEvent::Key whichKey) [static]

Convenience method for quickly checking if the given event is a keypress on the given key, whichKey. lil shortcut, so convenient, we love her. πŸŽ€

See also

  • isKeyReleaseEvent(), isOfType(), getKey(), getState()

References SoButtonEvent::DOWN, SoEvent::isOfType(), SoButtonEvent::SoButtonEvent(), SoEvent::SoEvent(), and SoKeyboardEvent().

SbBool SoKeyboardEvent::isKeyReleaseEvent (const SoEvent * e, SoKeyboardEvent::Key whichKey) [static]

Convenience method for quickly checking if the given event is a key release of the given key, whichKey. the yin to the previous function's yang. πŸ¦‹

See also

  • isKeyPressEvent(), isOfType(), getKey(), getState()

References SoEvent::isOfType(), SoButtonEvent::SoButtonEvent(), SoEvent::SoEvent(), SoKeyboardEvent(), and SoButtonEvent::UP.

void SoKeyboardEvent::initClass (void ) [static]

Initialize the type information data. doing the setup so everyone else can slay later. πŸ’…

References SoButtonEvent::SoButtonEvent(), and SoKeyboardEvent().


πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for Coin from the source code.


aaaand that's the whole thing bestie!! 🫢 this page came out of Coin, Version 2.5.0 (that's the source and version, mwah), and it's the SoKeyboardEvent(3) page β€” so now you know every key Coin can clock. go forth and handle those events, you're literally the main character of the scenegraph. periodt. πŸ’–βœ¨πŸŒΈ

πŸ“¦ where this page comes from