#include "gtkmm2ext/bindings.h"
#include "gtkmm2ext/keyboard.h"
#include "gtkmm2ext/debug.h"
+#include "gtkmm2ext/utils.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace PBD;
using namespace Gtk;
#ifdef __APPLE__
-uint Keyboard::PrimaryModifier = GDK_META_MASK|GDK_MOD2_MASK; // Command
+uint Keyboard::PrimaryModifier = GDK_MOD2_MASK; // Command
guint Keyboard::SecondaryModifier = GDK_CONTROL_MASK; // Control
guint Keyboard::TertiaryModifier = GDK_SHIFT_MASK; // Shift
guint Keyboard::Level4Modifier = GDK_MOD1_MASK; // Alt/Option
const char* Keyboard::tertiary_modifier_name() { return S_("Key|Shift"); }
const char* Keyboard::level4_modifier_name() { return _("Option"); }
+const char* Keyboard::primary_modifier_short_name() { return _("Cmd"); }
+const char* Keyboard::secondary_modifier_short_name() { return _("Ctrl"); }
+const char* Keyboard::tertiary_modifier_short_name() { return S_("Key|Shift"); }
+const char* Keyboard::level4_modifier_short_name() { return _("Opt"); }
+
guint Keyboard::snap_mod = Keyboard::Level4Modifier|Keyboard::TertiaryModifier; // XXX this is probably completely wrong
guint Keyboard::snap_delta_mod = Keyboard::Level4Modifier;
const char* Keyboard::tertiary_modifier_name() { return S_("Key|Shift"); }
const char* Keyboard::level4_modifier_name() { return _("Windows"); }
+const char* Keyboard::primary_modifier_short_name() { return _("Ctrl"); }
+const char* Keyboard::secondary_modifier_short_name() { return _("Alt"); }
+const char* Keyboard::tertiary_modifier_short_name() { return S_("Key|Shift"); }
+const char* Keyboard::level4_modifier_short_name() { return _("Win"); }
+
guint Keyboard::snap_mod = Keyboard::SecondaryModifier;
guint Keyboard::snap_delta_mod = Keyboard::SecondaryModifier|Keyboard::Level4Modifier;
int
Keyboard::set_state (const XMLNode& node, int /*version*/)
{
- const XMLProperty* prop;
+ XMLProperty const * prop;
if ((prop = node.property ("copy-modifier")) != 0) {
sscanf (prop->value().c_str(), "%d", &CopyModifier);
return ((Keyboard *) data)->snooper (widget, event);
}
-static string
-show_gdk_event_state (int state)
-{
- string s;
- if (state & GDK_SHIFT_MASK) {
- s += "+SHIFT";
- }
- if (state & GDK_LOCK_MASK) {
- s += "+LOCK";
- }
- if (state & GDK_CONTROL_MASK) {
- s += "+CONTROL";
- }
- if (state & GDK_MOD1_MASK) {
- s += "+MOD1";
- }
- if (state & GDK_MOD2_MASK) {
- s += "+MOD2";
- }
- if (state & GDK_MOD3_MASK) {
- s += "+MOD3";
- }
- if (state & GDK_MOD4_MASK) {
- s += "+MOD4";
- }
- if (state & GDK_MOD5_MASK) {
- s += "+MOD5";
- }
- if (state & GDK_BUTTON1_MASK) {
- s += "+BUTTON1";
- }
- if (state & GDK_BUTTON2_MASK) {
- s += "+BUTTON2";
- }
- if (state & GDK_BUTTON3_MASK) {
- s += "+BUTTON3";
- }
- if (state & GDK_BUTTON4_MASK) {
- s += "+BUTTON4";
- }
- if (state & GDK_BUTTON5_MASK) {
- s += "+BUTTON5";
- }
- if (state & GDK_SUPER_MASK) {
- s += "+SUPER";
- }
- if (state & GDK_HYPER_MASK) {
- s += "+HYPER";
- }
- if (state & GDK_META_MASK) {
- s += "+META";
- }
- if (state & GDK_RELEASE_MASK) {
- s += "+RELEASE";
- }
-
- return s;
-}
gint
Keyboard::snooper (GtkWidget *widget, GdkEventKey *event)
current_window = 0;
}
} else {
+ DEBUG_TRACE (DEBUG::Keyboard, "LEAVE window without event\n");
current_window = 0;
}
state.clear ();
current_window = 0;
} else {
- current_window = 0;
+ if (win == current_window) {
+ current_window = 0;
+ }
}
DEBUG_TRACE (DEBUG::Keyboard, string_compose ("Foucusing out window, title = %1\n", win->get_title()));
XMLNodeList const& children = tree.root()->children();
for (XMLNodeList::const_iterator i = children.begin(); i != children.end(); ++i) {
- if ((*i)->name() == X_("Bindings")) {
- XMLProperty const* name = (*i)->property (X_("name"));
+ XMLNode const * child = *i;
+ if (child->name() == X_("Bindings")) {
+ XMLProperty const* name = child->property (X_("name"));
if (!name) {
warning << _("Keyboard binding found without a name") << endmsg;
continue;