/** * @brief Process individual keyboard inputs. * * @param c keyboard input. */ void KeyOpCore::processKeyboardInput(char c) { /* * Arrow keys are a bit special, they are escape characters - meaning they * trigger a sequence of keycodes. In this case, 'esc-[-Keycode_xxx'. We * ignore the esc-[ and just parse the last one. So long as we avoid using * the last one for its actual purpose (e.g. left arrow corresponds to * esc-[-D) we can keep the parsing simple. */ switch (c) { case kobuki_msgs::KeyboardInput::KeyCode_Left: { incrementAngularVelocity(); break; } case kobuki_msgs::KeyboardInput::KeyCode_Right: { decrementAngularVelocity(); break; } case kobuki_msgs::KeyboardInput::KeyCode_Up: { incrementLinearVelocity(); break; } case kobuki_msgs::KeyboardInput::KeyCode_Down: { decrementLinearVelocity(); break; } case kobuki_msgs::KeyboardInput::KeyCode_Space: { resetVelocity(); break; } case 'q': { quit_requested = true; break; } case 'd': { disable(); break; } case 'e': { enable(); break; } default: { break; } } }
/** * @brief Process individual keyboard inputs. * * @param c keyboard input. */ void KeyOp::processKeyboardInput(char c) { /* * Arrow keys are a bit special, they are escape characters - meaning they * trigger a sequence of keycodes. In this case, 'esc-[-Keycode_xxx'. We * ignore the esc-[ and just parse the last one. So long as we avoid using * the last one for its actual purpose (e.g. left arrow corresponds to * esc-[-D) we can keep the parsing simple. */ switch (c) { case KEYCODE_LEFT: { incrementAngularVelocity(); break; } case KEYCODE_RIGHT: { decrementAngularVelocity(); break; } case KEYCODE_UP: { incrementLinearVelocity(); break; } case KEYCODE_DOWN: { decrementLinearVelocity(); break; } case KEYCODE_SPACE: { resetVelocity(); break; } case 'q': { quit_requested_ = true; break; } case 'd': { disable(); break; } case 'e': { enable(); break; } default: { break; } } }