mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 06:44:57 +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
|
|
@ -113,7 +113,8 @@ public:
|
|||
set_modifier (newval, RangeSelectModifier);
|
||||
}
|
||||
|
||||
bool key_is_down (uint32_t keyval);
|
||||
bool key_is_down (uint32_t keyval);
|
||||
guint modifier_state ();
|
||||
|
||||
static GdkModifierType RelevantModifierKeyMask;
|
||||
|
||||
|
|
|
|||
|
|
@ -476,6 +476,38 @@ Keyboard::key_is_down (uint32_t keyval)
|
|||
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
|
||||
Keyboard::enter_window (GdkEventCrossing*, Gtk::Window* win)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue