From 71ee12af6af92f270bdc469f7f2bd7e4e6ef0e02 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 21 Jun 2022 22:11:49 +0200 Subject: [PATCH] Add API to format keyboard modifiers for tooltips --- libs/gtkmm2ext/gtkmm2ext/keyboard.h | 1 + libs/gtkmm2ext/keyboard.cc | 31 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/libs/gtkmm2ext/gtkmm2ext/keyboard.h b/libs/gtkmm2ext/gtkmm2ext/keyboard.h index 5f88c2c0e4..156bb2f987 100644 --- a/libs/gtkmm2ext/gtkmm2ext/keyboard.h +++ b/libs/gtkmm2ext/gtkmm2ext/keyboard.h @@ -89,6 +89,7 @@ public: static const char* momentary_push_name (); static const char* group_override_event_name (); + static std::string format_modifier (uint32_t); bool key_is_down (uint32_t keyval); guint modifier_state (); diff --git a/libs/gtkmm2ext/keyboard.cc b/libs/gtkmm2ext/keyboard.cc index 526035ba46..bf0a4a47c5 100644 --- a/libs/gtkmm2ext/keyboard.cc +++ b/libs/gtkmm2ext/keyboard.cc @@ -204,6 +204,37 @@ Keyboard::group_override_event_name () return tertiary_modifier_name (); } +std::string +Keyboard::format_modifier (uint32_t mod) +{ + std::string rv = ""; + if (mod & PrimaryModifier) { + rv += primary_modifier_short_name (); + } + if (mod & SecondaryModifier) { + if (!rv.empty ()) { + rv += "+"; + } + rv += secondary_modifier_short_name (); + } + if (mod & TertiaryModifier) { + if (!rv.empty ()) { + rv += "+"; + } + rv += tertiary_modifier_short_name (); + } + if (mod & Level4Modifier) { + if (!rv.empty ()) { + rv += "+"; + } + rv += level4_modifier_short_name (); + } + if (!rv.empty ()) { + rv += "+"; + } + return rv; +} + guint Keyboard::GainFineScaleModifier = Keyboard::PrimaryModifier; guint Keyboard::GainExtraFineScaleModifier = Keyboard::SecondaryModifier;