20 #ifndef __libgtkmm2ext_keyboard_h__
21 #define __libgtkmm2ext_keyboard_h__
27 #include <sigc++/signal.h>
29 #include <gtkmm/accelkey.h>
48 int set_state (
const XMLNode&,
int version);
50 virtual void setup_keybindings () = 0;
52 typedef std::vector<uint32_t>
State;
69 static const char* primary_modifier_name ();
70 static const char* secondary_modifier_name ();
71 static const char* tertiary_modifier_name ();
72 static const char* level4_modifier_name ();
73 static const char* copy_modifier_name ();
74 static const char* rangeselect_modifier_name ();
77 set_modifier (newval, PrimaryModifier);
80 set_modifier (newval, SecondaryModifier);
83 set_modifier (newval, TertiaryModifier);
86 set_modifier (newval, Level4Modifier);
89 set_modifier (newval, CopyModifier);
92 set_modifier (newval, RangeSelectModifier);
95 bool key_is_down (uint32_t keyval);
100 return (ev->state & RelevantModifierKeyMask) == 0;
104 return (ev->state & RelevantModifierKeyMask) == 0;
107 bool leave_window (GdkEventCrossing *ev, Gtk::Window*);
108 bool enter_window (GdkEventCrossing *ev, Gtk::Window*);
109 bool focus_in_window (GdkEventFocus *ev, Gtk::Window*);
110 bool focus_out_window (GdkEventFocus *ev, Gtk::Window*);
112 static bool modifier_state_contains (guint state, ModifierMask);
113 static bool modifier_state_equals (guint state, ModifierMask);
115 static bool no_modifiers_active (guint state);
117 static void set_snap_modifier (guint);
126 static void set_edit_button (guint);
128 static void set_edit_modifier(guint);
131 static void set_delete_button(guint);
133 static void set_delete_modifier(guint);
136 static void set_insert_note_button (guint);
138 static void set_insert_note_modifier(guint);
140 static bool is_edit_event (GdkEventButton*);
141 static bool is_delete_event (GdkEventButton*);
142 static bool is_insert_note_event (GdkEventButton*);
143 static bool is_context_menu_event (GdkEventButton*);
144 static bool is_button2_event (GdkEventButton*);
148 static bool some_magic_widget_has_focus ();
149 static void magic_widget_grab_focus ();
150 static void magic_widget_drop_focus ();
153 static void close_current_dialog ();
155 static void keybindings_changed ();
156 static void save_keybindings ();
157 static bool load_keybindings (std::string path);
158 static void set_can_save_keybindings (
bool yn);
162 int reset_bindings ();
165 bool operator() (
const Gtk::AccelKey a,
const Gtk::AccelKey b)
const {
166 if (a.get_key() != b.get_key()) {
167 return a.get_key() < b.get_key();
169 return a.get_mod() < b.get_mod();
200 static gint _snooper (GtkWidget*, GdkEventKey*, gpointer);
201 gint snooper (GtkWidget*, GdkEventKey*);
203 static void set_modifier (uint32_t newval, uint32_t& variable);
static bool bindings_changed_after_save_became_legal
static void set_secondary_modifier(uint32_t newval)
static std::map< Gtk::AccelKey, two_strings, AccelKeyLess > release_keys
static guint insert_note_mod
static std::map< std::string, std::string > binding_files
static guint delete_button()
static uint32_t GainFineScaleModifier
static Gtk::Window * get_current_window()
static uint32_t ScrollZoomVerticalModifier
static Keyboard * _the_keyboard
static uint32_t CopyModifier
std::pair< std::string, std::string > two_strings
static uint32_t Level4Modifier
static guint delete_modifier()
static ModifierMask snap_modifier()
static guint insert_note_button()
static void set_primary_modifier(uint32_t newval)
static uint32_t ScrollHorizontalModifier
std::vector< uint32_t > State
static guint button2_modifiers
static guint insert_note_but
static uint32_t TertiaryModifier
LIBGTKMM2EXT_API uint64_t Keyboard
static uint32_t PrimaryModifier
static bool no_modifier_keys_pressed(GdkEventButton *ev)
static void set_copy_modifier(uint32_t newval)
static uint32_t SecondaryModifier
static Keyboard & the_keyboard()
static void set_tertiary_modifier(uint32_t newval)
static void set_level4_modifier(uint32_t newval)
static GdkModifierType RelevantModifierKeyMask
static guint edit_modifier()
static std::string user_keybindings_path
static std::string current_binding_name()
static std::string _current_binding_name
static uint32_t ScrollZoomHorizontalModifier
static bool can_save_keybindings
static void set_range_select_modifier(uint32_t newval)
static bool no_modifier_keys_pressed(GdkEventKey *ev)
static bool _some_magic_widget_has_focus
static guint edit_button()
static Gtk::Window * current_window
static guint insert_note_modifier()
sigc::signal0< void > ZoomVerticalModifierReleased
static uint32_t RangeSelectModifier
static uint32_t GainExtraFineScaleModifier