return log_oom();
r = sd_pid_get_session(getpid(), &e->session);
- if (r < 0) {
- log_error("Cannot retrieve logind session: %s", strerror(-r));
- return r;
- }
+ if (r < 0)
+ return log_error_errno(r, "Cannot retrieve logind session: %m");
r = sd_session_get_seat(e->session, &e->seat);
- if (r < 0) {
- log_error("Cannot retrieve seat of logind session: %s", strerror(-r));
- return r;
- }
+ if (r < 0)
+ return log_error_errno(r, "Cannot retrieve seat of logind session: %m");
e->managed = is_managed(e->session);
k->value == 1 ? "DOWN" :
"REPEAT");
+ /* Resync state */
+ printf(" | %-6s", data->resync ? "RESYNC" : "");
+
/* Keycode that triggered the event */
printf(" | %5u", (unsigned)k->keycode);
printf(" %-5s", (k->mods & IDEV_KBDMOD_LINUX) ? "LINUX" : "");
printf(" %-4s", (k->mods & IDEV_KBDMOD_CAPS) ? "CAPS" : "");
+ /* Consumed modifiers */
+ printf(" | %-5s", (k->consumed_mods & IDEV_KBDMOD_SHIFT) ? "SHIFT" : "");
+ printf(" %-4s", (k->consumed_mods & IDEV_KBDMOD_CTRL) ? "CTRL" : "");
+ printf(" %-3s", (k->consumed_mods & IDEV_KBDMOD_ALT) ? "ALT" : "");
+ printf(" %-5s", (k->consumed_mods & IDEV_KBDMOD_LINUX) ? "LINUX" : "");
+ printf(" %-4s", (k->consumed_mods & IDEV_KBDMOD_CAPS) ? "CAPS" : "");
+
/* Resolved symbols */
printf(" |");
for (i = 0; i < k->n_syms; ++i) {
name,
evcat_idev_fn,
e);
- if (r < 0) {
- log_error("Cannot create idev session: %s", strerror(-r));
- return r;
- }
-
- idev_session_enable(e->idev_session);
+ if (r < 0)
+ return log_error_errno(r, "Cannot create idev session: %m");
if (e->managed) {
r = sysview_session_take_control(ev->session_add.session);
- if (r < 0) {
- log_error("Cannot request session control: %s", strerror(-r));
- return r;
- }
+ if (r < 0)
+ return log_error_errno(r, "Cannot request session control: %m");
}
+ idev_session_enable(e->idev_session);
+
break;
case SYSVIEW_EVENT_SESSION_REMOVE:
idev_session_disable(e->idev_session);
e->idev_session = idev_session_free(e->idev_session);
- sd_event_exit(e->event, 0);
+ if (sd_event_get_exit_code(e->event, &r) == -ENODATA)
+ sd_event_exit(e->event, 0);
break;
case SYSVIEW_EVENT_SESSION_ATTACH:
d = ev->session_attach.device;
type = sysview_device_get_type(d);
if (type == SYSVIEW_DEVICE_EVDEV) {
r = idev_session_add_evdev(e->idev_session, sysview_device_get_ud(d));
- if (r < 0) {
- log_error("Cannot add evdev device to idev: %s", strerror(-r));
- return r;
- }
+ if (r < 0)
+ return log_error_errno(r, "Cannot add evdev device to idev: %m");
}
break;
type = sysview_device_get_type(d);
if (type == SYSVIEW_DEVICE_EVDEV) {
r = idev_session_remove_evdev(e->idev_session, sysview_device_get_ud(d));
- if (r < 0) {
- log_error("Cannot remove evdev device from idev: %s", strerror(-r));
- return r;
- }
+ if (r < 0)
+ return log_error_errno(r, "Cannot remove evdev device from idev: %m");
}
break;
case SYSVIEW_EVENT_SESSION_CONTROL:
r = ev->session_control.error;
- if (r < 0) {
- log_error("Cannot acquire session control: %s", strerror(-r));
- return r;
- }
+ if (r < 0)
+ return log_error_errno(r, "Cannot acquire session control: %m");
r = ioctl(1, KDSKBMODE, K_UNICODE);
- if (r < 0) {
- log_error("Cannot set K_UNICODE on stdout: %m");
- return -errno;
- }
+ if (r < 0)
+ return log_error_errno(errno, "Cannot set K_UNICODE on stdout: %m");
r = ioctl(1, KDSETMODE, KD_TEXT);
- if (r < 0) {
- log_error("Cannot set KD_TEXT on stdout: %m");
- return -errno;
- }
+ if (r < 0)
+ return log_error_errno(errno, "Cannot set KD_TEXT on stdout: %m");
printf("\n");