diff --git a/src/gui/elems/mainWindow/keyboard/keyboard.cpp b/src/gui/elems/mainWindow/keyboard/keyboard.cpp
index 88ed00bc3..d857b66bc 100644
--- a/src/gui/elems/mainWindow/keyboard/keyboard.cpp
+++ b/src/gui/elems/mainWindow/keyboard/keyboard.cpp
@@ -32,6 +32,7 @@
#include "gui/drawing.h"
#include "gui/elems/basics/boxtypes.h"
#include "gui/elems/basics/dial.h"
+#include "gui/elems/basics/menu.h"
#include "gui/elems/basics/resizerBar.h"
#include "gui/elems/basics/textButton.h"
#include "gui/elems/mainWindow/keyboard/channelButton.h"
@@ -51,6 +52,18 @@ extern giada::v::Ui* g_ui;
namespace giada::v
{
+namespace
+{
+enum class Menu
+{
+ ADD_TRACK = 0
+};
+} // namespace
+
+/* -------------------------------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+
geKeyboard::ChannelDragger::ChannelDragger(geKeyboard& k)
: m_keyboard(k)
, m_channelId(-1)
@@ -187,6 +200,27 @@ size_t geKeyboard::countTracks() const
/* -------------------------------------------------------------------------- */
+void geKeyboard::showMenu() const
+{
+ geMenu menu;
+
+ menu.addItem((ID)Menu::ADD_TRACK, g_ui->getI18Text(LangMap::MAIN_TRACK_BUTTON_ADD_TRACK));
+
+ menu.onSelect = [this](ID menuId)
+ {
+ switch (static_cast