summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour.menus.in41
-rw-r--r--gtk2_ardour/ardour_ui.cc46
-rw-r--r--gtk2_ardour/ardour_ui.h9
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc45
-rw-r--r--gtk2_ardour/editor.h1
-rw-r--r--gtk2_ardour/editor_actions.cc19
-rw-r--r--gtk2_ardour/editor_ops.cc29
-rw-r--r--gtk2_ardour/keyboard.cc1
-rw-r--r--gtk2_ardour/mnemonic-us.bindings.in46
-rw-r--r--gtk2_ardour/public_editor.h3
10 files changed, 214 insertions, 26 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index 5ce4cf9736..8336a55035 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -14,9 +14,43 @@
<accelerator action='toggle-midi-input-active'/>
<accelerator action='escape'/>
+ <accelerator action='alternate-add-location-from-playhead'/>
+ <accelerator action='alternate-remove-location-from-playhead'/>
+
+ <accelerator action='alternate-editor-delete'/>
+
<accelerator action='alt-start-range'/>
<accelerator action='alt-finish-range'/>
+<accelerator action='alternate-ToggleRoll'/>
+<accelerator action='alternate-record-roll'/>
+<accelerator action='alternate-GotoStart'/>
+
+<accelerator action='alternate-redo'/>
+<accelerator action='alternate-alternate-redo'/>
+
+<accelerator action='alternate-select-all-after-edit-cursor'/>
+<accelerator action='alternate-select-all-after-edit-cursor'/>
+<accelerator action='alternate-set-fade-in-length'/>
+<accelerator action='alternate-set-fade-out-length'/>
+<accelerator action='alternate-tab-to-transient-forwards'/>
+<accelerator action='alternate-tab-to-transient-backwards'/>
+<accelerator action='alternate-nudge-forward'/>
+<accelerator action='alternate-nudge-backward'/>
+
+<accelerator action='numpad-0'/>
+<accelerator action='numpad-1'/>
+<accelerator action='numpad-2'/>
+<accelerator action='numpad-3'/>
+<accelerator action='numpad-4'/>
+<accelerator action='numpad-5'/>
+<accelerator action='numpad-6'/>
+<accelerator action='numpad-7'/>
+<accelerator action='numpad-8'/>
+<accelerator action='numpad-9'/>
+<accelerator action='numpad-decimal'/>
+
+
#ifdef GTKOSX
<accelerator action='Quit'/>
#endif
@@ -135,13 +169,11 @@
<menuitem action='selected-marker-to-previous-region-boundary'/>
<menuitem action='edit-cursor-to-next-region-sync'/>
<menuitem action='edit-cursor-to-previous-region-sync'/>
- <separator/>
- <menuitem action='edit-to-playhead'/>
- <menuitem action='set-edit-point'/>
</menu>
<menu action="MarkerMenu">
<menuitem action='add-location-from-playhead'/>
+ <menuitem action='remove-location-from-playhead'/>
<separator/>
<menuitem action='goto-mark-1'/>
<menuitem action='goto-mark-2'/>
@@ -188,11 +220,11 @@
<menuitem action='select-all-in-punch-range'/>
<menuitem action='select-all-in-loop-range'/>
<separator/>
- <menuitem action='select-range-between-cursors'/>
<menuitem action='move-range-start-to-previous-region-boundary'/>
<menuitem action='move-range-start-to-next-region-boundary'/>
<menuitem action='move-range-end-to-previous-region-boundary'/>
<menuitem action='move-range-end-to-next-region-boundary'/>
+ <separator/>
<menuitem action='start-range'/>
<menuitem action='finish-range'/>
<separator/>
@@ -357,6 +389,7 @@
<separator/>
<menu action="PrimaryClockMenu">
+ <menuitem action='focus-on-clock'/>
<menuitem action="primary-clock-timecode"/>
<menuitem action="primary-clock-bbt"/>
<menuitem action="primary-clock-minsec"/>
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index a11c4d556c..ef3dbe2de9 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -221,6 +221,8 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
splash = 0;
+ _numpad_locate_happening = false;
+
if (theArdourUI == 0) {
theArdourUI = this;
}
@@ -4411,3 +4413,47 @@ ARDOUR_UI::do_audio_midi_setup (uint32_t desired_sample_rate)
}
+gint
+ARDOUR_UI::transport_numpad_timeout ()
+{
+ _numpad_locate_happening = false;
+ if (_numpad_timeout_connection.connected() )
+ _numpad_timeout_connection.disconnect();
+ return 1;
+}
+
+void
+ARDOUR_UI::transport_numpad_decimal ()
+{
+ _numpad_timeout_connection.disconnect();
+
+ if (_numpad_locate_happening) {
+ if (editor) editor->goto_nth_marker(_pending_locate_num - 1);
+ _numpad_locate_happening = false;
+ } else {
+ _pending_locate_num = 0;
+ _numpad_locate_happening = true;
+ _numpad_timeout_connection = Glib::signal_timeout().connect (mem_fun(*this, &ARDOUR_UI::transport_numpad_timeout), 2*1000);
+ }
+}
+
+void
+ARDOUR_UI::transport_numpad_event (int num)
+{
+ if ( _numpad_locate_happening ) {
+ _pending_locate_num = _pending_locate_num*10 + num;
+ } else {
+ switch (num) {
+ case 0: toggle_roll(false, false); break;
+ case 1: transport_rewind(1); break;
+ case 2: transport_forward(1); break;
+ case 3: transport_record(true); break;
+ case 4: if (_session) _session->request_play_loop(true); break;
+ case 5: if (_session) _session->request_play_loop(true); transport_record(false); break;
+ case 6: toggle_punch(); break;
+ case 7: toggle_click(); break;
+ case 8: toggle_auto_return(); break;
+ case 9: toggle_follow_edits(); break;
+ }
+ }
+}
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 701be1dfc2..5d10c6f13d 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -561,6 +561,15 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
void set_transport_sensitivity (bool);
+ //stuff for ProTools-style numpad
+ void transport_numpad_event (int num);
+ void transport_numpad_decimal ();
+ bool _numpad_locate_happening;
+ int _pending_locate_num;
+ gint transport_numpad_timeout ();
+ sigc::connection _numpad_timeout_connection;
+
+ void transport_goto_nth_marker (int nth);
void transport_goto_zero ();
void transport_goto_start ();
void transport_goto_end ();
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index 2c3e7fc569..90d297ab9b 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -229,6 +229,9 @@ ARDOUR_UI::install_actions ()
act = ActionManager::register_action (transport_actions, X_("ToggleRoll"), _("Start/Stop"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_roll), false, false));
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("alternate-ToggleRoll"), _("Start/Stop"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_roll), false, false));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
act = ActionManager::register_action (transport_actions, X_("ToggleRollMaybe"), _("Start/Continue/Stop"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_roll), false, true));
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
@@ -267,6 +270,10 @@ ARDOUR_UI::install_actions ()
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::write_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("alternate-record-roll"), _("Start Recording"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::transport_record), true));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::write_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
act = ActionManager::register_action (transport_actions, X_("Rewind"), _("Rewind"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::transport_rewind), 0));
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
@@ -291,6 +298,9 @@ ARDOUR_UI::install_actions ()
act = ActionManager::register_action (transport_actions, X_("GotoStart"), _("Goto Start"), sigc::mem_fun(*this, &ARDOUR_UI::transport_goto_start));
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("alternate-GotoStart"), _("Goto Start"), sigc::mem_fun(*this, &ARDOUR_UI::transport_goto_start));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
act = ActionManager::register_action (transport_actions, X_("GotoEnd"), _("Goto End"), sigc::mem_fun(*this, &ARDOUR_UI::transport_goto_end));
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
@@ -298,6 +308,41 @@ ARDOUR_UI::install_actions ()
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
+ //these actions handle the numpad events, ProTools style
+ act = ActionManager::register_action (transport_actions, X_("numpad-decimal"), _("Numpad Decimal"), mem_fun(*this, &ARDOUR_UI::transport_numpad_decimal));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("numpad-0"), _("Numpad 0"), bind (mem_fun(*this, &ARDOUR_UI::transport_numpad_event), 0));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("numpad-1"), _("Numpad 1"), bind (mem_fun(*this, &ARDOUR_UI::transport_numpad_event), 1));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("numpad-2"), _("Numpad 2"), bind (mem_fun(*this, &ARDOUR_UI::transport_numpad_event), 2));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("numpad-3"), _("Numpad 3"), bind (mem_fun(*this, &ARDOUR_UI::transport_numpad_event), 3));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("numpad-4"), _("Numpad 4"), bind (mem_fun(*this, &ARDOUR_UI::transport_numpad_event), 4));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("numpad-5"), _("Numpad 5"), bind (mem_fun(*this, &ARDOUR_UI::transport_numpad_event), 5));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("numpad-6"), _("Numpad 6"), bind (mem_fun(*this, &ARDOUR_UI::transport_numpad_event), 6));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("numpad-7"), _("Numpad 7"), bind (mem_fun(*this, &ARDOUR_UI::transport_numpad_event), 7));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("numpad-8"), _("Numpad 8"), bind (mem_fun(*this, &ARDOUR_UI::transport_numpad_event), 8));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+ act = ActionManager::register_action (transport_actions, X_("numpad-9"), _("Numpad 9"), bind (mem_fun(*this, &ARDOUR_UI::transport_numpad_event), 9));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::transport_sensitive_actions.push_back (act);
+
act = ActionManager::register_action (transport_actions, X_("focus-on-clock"), _("Focus On Clock"), sigc::mem_fun(*this, &ARDOUR_UI::focus_on_clock));
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index e8f3804fd5..b5533ec689 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -1328,6 +1328,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void set_punch_range (framepos_t start, framepos_t end, std::string cmd);
void add_location_from_playhead_cursor ();
+ void remove_location_at_playhead_cursor ();
bool select_new_marker;
void reverse_selection ();
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index 4570736617..751de09311 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -194,8 +194,11 @@ Editor::register_actions ()
reg_sens (editor_actions, "select-all", _("Select All"), sigc::bind (sigc::mem_fun(*this, &Editor::select_all), Selection::Set));
reg_sens (editor_actions, "deselect-all", _("Deselect All"), sigc::mem_fun(*this, &Editor::deselect_all));
reg_sens (editor_actions, "invert-selection", _("Invert Selection"), sigc::mem_fun(*this, &Editor::invert_selection));
+
reg_sens (editor_actions, "select-all-after-edit-cursor", _("Select All After Edit Point"), sigc::bind (sigc::mem_fun(*this, &Editor::select_all_selectables_using_edit), true));
+ reg_sens (editor_actions, "alternate-select-all-after-edit-cursor", _("Select All After Edit Point"), sigc::bind (sigc::mem_fun(*this, &Editor::select_all_selectables_using_edit), true));
reg_sens (editor_actions, "select-all-before-edit-cursor", _("Select All Before Edit Point"), sigc::bind (sigc::mem_fun(*this, &Editor::select_all_selectables_using_edit), false));
+ reg_sens (editor_actions, "alternate-select-all-before-edit-cursor", _("Select All Before Edit Point"), sigc::bind (sigc::mem_fun(*this, &Editor::select_all_selectables_using_edit), false));
reg_sens (editor_actions, "select-all-between-cursors", _("Select All Overlapping Edit Range"), sigc::bind (sigc::mem_fun(*this, &Editor::select_all_selectables_between), false));
reg_sens (editor_actions, "select-all-within-cursors", _("Select All Inside Edit Range"), sigc::bind (sigc::mem_fun(*this, &Editor::select_all_selectables_between), true));
@@ -237,7 +240,12 @@ Editor::register_actions ()
reg_sens (editor_actions, "jump-forward-to-mark", _("Jump to Next Mark"), sigc::mem_fun(*this, &Editor::jump_forward_to_mark));
reg_sens (editor_actions, "jump-backward-to-mark", _("Jump to Previous Mark"), sigc::mem_fun(*this, &Editor::jump_backward_to_mark));
+
reg_sens (editor_actions, "add-location-from-playhead", _("Add Mark from Playhead"), sigc::mem_fun(*this, &Editor::add_location_from_playhead_cursor));
+ reg_sens (editor_actions, "alternate-add-location-from-playhead", _("Add Mark from Playhead"), sigc::mem_fun(*this, &Editor::add_location_from_playhead_cursor));
+
+ reg_sens (editor_actions, "remove-location-from-playhead", _("Remove Mark at Playhead"), sigc::mem_fun(*this, &Editor::remove_location_at_playhead_cursor));
+ reg_sens (editor_actions, "alternate-remove-location-from-playhead", _("Remove Mark at Playhead"), sigc::mem_fun(*this, &Editor::remove_location_at_playhead_cursor));
reg_sens (editor_actions, "nudge-next-forward", _("Nudge Next Later"), sigc::bind (sigc::mem_fun(*this, &Editor::nudge_forward), true, false));
reg_sens (editor_actions, "nudge-next-backward", _("Nudge Next Earlier"), sigc::bind (sigc::mem_fun(*this, &Editor::nudge_backward), true, false));
@@ -298,7 +306,10 @@ Editor::register_actions ()
reg_sens (editor_actions, "duplicate-range", _("Duplicate Range"), sigc::bind (sigc::mem_fun(*this, &Editor::duplicate_range), false));
undo_action = reg_sens (editor_actions, "undo", S_("Command|Undo"), sigc::bind (sigc::mem_fun(*this, &Editor::undo), 1U));
+
redo_action = reg_sens (editor_actions, "redo", _("Redo"), sigc::bind (sigc::mem_fun(*this, &Editor::redo), 1U));
+ redo_action = reg_sens (editor_actions, "alternate-redo", _("Redo"), sigc::bind (sigc::mem_fun(*this, &Editor::redo), 1U));
+ redo_action = reg_sens (editor_actions, "alternate-alternate-redo", _("Redo"), sigc::bind (sigc::mem_fun(*this, &Editor::redo), 1U));
reg_sens (editor_actions, "export-audio", _("Export Audio"), sigc::mem_fun(*this, &Editor::export_audio));
reg_sens (editor_actions, "export-range", _("Export Range"), sigc::mem_fun(*this, &Editor::export_range));
@@ -317,6 +328,7 @@ Editor::register_actions ()
reg_sens (editor_actions, "editor-cut", _("Cut"), sigc::mem_fun(*this, &Editor::cut));
reg_sens (editor_actions, "editor-delete", _("Delete"), sigc::mem_fun(*this, &Editor::delete_));
+ reg_sens (editor_actions, "alternate-editor-delete", _("Delete"), sigc::mem_fun(*this, &Editor::delete_));
reg_sens (editor_actions, "editor-copy", _("Copy"), sigc::mem_fun(*this, &Editor::copy));
reg_sens (editor_actions, "editor-paste", _("Paste"), sigc::mem_fun(*this, &Editor::keyboard_paste));
@@ -327,7 +339,9 @@ Editor::register_actions ()
sigc::mem_fun (ARDOUR_UI::instance(), &ARDOUR_UI::toggle_errors));
reg_sens (editor_actions, "tab-to-transient-forwards", _("Move Later to Transient"), sigc::bind (sigc::mem_fun(*this, &Editor::tab_to_transient), true));
+ reg_sens (editor_actions, "alternate-tab-to-transient-forwards", _("Move Later to Transient"), sigc::bind (sigc::mem_fun(*this, &Editor::tab_to_transient), true));
reg_sens (editor_actions, "tab-to-transient-backwards", _("Move Earlier to Transient"), sigc::bind (sigc::mem_fun(*this, &Editor::tab_to_transient), false));
+ reg_sens (editor_actions, "alternate-tab-to-transient-backwards", _("Move Earlier to Transient"), sigc::bind (sigc::mem_fun(*this, &Editor::tab_to_transient), false));
reg_sens (editor_actions, "crop", _("Crop"), sigc::mem_fun(*this, &Editor::crop_region_to_selection));
@@ -1868,7 +1882,10 @@ Editor::register_region_actions ()
);
reg_sens (_region_actions, "set-fade-in-length", _("Set Fade In Length"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_length), true));
+ reg_sens (_region_actions, "alternate-set-fade-in-length", _("Set Fade In Length"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_length), true));
reg_sens (_region_actions, "set-fade-out-length", _("Set Fade Out Length"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_length), false));
+ reg_sens (_region_actions, "alternate-set-fade-out-length", _("Set Fade Out Length"), sigc::bind (sigc::mem_fun (*this, &Editor::set_fade_length), false));
+
reg_sens (_region_actions, "set-tempo-from-region", _("Set Tempo from Region = Bar"), sigc::mem_fun (*this, &Editor::set_tempo_from_region));
reg_sens (
@@ -1912,7 +1929,9 @@ Editor::register_region_actions ()
reg_sens (_region_actions, "set-selection-from-region", _("Set Range Selection"), sigc::mem_fun (*this, &Editor::set_selection_from_region));
reg_sens (_region_actions, "nudge-forward", _("Nudge Later"), sigc::bind (sigc::mem_fun (*this, &Editor::nudge_forward), false, false));
+ reg_sens (_region_actions, "alternate-nudge-forward", _("Nudge Later"), sigc::bind (sigc::mem_fun (*this, &Editor::nudge_forward), false, false));
reg_sens (_region_actions, "nudge-backward", _("Nudge Earlier"), sigc::bind (sigc::mem_fun (*this, &Editor::nudge_backward), false, false));
+ reg_sens (_region_actions, "alternate-nudge-backward", _("Nudge Earlier"), sigc::bind (sigc::mem_fun (*this, &Editor::nudge_backward), false, false));
reg_sens (_region_actions, "sequence-regions", _("Sequence Regions"), sigc::mem_fun (*this, &Editor::sequence_regions));
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 3c89ddc448..7489199504 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -1892,6 +1892,35 @@ Editor::add_location_from_playhead_cursor ()
add_location_mark (_session->audible_frame());
}
+void
+Editor::remove_location_at_playhead_cursor ()
+{
+ if (_session) {
+
+ //set up for undo
+ _session->begin_reversible_command (_("remove marker"));
+ XMLNode &before = _session->locations()->get_state();
+ bool removed = false;
+
+ //find location(s) at this time
+ Locations::LocationList locs;
+ _session->locations()->find_all_between (_session->audible_frame(), _session->audible_frame()+1, locs, Location::Flags(0));
+ for (Locations::LocationList::iterator i = locs.begin(); i != locs.end(); ++i) {
+ if ((*i)->is_mark()) {
+ _session->locations()->remove (*i);
+ removed = true;
+ }
+ }
+
+ //store undo
+ if (removed) {
+ XMLNode &after = _session->locations()->get_state();
+ _session->add_command(new MementoCommand<Locations>(*(_session->locations()), &before, &after));
+ _session->commit_reversible_command ();
+ }
+ }
+}
+
/** Add a range marker around each selected region */
void
Editor::add_locations_from_region ()
diff --git a/gtk2_ardour/keyboard.cc b/gtk2_ardour/keyboard.cc
index 3b5b207ce2..d4bf237780 100644
--- a/gtk2_ardour/keyboard.cc
+++ b/gtk2_ardour/keyboard.cc
@@ -23,6 +23,7 @@
#include "ardour/filesystem_paths.h"
#include "ardour_ui.h"
+#include "public_editor.h"
#include "keyboard.h"
#include "opts.h"
diff --git a/gtk2_ardour/mnemonic-us.bindings.in b/gtk2_ardour/mnemonic-us.bindings.in
index 8ab050e867..1b0ee2430f 100644
--- a/gtk2_ardour/mnemonic-us.bindings.in
+++ b/gtk2_ardour/mnemonic-us.bindings.in
@@ -97,11 +97,6 @@ This mode provides many different operations on both regions and control points,
@eep|Editor/cycle-edit-point|grave|next EP w/o marker
@eep|Editor/cycle-edit-point-with-marker|<@PRIMARY@>grave|next EP w/marker
-@aep|Editor/move-range-start-to-previous-region-boundary|less|range start to prev region edge
-@aep|Editor/move-range-start-to-next-region-boundary|<@PRIMARY@>less|range start to next region edge
-@aep|Editor/move-range-end-to-previous-region-boundary|<@PRIMARY@>greater|range end to next prev edge
-@aep|Editor/move-range-end-to-next-region-boundary|greater|range end to next region edge
-
@trans|Transport/ToggleRoll|space|toggle roll
@epp|Editor/play-edit-range|<@SECONDARY@>space|play edit range
@epp|Editor/play-from-edit-point-and-return|<@LEVEL4@>space|play from EP \& return
@@ -109,6 +104,12 @@ This mode provides many different operations on both regions and control points,
@trans|Transport/ToggleRollForgetCapture|<@PRIMARY@>space|stop and destroy
@trans|Transport/record-roll|<@TERTIARY@>space|start recording
+@trans|Transport/add-location-from-playhead|Tab|add marker
+@trans|Transport/remove-location-from-playhead|<@PRIMARY@>nabla|add marker
+;@trans|Transport/GotoStart|3270_enter|Return
+;@trans|Transport/GotoStart|F35|Return (numpad)
+@movp|Transport/alternate-GotoStart|Return|to edit point THIS KEYBINDING WORKS. WHY!!???!
+
@rop|Region/set-fade-in-length|slash|set fade in length
@rop|Region/toggle-region-fade-out|<@PRIMARY@>slash|toggle fade in active
@rop|Region/set-fade-out-length|backslash|set fade out length
@@ -143,6 +144,8 @@ This mode provides many different operations on both regions and control points,
@wvis|Common/goto-editor|<@WINDOW@>e|toggle editor window
@mmode|MouseMode/set-mouse-mode-range|r|range mode
@edit|Editor/redo|<@PRIMARY@>r|redo
+@edit|Editor/alternate-redo|<@PRIMARY@>y|redo
+@edit|Editor/alternate-alternate-redo|<@PRIMARY@><@TERTIARY@>z|redo
@rop|Region/reverse-region|<@SECONDARY@>r|reverse
@trans|Transport/Record|<@TERTIARY@>r|engage record
@mmode|MouseMode/set-mouse-mode-timefx|t|timefx mode
@@ -257,12 +260,9 @@ This mode provides many different operations on both regions and control points,
@movp|Transport/GotoStart|Home|to start marker
@movp|Transport/GotoEnd|End|to end marker
@edit|Editor/editor-delete|Delete|delete
+@edit|Editor/alternate-editor-delete|BackSpace|backspace (delete)
-@movp|Editor/playhead-to-edit|Return|to edit point
-@eep|Editor/edit-to-playhead|<@SECONDARY@>Return|move EP to playhead
-@trans|Editor/remove-last-capture|<@PRIMARY@>Delete|destroy last recording
-
-@-group|Editor/escape|Escape|break drag or deselect all
+@select|Editor/escape|Escape|break drag or deselect all
;; keypad
@@ -280,26 +280,28 @@ This mode provides many different operations on both regions and control points,
@-group|Editor/alt-start-range|<@PRIMARY@>KP_Down|some text
@-group|Editor/alt-finish-range|<@PRIMARY@>KP_Up|some text
-@markers|Editor/add-location-from-playhead|KP_Enter|add mark at playhead
+@markers|Editor/alternate-add-location-from-playhead|KP_Enter|add mark at playhead
+@markers|Editor/alternate-remove-location-from-playhead|<@PRIMARY@>KP_Enter|add mark at playhead
@wvis|Transport/focus-on-clock|KP_Divide|focus on main clock
-@movp|Transport/GotoZero|KP_0|to zero
-@-group|Editor/goto-mark-1|KP_1|some text
-@-group|Editor/goto-mark-2|KP_2|some text
-@-group|Editor/goto-mark-3|KP_3|some text
-@-group|Editor/goto-mark-4|KP_4|some text
-@-group|Editor/goto-mark-5|KP_5|some text
-@-group|Editor/goto-mark-6|KP_6|some text
-@-group|Editor/goto-mark-7|KP_7|some text
-@-group|Editor/goto-mark-8|KP_8|some text
-@-group|Editor/goto-mark-9|KP_9|some text
+@movp|Transport/numpad-decimal|KP_Decimal|numpad decimal should initiate and finalize a locate-to-marker
+
+@movp|Transport/numpad-0|KP_0|some text
+@-group|Transport/numpad-1|KP_1|some text
+@-group|Transport/numpad-2|KP_2|some text
+@-group|Transport/numpad-3|KP_3|some text
+@-group|Transport/numpad-4|KP_4|some text
+@-group|Transport/numpad-5|KP_5|some text
+@-group|Transport/numpad-6|KP_6|some text
+@-group|Transport/numpad-7|KP_7|some text
+@-group|Transport/numpad-8|KP_8|some text
+@-group|Transport/numpad-9|KP_9|some text
;; F-N keys
@-group|Editor/edit-cursor-to-range-start|F1|some text
@-group|Editor/edit-cursor-to-range-end|F2|some text
@-group|Editor/pitch-shift-region|F5|some text
-@select|Editor/select-range-between-cursors|F6|convert edit range to range
@-group|Editor/save-visual-state-1|<@PRIMARY@>F1|some text
@-group|Editor/save-visual-state-2|<@PRIMARY@>F2|some text
diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h
index 9eac1be2f7..722f5e2f2b 100644
--- a/gtk2_ardour/public_editor.h
+++ b/gtk2_ardour/public_editor.h
@@ -213,6 +213,9 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi
virtual void play_selection () = 0;
virtual void play_with_preroll () = 0;
virtual void maybe_locate_with_edit_preroll (framepos_t location) = 0;
+ virtual void goto_nth_marker (int nth) = 0;
+ virtual void add_location_from_playhead_cursor () = 0;
+ virtual void remove_location_at_playhead_cursor () = 0;
virtual void set_show_measures (bool yn) = 0;
virtual bool show_measures () const = 0;