---
name: "SoKeyboardEvent"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoKeyboardEvent/3iv"
---

# SoKeyboardEvent(3iv)

keyboard key press and release events

## NAME

SoKeyboardEvent — keyboard key press and release events

## INHERITS FROM

SoEvent \> SoButtonEvent \> SoKeyboardEvent

## SYNOPSIS

**#include \<Inventor/events/SoKeyboardEvent.h\>**

**#define SO\_KEY\_PRESS\_EVENT(EVENT,KEY)**\
       **(SoKeyboardEvent::isKeyPressEvent(EVENT,SoKeyboardEvent::KEY))** \
 **#define SO\_KEY\_RELEASE\_EVENT(EVENT,KEY)**\
       **(SoKeyboardEvent::isKeyReleaseEvent(EVENT,SoKeyboardEvent::KEY))**

**enum Key {** **SoKeyboardEvent::ANY**	Special constant for any key\
 **SoKeyboardEvent::LEFT\_SHIFT**	Modifiers\
 **SoKeyboardEvent::RIGHT\_SHIFT**

**SoKeyboardEvent::LEFT\_CONTROL**\

**SoKeyboardEvent::RIGHT\_CONTROL**\

**SoKeyboardEvent::LEFT\_ALT**

**SoKeyboardEvent::RIGHT\_ALT**

**SoKeyboardEvent::NUMBER\_0**	Numbers\
 **SoKeyboardEvent::NUMBER\_1**

**SoKeyboardEvent::NUMBER\_2**

**SoKeyboardEvent::NUMBER\_3**

**SoKeyboardEvent::NUMBER\_4**

**SoKeyboardEvent::NUMBER\_5**

**SoKeyboardEvent::NUMBER\_6**

**SoKeyboardEvent::NUMBER\_7**

**SoKeyboardEvent::NUMBER\_8**

**SoKeyboardEvent::NUMBER\_9**

**SoKeyboardEvent::A**	Letters\
 **SoKeyboardEvent::B**

**SoKeyboardEvent::C**

**SoKeyboardEvent::D**

**SoKeyboardEvent::E**

**SoKeyboardEvent::F**

**SoKeyboardEvent::G**

**SoKeyboardEvent::H**

**SoKeyboardEvent::I**

**SoKeyboardEvent::J**

**SoKeyboardEvent::K**

**SoKeyboardEvent::L**

**SoKeyboardEvent::M**

**SoKeyboardEvent::N**

**SoKeyboardEvent::O**

**SoKeyboardEvent::P**

**SoKeyboardEvent::Q**

**SoKeyboardEvent::R**

**SoKeyboardEvent::S**

**SoKeyboardEvent::T**

**SoKeyboardEvent::U**

**SoKeyboardEvent::V**

**SoKeyboardEvent::W**

**SoKeyboardEvent::X**

**SoKeyboardEvent::Y**

**SoKeyboardEvent::Z**

**SoKeyboardEvent::HOME**	Cursor control and motion\
 **SoKeyboardEvent::LEFT\_ARROW**

**SoKeyboardEvent::UP\_ARROW**

**SoKeyboardEvent::RIGHT\_ARROW**

**SoKeyboardEvent::DOWN\_ARROW**

**SoKeyboardEvent::PAGE\_UP**

**SoKeyboardEvent::PAGE\_DOWN**

**SoKeyboardEvent::PRIOR**

**SoKeyboardEvent::NEXT**

**SoKeyboardEvent::END**

**SoKeyboardEvent::PAD\_ENTER**	Keypad functions\
 **SoKeyboardEvent::PAD\_F1**

**SoKeyboardEvent::PAD\_F2**

**SoKeyboardEvent::PAD\_F3**

**SoKeyboardEvent::PAD\_F4**

**SoKeyboardEvent::PAD\_0**

**SoKeyboardEvent::PAD\_1**

**SoKeyboardEvent::PAD\_2**

**SoKeyboardEvent::PAD\_3**

**SoKeyboardEvent::PAD\_4**

**SoKeyboardEvent::PAD\_5**

**SoKeyboardEvent::PAD\_6**

**SoKeyboardEvent::PAD\_7**

**SoKeyboardEvent::PAD\_8**

**SoKeyboardEvent::PAD\_9**

**SoKeyboardEvent::PAD\_ADD**

**SoKeyboardEvent::PAD\_SUBTRACT**\

**SoKeyboardEvent::PAD\_MULTIPLY**\

**SoKeyboardEvent::PAD\_DIVIDE**

**SoKeyboardEvent::PAD\_SPACE**

**SoKeyboardEvent::PAD\_TAB**

**SoKeyboardEvent::PAD\_INSERT**

**SoKeyboardEvent::PAD\_DELETE**

**SoKeyboardEvent::PAD\_PERIOD**

**SoKeyboardEvent::F1**	Function keys\
 **SoKeyboardEvent::F2**

**SoKeyboardEvent::F3**

**SoKeyboardEvent::F4**

**SoKeyboardEvent::F5**

**SoKeyboardEvent::F6**

**SoKeyboardEvent::F7**

**SoKeyboardEvent::F8**

**SoKeyboardEvent::F9**

**SoKeyboardEvent::F10**

**SoKeyboardEvent::F11**

**SoKeyboardEvent::F12**

**SoKeyboardEvent::BACKSPACE**	Miscellaneous\
 **SoKeyboardEvent::TAB**

**SoKeyboardEvent::RETURN**

**SoKeyboardEvent::ENTER**

**SoKeyboardEvent::PAUSE**

**SoKeyboardEvent::SCROLL\_LOCK**

**SoKeyboardEvent::ESCAPE**

**SoKeyboardEvent::DELETE**

**SoKeyboardEvent::PRINT**

**SoKeyboardEvent::INSERT**

**SoKeyboardEvent::NUM\_LOCK**

**SoKeyboardEvent::CAPS\_LOCK**

**SoKeyboardEvent::SHIFT\_LOCK**

**SoKeyboardEvent::SPACE**

**SoKeyboardEvent::APOSTROPHE**

**SoKeyboardEvent::COMMA**

**SoKeyboardEvent::MINUS**

**SoKeyboardEvent::PERIOD**

**SoKeyboardEvent::SLASH**

**SoKeyboardEvent::SEMICOLON**

**SoKeyboardEvent::EQUAL**

**SoKeyboardEvent::BRACKETLEFT**

**SoKeyboardEvent::BACKSLASH**

**SoKeyboardEvent::BRACKETRIGHT**\

**SoKeyboardEvent::GRAVE**

**}**

