diff --git a/include/vlc_keys.h b/include/vlc_actions.h
similarity index 98%
rename from include/vlc_keys.h
rename to include/vlc_actions.h
index 3744af099d4503dec6729c6a4f42ee9dc3087d56..c3f4172617d77574ea1c0f799aa57378ac8f84c1 100644
--- a/include/vlc_keys.h
+++ b/include/vlc_actions.h
@@ -1,7 +1,7 @@
 /*****************************************************************************
- * vlc_keys.h: keycode defines
+ * vlc_actions.h: handle vlc actions
  *****************************************************************************
- * Copyright (C) 2003-2009 VLC authors and VideoLAN
+ * Copyright (C) 2003-2016 VLC authors and VideoLAN
  * $Id$
  *
  * Authors: Sigmund Augdal Helberg <dnumgis@videolan.org>
@@ -21,8 +21,8 @@
  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#ifndef VLC_KEYS_H
-#define VLC_KEYS_H 1
+#ifndef VLC_ACTIONS_H
+#define VLC_ACTIONS_H 1
 
 /**
  * \file
diff --git a/include/vlc_vout_display.h b/include/vlc_vout_display.h
index 23f7c0b4e4276bdf89e321e80f901fcb68e31835..e612bac48cafa8a44e219b73125a0a8529939f2d 100644
--- a/include/vlc_vout_display.h
+++ b/include/vlc_vout_display.h
@@ -28,7 +28,7 @@
 #include <vlc_picture.h>
 #include <vlc_picture_pool.h>
 #include <vlc_subpicture.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <vlc_mouse.h>
 #include <vlc_vout.h>
 #include <vlc_vout_window.h>
diff --git a/lib/media_player.c b/lib/media_player.c
index 45ce1c44fa59115795ec8a1be7cbeb4b5d90aafe..65632952c2729952e0c5d097763b18a652826ac2 100644
--- a/lib/media_player.c
+++ b/lib/media_player.c
@@ -35,7 +35,7 @@
 #include <vlc_input.h>
 #include <vlc_vout.h>
 #include <vlc_aout.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 #include "libvlc_internal.h"
 #include "media_internal.h" // libvlc_media_set_state()
diff --git a/modules/audio_filter/channel_mixer/spatialaudio.cpp b/modules/audio_filter/channel_mixer/spatialaudio.cpp
index 4ac8555b279773574a740b5c399f5412a97d9a94..59d2c6336db1b779a58a2bce717f9f81886f9f91 100644
--- a/modules/audio_filter/channel_mixer/spatialaudio.cpp
+++ b/modules/audio_filter/channel_mixer/spatialaudio.cpp
@@ -35,7 +35,6 @@
 #include <vlc_aout.h>
 #include <vlc_filter.h>
 #include <vlc_viewpoint.h>
-#include <vlc_keys.h>
 
 #include <new>
 #include <vector>
diff --git a/modules/control/globalhotkeys/win32.c b/modules/control/globalhotkeys/win32.c
index 15d4714c44bf4ed0fe8ca363e0bf333fa980f0db..56a28b517fe67b667ae0ce46cd440d7b09e5bcf8 100644
--- a/modules/control/globalhotkeys/win32.c
+++ b/modules/control/globalhotkeys/win32.c
@@ -30,7 +30,7 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_interface.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 /*****************************************************************************
  * Local prototypes
diff --git a/modules/control/globalhotkeys/xcb.c b/modules/control/globalhotkeys/xcb.c
index aceb3cbeda5e49d1c405bc6ebeacec67eb55f57e..d4c335d98bcf9ffc50eebf27cad49ff20648dc12 100644
--- a/modules/control/globalhotkeys/xcb.c
+++ b/modules/control/globalhotkeys/xcb.c
@@ -27,7 +27,7 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_interface.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <errno.h>
 
 #include <xcb/xcb.h>
diff --git a/modules/control/hotkeys.c b/modules/control/hotkeys.c
index 195bb2265ffdd66cdf3cd3578e0fa8bae6acccc6..26520bd59cb29c7267774b68f4b699b4fa703530 100644
--- a/modules/control/hotkeys.c
+++ b/modules/control/hotkeys.c
@@ -39,7 +39,7 @@
 #include <vlc_viewpoint.h>
 #include <vlc_vout_osd.h>
 #include <vlc_playlist.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include "math.h"
 
 #include <assert.h>
diff --git a/modules/control/lirc.c b/modules/control/lirc.c
index b27ef9d36d8ac6011b23b87113da22c24983c1a7..7352c5eed88015afad2d8c0dabaabb4bac861547 100644
--- a/modules/control/lirc.c
+++ b/modules/control/lirc.c
@@ -36,7 +36,7 @@
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_interface.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 #ifdef HAVE_POLL
 # include <poll.h>
diff --git a/modules/control/oldrc.c b/modules/control/oldrc.c
index b09a11c33d819c516787ca62473b1cf7eff1cdb8..150e4b0723f6ed30c840e307bd15482f87ca4d06 100644
--- a/modules/control/oldrc.c
+++ b/modules/control/oldrc.c
@@ -43,7 +43,7 @@
 #include <vlc_aout.h>
 #include <vlc_vout.h>
 #include <vlc_playlist.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 #include <sys/types.h>
 #include <unistd.h>
diff --git a/modules/demux/mkv/demux.cpp b/modules/demux/mkv/demux.cpp
index 56248e8f304eaf3ee73610e6553d8533ebc3a05d..97be3fde040014313704118226ca395b827d565e 100644
--- a/modules/demux/mkv/demux.cpp
+++ b/modules/demux/mkv/demux.cpp
@@ -27,7 +27,7 @@
 #include "stream_io_callback.hpp"
 #include "Ebml_parser.hpp"
 
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 event_thread_t::event_thread_t(demux_t *p_demux) : p_demux(p_demux)
 {
diff --git a/modules/gui/macosx/VLCCoreInteraction.m b/modules/gui/macosx/VLCCoreInteraction.m
index deeeca92e82d548bb7488787b06d6404a064fc37..ab78b045da4bd431d37cacf9993073d20ebda281 100644
--- a/modules/gui/macosx/VLCCoreInteraction.m
+++ b/modules/gui/macosx/VLCCoreInteraction.m
@@ -28,7 +28,7 @@
 #import <math.h>
 #import <vlc_playlist.h>
 #import <vlc_input.h>
-#import <vlc_keys.h>
+#import <vlc_actions.h>
 #import <vlc_vout.h>
 #import <vlc_vout_osd.h>
 #import <vlc/vlc.h>
diff --git a/modules/gui/macosx/VLCMain.m b/modules/gui/macosx/VLCMain.m
index 6b4a4d2a5485c3a93575d0b1938d00e7b85a8316..43c8849534ef471f92529c0b10a6d57b2618b8b1 100644
--- a/modules/gui/macosx/VLCMain.m
+++ b/modules/gui/macosx/VLCMain.m
@@ -37,7 +37,7 @@
 #include <string.h>
 #include <vlc_common.h>
 #include <vlc_atomic.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <vlc_dialog.h>
 #include <vlc_url.h>
 #include <vlc_variables.h>
diff --git a/modules/gui/macosx/VLCPlaylist.m b/modules/gui/macosx/VLCPlaylist.m
index 9d1c54d810aedb33216f36625bda5d49e0e8af30..abd6cdea99d728bc1974485d420d57042e6a3976 100644
--- a/modules/gui/macosx/VLCPlaylist.m
+++ b/modules/gui/macosx/VLCPlaylist.m
@@ -48,7 +48,7 @@
 #import "VLCResumeDialogController.h"
 #import "VLCOpenWindowController.h"
 
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #import <vlc_interface.h>
 #include <vlc_url.h>
 
diff --git a/modules/gui/macosx/VLCSimplePrefsController.m b/modules/gui/macosx/VLCSimplePrefsController.m
index d9d2e2f38383368dce82da6e79960cc56369c042..422dbda94a003666745e0598f5c8f9c881089170 100644
--- a/modules/gui/macosx/VLCSimplePrefsController.m
+++ b/modules/gui/macosx/VLCSimplePrefsController.m
@@ -27,7 +27,7 @@
 #import "CompatibilityFixes.h"
 #import "VLCSimplePrefsController.h"
 #import "prefs.h"
-#import <vlc_keys.h>
+#import <vlc_actions.h>
 #import <vlc_interface.h>
 #import <vlc_dialog.h>
 #import <vlc_modules.h>
diff --git a/modules/gui/macosx/VLCStringUtility.m b/modules/gui/macosx/VLCStringUtility.m
index 16b80ebb107fd396c3b32e6078ec850b13c2f8de..742e045ba603de0fc0ef1c7759a231500074e901 100644
--- a/modules/gui/macosx/VLCStringUtility.m
+++ b/modules/gui/macosx/VLCStringUtility.m
@@ -43,7 +43,7 @@ NSString *const kVLCMediaVideoTSFolder = @"VIDEO_TS";
 NSString *const kVLCMediaBDMVFolder = @"BDMV";
 NSString *const kVLCMediaUnknown = @"Unknown";
 
-#import <vlc_keys.h>
+#import <vlc_actions.h>
 #import <vlc_strings.h>
 
 @implementation VLCStringUtility
diff --git a/modules/gui/macosx/VLCVoutView.m b/modules/gui/macosx/VLCVoutView.m
index 2c40cdf4ce1c9cff83e9a5caddd90855cbea7411..505402801b0d635bb69ea158a0ddfe22df5267e2 100644
--- a/modules/gui/macosx/VLCVoutView.m
+++ b/modules/gui/macosx/VLCVoutView.m
@@ -39,7 +39,7 @@
 
 #import <QuartzCore/QuartzCore.h>
 
-#import <vlc_keys.h>
+#import <vlc_actions.h>
 
 
 /*****************************************************************************
diff --git a/modules/gui/macosx/misc.m b/modules/gui/macosx/misc.m
index 7d379a5d5bc7bdfd5264cd5c92eff80e417c4fe2..acffad80bb2e5804d906a91227806f709a151783 100644
--- a/modules/gui/macosx/misc.m
+++ b/modules/gui/macosx/misc.m
@@ -29,7 +29,7 @@
 #import "VLCMainMenu.h"
 #import "VLCControlsBarCommon.h"
 #import "VLCCoreInteraction.h"
-#import <vlc_keys.h>
+#import <vlc_actions.h>
 
 /*****************************************************************************
  * VLCDragDropView
diff --git a/modules/gui/macosx/prefs.m b/modules/gui/macosx/prefs.m
index b984b9e3adc6f6d5da5d0e60a5ce676b42dea470..c8d20b7ecf728b2e07a0743012f9e527288095ff 100644
--- a/modules/gui/macosx/prefs.m
+++ b/modules/gui/macosx/prefs.m
@@ -59,7 +59,7 @@
 #import "VLCSimplePrefsController.h"
 #import "prefs_widgets.h"
 #import "VLCCoreInteraction.h"
-#import <vlc_keys.h>
+#import <vlc_actions.h>
 #import <vlc_modules.h>
 #import <vlc_plugin.h>
 
diff --git a/modules/gui/macosx/prefs_widgets.m b/modules/gui/macosx/prefs_widgets.m
index e7dfab789d7437b27e2e4f00aedfbc6f8c90b213..8d137af46b178f6841c7e24651ecde68336e08f5 100644
--- a/modules/gui/macosx/prefs_widgets.m
+++ b/modules/gui/macosx/prefs_widgets.m
@@ -35,7 +35,7 @@
 #include <vlc_common.h>
 #include <vlc_modules.h>
 #include <vlc_plugin.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 #include "VLCMain.h"
 #include "prefs_widgets.h"
diff --git a/modules/gui/qt/actions_manager.cpp b/modules/gui/qt/actions_manager.cpp
index 4f672da077f268ecc3d01e114a9e9c076eb63229..cc67ff1c0da2ba3c08099c500a9fd3b2fe832b78 100644
--- a/modules/gui/qt/actions_manager.cpp
+++ b/modules/gui/qt/actions_manager.cpp
@@ -26,7 +26,7 @@
 #endif
 
 #include <vlc_vout.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <vlc_renderer_discovery.h>
 
 #include "actions_manager.hpp"
diff --git a/modules/gui/qt/components/preferences_widgets.cpp b/modules/gui/qt/components/preferences_widgets.cpp
index 709e372cde85f543110cabff1f1db3ac50f4dbb1..1fc21a56d9130727aa984c9965b420c1d86fa072 100644
--- a/modules/gui/qt/components/preferences_widgets.cpp
+++ b/modules/gui/qt/components/preferences_widgets.cpp
@@ -35,7 +35,7 @@
 #include "util/customwidgets.hpp"
 #include "util/searchlineedit.hpp"
 #include "util/qt_dirs.hpp"
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <vlc_intf_strings.h>
 #include <vlc_modules.h>
 #include <vlc_plugin.h>
diff --git a/modules/gui/qt/input_manager.cpp b/modules/gui/qt/input_manager.cpp
index cf9a0b2512a433bbb6aff1a85cda0369e0a41934..ede449141f03711f5909d45d897247db82d5fa09 100644
--- a/modules/gui/qt/input_manager.cpp
+++ b/modules/gui/qt/input_manager.cpp
@@ -30,7 +30,7 @@
 #include "input_manager.hpp"
 #include "recents.hpp"
 
-#include <vlc_keys.h>           /* ACTION_ID */
+#include <vlc_actions.h>           /* ACTION_ID */
 #include <vlc_url.h>            /* vlc_uri_decode */
 #include <vlc_strings.h>        /* vlc_strfinput */
 #include <vlc_aout.h>           /* audio_output_t */
