diff --git a/homeassistant/components/kodi/media_player.py b/homeassistant/components/kodi/media_player.py index 3272491a06d..86788db6ae6 100644 --- a/homeassistant/components/kodi/media_player.py +++ b/homeassistant/components/kodi/media_player.py @@ -26,6 +26,7 @@ from homeassistant.components.media_player import ( from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry from homeassistant.const import ( ATTR_ENTITY_ID, + CONF_DEVICE_ID, CONF_HOST, CONF_NAME, CONF_PASSWORD, @@ -33,6 +34,7 @@ from homeassistant.const import ( CONF_PROXY_SSL, CONF_SSL, CONF_TIMEOUT, + CONF_TYPE, CONF_USERNAME, EVENT_HOMEASSISTANT_STARTED, ) @@ -279,6 +281,7 @@ class KodiEntity(MediaPlayerEntity): self._connection = connection self._kodi = kodi self._unique_id = uid + self._device_id = None self._players = None self._properties = {} self._item = {} @@ -336,6 +339,20 @@ class KodiEntity(MediaPlayerEntity): self._app_properties["muted"] = data["muted"] self.async_write_ha_state() + @callback + def async_on_key_press(self, sender, data): + """Handle a incoming key press notification.""" + self.hass.bus.async_fire( + f"{DOMAIN}_keypress", + { + CONF_TYPE: "keypress", + CONF_DEVICE_ID: self._device_id, + ATTR_ENTITY_ID: self.entity_id, + "sender": sender, + "data": data, + }, + ) + async def async_on_quit(self, sender, data): """Reset the player state on quit action.""" await self._clear_connection() @@ -410,6 +427,7 @@ class KodiEntity(MediaPlayerEntity): dev_reg = dr.async_get(self.hass) device = dev_reg.async_get_device({(DOMAIN, self.unique_id)}) dev_reg.async_update_device(device.id, sw_version=sw_version) + self._device_id = device.id self.async_schedule_update_ha_state(True) @@ -457,6 +475,7 @@ class KodiEntity(MediaPlayerEntity): self._connection.server.Application.OnVolumeChanged = ( self.async_on_volume_changed ) + self._connection.server.Other.OnKeyPress = self.async_on_key_press self._connection.server.System.OnQuit = self.async_on_quit self._connection.server.System.OnRestart = self.async_on_quit self._connection.server.System.OnSleep = self.async_on_quit