Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """Support to emulate keyboard presses on host machine."""
2 
3 from pykeyboard import PyKeyboard
4 import voluptuous as vol
5 
6 from homeassistant.const import (
7  SERVICE_MEDIA_NEXT_TRACK,
8  SERVICE_MEDIA_PLAY_PAUSE,
9  SERVICE_MEDIA_PREVIOUS_TRACK,
10  SERVICE_VOLUME_DOWN,
11  SERVICE_VOLUME_MUTE,
12  SERVICE_VOLUME_UP,
13 )
14 from homeassistant.core import HomeAssistant
15 from homeassistant.helpers import config_validation as cv
16 from homeassistant.helpers.typing import ConfigType
17 
18 DOMAIN = "keyboard"
19 
20 TAP_KEY_SCHEMA = vol.Schema({})
21 
22 CONFIG_SCHEMA = cv.empty_config_schema(DOMAIN)
23 
24 
25 def setup(hass: HomeAssistant, config: ConfigType) -> bool:
26  """Listen for keyboard events."""
27 
28  keyboard = PyKeyboard()
29  keyboard.special_key_assignment()
30 
31  hass.services.register(
32  DOMAIN,
33  SERVICE_VOLUME_UP,
34  lambda service: keyboard.tap_key(keyboard.volume_up_key),
35  schema=TAP_KEY_SCHEMA,
36  )
37 
38  hass.services.register(
39  DOMAIN,
40  SERVICE_VOLUME_DOWN,
41  lambda service: keyboard.tap_key(keyboard.volume_down_key),
42  schema=TAP_KEY_SCHEMA,
43  )
44 
45  hass.services.register(
46  DOMAIN,
47  SERVICE_VOLUME_MUTE,
48  lambda service: keyboard.tap_key(keyboard.volume_mute_key),
49  schema=TAP_KEY_SCHEMA,
50  )
51 
52  hass.services.register(
53  DOMAIN,
54  SERVICE_MEDIA_PLAY_PAUSE,
55  lambda service: keyboard.tap_key(keyboard.media_play_pause_key),
56  schema=TAP_KEY_SCHEMA,
57  )
58 
59  hass.services.register(
60  DOMAIN,
61  SERVICE_MEDIA_NEXT_TRACK,
62  lambda service: keyboard.tap_key(keyboard.media_next_track_key),
63  schema=TAP_KEY_SCHEMA,
64  )
65 
66  hass.services.register(
67  DOMAIN,
68  SERVICE_MEDIA_PREVIOUS_TRACK,
69  lambda service: keyboard.tap_key(keyboard.media_prev_track_key),
70  schema=TAP_KEY_SCHEMA,
71  )
72  return True
bool setup(HomeAssistant hass, ConfigType config)
Definition: __init__.py:25