diff --git a/modules/gui/qt/main_interface.cpp b/modules/gui/qt/main_interface.cpp
index bec22ea53cee73be7f53ec8ee0a6b07c720bb207..bddd8c943f32317f3c885acb045007c0bc7377a8 100644
--- a/modules/gui/qt/main_interface.cpp
+++ b/modules/gui/qt/main_interface.cpp
@@ -64,7 +64,7 @@
 
 #include <QTimer>
 
-#include <vlc_keys.h>                       /* Wheel event */
+#include <vlc_actions.h>                    /* Wheel event */
 #include <vlc_vout_display.h>               /* vout_thread_t and VOUT_ events */
 
 // #define DEBUG_INTF
diff --git a/modules/gui/qt/util/customwidgets.cpp b/modules/gui/qt/util/customwidgets.cpp
index 7ee4ec71e47d4f312056971c067c65ada5e41ade..61fd89838f186d827c8f8dd0b7e9ec3c9fb3bb49 100644
--- a/modules/gui/qt/util/customwidgets.cpp
+++ b/modules/gui/qt/util/customwidgets.cpp
@@ -37,7 +37,7 @@
 #include <QWheelEvent>
 #include <QPixmap>
 #include <QApplication>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 QFramelessButton::QFramelessButton( QWidget *parent )
                     : QPushButton( parent )
diff --git a/modules/gui/skins2/controls/ctrl_list.cpp b/modules/gui/skins2/controls/ctrl_list.cpp
index 7a5d89da7417f36895a980279ad9d275aa8a14e3..c5f7055682186ad1756c90aee8458d8b88662dda 100644
--- a/modules/gui/skins2/controls/ctrl_list.cpp
+++ b/modules/gui/skins2/controls/ctrl_list.cpp
@@ -34,7 +34,7 @@
 #include "../events/evt_key.hpp"
 #include "../events/evt_mouse.hpp"
 #include "../events/evt_scroll.hpp"
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 #define SCROLL_STEP 0.05f
 #define LINE_INTERVAL 1  // Number of pixels inserted between 2 lines
diff --git a/modules/gui/skins2/controls/ctrl_tree.cpp b/modules/gui/skins2/controls/ctrl_tree.cpp
index 63fe0503c044028d4c0dbc009dc6077922cdcc19..f851a25070e4546a181241aa6256260fd51a33c6 100644
--- a/modules/gui/skins2/controls/ctrl_tree.cpp
+++ b/modules/gui/skins2/controls/ctrl_tree.cpp
@@ -39,7 +39,7 @@
 #include "../events/evt_scroll.hpp"
 #include "../events/evt_dragndrop.hpp"
 #include "../vars/playtree.hpp"
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 #define LINE_INTERVAL 1  // Number of pixels inserted between 2 lines
 
