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 313a98a9a8..75552cd517 100644 --- a/input/input_keymaps.c +++ b/input/input_keymaps.c @@ -1092,6 +1092,10 @@ const struct rarch_key_map rarch_key_map_linux[] = { { 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