Methods from class SoKeyboardEvent:

	**SoKeyboardEvent()**\
 **static SoType**	**getClassTypeId()**\
 **void**	**setKey(SoKeyboardEvent::Key whichKey)**\
 **SoKeyboardEvent::Key**	**getKey() const**\
 **static SbBool**	**isKeyPressEvent(const SoEvent \*e, SoKeyboardEvent::Key whichKey)**\
 **static SbBool**	**isKeyReleaseEvent(const SoEvent \*e, SoKeyboardEvent::Key whichKey)**\
 **char**	**getPrintableCharacter() const**

Methods from class SoButtonEvent:

**void**	**setState(SoButtonEvent::State s)**\
 **SoButtonEvent::State**	**getState() const**

Methods from class SoEvent:

**virtual SoType**	**getTypeId() const**\
 **SbBool**	**isOfType(SoType type) const**\
 **void**	**setTime(SbTime t)**\
 **SbTime**	**getTime() const**\
 **void**	**setPosition(const SbVec2s &p)**\
 **const SbVec2s &**	**getPosition() const**\
 **const SbVec2s &**	**getPosition(const SbViewportRegion &vpRgn) const**\
 **const SbVec2f &**	**getNormalizedPosition(const SbViewportRegion &vpRgn) const**\
 **void**	**setShiftDown(SbBool isDown)**\
 **void**	**setCtrlDown(SbBool isDown)**\
 **void**	**setAltDown(SbBool isDown)**\
 **SbBool**	**wasShiftDown() const**\
 **SbBool**	**wasCtrlDown() const**\
 **SbBool**	**wasAltDown() const**

## DESCRIPTION

**SoKeyboardEvent** represents keyboard key press and release events in the Inventor event model.

## METHODS

	**SoKeyboardEvent()**\
 Constructor.

**static SoType**	**getClassTypeId()**\
 Return the type id for the **SoKeyboardEvent** class.

**void**	**setKey(SoKeyboardEvent::Key whichKey)**\
 **SoKeyboardEvent::Key**	**getKey() const**\
 Set and get which key generated the event.

**static SbBool**	**isKeyPressEvent(const SoEvent \*e, SoKeyboardEvent::Key whichKey)**\
 **static SbBool**	**isKeyReleaseEvent(const SoEvent \*e, SoKeyboardEvent::Key whichKey)**\
 Returns whether the passed event is a keyboard press or release event of the passed key. When **SoKeyboardEvent::ANY** is passed, this returns TRUE if the event represents a keyboard press or release of any key.

**char**	**getPrintableCharacter() const**\
 Convenience routine that returns the character representing the key, if it's printable. If not, this returns NULL ('\\0').

## SEE ALSO

**SoEvent, SoButtonEvent, SoLocation2Event, SoMotion3Event, SoMouseButtonEvent, SoSpaceballButtonEvent, SoHandleEventAction, SoEventCallback, SoSelection, SoInteraction, SoXtDevice**