diff --git a/modules/gui/skins2/events/evt_input.cpp b/modules/gui/skins2/events/evt_input.cpp
index e18d7be45f4c2990e71083259e417985cae0afd0..80d299f071d586844a76dc3465a2b63fed8f0d32 100644
--- a/modules/gui/skins2/events/evt_input.cpp
+++ b/modules/gui/skins2/events/evt_input.cpp
@@ -23,7 +23,7 @@
  *****************************************************************************/
 
 #include "evt_input.hpp"
-#include "vlc_keys.h"
+#include "vlc_actions.h"
 
 const int
     EvtInput::kModNone=0,
diff --git a/modules/gui/skins2/events/evt_key.cpp b/modules/gui/skins2/events/evt_key.cpp
index 66c80074f175720e73bb89dfae46fe00e2fc28d8..34ed297aca8f260e12bcb768ba1120de7da61c06 100644
--- a/modules/gui/skins2/events/evt_key.cpp
+++ b/modules/gui/skins2/events/evt_key.cpp
@@ -23,7 +23,7 @@
  *****************************************************************************/
 
 #include "evt_key.hpp"
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 
 const std::string EvtKey::getAsString() const
diff --git a/modules/gui/skins2/events/evt_key.hpp b/modules/gui/skins2/events/evt_key.hpp
index 8d9477e09239639b32d6ec1fa17ecb9e700bf8c1..8206ae551b2eb01a756e71f7edad888d06eb002d 100644
--- a/modules/gui/skins2/events/evt_key.hpp
+++ b/modules/gui/skins2/events/evt_key.hpp
@@ -49,7 +49,7 @@ public:
     ActionType_t getKeyState() const { return m_action; }
 
 private:
-    /// The concerned key, stored according to the '#define's in vlc_keys.h
+    /// The concerned key, stored according to the '#define's in vlc_actions.h
     /// but without the modifiers (which are stored in EvtInput)
     int m_key;
     /// Type of action
diff --git a/modules/gui/skins2/os2/os2_loop.cpp b/modules/gui/skins2/os2/os2_loop.cpp
index 57ba6a215e3f9f09fd0d4c0f90d170ff60358bd0..598718ed630c479e72e2fba079df3d0e2120c56c 100644
--- a/modules/gui/skins2/os2/os2_loop.cpp
+++ b/modules/gui/skins2/os2/os2_loop.cpp
@@ -34,7 +34,7 @@
 #include "../events/evt_mouse.hpp"
 #include "../events/evt_refresh.hpp"
 #include "../events/evt_scroll.hpp"
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 
 #define GET_X_MP( mp ) ( SHORT1FROMMP( mp ))
diff --git a/modules/gui/skins2/src/top_window.cpp b/modules/gui/skins2/src/top_window.cpp
index 0e761d06d91ba25080996f1552e148323923f064..f447457111ae2748313957269645aa52f2561e95 100644
--- a/modules/gui/skins2/src/top_window.cpp
+++ b/modules/gui/skins2/src/top_window.cpp
@@ -47,7 +47,7 @@
 #include "../utils/position.hpp"
 #include "../utils/ustring.hpp"
 
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <vlc_input.h>
 #include <vlc_url.h>
 #include <list>
diff --git a/modules/gui/skins2/src/vout_manager.hpp b/modules/gui/skins2/src/vout_manager.hpp
index ade94a380b5803a5e819df9bd61c2c785e314d24..60c2713aef8b40fb7223eb74b5197afb2ef5ae19 100644
--- a/modules/gui/skins2/src/vout_manager.hpp
+++ b/modules/gui/skins2/src/vout_manager.hpp
@@ -28,7 +28,7 @@
 
 #include <vlc_vout.h>
 #include <vlc_vout_window.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include "../utils/position.hpp"
 #include "../commands/cmd_generic.hpp"
 #include "../controls/ctrl_video.hpp"
