This package uses the SDL library to grab keypresses. To do so, it opens a window where input is received. This window needs to be currently focused, otherwise this node will not receive any key presses. The package was forked from this GitHub repository and tested successfully by Rui P. Rocha in ROS2 Humble.
- Create a new workspace.
cd /path/to/your_ws/src
- Clone this repository
- (ssh)
git clone [email protected]:cmower/ros2-keyboard.git
- (https)
git clone https://github.com/cmower/ros2-keyboard.git
- Install SDL 1.2 with the command
sudo apt install libsdl1.2-dev
. cd /path/to/your_ws
- Install dependencies because this package depends on SDL 1.2 library
rosdep install -i --from-path src --rosdistro humble --ignore-src -y
6. colcon build --symlink-install
Publishes keyboard events when the window is focused.
- Published topics:
keydown
andkeyup
(keyboard_msgs/Key
) - Parameters
allow_repeat
(bool
): Enables or disables the keyboard repeat rate. Default isfalse
.repeat_delay
(int
): How long the key must be pressed before it begins repeating. Default isSDL_DEFAULT_REPEAT_DELAY
.repeat_interval
(int
): Key replay speed. Default isSDL_DEFAULT_REPEAT_INTERVAL
.
Converts keyboard events to a joy message.
- Published topic:
joy
(sensor_msgs/Joy
) - Subscribed topics:
keydown
andkeyup
(keyboard_msgs/Key
) - Parameters
config_file_name
(str
): File name for the configuration file. See here for an example.sampling_frequency
(int
): Rate (Hz) at whichjoy
messages are published. Default is50
.
in one terminal, launch the two nodes.
ros2 launch keyboard keyboard_to_joy.launch.py
In one terminal, start the keyboard
node.
ros2 run keyboard keyboard
In a second terminal, start the keyboard_to_joy.py
node.
ros2 run keyboard keyboard_to_joy.py --ros-args -p config_file_name:=/path/to/keyboard/config/example_config.yaml
Remember to replace /path/to
with the path to where the yaml
is located in your file system.