mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-12 12:42:30 +04:00
Merge pull request #921 from hryamzik/ptt-zoom-custom
HID PTT: adding global zoom and google meet shortcuts for MacOS
This commit is contained in:
@@ -44,6 +44,7 @@ enum HidPushToTalkAppIndex {
|
|||||||
HidPushToTalkAppIndexFaceTime,
|
HidPushToTalkAppIndexFaceTime,
|
||||||
HidPushToTalkAppIndexGather,
|
HidPushToTalkAppIndexGather,
|
||||||
HidPushToTalkAppIndexGoogleMeet,
|
HidPushToTalkAppIndexGoogleMeet,
|
||||||
|
HidPushToTalkAppIndexGoogleMeetGlobal,
|
||||||
HidPushToTalkAppIndexGoogleHangouts,
|
HidPushToTalkAppIndexGoogleHangouts,
|
||||||
HidPushToTalkAppIndexJamulus,
|
HidPushToTalkAppIndexJamulus,
|
||||||
HidPushToTalkAppIndexSignal,
|
HidPushToTalkAppIndexSignal,
|
||||||
@@ -54,6 +55,7 @@ enum HidPushToTalkAppIndex {
|
|||||||
HidPushToTalkAppIndexTeamSpeak,
|
HidPushToTalkAppIndexTeamSpeak,
|
||||||
HidPushToTalkAppIndexWebex,
|
HidPushToTalkAppIndexWebex,
|
||||||
HidPushToTalkAppIndexZoom,
|
HidPushToTalkAppIndexZoom,
|
||||||
|
HidPushToTalkAppIndexZoomGlobal,
|
||||||
HidPushToTalkAppIndexSize,
|
HidPushToTalkAppIndexSize,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -88,6 +90,32 @@ static void hid_ptt_trigger_hand_linux_meet(HidPushToTalk* hid_ptt) {
|
|||||||
hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_ALT | HID_KEYBOARD_H);
|
hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_ALT | HID_KEYBOARD_H);
|
||||||
hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_ALT | HID_KEYBOARD_H);
|
hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_ALT | HID_KEYBOARD_H);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// meet global macos
|
||||||
|
static void hid_ptt_trigger_mute_macos_meet_global(HidPushToTalk* hid_ptt) {
|
||||||
|
hid_hal_keyboard_press(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_CTRL | HID_KEYBOARD_7);
|
||||||
|
hid_hal_keyboard_release(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_CTRL | HID_KEYBOARD_7);
|
||||||
|
}
|
||||||
|
static void hid_ptt_trigger_camera_macos_meet_global(HidPushToTalk* hid_ptt) {
|
||||||
|
hid_hal_keyboard_press(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_CTRL | HID_KEYBOARD_8);
|
||||||
|
hid_hal_keyboard_release(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_CTRL | HID_KEYBOARD_8);
|
||||||
|
}
|
||||||
|
static void hid_ptt_trigger_hand_macos_meet_global(HidPushToTalk* hid_ptt) {
|
||||||
|
hid_hal_keyboard_press(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_CTRL | HID_KEYBOARD_9);
|
||||||
|
hid_hal_keyboard_release(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_CTRL | HID_KEYBOARD_9);
|
||||||
|
}
|
||||||
static void hid_ptt_trigger_mute_macos_zoom(HidPushToTalk* hid_ptt) {
|
static void hid_ptt_trigger_mute_macos_zoom(HidPushToTalk* hid_ptt) {
|
||||||
hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_A);
|
hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_A);
|
||||||
hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_A);
|
hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_A);
|
||||||
@@ -109,6 +137,40 @@ static void hid_ptt_trigger_hand_zoom(HidPushToTalk* hid_ptt) {
|
|||||||
hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_ALT | HID_KEYBOARD_Y);
|
hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_ALT | HID_KEYBOARD_Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// zoom global macos
|
||||||
|
static void hid_ptt_trigger_mute_macos_zoom_global(HidPushToTalk* hid_ptt) {
|
||||||
|
hid_hal_keyboard_press(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_RIGHT_ALT | KEY_MOD_LEFT_SHIFT |
|
||||||
|
HID_KEYBOARD_M);
|
||||||
|
hid_hal_keyboard_release(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_RIGHT_ALT | KEY_MOD_LEFT_SHIFT |
|
||||||
|
HID_KEYBOARD_M);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void hid_ptt_trigger_camera_macos_zoom_global(HidPushToTalk* hid_ptt) {
|
||||||
|
hid_hal_keyboard_press(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_RIGHT_ALT | KEY_MOD_LEFT_SHIFT |
|
||||||
|
HID_KEYBOARD_U);
|
||||||
|
hid_hal_keyboard_release(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_RIGHT_ALT | KEY_MOD_LEFT_SHIFT |
|
||||||
|
HID_KEYBOARD_U);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void hid_ptt_trigger_hand_zoom_global(HidPushToTalk* hid_ptt) {
|
||||||
|
hid_hal_keyboard_press(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_RIGHT_ALT | KEY_MOD_LEFT_SHIFT |
|
||||||
|
HID_KEYBOARD_Y);
|
||||||
|
hid_hal_keyboard_release(
|
||||||
|
hid_ptt->hid,
|
||||||
|
KEY_MOD_LEFT_GUI | KEY_MOD_RIGHT_ALT | KEY_MOD_LEFT_SHIFT |
|
||||||
|
HID_KEYBOARD_Y);
|
||||||
|
}
|
||||||
|
|
||||||
// this one is widely used across different apps
|
// this one is widely used across different apps
|
||||||
static void hid_ptt_trigger_cmd_shift_m(HidPushToTalk* hid_ptt) {
|
static void hid_ptt_trigger_cmd_shift_m(HidPushToTalk* hid_ptt) {
|
||||||
hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_M);
|
hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_M);
|
||||||
@@ -403,6 +465,13 @@ static void hid_ptt_menu_callback(
|
|||||||
model->callback_start_ptt = hid_ptt_start_ptt_meet_zoom;
|
model->callback_start_ptt = hid_ptt_start_ptt_meet_zoom;
|
||||||
model->callback_stop_ptt = hid_ptt_stop_ptt_meet_zoom;
|
model->callback_stop_ptt = hid_ptt_stop_ptt_meet_zoom;
|
||||||
break;
|
break;
|
||||||
|
case HidPushToTalkAppIndexGoogleMeetGlobal:
|
||||||
|
model->callback_trigger_mute = hid_ptt_trigger_mute_macos_meet_global;
|
||||||
|
model->callback_trigger_camera = hid_ptt_trigger_camera_macos_meet_global;
|
||||||
|
model->callback_trigger_hand = hid_ptt_trigger_hand_macos_meet_global;
|
||||||
|
model->callback_start_ptt = hid_ptt_trigger_mute_macos_meet_global;
|
||||||
|
model->callback_stop_ptt = hid_ptt_trigger_mute_macos_meet_global;
|
||||||
|
break;
|
||||||
case HidPushToTalkAppIndexJamulus:
|
case HidPushToTalkAppIndexJamulus:
|
||||||
model->callback_trigger_mute = hid_ptt_trigger_mute_jamulus;
|
model->callback_trigger_mute = hid_ptt_trigger_mute_jamulus;
|
||||||
model->callback_start_ptt = hid_ptt_trigger_mute_jamulus;
|
model->callback_start_ptt = hid_ptt_trigger_mute_jamulus;
|
||||||
@@ -457,6 +526,13 @@ static void hid_ptt_menu_callback(
|
|||||||
model->callback_start_ptt = hid_ptt_start_ptt_meet_zoom;
|
model->callback_start_ptt = hid_ptt_start_ptt_meet_zoom;
|
||||||
model->callback_stop_ptt = hid_ptt_stop_ptt_meet_zoom;
|
model->callback_stop_ptt = hid_ptt_stop_ptt_meet_zoom;
|
||||||
break;
|
break;
|
||||||
|
case HidPushToTalkAppIndexZoomGlobal:
|
||||||
|
model->callback_trigger_mute = hid_ptt_trigger_mute_macos_zoom_global;
|
||||||
|
model->callback_trigger_camera = hid_ptt_trigger_camera_macos_zoom_global;
|
||||||
|
model->callback_trigger_hand = hid_ptt_trigger_hand_zoom_global;
|
||||||
|
model->callback_start_ptt = hid_ptt_trigger_mute_macos_zoom_global;
|
||||||
|
model->callback_stop_ptt = hid_ptt_trigger_mute_macos_zoom_global;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} else if(osIndex == HidPushToTalkLinux) {
|
} else if(osIndex == HidPushToTalkLinux) {
|
||||||
switch(appIndex) {
|
switch(appIndex) {
|
||||||
@@ -551,6 +627,15 @@ static void hid_ptt_menu_callback(
|
|||||||
"and may not work for Windows users who use their screen "
|
"and may not work for Windows users who use their screen "
|
||||||
"reader. In this situation, the spacebar performs a different action.\n\n";
|
"reader. In this situation, the spacebar performs a different action.\n\n";
|
||||||
break;
|
break;
|
||||||
|
case HidPushToTalkAppIndexGoogleMeetGlobal:
|
||||||
|
app_specific_help =
|
||||||
|
"Google Meet (Global):\n"
|
||||||
|
"1. Install \"Google Meet - Global Shortcuts\" extension.\n"
|
||||||
|
"2. Open chrome://extensions/shortcuts.\n"
|
||||||
|
"3. Set 'Toggle microphone' to Cmd+Ctrl+7 and enable Global.\n"
|
||||||
|
"4. Set 'Toggle camera' to Cmd+Ctrl+8 and enable Global.\n"
|
||||||
|
"5. Set 'Raise hand' to Cmd+Ctrl+9 and enable Global.\n\n";
|
||||||
|
break;
|
||||||
case HidPushToTalkAppIndexDiscord:
|
case HidPushToTalkAppIndexDiscord:
|
||||||
app_specific_help =
|
app_specific_help =
|
||||||
"Discord:\n"
|
"Discord:\n"
|
||||||
@@ -569,6 +654,14 @@ static void hid_ptt_menu_callback(
|
|||||||
"Teams:\n"
|
"Teams:\n"
|
||||||
"Go to Settings > Privacy. Make sure Keyboard shortcut to unmute is toggled on.\n\n";
|
"Go to Settings > Privacy. Make sure Keyboard shortcut to unmute is toggled on.\n\n";
|
||||||
break;
|
break;
|
||||||
|
case HidPushToTalkAppIndexZoomGlobal:
|
||||||
|
app_specific_help =
|
||||||
|
"Zoom (Global):\n"
|
||||||
|
"1. Go to Settings > Keyboard Shortcuts.\n"
|
||||||
|
"2. Find the 'Mute/Unmute' shortcut and click 'Edit'.\n"
|
||||||
|
"3. Press the Mute button in the app to bind it.\n"
|
||||||
|
"4. Check global checkbox.\n"
|
||||||
|
"5. Repeat for video and hand shortcuts.\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
FuriString* msg = furi_string_alloc();
|
FuriString* msg = furi_string_alloc();
|
||||||
@@ -876,6 +969,13 @@ HidPushToTalk* hid_ptt_alloc(Hid* hid) {
|
|||||||
HidPushToTalkAppIndexGoogleMeet,
|
HidPushToTalkAppIndexGoogleMeet,
|
||||||
hid_ptt_menu_callback,
|
hid_ptt_menu_callback,
|
||||||
hid_ptt);
|
hid_ptt);
|
||||||
|
ptt_menu_add_item_to_list(
|
||||||
|
hid->hid_ptt_menu,
|
||||||
|
HidPushToTalkMacOS,
|
||||||
|
"Google Meet Global",
|
||||||
|
HidPushToTalkAppIndexGoogleMeetGlobal,
|
||||||
|
hid_ptt_menu_callback,
|
||||||
|
hid_ptt);
|
||||||
ptt_menu_add_item_to_list(
|
ptt_menu_add_item_to_list(
|
||||||
hid->hid_ptt_menu,
|
hid->hid_ptt_menu,
|
||||||
HidPushToTalkMacOS,
|
HidPushToTalkMacOS,
|
||||||
@@ -1030,6 +1130,13 @@ HidPushToTalk* hid_ptt_alloc(Hid* hid) {
|
|||||||
HidPushToTalkAppIndexZoom,
|
HidPushToTalkAppIndexZoom,
|
||||||
hid_ptt_menu_callback,
|
hid_ptt_menu_callback,
|
||||||
hid_ptt);
|
hid_ptt);
|
||||||
|
ptt_menu_add_item_to_list(
|
||||||
|
hid->hid_ptt_menu,
|
||||||
|
HidPushToTalkMacOS,
|
||||||
|
"Zoom Global",
|
||||||
|
HidPushToTalkAppIndexZoomGlobal,
|
||||||
|
hid_ptt_menu_callback,
|
||||||
|
hid_ptt);
|
||||||
ptt_menu_add_item_to_list(
|
ptt_menu_add_item_to_list(
|
||||||
hid->hid_ptt_menu,
|
hid->hid_ptt_menu,
|
||||||
HidPushToTalkLinux,
|
HidPushToTalkLinux,
|
||||||
|
|||||||
Reference in New Issue
Block a user