properly fake/forward keyboard events from video-monitor
This commit is contained in:
parent
85ceefd70a
commit
d4a656fc35
|
@ -21,9 +21,11 @@
|
||||||
#include "pbd/convert.h"
|
#include "pbd/convert.h"
|
||||||
#include "gui_thread.h"
|
#include "gui_thread.h"
|
||||||
#include "ardour_ui.h"
|
#include "ardour_ui.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "public_editor.h"
|
#include "public_editor.h"
|
||||||
|
#include "editor.h"
|
||||||
#include "video_monitor.h"
|
#include "video_monitor.h"
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
@ -248,33 +250,33 @@ VideoMonitor::is_started ()
|
||||||
void
|
void
|
||||||
VideoMonitor::forward_keyevent (unsigned int keyval)
|
VideoMonitor::forward_keyevent (unsigned int keyval)
|
||||||
{
|
{
|
||||||
#if 0 // TODO just 'fake' keyboard input
|
Editor* ed = dynamic_cast<Editor*>(&PublicEditor::instance());
|
||||||
GdkEventKey ev;
|
if (!ed) return;
|
||||||
ev.type = GDK_KEY_PRESS;
|
|
||||||
ev.window = NULL; // XXX
|
|
||||||
ev.send_event = TRUE;
|
|
||||||
ev.time = 0;
|
|
||||||
ev.state = 0;
|
|
||||||
ev.keyval = keyval;
|
|
||||||
ev.length = 1;
|
|
||||||
ev.string = NULL;
|
|
||||||
ev.hardware_keycode = 0;
|
|
||||||
ev.group = 0;
|
|
||||||
|
|
||||||
PublicEditor::instance().on_key_press_event(&ev);
|
GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET(ed->gobj()));
|
||||||
ev.type = GDK_KEY_RELEASE;
|
GdkKeymap *keymap = gdk_keymap_get_for_display (display);
|
||||||
PublicEditor::instance().on_key_press_event(&ev);
|
GdkKeymapKey *keymapkey = NULL;
|
||||||
#else
|
gint n_keys;
|
||||||
if (keyval == GDK_KEY_space) {
|
|
||||||
if(_session->transport_rolling ()) {
|
if (!gdk_keymap_get_entries_for_keyval(keymap, keyval, &keymapkey, &n_keys)) return;
|
||||||
_session->request_transport_speed (0.0);
|
if (n_keys !=1) { g_free(keymapkey); return;}
|
||||||
} else {
|
|
||||||
_session->request_transport_speed (1.0f);
|
GdkEventKey ev;
|
||||||
}
|
ev.type = GDK_KEY_PRESS;
|
||||||
} else if (keyval == GDK_KEY_BackSpace) {
|
ev.window = ed->get_window()->gobj();
|
||||||
_session->goto_start ();
|
ev.send_event = FALSE;
|
||||||
}
|
ev.time = 0;
|
||||||
#endif
|
ev.state = 0;
|
||||||
|
ev.keyval = keyval;
|
||||||
|
ev.length = 0;
|
||||||
|
ev.string = (gchar*) "";
|
||||||
|
ev.hardware_keycode = keymapkey[0].keycode;
|
||||||
|
ev.group = keymapkey[0].group;
|
||||||
|
g_free(keymapkey);
|
||||||
|
|
||||||
|
forward_key_press(&ev);
|
||||||
|
ev.type = GDK_KEY_RELEASE;
|
||||||
|
forward_key_press(&ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in New Issue
Block a user