diff --git a/modules/gui/skins2/src/vout_window.cpp b/modules/gui/skins2/src/vout_window.cpp
index 9c2bd2d971fa971bf24496fa3e040a4ac9c55550..e50683f4109cf4941cd5e6490f74092161c21eed 100644
--- a/modules/gui/skins2/src/vout_window.cpp
+++ b/modules/gui/skins2/src/vout_window.cpp
@@ -30,7 +30,7 @@
 #include "os_window.hpp"
 #include "../events/evt_key.hpp"
 
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 
 VoutWindow::VoutWindow( intf_thread_t *pIntf, vout_window_t* pWnd,
diff --git a/modules/gui/skins2/win32/win32_loop.cpp b/modules/gui/skins2/win32/win32_loop.cpp
index fdd9a0dc05ea2bc6f45d8e662618c3d505d858f2..bbae954d8be14c32d7c2fe9a364540ba67139332 100644
--- a/modules/gui/skins2/win32/win32_loop.cpp
+++ b/modules/gui/skins2/win32/win32_loop.cpp
@@ -34,7 +34,7 @@
 #include "../events/evt_mouse.hpp"
 #include "../events/evt_refresh.hpp"
 #include "../events/evt_scroll.hpp"
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 
 // XXX: Cygwin (at least) doesn't define these macros. Too bad...
diff --git a/modules/gui/skins2/x11/x11_loop.cpp b/modules/gui/skins2/x11/x11_loop.cpp
index d0edf2dcf17d6d207b6ded3d6fed7db48608dc3d..0aa682e0a32a57fce5429a0ebd5ea01fb5f9ba36 100644
--- a/modules/gui/skins2/x11/x11_loop.cpp
+++ b/modules/gui/skins2/x11/x11_loop.cpp
@@ -42,7 +42,7 @@
 #include "../events/evt_scroll.hpp"
 #include "../commands/async_queue.hpp"
 #include "../utils/var_bool.hpp"
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 
 // Maximum interval between clicks for a double-click (in microsec)
diff --git a/modules/lua/libs/misc.c b/modules/lua/libs/misc.c
index 95d08a7f40aa2544b97953cc42f02341ea909738..1bc0dcad94272c438dbf8f9534aeee914b2a9c82 100644
--- a/modules/lua/libs/misc.c
+++ b/modules/lua/libs/misc.c
@@ -40,7 +40,7 @@
 #include <vlc_plugin.h>
 #include <vlc_meta.h>
 #include <vlc_interface.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <vlc_interrupt.h>
 
 #include "../vlc.h"
diff --git a/modules/spu/remoteosd.c b/modules/spu/remoteosd.c
index 1e23a3e234e7867e5b9d7b51ed61bcd76358f5a3..c112de94ecb81346503c7450a577a976c9a7711c 100644
--- a/modules/spu/remoteosd.c
+++ b/modules/spu/remoteosd.c
@@ -55,7 +55,8 @@
 #include <vlc_filter.h>
 #include <vlc_mouse.h>
 #include <vlc_subpicture.h>
-#include <vlc_keys.h>                  /* KEY_MODIFIER_CTRL */
+#include <vlc_actions.h>               /* KEY_MODIFIER_CTRL */
+
 #include <vlc_network.h>               /* net_*, htonl */
 #include <gcrypt.h>                    /* to encrypt password */
 #include <vlc_gcrypt.h>
diff --git a/modules/video_output/win32/win32touch.c b/modules/video_output/win32/win32touch.c
index 0e0846ae4503e1ff50c3f4bc34645317cfa18f8f..72f041b9d0404585ca4eec41ed8ce6de83302045 100644
--- a/modules/video_output/win32/win32touch.c
+++ b/modules/video_output/win32/win32touch.c
@@ -27,7 +27,7 @@
 
 #include "win32touch.h"
 
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 #include <assert.h>
 
diff --git a/modules/video_output/xcb/keys.c b/modules/video_output/xcb/keys.c
index b97a6799eec4cad37cee1f5a01b1ca372b6cd24f..69b514ed57412535484ca9262cb279e25984e85e 100644
--- a/modules/video_output/xcb/keys.c
+++ b/modules/video_output/xcb/keys.c
@@ -36,7 +36,7 @@
 #include <xcb/xcb_keysyms.h>
 #include <X11/keysym.h>
 #include <X11/XF86keysym.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 
 struct key_handler_t
 {
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 49b06796324efb69c643ec00804d3a927e8886b1..01388cb32451fa27ed2f59e8bab39eabc69db3d8 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,5 +1,6 @@
 # main sources
 include/vlc_access.h
+include/vlc_actions.h
 include/vlc_aout.h
 include/vlc_arrays.h
 include/vlc_bits.h
@@ -26,7 +27,6 @@ include/vlc_image.h
 include/vlc_input.h
 include/vlc_intf_strings.h
 include/vlc_iso_lang.h
-include/vlc_keys.h
 include/vlc/libvlc_events.h
 include/vlc/libvlc.h
 include/vlc/libvlc_media_list.h
@@ -70,7 +70,6 @@ src/config/core.c
 src/config/file.c
 src/config/help.c
 src/config/intf.c
-src/config/keys.c
 src/darwin/error.c
 src/extras/libc.c
 src/extras/tdestroy.c
@@ -100,6 +99,7 @@ src/interface/interface.c
 src/libvlc.c
 src/libvlc.h
 src/libvlc-module.c
+src/misc/actions.c
 src/misc/block.c
 src/misc/cpu.c
 src/misc/error.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 3a23b008d57a089bba4f7b6fb95d7aaa63b4c3b7..512ee10bf78dfd7accb312730bbcbf879f62be0b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -23,6 +23,7 @@ pluginsincludedir = $(pkgincludedir)/plugins
 
 pluginsinclude_HEADERS = \
 	../include/vlc_access.h \
+	../include/vlc_actions.h \
 	../include/vlc_addons.h \
 	../include/vlc_aout.h \
 	../include/vlc_aout_volume.h \
@@ -58,7 +59,6 @@ pluginsinclude_HEADERS = \
 	../include/vlc_input.h \
 	../include/vlc_input_item.h \
 	../include/vlc_interface.h \
-	../include/vlc_keys.h \
 	../include/vlc_keystore.h \
 	../include/vlc_main.h \
 	../include/vlc_md5.h \
@@ -195,7 +195,6 @@ libvlccore_la_SOURCES = \
 	config/file.c \
 	config/help.c \
 	config/intf.c \
-	config/keys.c \
 	config/cmdline.c \
 	config/getopt.c \
 	config/vlc_getopt.h \
@@ -310,6 +309,7 @@ libvlccore_la_SOURCES = \
 	text/filesystem.c \
 	text/iso_lang.c \
 	text/iso-639_def.h \
+	misc/actions.c \
 	misc/background_worker.c \
 	misc/background_worker.h \
 	misc/md5.c \
diff --git a/src/config/cmdline.c b/src/config/cmdline.c
index 748ee5c7fe38310a3817690f6a6440b7a56ca64f..882f22479b3d5c2c6d77c9cfd4274621c294ec87 100644
--- a/src/config/cmdline.c
+++ b/src/config/cmdline.c
@@ -27,7 +27,7 @@
 
 #include <vlc_common.h>
 #include "../libvlc.h"
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <vlc_charset.h>
 #include <vlc_modules.h>
 #include <vlc_plugin.h>
diff --git a/src/config/core.c b/src/config/core.c
index 88f2a5fb05790e44a9eff0c66b94ecefc7f6bc9b..4b93834a97f9e846505f292de8a0d786600bc486 100644
--- a/src/config/core.c
+++ b/src/config/core.c
@@ -26,7 +26,7 @@
 #endif
 
 #include <vlc_common.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <vlc_modules.h>
 #include <vlc_plugin.h>
 
diff --git a/src/config/file.c b/src/config/file.c
index b73839fb4d4fa60fe9a47c0fc5a05c1c978ba364..6270a6bc9d621ae6a0d7a23da5dbb6e7a176487a 100644
--- a/src/config/file.c
+++ b/src/config/file.c
@@ -41,7 +41,7 @@
 #include "../libvlc.h"
 #include <vlc_charset.h>
 #include <vlc_fs.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <vlc_modules.h>
 #include <vlc_plugin.h>
 
diff --git a/src/libvlc-module.c b/src/libvlc-module.c
index cc25c94c260387ce049d6406988b52d2b1a8db71..d819e7567226340a61604986374692150097cdb7 100644
--- a/src/libvlc-module.c
+++ b/src/libvlc-module.c
@@ -39,7 +39,7 @@
 #include "modules/modules.h"
 
 //#define Nothing here, this is just to prevent update-po from being stupid
-#include "vlc_keys.h"
+#include "vlc_actions.h"
 #include "vlc_meta.h"
 #include <vlc_aout.h>
 
diff --git a/src/config/keys.c b/src/misc/actions.c
similarity index 99%
rename from src/config/keys.c
rename to src/misc/actions.c
index 460ca64e65483cc8677b9ba392a05105f083647e..968a085a0b3bd8138e88eff13b2ad112774ef052 100644
--- a/src/config/keys.c
+++ b/src/misc/actions.c
@@ -1,7 +1,7 @@
 /*****************************************************************************
- * keys.c: keys configuration
+ * actions.c: handle vlc actions
  *****************************************************************************
- * Copyright (C) 2003-2009 VLC authors and VideoLAN
+ * Copyright (C) 2003-2016 VLC authors and VideoLAN
  *
  * Authors: Sigmund Augdal Helberg <dnumgis@videolan.org>
  *
@@ -41,9 +41,9 @@
 #include <errno.h>
 
 #include <vlc_common.h>
-#include <vlc_keys.h>
+#include <vlc_actions.h>
 #include <vlc_charset.h>
-#include "configuration.h"
+#include "config/configuration.h"
 #include "libvlc.h"
 
 typedef struct key_descriptor_s