diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index 01b62e0c78..c49dd6d0d5 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -392,7 +392,7 @@ static void udev_input_handle_hotplug(udev_input_t *udev) { device_handle_cb cb; enum udev_input_dev_type dev_type = UDEV_INPUT_KEYBOARD; - const char *val_keyboard = NULL; + const char *val_key = NULL; const char *val_mouse = NULL; const char *val_touchpad = NULL; const char *action = NULL; @@ -403,14 +403,15 @@ static void udev_input_handle_hotplug(udev_input_t *udev) if (!dev) return; - val_keyboard = udev_device_get_property_value(dev, "ID_INPUT_KEYBOARD"); + val_key = udev_device_get_property_value(dev, "ID_INPUT_KEY"); val_mouse = udev_device_get_property_value(dev, "ID_INPUT_MOUSE"); val_touchpad = udev_device_get_property_value(dev, "ID_INPUT_TOUCHPAD"); action = udev_device_get_action(dev); devnode = udev_device_get_devnode(dev); - if (val_keyboard && string_is_equal_fast(val_keyboard, "1", 1) && devnode) + if (val_key && string_is_equal_fast(val_key, "1", 1) && devnode) { + /* EV_KEY device, can be a keyboard or a remote control device. */ dev_type = UDEV_INPUT_KEYBOARD; cb = udev_handle_keyboard; } diff --git a/input/input_keymaps.c b/input/input_keymaps.c index ddd900a45f..75552cd517 100644 --- a/input/input_keymaps.c +++ b/input/input_keymaps.c @@ -189,6 +189,8 @@ const struct input_key_map input_config_key_map[] = { { "subtract", RETROK_KP_MINUS }, { "kp_plus", RETROK_KP_PLUS }, { "kp_minus", RETROK_KP_MINUS }, + { "volume-", RETROK_VOLUMEDOWN }, + { "volume+", RETROK_VOLUMEUP }, { "f1", RETROK_F1 }, { "f2", RETROK_F2 }, { "f3", RETROK_F3 }, @@ -1087,6 +1089,13 @@ const struct rarch_key_map rarch_key_map_linux[] = { { KEY_EURO, RETROK_EURO }, #endif { KEY_UNDO, RETROK_UNDO }, + { KEY_VOLUMEDOWN, RETROK_VOLUMEDOWN }, + { KEY_VOLUMEUP, RETROK_VOLUMEUP }, + + /* Extra keys for remote controls. */ + { KEY_OK, RETROK_RETURN }, + { KEY_BACK, RETROK_BACKSPACE }, + { 0, RETROK_UNKNOWN }, }; #endif diff --git a/libretro-common/include/libretro.h b/libretro-common/include/libretro.h index b100865c5a..d486ef2265 100644 --- a/libretro-common/include/libretro.h +++ b/libretro-common/include/libretro.h @@ -422,6 +422,9 @@ enum retro_key RETROK_EURO = 321, RETROK_UNDO = 322, + RETROK_VOLUMEDOWN = 323, + RETROK_VOLUMEUP = 324, + RETROK_LAST, RETROK_DUMMY = INT_MAX /* Ensure sizeof(enum) == sizeof(int) */