-static Session *button_get_session(Button *b) {
- Seat *seat;
- assert(b);
-
- if (!b->seat)
- return NULL;
-
- seat = hashmap_get(b->manager->seats, b->seat);
- if (!seat)
- return NULL;
-
- return seat->active;
-}
+static int button_handle(
+ Button *b,
+ InhibitWhat inhibit_key,
+ HandleButton handle,
+ bool ignore_inhibited,
+ bool is_edge) {
+
+ static const char * const message_table[_HANDLE_BUTTON_MAX] = {
+ [HANDLE_POWEROFF] = "Powering Off...",
+ [HANDLE_REBOOT] = "Rebooting...",
+ [HANDLE_HALT] = "Halting...",
+ [HANDLE_KEXEC] = "Rebooting via kexec...",
+ [HANDLE_SUSPEND] = "Suspending...",
+ [HANDLE_HIBERNATE] = "Hibernating..."
+ };
+
+ static const char * const target_table[_HANDLE_BUTTON_MAX] = {
+ [HANDLE_POWEROFF] = "poweroff.target",
+ [HANDLE_REBOOT] = "reboot.target",
+ [HANDLE_HALT] = "halt.target",
+ [HANDLE_KEXEC] = "kexec.target",
+ [HANDLE_SUSPEND] = "suspend.target",
+ [HANDLE_HIBERNATE] = "hibernate.target"
+ };