mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 07:14:56 +01:00
Add API to query currently held modifiers keys
This commit is contained in:
parent
f1eb45e129
commit
3266b1acb0
2 changed files with 34 additions and 1 deletions
|
|
@ -114,6 +114,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
bool key_is_down (uint32_t keyval);
|
bool key_is_down (uint32_t keyval);
|
||||||
|
guint modifier_state ();
|
||||||
|
|
||||||
static GdkModifierType RelevantModifierKeyMask;
|
static GdkModifierType RelevantModifierKeyMask;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -476,6 +476,38 @@ Keyboard::key_is_down (uint32_t keyval)
|
||||||
return find (state.begin (), state.end (), keyval) != state.end ();
|
return find (state.begin (), state.end (), keyval) != state.end ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
guint
|
||||||
|
Keyboard::modifier_state ()
|
||||||
|
{
|
||||||
|
int mask = 0;
|
||||||
|
for (auto const& keyval : state) {
|
||||||
|
switch (keyval) {
|
||||||
|
case GDK_Meta_R:
|
||||||
|
case GDK_Meta_L:
|
||||||
|
mask |= GDK_MOD2_MASK;
|
||||||
|
break;
|
||||||
|
case GDK_Shift_R:
|
||||||
|
case GDK_Shift_L:
|
||||||
|
mask |= GDK_SHIFT_MASK;
|
||||||
|
break;
|
||||||
|
case GDK_Caps_Lock:
|
||||||
|
mask |= GDK_LOCK_MASK;
|
||||||
|
break;
|
||||||
|
case GDK_Alt_R:
|
||||||
|
case GDK_Alt_L:
|
||||||
|
mask |= GDK_MOD1_MASK;
|
||||||
|
break;
|
||||||
|
case GDK_Control_R:
|
||||||
|
case GDK_Control_L:
|
||||||
|
mask |= GDK_CONTROL_MASK;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return mask & RelevantModifierKeyMask;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Keyboard::enter_window (GdkEventCrossing*, Gtk::Window* win)
|
Keyboard::enter_window (GdkEventCrossing*, Gtk::Window* win)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue