Skip to content

Update keyboard_remote.markdown #1878

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 25, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 27 additions & 6 deletions source/_components/keyboard_remote.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,35 @@ The `evdev` package is used to interface with the keyboard and thus this is Linu
```yaml
# Example configuration.yaml entry
keyboard_remote:
device_descriptor: '/dev/input/event12'
type: 'key_up'
```

Configuration variables:

- **device_descriptor** (*Required*): Path to the local event input device file that corresponds to the keyboard.
- **type** (*Required*): Possible values are `key_up`, `key_down`, and `key_hold`. Be careful, `key_hold` will fire a lot of events.
- **device_descriptor** (*Optional*): Path to the local event input device file that corresponds to the keyboard.
- **device_name** (*Optional*): Name of the keyboard device.

Either `device_name` or `device_descriptor` must be present in the configuration entry. Indicating a device name is useful in case of repeating disconnections and re-connections of the device (for example, a bluetooth keyboard): the local input device file might change, thus breaking the configuration, while the name remains the same.
In case of presence of multiple devices of the same model, `device_descriptor` must be used.

A list of possible device descriptors and names is reported in the debug log at startup when the device indicated in the configuration entry could not be found.

A full configuration for Keyboard Remote could look like the one below:

```yaml
keyboard_remote:
device_descriptor: '/dev/input/by-id/bluetooth-keyboard'
type: 'key_up'
```

or like the following:

```yaml
keyboard_remote:
device_name: 'Bluetooth Keyboard'
type: 'key_down'
```

And an automation rule to breathe life into it:

Expand All @@ -51,7 +72,7 @@ automation:
This component manages disconnections and re-connections of the keyboard, for example in the case of a bluetooth device that turns off automatically to preserve battery.

If the keyboard disconnects, the component will fire an event `keyboard_remote_disconnected`.
When the keyboard reconnects an event `keyboard_remote_connected` will be fired.
When the keyboard reconnects, an event `keyboard_remote_connected` will be fired.

Here's an automation example that plays a sound through a media player whenever the keyboard connects/disconnects:
```yaml
Expand Down Expand Up @@ -83,14 +104,14 @@ There might be permissions problems with the event input device file. If this is
```
sudo setfacl -m u:HASS_USER:rw /dev/input/event*
```
where `HASS_USER` is the user hass runs as and `event*` is the event input device file your keyboard is connected to.
where `HASS_USER` is the user hass runs as.

If you want to make this permanent, you can use a udev rule that sets it for your event input device. Add a file `/etc/udev/rules.d/99-userdev-input.rules` containing:
If you want to make this permanent, you can use a udev rule that sets it for all event input devices. Add a file `/etc/udev/rules.d/99-userdev-input.rules` containing:
```
KERNEL=="event*", SUBSYSTEM=="input", RUN+="/usr/bin/setfacl -m u:HASS_USER:rw $env{DEVNAME}"
```

You can check the ACLs permission with
You can check ACLs permissions with
```
getfacl /dev/input/event*
```