Optionally grabbing evdev device
This commit is contained in:
parent
97e45aa8c6
commit
60a2cb7408
|
@ -66,6 +66,7 @@ nodes = {
|
||||||
options = {
|
options = {
|
||||||
file = "/dev/input/event7";
|
file = "/dev/input/event7";
|
||||||
namespace = "namespaces.clickpad";
|
namespace = "namespaces.clickpad";
|
||||||
|
// grab = 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
select_key_events = {
|
select_key_events = {
|
||||||
|
|
|
@ -76,8 +76,10 @@ create(GraphNodeSpecification * spec, GraphNodeConfig * config, InitializationEn
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
const char *filename = NULL;
|
const char *filename = NULL;
|
||||||
|
bool should_grab = false;
|
||||||
if (config) {
|
if (config) {
|
||||||
node->namespace = env_resolve_constant(env, config_setting_get_member(config->options, "namespace"));
|
node->namespace = env_resolve_constant(env, config_setting_get_member(config->options, "namespace"));
|
||||||
|
should_grab = env_resolve_constant(env, config_setting_get_member(config->options, "grab")) != 0;
|
||||||
config_setting_lookup_string(config->options, "file", &filename);
|
config_setting_lookup_string(config->options, "file", &filename);
|
||||||
}
|
}
|
||||||
if (filename == NULL) {
|
if (filename == NULL) {
|
||||||
|
@ -91,6 +93,14 @@ create(GraphNodeSpecification * spec, GraphNodeConfig * config, InitializationEn
|
||||||
free(node);
|
free(node);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (should_grab) {
|
||||||
|
if ((err = libevdev_grab(node->dev, LIBEVDEV_GRAB)) < 0) {
|
||||||
|
errno = -err;
|
||||||
|
libevdev_free(node->dev);
|
||||||
|
free(node);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
*node = (EvdevGraphNode) {
|
*node = (EvdevGraphNode) {
|
||||||
.as_GraphNode = {
|
.as_GraphNode = {
|
||||||
.as_EventPositionBase = {
|
.as_EventPositionBase = {
|
||||||
|
@ -142,6 +152,7 @@ GraphNodeSpecification nodespec_evdev = (GraphNodeSpecification) {
|
||||||
.documentation = "Reads evdev events of the specified device\nDoes not accept events\nSends events on all connectors with major code, minor code, payload respectively set to evdev event type, code, value"
|
.documentation = "Reads evdev events of the specified device\nDoes not accept events\nSends events on all connectors with major code, minor code, payload respectively set to evdev event type, code, value"
|
||||||
"\nOption 'namespace' (optional): set namespace for the generated events"
|
"\nOption 'namespace' (optional): set namespace for the generated events"
|
||||||
"\nOption 'file' (required): device file to read events from (like '/dev/input/eventN'), the process must have sufficient privileges to read the file"
|
"\nOption 'file' (required): device file to read events from (like '/dev/input/eventN'), the process must have sufficient privileges to read the file"
|
||||||
|
"\nOption 'grab' (optional): whether to prevent others from receiving events from this device"
|
||||||
,
|
,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue