gst-play: add some more key navigation mappings

And don't feed multi-character key descriptors to the
event handler, it won't be what it expects.
This commit is contained in:
Tim-Philipp Müller 2015-04-29 15:44:59 +01:00
parent 44e571c5e9
commit 5a8d1d2246

View file

@ -376,17 +376,30 @@ play_bus_msg (GstBus * bus, GstMessage * msg, gpointer user_data)
GstNavigationMessageType mtype = gst_navigation_message_get_type (msg); GstNavigationMessageType mtype = gst_navigation_message_get_type (msg);
if (mtype == GST_NAVIGATION_MESSAGE_EVENT) { if (mtype == GST_NAVIGATION_MESSAGE_EVENT) {
GstEvent *ev; GstEvent *ev;
if (gst_navigation_message_parse_event (msg, &ev)) { if (gst_navigation_message_parse_event (msg, &ev)) {
GstNavigationEventType e_type = gst_navigation_event_get_type (ev); GstNavigationEventType e_type = gst_navigation_event_get_type (ev);
switch (e_type) { switch (e_type) {
case GST_NAVIGATION_EVENT_KEY_PRESS: case GST_NAVIGATION_EVENT_KEY_PRESS:
{ {
const gchar *key; const gchar *key;
if (gst_navigation_event_parse_key_event (ev, &key)) { if (gst_navigation_event_parse_key_event (ev, &key)) {
GST_INFO ("Key press: %s", key);
if (strcmp (key, "Left") == 0) if (strcmp (key, "Left") == 0)
key = GST_PLAY_KB_ARROW_LEFT; key = GST_PLAY_KB_ARROW_LEFT;
else if (strcmp (key, "Right") == 0) else if (strcmp (key, "Right") == 0)
key = GST_PLAY_KB_ARROW_RIGHT; key = GST_PLAY_KB_ARROW_RIGHT;
else if (strcmp (key, "Up") == 0)
key = GST_PLAY_KB_ARROW_UP;
else if (strcmp (key, "Down") == 0)
key = GST_PLAY_KB_ARROW_DOWN;
else if (strcmp (key, "space") == 0)
key = " ";
else if (strlen (key) > 1)
break;
keyboard_cb (key, user_data); keyboard_cb (key, user_data);
} }
break; break;