summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor.bindings205
-rw-r--r--gtk2_ardour/editor.cc4
-rw-r--r--gtk2_ardour/editor.h5
-rw-r--r--gtk2_ardour/editor_actions.cc24
-rw-r--r--gtk2_ardour/mixer.bindings2
5 files changed, 239 insertions, 1 deletions
diff --git a/gtk2_ardour/editor.bindings b/gtk2_ardour/editor.bindings
new file mode 100644
index 0000000000..0e63a91780
--- /dev/null
+++ b/gtk2_ardour/editor.bindings
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Bindings name="ardour-editor">
+ <Press>
+ <Binding action="Editor/temporal-zoom-in" key="equal"/>
+ <Binding action="Editor/temporal-zoom-out" key="minus"/>
+ <Binding action="Editor/edit-cursor-to-previous-region-sync" key="apostrophe"/>
+ <Binding action="Editor/edit-cursor-to-next-region-sync" key="semicolon"/>
+ <Binding action="Editor/cycle-edit-point" key="grave"/>
+ <Binding action="Editor/cycle-edit-point-with-marker" key="Primary-asciicircum"/>
+ <Binding action="Editor/move-range-start-to-previous-region-boundary" key="less"/>
+ <Binding action="Editor/move-range-start-to-next-region-boundary" key="Primary-less"/>
+ <Binding action="Editor/move-range-end-to-previous-region-boundary" key="Primary-greater"/>
+ <Binding action="Editor/move-range-end-to-next-region-boundary" key="greater"/>
+ <Binding action="Transport/ToggleRoll" key="space"/>
+ <Binding action="Editor/play-edit-range" key="Secondary-space"/>
+ <Binding action="Editor/play-from-edit-point-and-return" key="Level4-space"/>
+ <Binding action="Transport/ToggleRollMaybe" key="Primary-Secondary-space"/>
+ <Binding action="Transport/ToggleRollForgetCapture" key="Primary-space"/>
+ <Binding action="Transport/record-roll" key="Tertiary-space"/>
+ <Binding action="Region/set-fade-in-length" key="slash"/>
+ <Binding action="Region/toggle-region-fade-out" key="Primary-slash"/>
+ <Binding action="Region/set-fade-out-length" key="backslash"/>
+ <Binding action="Region/toggle-region-fade-out" key="Primary-backslash"/>
+ <Binding action="Region/trim-from-start" key="Tertiary-braceleft"/>
+ <Binding action="Region/trim-to-end" key="Tertiary-braceright"/>
+ <Binding action="Editor/trim-to-previous-region" key="Primary-j"/>
+ <Binding action="Editor/trim-to-next-region" key="Primary-k"/>
+ <Binding action="Editor/set-loop-from-edit-range" key="bracketright"/>
+ <Binding action="Region/set-loop-from-region" key="Secondary-bracketright"/>
+ <Binding action="Editor/set-punch-from-edit-range" key="bracketleft"/>
+ <Binding action="Region/set-punch-from-region" key="Secondary-bracketleft"/>
+ <Binding action="Region/boost-region-gain" key="asciicircum"/>
+ <Binding action="Region/cut-region-gain" key="ampersand"/>
+ <Binding action="Common/Quit" key="Primary-q"/>
+ <Binding action="Region/quantize-region" key="q"/>
+ <Binding action="MouseMode/toggle-internal-edit" key="e"/>
+ <Binding action="Editor/select-all-before-edit-cursor" key="Primary-e"/>
+ <Binding action="Region/export-region" key="Primary-Level4-e"/>
+ <Binding action="Main/ExportSession" key="Level4-e"/>
+ <Binding action="Editor/select-all-after-edit-cursor" key="Primary-Tertiary-e"/>
+ <Binding action="Editor/show-editor-mixer" key="Tertiary-e"/>
+ <Binding action="Common/goto-editor" key="Secondary-e"/>
+ <Binding action="MouseMode/set-mouse-mode-range" key="r"/>
+ <Binding action="Editor/redo" key="Primary-r"/>
+ <Binding action="Region/reverse-region" key="Secondary-r"/>
+ <Binding action="Transport/Record" key="Tertiary-r"/>
+ <Binding action="MouseMode/set-mouse-mode-timefx" key="t"/>
+ <Binding action="Region/pitch-shift-region" key="Secondary-t"/>
+ <Binding action="Editor/insert-time" key="Primary-t"/>
+ <Binding action="MouseMode/set-mouse-mode-object-range" key="y"/>
+ <Binding action="Editor/select-all-between-cursors" key="Primary-u"/>
+ <Binding action="Editor/select-all-within-cursors" key="u"/>
+ <Binding action="Region/insert-region-from-region-list" key="i"/>
+ <Binding action="Editor/invert-selection" key="Tertiary-i"/>
+ <Binding action="Editor/addExistingAudioFiles" key="Secondary-i"/>
+ <Binding action="MouseMode/set-mouse-mode-object" key="o"/>
+ <Binding action="Main/Open" key="Primary-o"/>
+ <Binding action="Main/Recent" key="Primary-Tertiary-o"/>
+ <Binding action="Common/ToggleOptionsEditor" key="Secondary-o"/>
+ <Binding action="Region/naturalize-region" key="Secondary-o"/>
+ <Binding action="Editor/set-playhead" key="p"/>
+ <Binding action="Editor/select-all-before-playhead" key="Primary-p"/>
+ <Binding action="Common/toggle-audio-connection-manager" key="Secondary-p"/>
+ <Binding action="Common/toggle-midi-connection-manager" key="Secondary-Tertiary-p"/>
+ <Binding action="MIDI/panic" key="Primary-Secondary-p"/>
+ <Binding action="Editor/select-all-after-playhead" key="Tertiary-Primary-p"/>
+ <Binding action="Region/align-regions-sync-relative" key="a"/>
+ <Binding action="Editor/select-all" key="Primary-a"/>
+ <Binding action="Region/align-regions-end" key="Secondary-a"/>
+ <Binding action="Region/align-regions-sync" key="Tertiary-a"/>
+ <Binding action="Region/align-regions-start" key="Primary-Level4-a"/>
+ <Binding action="Region/align-regions-start-relative" key="Level4-a"/>
+ <Binding action="Region/split-region" key="s"/>
+ <Binding action="Common/Save" key="Primary-s"/>
+ <Binding action="Main/Snapshot" key="Primary-Tertiary-s"/>
+ <Binding action="Editor/track-solo-toggle" key="Secondary-s"/>
+ <Binding action="Region/duplicate-region" key="d"/>
+ <Binding action="Region/multi-duplicate-region" key="Tertiary-d"/>
+ <Binding action="Editor/select-all-in-punch-range" key="Primary-d"/>
+ <Binding action="Editor/fit-tracks" key="f"/>
+ <Binding action="Editor/toggle-follow-playhead" key="Primary-f"/>
+ <Binding action="Region/show-rhythm-ferret" key="Secondary-f"/>
+ <Binding action="MouseMode/set-mouse-mode-gain" key="g"/>
+ <Binding action="Region/play-selected-regions" key="h"/>
+ <Binding action="Region/trim-front" key="j"/>
+ <Binding action="Region/trim-back" key="k"/>
+ <Binding action="Common/ToggleKeyEditor" key="Secondary-k"/>
+ <Binding action="Transport/Loop" key="l"/>
+ <Binding action="Editor/select-all-in-loop-range" key="Primary-l"/>
+ <Binding action="Common/ToggleLocations" key="Secondary-l"/>
+ <Binding action="MouseMode/set-mouse-mode-zoom" key="z"/>
+ <Binding action="Editor/undo" key="Primary-z"/>
+ <Binding action="Editor/zoom-to-region" key="Primary-Secondary-z"/>
+ <Binding action="Editor/zoom-to-region-both-axes" key="Secondary-z"/>
+ <Binding action="Editor/toggle-zoom" key="Tertiary-z"/>
+ <Binding action="Editor/editor-cut" key="Primary-x"/>
+ <Binding action="Editor/editor-copy" key="Primary-c"/>
+ <Binding action="Common/ToggleColorManager" key="Secondary-c"/>
+ <Binding action="Region/set-region-sync-position" key="v"/>
+ <Binding action="Editor/editor-paste" key="Primary-v"/>
+ <Binding action="Editor/brush-at-mouse" key="Primary-b"/>
+ <Binding action="Editor/track-record-enable-toggle" key="Secondary-b"/>
+ <Binding action="Common/ToggleBigClock" key="Secondary-b"/>
+ <Binding action="Region/normalize-region" key="n"/>
+ <Binding action="Main/AddTrackBus" key="Primary-Tertiary-n"/>
+ <Binding action="Main/New" key="Primary-n"/>
+ <Binding action="Region/toggle-region-mute" key="Primary-m"/>
+ <Binding action="Common/toggle-mixer-on-top" key="Secondary-m"/>
+ <Binding action="Editor/step-tracks-up" key="uparrow"/>
+ <Binding action="Transport/TransitionToRoll" key="Tertiary-uparrow"/>
+ <Binding action="Editor/select-prev-route" key="Secondary-uparrow"/>
+ <Binding action="Editor/move-selected-tracks-up" key="Primary-uparrow"/>
+ <Binding action="Editor/step-tracks-down" key="downarrow"/>
+ <Binding action="Transport/TransitionToReverse" key="Tertiary-downarrow"/>
+ <Binding action="Editor/select-next-route" key="Secondary-downarrow"/>
+ <Binding action="Editor/move-selected-tracks-down" key="Primary-downarrow"/>
+ <Binding action="Editor/playhead-to-previous-region-boundary" key="leftarrow"/>
+ <Binding action="Editor/playhead-to-previous-region-boundary-noselection" key="Level4-leftarrow"/>
+ <Binding action="Editor/playhead-to-previous-region-sync" key="Primary-Secondary-leftarrow"/>
+ <Binding action="Editor/tab-to-transient-backwards" key="Primary-leftarrow"/>
+ <Binding action="Editor/nudge-playhead-backward" key="Secondary-leftarrow"/>
+ <Binding action="Editor/playhead-backward-to-grid" key="Tertiary-Level4-leftarrow"/>
+ <Binding action="Transport/Rewind" key="Tertiary-leftarrow"/>
+ <Binding action="Editor/selected-marker-to-previous-region-boundary" key="Primary-Tertiary-leftarrow"/>
+ <Binding action="Editor/playhead-to-next-region-boundary" key="rightarrow"/>
+ <Binding action="Editor/playhead-to-next-region-boundary-noselection" key="Level4-rightarrow"/>
+ <Binding action="Editor/playhead-to-next-region-sync" key="Primary-Secondary-rightarrow"/>
+ <Binding action="Editor/tab-to-transient-forwards" key="Primary-rightarrow"/>
+ <Binding action="Editor/nudge-playhead-forward" key="Secondary-rightarrow"/>
+ <Binding action="Editor/playhead-forward-to-grid" key="Tertiary-Level4-rightarrow"/>
+ <Binding action="Transport/Forward" key="Tertiary-rightarrow"/>
+ <Binding action="Editor/selected-marker-to-next-region-boundary" key="Primary-Tertiary-rightarrow"/>
+ <Binding action="Editor/scroll-tracks-down" key="Page_Down"/>
+ <Binding action="Editor/scroll-tracks-up" key="Page_Up"/>
+ <Binding action="Transport/GotoStart" key="Home"/>
+ <Binding action="Transport/GotoEnd" key="End"/>
+ <Binding action="Editor/editor-delete" key="Delete"/>
+ <Binding action="Editor/playhead-to-edit" key="Return"/>
+ <Binding action="Editor/edit-to-playhead" key="Secondary-Return"/>
+ <Binding action="Editor/remove-last-capture" key="Primary-Delete"/>
+ <Binding action="Editor/escape" key="Escape"/>
+ <Binding action="Region/nudge-backward" key="KP_Subtract"/>
+ <Binding action="Editor/nudge-next-backward" key="Primary-KP_Subtract"/>
+ <Binding action="Editor/jump-forward-to-mark" key="Primary-KP_Right"/>
+ <Binding action="Editor/jump-backward-to-mark" key="Primary-KP_Left"/>
+ <Binding action="Region/nudge-forward" key="KP_Add"/>
+ <Binding action="Editor/nudge-next-forward" key="Primary-KP_Add"/>
+ <Binding action="Editor/start-range" key="Primary-KP_Down"/>
+ <Binding action="Editor/finish-range" key="Primary-KP_Up"/>
+ <Binding action="Editor/finish-add-range" key="Tertiary-Primary-KP_Up"/>
+ <Binding action="Editor/add-location-from-playhead" key="KP_Enter"/>
+ <Binding action="Transport/focus-on-clock" key="KP_Divide"/>
+ <Binding action="Transport/GotoZero" key="KP_0"/>
+ <Binding action="Editor/goto-mark-1" key="KP_1"/>
+ <Binding action="Editor/goto-mark-2" key="KP_2"/>
+ <Binding action="Editor/goto-mark-3" key="KP_3"/>
+ <Binding action="Editor/goto-mark-4" key="KP_4"/>
+ <Binding action="Editor/goto-mark-5" key="KP_5"/>
+ <Binding action="Editor/goto-mark-6" key="KP_6"/>
+ <Binding action="Editor/goto-mark-7" key="KP_7"/>
+ <Binding action="Editor/goto-mark-8" key="KP_8"/>
+ <Binding action="Editor/goto-mark-9" key="KP_9"/>
+ <Binding action="Editor/edit-cursor-to-range-start" key="F1"/>
+ <Binding action="Editor/edit-cursor-to-range-end" key="F2"/>
+ <Binding action="Editor/crop" key="F3"/>
+ <Binding action="Editor/editor-separate" key="F4"/>
+ <Binding action="Editor/pitch-shift-region" key="F5"/>
+ <Binding action="Editor/select-range-between-cursors" key="F6"/>
+ <Binding action="Common/ToggleMaximalEditor" key="F11"/>
+ <Binding action="Editor/save-visual-state-1" key="Primary-F1"/>
+ <Binding action="Editor/save-visual-state-2" key="Primary-F2"/>
+ <Binding action="Editor/save-visual-state-3" key="Primary-F3"/>
+ <Binding action="Editor/save-visual-state-4" key="Primary-F4"/>
+ <Binding action="Editor/save-visual-state-5" key="Primary-F5"/>
+ <Binding action="Editor/save-visual-state-6" key="Primary-F6"/>
+ <Binding action="Editor/save-visual-state-7" key="Primary-F7"/>
+ <Binding action="Editor/save-visual-state-8" key="Primary-F8"/>
+ <Binding action="Editor/save-visual-state-9" key="Primary-F9"/>
+ <Binding action="Editor/save-visual-state-10" key="Primary-F10"/>
+ <Binding action="Editor/save-visual-state-11" key="Primary-F11"/>
+ <Binding action="Editor/save-visual-state-12" key="Primary-F12"/>
+ <Binding action="Editor/cycle-snap-mode" key="2"/>
+ <Binding action="Editor/cycle-snap-choice" key="3"/>
+ <Binding action="Editor/step-mouse-mode" key="4"/>
+ <Binding action="Transport/ToggleAutoReturn" key="5"/>
+ <Binding action="Transport/ToggleClick" key="6"/>
+ <Binding action="Editor/set-tempo-from-region" key="9"/>
+ <Binding action="Editor/set-tempo-from-edit-range" key="0"/>
+ </Press>
+ <Release>
+ <Binding action="Editor/goto-visual-state-1" key="Primary-F1"/>
+ <Binding action="Editor/goto-visual-state-2" key="Primary-F2"/>
+ <Binding action="Editor/goto-visual-state-3" key="Primary-F3"/>
+ <Binding action="Editor/goto-visual-state-4" key="Primary-F4"/>
+ <Binding action="Editor/goto-visual-state-5" key="Primary-F5"/>
+ <Binding action="Editor/goto-visual-state-6" key="Primary-F6"/>
+ <Binding action="Editor/goto-visual-state-7" key="Primary-F7"/>
+ <Binding action="Editor/goto-visual-state-8" key="Primary-F8"/>
+ <Binding action="Editor/goto-visual-state-9" key="Primary-F9"/>
+ <Binding action="Editor/goto-visual-state-10" key="Primary-F10"/>
+ <Binding action="Editor/goto-visual-state-11" key="Primary-F11"/>
+ <Binding action="Editor/goto-visual-state-12" key="Primary-F12"/>
+ </Release>
+</Bindings>
+
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 0e4b4dfdd4..8bfa7aa147 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -637,6 +637,10 @@ Editor::Editor ()
/* register actions now so that set_state() can find them and set toggles/checks etc */
register_actions ();
+ /* when we start using our own keybinding system for the editor, this
+ * will be uncommented
+ */
+ // load_bindings ();
setup_toolbar ();
setup_midi_toolbar ();
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index ea8aa02d2b..7d7c38c30b 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -42,6 +42,7 @@
#include "gtkmm2ext/click_box.h"
#include "gtkmm2ext/dndtreeview.h"
#include "gtkmm2ext/stateful_button.h"
+#include "gtkmm2ext/bindings.h"
#include "pbd/stateful.h"
#include "pbd/signals.h"
@@ -1069,6 +1070,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void register_actions ();
void register_region_actions ();
+ void load_bindings ();
+ Gtkmm2ext::ActionMap editor_action_map;
+ Gtkmm2ext::Bindings key_bindings;
+
int ensure_cursor (framepos_t* pos);
void cut_copy (Editing::CutCopyOp);
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index 0d5534a055..a149dba796 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -20,9 +20,15 @@
#include <gio/gio.h>
#include <gtk/gtkiconfactory.h>
+
+#include "pbd/filesystem.h"
+#include "pbd/file_utils.h"
+#include "pbd/search_path.h"
+
#include "gtkmm2ext/tearoff.h"
#include "ardour/ardour.h"
+#include "ardour/filesystem_paths.h"
#include "ardour/profile.h"
#include "ardour/session.h"
@@ -617,6 +623,24 @@ Editor::register_actions ()
}
void
+Editor::load_bindings ()
+{
+ /* XXX move this to a better place */
+
+ key_bindings.set_action_map (editor_action_map);
+
+ sys::path binding_file;
+ SearchPath spath = ardour_search_path() + user_config_directory() + system_config_search_path();
+
+ if (find_file_in_search_path (spath, "editor.bindings", binding_file)) {
+ key_bindings.load (binding_file.to_string());
+ info << string_compose (_("Loaded editor bindings from %1"), binding_file.to_string()) << endmsg;
+ } else {
+ error << string_compose (_("Could not find editor.bindings in search path %1"), spath.to_string()) << endmsg;
+ }
+}
+
+void
Editor::toggle_ruler_visibility (RulerType rt)
{
const char* action = 0;
diff --git a/gtk2_ardour/mixer.bindings b/gtk2_ardour/mixer.bindings
index 3daeab53ca..25d4cfb077 100644
--- a/gtk2_ardour/mixer.bindings
+++ b/gtk2_ardour/mixer.bindings
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<Bindings name="ardour">
+<Bindings name="ardour-mixer">
<Press>
<Binding key="s" action="Mixer/solo"/>
<Binding key="m" action="Mixer/mute"/>