From d9f90ce7f38cd5878a99bebe8ab45a5cb7863ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Fri, 16 Dec 2022 19:49:18 +0100 Subject: [PATCH] Shortcuts: provide some default actions for mute, increment and decrement volume media keys Works for HID-aware devices (USB & PS/2). Change-Id: I45e9ededaab1699f30e55fb644ec0e3ceebeb191 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5937 Reviewed-by: Adrien Destugues --- build/jam/images/definitions/regular | 5 ++++ data/settings/shortcuts_settings | Bin 0 -> 4555 bytes src/preferences/shortcuts/ShortcutsWindow.cpp | 22 +++++++++++++----- src/preferences/shortcuts/ShortcutsWindow.h | 2 +- 4 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 data/settings/shortcuts_settings diff --git a/build/jam/images/definitions/regular b/build/jam/images/definitions/regular index 7bca89a614..5e06f76512 100644 --- a/build/jam/images/definitions/regular +++ b/build/jam/images/definitions/regular @@ -289,3 +289,8 @@ AddDirectoryToHaikuImage home config settings printers "Save as PDF" # padblocker AddDirectoryToHaikuImage home config settings touchpad ; + +# shortcuts defaults +local shortcutsSettingsFile = shortcuts_settings ; +SEARCH on $(shortcutsSettingsFile) = [ FDirName $(HAIKU_TOP) data settings ] ; +AddFilesToHaikuImage home config settings : $(shortcutsSettingsFile) ; diff --git a/data/settings/shortcuts_settings b/data/settings/shortcuts_settings new file mode 100644 index 0000000000000000000000000000000000000000..e0ee2199c66aaed11202d864a744d8e10750ccf6 GIT binary patch literal 4555 zcmeHK!A{&T5S?_Ppb8Zz2&zg&95^7P3ZdROL6O)!ux&;70po;jXtIICyQ2TqLvP$T z@EP3T19~m**+B#lXb+XjRvyV4@0(|P#?HJXt@ieszyh>Ck61qK{G%0z{5my|QE4{A zb_4h!xHS69qgcy1Mzsc59G)}+?ZvqS8-Q5efUI1Gn0mgnH;}$1x4s8X^ zjUAEZ=Px_NF}1X+YXkETCpLxl6^;BrUfCqbKgYrcxH6UiqnRA>Uuf$XNWM;0S;}i5 zVJ9z)?wK-Vz7G+dXPN3o@&?@1{iM5E#-^XAy)0h*kjeM>hg`^nWIBmXz_@E!9+|i_ zaUo}jX^?$f2ao$!-$(8fW2W8gBlCG%EyjKzV>VCj%LFD^z?J+454X0DYw!_w`OkvY zPP%PnbZ0w>(`e5{n}wST-UH*9`}lH& zyP#+AucgXQi7D$b7so{4!{P7SE|(bc6nLCNo&s-xAx~igDP*V}swMHo3U>uSo!n8quI_9(ZQ9hPr%YZ*s)}!YnS}qYQrYT+ zT6r~pO3f3i=9ga0y_%zfD7}CAf#lWPDj$FT;cLML4)#A#^TeyUJf-H5Rr4#a=3dRc Tn%i&ChhIqk-Tb+{n@4gDG%3aD literal 0 HcmV?d00001 diff --git a/src/preferences/shortcuts/ShortcutsWindow.cpp b/src/preferences/shortcuts/ShortcutsWindow.cpp index d41db869b4..6f67b24081 100644 --- a/src/preferences/shortcuts/ShortcutsWindow.cpp +++ b/src/preferences/shortcuts/ShortcutsWindow.cpp @@ -40,6 +40,8 @@ #include #include #include +#include +#include #include "EditWindow.h" #include "KeyInfos.h" @@ -215,6 +217,12 @@ ShortcutsWindow::ShortcutsWindow() message.AddString("startupRef", "please"); PostMessage(&message); // tell ourselves to load this file if it exists + } else { + _AddNewSpec("/bin/setvolume -m", (B_HID_USAGE_PAGE_CONSUMER << 16) | B_HID_UID_CON_MUTE); + _AddNewSpec("/bin/setvolume -i", (B_HID_USAGE_PAGE_CONSUMER << 16) | B_HID_UID_CON_VOLUME_INCREMENT); + _AddNewSpec("/bin/setvolume -d", (B_HID_USAGE_PAGE_CONSUMER << 16) | B_HID_UID_CON_VOLUME_DECREMENT); + fLastSaved = BEntry(&keySetRef); + PostMessage(SAVE_KEYSET); } BLayoutBuilder::Group<>(this, B_VERTICAL, 0) @@ -315,11 +323,9 @@ ShortcutsWindow::_GetSettingsFile(entry_ref* eref) return false; else path.Append(SHORTCUTS_SETTING_FILE_NAME); - - if (BEntry(path.Path(), true).GetRef(eref) == B_OK) - return true; - else - return false; + BEntry entry(path.Path(), true); + entry.GetRef(eref); + return entry.Exists(); } @@ -435,7 +441,7 @@ ShortcutsWindow::_LoadWindowSettings(const BMessage& loadMessage) // Creates a new entry and adds it to the GUI. (defaultCommand) will be the // text in the entry, or NULL if no text is desired. void -ShortcutsWindow::_AddNewSpec(const char* defaultCommand) +ShortcutsWindow::_AddNewSpec(const char* defaultCommand, uint32 keyCode) { _MarkKeySetModified(); @@ -454,6 +460,10 @@ ShortcutsWindow::_AddNewSpec(const char* defaultCommand) fColumnListView->ScrollTo(spec); if (defaultCommand) spec->SetCommand(defaultCommand); + if (keyCode != 0) { + spec->ProcessColumnTextString(ShortcutsSpec::KEY_COLUMN_INDEX, + GetFallbackKeyName(keyCode).String()); + } } diff --git a/src/preferences/shortcuts/ShortcutsWindow.h b/src/preferences/shortcuts/ShortcutsWindow.h index 00d1001959..f7f6d895a5 100644 --- a/src/preferences/shortcuts/ShortcutsWindow.h +++ b/src/preferences/shortcuts/ShortcutsWindow.h @@ -57,7 +57,7 @@ public: private: BMenuItem* _CreateActuatorPresetMenuItem(const char* label) const; - void _AddNewSpec(const char* defaultCommand); + void _AddNewSpec(const char* defaultCommand, uint32 keyCode = 0); void _MarkKeySetModified(); bool _LoadKeySet(const BMessage& loadMessage); bool _SaveKeySet(BEntry& saveEntry);