This example shows how to register a function with the Key Map Manager, and bind it to a key event in a key map.
In this example we use the DtDeSharedState method setPerformanceOverlayOn(), and bind the key event "'" [Down] in the "Observer Frame" key map (the default).
- Get a reference to the input driver, which we need to access the Key Map Manager:
DtInputDriver& inputDriver =
- Get a reference to the Key Map Manager:
DtKeyMapManager& keyMapManager = DtKeyMapManager::instance(igApp.
de());
- Register the togglePerfOverlay() (and the application's instance of DtDisplayEngine) with the Key Map Manager, telling it to use "Toggle Performance Overlay" as the name of this function:
keyMapManager.addKeyFunction(
"Toggle Performance Overlay",
boost::bind(
&togglePerfOverlay, &igApp.
de()), DtKeyMapManager::Miscellaneous);
- Since the default key map is Observer Frame, add a key binding to that map. Of course, these last two steps could be omitted and instead use the Key Map Editor to create the key binding. Look up the key map:
DtKeyMap* obsFrame = keyMapManager.findKeyMap( "Observer Frame" );
- If the key map was found, bind the "'" key to the function named Toggle Performance Overlay. Note that the DtKeyMap (DtKeyMap.h) class has an addKeyMap() method that we could use directly, but the wrapper provided by the input driver provides some useful default parameters, making it a little easier to use:
if ( obsFrame )
{
inputDriver.addKeyBinding(obsFrame, DtKeyState::KEY_APOSTROPHE,
"Toggle Performance Overlay" );
}
Building the Example
VR-Vantage includes pre-built versions of the example application. To build it yourself, follow the instructions at Building VR-Vantage Examples, Applications, and Plug-ins.
Running the Example
This example is an application. You can run it by running ./bin64/exampleKeyMappage.exe (on Windows) or ./bin64/exampleKeyMappage (on Linux). For more information about running examples, please see Running Applications and Examples.
Example Source Files
exampleKeyMap.cxx
#include <boost/bind.hpp>
using namespace makVrv;
void togglePerfOverlay(
DtDe* de)
{
}
int main(int argc,char** argv)
{
if ( obsFrame )
{
"Toggle Performance Overlay" );
}
return 0;
}