diff options
-rw-r--r-- | gtk2_ardour/editor.bindings | 205 | ||||
-rw-r--r-- | gtk2_ardour/editor.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 5 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 24 | ||||
-rw-r--r-- | gtk2_ardour/mixer.bindings | 2 |
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"/> |