7 #include <gdk/gdkkeysyms.h>
13 #define NEEDS_TRANSLATION LIVES_SPECIAL_MASK
21 static void handle_omc_events(
void) {
33 char *
string = js_mangle();
44 if (
prefs->use_alsa_midi) midi_check_rate = 1;
49 for (i = 0; i < midi_check_rate; i++) {
61 #endif // OMC_MIDI_IMPL
69 static int priority = G_PRIORITY_DEFAULT;
71 boolean needs_check =
FALSE;
84 #ifdef ENABLE_JACK_TRANSPORT
85 if (
mainw->jack_trans_poll) {
103 lives_osc_poll(NULL);
109 if (priority != G_PRIORITY_DEFAULT) {
110 g_source_set_priority(g_main_context_find_source_by_id(NULL,
mainw->
kb_timer), (priority = G_PRIORITY_DEFAULT));
114 if (priority != G_PRIORITY_DEFAULT_IDLE) {
115 g_source_set_priority(g_main_context_find_source_by_id(NULL,
mainw->
kb_timer), (priority = G_PRIORITY_LOW));
126 LiVESFilterReturn filter_func(LiVESXXEvent *xevent, LiVESXEvent *event, livespointer data) {
128 uint32_t modifiers = 0;
129 return LIVES_FILTER_CONTINUE;
135 boolean ret =
pl_key_function(event->type == LIVES_KEY_PRESS, event->keyval, event->state);
143 if (
cfile->pb_fps == 0.)
return;
161 keymod = keymod & ~(LIVES_NUMLOCK_MASK);
195 unicode = LIVES_KEY_Space;
198 unicode = LIVES_KEY_BackSpace;
201 unicode = LIVES_KEY_Return;
204 unicode = LIVES_KEY_q;
207 unicode = LIVES_KEY_1;
210 unicode = LIVES_KEY_2;
213 unicode = LIVES_KEY_3;
216 unicode = LIVES_KEY_4;
219 unicode = LIVES_KEY_5;
222 unicode = LIVES_KEY_6;
225 unicode = LIVES_KEY_7;
228 unicode = LIVES_KEY_8;
231 unicode = LIVES_KEY_9;
234 unicode = LIVES_KEY_0;
237 unicode = LIVES_KEY_F1;
240 unicode = LIVES_KEY_F2;
243 unicode = LIVES_KEY_F3;
246 unicode = LIVES_KEY_F4;
249 unicode = LIVES_KEY_F5;
252 unicode = LIVES_KEY_F6;
255 unicode = LIVES_KEY_F7;
258 unicode = LIVES_KEY_F8;
261 unicode = LIVES_KEY_F9;
264 unicode = LIVES_KEY_F10;
267 unicode = LIVES_KEY_F11;
270 unicode = LIVES_KEY_F12;
274 unicode = LIVES_KEY_Page_Up;
278 unicode = LIVES_KEY_Page_Down;
284 unicode = LIVES_KEY_Left;
288 unicode = LIVES_KEY_Right;
292 unicode = LIVES_KEY_Up;
296 unicode = LIVES_KEY_Down;
301 if (down && (unicode == LIVES_KEY_Left || unicode == LIVES_KEY_Right
302 || unicode == LIVES_KEY_Up || unicode == LIVES_KEY_Down) &&
303 (keymod & LIVES_CONTROL_MASK)) {
306 if (keymod & LIVES_ALT_MASK) {
309 if (keymod & LIVES_SHIFT_MASK) {
314 if (down && (unicode == LIVES_KEY_Less || unicode == LIVES_KEY_Greater)) {
316 if (keymod & LIVES_SHIFT_MASK) {
322 if (unicode == LIVES_KEY_Return || unicode == 13) unicode =
'\n';
323 if (unicode == LIVES_KEY_BackSpace) unicode = 8;
325 else if (unicode > 0 && unicode < 256) {
332 if (unicode == 8 && strlen(cval) > 0) {
333 cval[strlen(cval) - 1] = 0;
334 nval = lives_strdup(cval);
358 boolean slower_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
359 livespointer user_data) {
361 if (!(mod & LIVES_SPECIAL_MASK))
return TRUE;
368 boolean less_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
369 livespointer user_data) {
371 if (!(mod & LIVES_SPECIAL_MASK))
return TRUE;
377 boolean faster_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
378 livespointer user_data) {
380 if (!(mod & LIVES_SPECIAL_MASK))
return TRUE;
387 boolean more_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
388 livespointer user_data) {
390 if (!(mod & LIVES_SPECIAL_MASK))
return TRUE;
396 boolean skip_back_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
397 livespointer user_data) {
405 boolean skip_forward_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
406 livespointer user_data) {
414 boolean volup_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
415 livespointer user_data) {
417 if (!(mod & LIVES_SPECIAL_MASK))
return TRUE;
423 boolean voldown_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
424 livespointer user_data) {
426 if (!(mod & LIVES_SPECIAL_MASK))
return TRUE;
432 boolean stop_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
433 livespointer user_data) {
439 boolean fullscreen_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
440 livespointer user_data) {
446 boolean sepwin_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
447 livespointer user_data) {
453 boolean loop_cont_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
454 livespointer user_data) {
460 boolean ping_pong_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
461 livespointer user_data) {
467 boolean fade_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
468 livespointer user_data) {
474 boolean showfct_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
475 livespointer user_data) {
481 boolean showsubs_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
482 livespointer user_data) {
488 boolean loop_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
489 livespointer user_data) {
495 boolean dblsize_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
496 livespointer user_data) {
502 boolean rec_callback(LiVESAccelGroup *group, LiVESWidgetObject *obj, uint32_t keyval, LiVESXModifierType mod,
503 livespointer user_data) {