static uint32_t CopyModifier;
static uint32_t RangeSelectModifier;
+ static const char* primary_modifier_name ();
+ static const char* secondary_modifier_name ();
+ static const char* tertiary_modifier_name ();
+ static const char* level4_modifier_name ();
+ static const char* copy_modifier_name ();
+ static const char* rangeselect_modifier_name ();
+
static void set_primary_modifier (uint32_t newval) {
set_modifier (newval, PrimaryModifier);
}
static guint delete_modifier() { return delete_mod; }
static void set_delete_modifier(guint);
+ static guint insert_note_button() { return insert_note_but; }
+ static void set_insert_note_button (guint);
+ static guint insert_note_modifier() { return insert_note_mod; }
+ static void set_insert_note_modifier(guint);
+
static bool is_edit_event (GdkEventButton*);
static bool is_delete_event (GdkEventButton*);
+ static bool is_insert_note_event (GdkEventButton*);
static bool is_context_menu_event (GdkEventButton*);
static bool is_button2_event (GdkEventButton*);
static guint edit_mod;
static guint delete_but;
static guint delete_mod;
+ static guint insert_note_but;
+ static guint insert_note_mod;
static guint snap_mod;
static guint button2_modifiers;
static Gtk::Window* current_window;
guint Keyboard::edit_mod = GDK_CONTROL_MASK;
guint Keyboard::delete_but = 3;
guint Keyboard::delete_mod = GDK_SHIFT_MASK;
+guint Keyboard::insert_note_but = 3;
+guint Keyboard::insert_note_mod = GDK_CONTROL_MASK;
guint Keyboard::snap_mod = GDK_MOD3_MASK;
#ifdef GTKOSX
+
guint Keyboard::PrimaryModifier = GDK_META_MASK; // Command
guint Keyboard::SecondaryModifier = GDK_MOD1_MASK; // Alt/Option
guint Keyboard::TertiaryModifier = GDK_SHIFT_MASK; // Shift
guint Keyboard::CopyModifier = GDK_MOD1_MASK; // Alt/Option
guint Keyboard::RangeSelectModifier = GDK_SHIFT_MASK;
guint Keyboard::button2_modifiers = Keyboard::SecondaryModifier|Keyboard::Level4Modifier;
+
+const char* Keyboard::primary_modifier_name() { return _("Command"); }
+const char* Keyboard::secondary_modifier_name() { return _("Option"); }
+const char* Keyboard::tertiary_modifier_name() { return _("Shift"); }
+const char* Keyboard::level4_modifier_name() { return _("Control"); }
+const char* Keyboard::copy_modifier_name() { return _("Mod1"; ); }
+const char* Keyboard::rangeselect_modifier_name() { return _("Shift"); }
+
#else
+
guint Keyboard::PrimaryModifier = GDK_CONTROL_MASK; // Control
guint Keyboard::SecondaryModifier = GDK_MOD1_MASK; // Alt/Option
guint Keyboard::TertiaryModifier = GDK_SHIFT_MASK; // Shift
guint Keyboard::CopyModifier = GDK_CONTROL_MASK;
guint Keyboard::RangeSelectModifier = GDK_SHIFT_MASK;
guint Keyboard::button2_modifiers = 0; /* not used */
-#endif
+const char* Keyboard::primary_modifier_name() { return _("Control"); }
+const char* Keyboard::secondary_modifier_name() { return _("Alt"); }
+const char* Keyboard::tertiary_modifier_name() { return _("Shift"); }
+const char* Keyboard::level4_modifier_name() { return _("Meta"); }
+const char* Keyboard::copy_modifier_name() { return _("Control"); }
+const char* Keyboard::rangeselect_modifier_name() { return _("Shift"); }
+
+#endif
Keyboard* Keyboard::_the_keyboard = 0;
Gtk::Window* Keyboard::current_window = 0;
node->add_property ("delete-modifier", buf);
snprintf (buf, sizeof (buf), "%d", snap_mod);
node->add_property ("snap-modifier", buf);
+ snprintf (buf, sizeof (buf), "%d", insert_note_but);
+ node->add_property ("insert-note-button", buf);
+ snprintf (buf, sizeof (buf), "%d", insert_note_mod);
+ node->add_property ("insert-note-modifier", buf);
return *node;
}
sscanf (prop->value().c_str(), "%d", &snap_mod);
}
+ if ((prop = node.property ("insert-note-button")) != 0) {
+ sscanf (prop->value().c_str(), "%d", &insert_note_but);
+ }
+
+ if ((prop = node.property ("insert-note-modifier")) != 0) {
+ sscanf (prop->value().c_str(), "%d", &insert_note_mod);
+ }
+
return 0;
}
RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | delete_mod);
}
+void
+Keyboard::set_insert_note_button (guint but)
+{
+ insert_note_but = but;
+}
+
+void
+Keyboard::set_insert_note_modifier (guint mod)
+{
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~insert_note_mod);
+ insert_note_mod = mod;
+ RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | insert_note_mod);
+}
+
+
void
Keyboard::set_modifier (uint32_t newval, uint32_t& var)
{
((ev->state & RelevantModifierKeyMask) == Keyboard::edit_modifier());
}
+bool
+Keyboard::is_insert_note_event (GdkEventButton *ev)
+{
+ return (ev->type == GDK_BUTTON_PRESS || ev->type == GDK_BUTTON_RELEASE) &&
+ (ev->button == Keyboard::insert_note_button()) &&
+ ((ev->state & RelevantModifierKeyMask) == Keyboard::insert_note_modifier());
+}
+
bool
Keyboard::is_button2_event (GdkEventButton* ev)
{