[linuxinput] handle keys not known by libevdev (#13632)
* [linuxinput] handle keys not known by libevdev Previously if libevdev could not resolve a numeric event code to a symbolic name the name "null" was used. This is useless for the user and may lead to duplicate-channel errors if multiple unknown keys are encountered. Instead use the numeric code itself as channel name if no symbolic code could be determined. Reported-in: https://community.openhab.org/t/linuxinput-binding-and-mouse-capture/122612/8 Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de> * [linuxinput] add channel description Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>pull/13642/head
parent
33de7b426b
commit
894668ffce
|
@ -81,3 +81,10 @@ The following happens when pressing and releasing a key:
|
|||
#### Rationale
|
||||
|
||||
Channel states are updated first to allow rules triggered by channel triggers to access the new state.
|
||||
|
||||
#### Channel names
|
||||
|
||||
The binding tries to translate the numeric event codes to their symbolic names; `KEY_1`, `KEY_A`, `KEY_BACKSPACE` etc.
|
||||
|
||||
If the currently installed version of libevdev does not know the symbolic name of a key, the numeric value is used.
|
||||
Please note that future versions of libevdev may start translating the symbolic names.
|
||||
|
|
|
@ -95,9 +95,13 @@ public final class LinuxInputHandler extends DeviceReadingHandler {
|
|||
EvdevDevice newDevice = new EvdevDevice(config.path);
|
||||
for (EvdevDevice.Key o : newDevice.enumerateKeys()) {
|
||||
String name = o.getName();
|
||||
if (name == null) {
|
||||
name = Integer.toString(o.getCode());
|
||||
}
|
||||
Channel channel = ChannelBuilder
|
||||
.create(new ChannelUID(thing.getUID(), CHANNEL_GROUP_KEYPRESSES_ID, name), CoreItemFactory.CONTACT)
|
||||
.withLabel(name).withType(CHANNEL_TYPE_KEY_PRESS).build();
|
||||
.withLabel(name).withType(CHANNEL_TYPE_KEY_PRESS).withDescription("Event Code " + o.getCode())
|
||||
.build();
|
||||
channels.put(o.getCode(), channel);
|
||||
newChannels.add(channel);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue