mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Add Kodi keypress event (#93321)
* Add keypress events * Fix styling * fix tests * improve tests * Revert device trigger * Add entity_id to event for ease of filtering
This commit is contained in:
parent
f86cc34644
commit
4ef315b32a
@ -26,6 +26,7 @@ from homeassistant.components.media_player import (
|
|||||||
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ENTITY_ID,
|
ATTR_ENTITY_ID,
|
||||||
|
CONF_DEVICE_ID,
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_PASSWORD,
|
CONF_PASSWORD,
|
||||||
@ -33,6 +34,7 @@ from homeassistant.const import (
|
|||||||
CONF_PROXY_SSL,
|
CONF_PROXY_SSL,
|
||||||
CONF_SSL,
|
CONF_SSL,
|
||||||
CONF_TIMEOUT,
|
CONF_TIMEOUT,
|
||||||
|
CONF_TYPE,
|
||||||
CONF_USERNAME,
|
CONF_USERNAME,
|
||||||
EVENT_HOMEASSISTANT_STARTED,
|
EVENT_HOMEASSISTANT_STARTED,
|
||||||
)
|
)
|
||||||
@ -279,6 +281,7 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
self._connection = connection
|
self._connection = connection
|
||||||
self._kodi = kodi
|
self._kodi = kodi
|
||||||
self._unique_id = uid
|
self._unique_id = uid
|
||||||
|
self._device_id = None
|
||||||
self._players = None
|
self._players = None
|
||||||
self._properties = {}
|
self._properties = {}
|
||||||
self._item = {}
|
self._item = {}
|
||||||
@ -336,6 +339,20 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
self._app_properties["muted"] = data["muted"]
|
self._app_properties["muted"] = data["muted"]
|
||||||
self.async_write_ha_state()
|
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):
|
async def async_on_quit(self, sender, data):
|
||||||
"""Reset the player state on quit action."""
|
"""Reset the player state on quit action."""
|
||||||
await self._clear_connection()
|
await self._clear_connection()
|
||||||
@ -410,6 +427,7 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
dev_reg = dr.async_get(self.hass)
|
dev_reg = dr.async_get(self.hass)
|
||||||
device = dev_reg.async_get_device({(DOMAIN, self.unique_id)})
|
device = dev_reg.async_get_device({(DOMAIN, self.unique_id)})
|
||||||
dev_reg.async_update_device(device.id, sw_version=sw_version)
|
dev_reg.async_update_device(device.id, sw_version=sw_version)
|
||||||
|
self._device_id = device.id
|
||||||
|
|
||||||
self.async_schedule_update_ha_state(True)
|
self.async_schedule_update_ha_state(True)
|
||||||
|
|
||||||
@ -457,6 +475,7 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
self._connection.server.Application.OnVolumeChanged = (
|
self._connection.server.Application.OnVolumeChanged = (
|
||||||
self.async_on_volume_changed
|
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.OnQuit = self.async_on_quit
|
||||||
self._connection.server.System.OnRestart = self.async_on_quit
|
self._connection.server.System.OnRestart = self.async_on_quit
|
||||||
self._connection.server.System.OnSleep = self.async_on_quit
|
self._connection.server.System.OnSleep = self.async_on_quit
|
||||||
|
Loading…
x
Reference in New Issue
Block a user