Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 33 additions & 20 deletions src/modules/ZoomIt/ZoomIt/Zoomit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3310,8 +3310,14 @@ void RegisterAllHotkeys(HWND hWnd)
}
if (g_RecordToggleKey) {
registerHotkey( RECORD_HOTKEY, g_RecordToggleMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF );
registerHotkey( RECORD_CROP_HOTKEY, ( g_RecordToggleMod ^ MOD_SHIFT ) | MOD_NOREPEAT, g_RecordToggleKey & 0xFF );
registerHotkey( RECORD_WINDOW_HOTKEY, ( g_RecordToggleMod ^ MOD_ALT ) | MOD_NOREPEAT, g_RecordToggleKey & 0xFF );
UINT cropMod = g_RecordToggleMod ^ MOD_SHIFT;
UINT windowMod = g_RecordToggleMod ^ MOD_ALT;
if ( cropMod != 0 ) {
registerHotkey( RECORD_CROP_HOTKEY, cropMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF );
}
if ( windowMod != 0 ) {
registerHotkey( RECORD_WINDOW_HOTKEY, windowMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF );
}
}

// Note: COPY_IMAGE_HOTKEY, COPY_CROP_HOTKEY (Ctrl+C, Ctrl+Shift+C) and
Expand Down Expand Up @@ -5307,16 +5313,18 @@ INT_PTR CALLBACK OptionsProc( HWND hDlg, UINT message,
break;

}
else if( newRecordToggleKey &&
(!RegisterHotKey(GetParent(hDlg), RECORD_HOTKEY, newRecordToggleMod | MOD_NOREPEAT, newRecordToggleKey & 0xFF) ||
!RegisterHotKey(GetParent(hDlg), RECORD_CROP_HOTKEY, (newRecordToggleMod ^ MOD_SHIFT) | MOD_NOREPEAT, newRecordToggleKey & 0xFF) ||
!RegisterHotKey(GetParent(hDlg), RECORD_WINDOW_HOTKEY, (newRecordToggleMod ^ MOD_ALT) | MOD_NOREPEAT, newRecordToggleKey & 0xFF))) {

MessageBox(hDlg, L"The specified record hotkey is already in use.\nSelect a different record hotkey.",
APPNAME, MB_ICONERROR);
UnregisterAllHotkeys(GetParent(hDlg));
break;
else if( newRecordToggleKey ) {
UINT cropMod = newRecordToggleMod ^ MOD_SHIFT;
UINT windowMod = newRecordToggleMod ^ MOD_ALT;
if (!RegisterHotKey(GetParent(hDlg), RECORD_HOTKEY, newRecordToggleMod | MOD_NOREPEAT, newRecordToggleKey & 0xFF) ||
(cropMod != 0 && !RegisterHotKey(GetParent(hDlg), RECORD_CROP_HOTKEY, cropMod | MOD_NOREPEAT, newRecordToggleKey & 0xFF)) ||
(windowMod != 0 && !RegisterHotKey(GetParent(hDlg), RECORD_WINDOW_HOTKEY, windowMod | MOD_NOREPEAT, newRecordToggleKey & 0xFF))) {

MessageBox(hDlg, L"The specified record hotkey is already in use.\nSelect a different record hotkey.",
APPNAME, MB_ICONERROR);
UnregisterAllHotkeys(GetParent(hDlg));
break;
}
} else {

g_BreakTimeout = newTimeout;
Expand Down Expand Up @@ -7297,14 +7305,17 @@ LRESULT APIENTRY MainWndProc(
showOptions = TRUE;

}
else if (g_RecordToggleKey &&
(!RegisterHotKey(hWnd, RECORD_HOTKEY, g_RecordToggleMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, RECORD_CROP_HOTKEY, (g_RecordToggleMod ^ MOD_SHIFT) | MOD_NOREPEAT, g_RecordToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, RECORD_WINDOW_HOTKEY, (g_RecordToggleMod ^ MOD_ALT) | MOD_NOREPEAT, g_RecordToggleKey & 0xFF))) {
else if (g_RecordToggleKey) {
UINT cropMod = g_RecordToggleMod ^ MOD_SHIFT;
UINT windowMod = g_RecordToggleMod ^ MOD_ALT;
if (!RegisterHotKey(hWnd, RECORD_HOTKEY, g_RecordToggleMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF) ||
(cropMod != 0 && !RegisterHotKey(hWnd, RECORD_CROP_HOTKEY, cropMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF)) ||
(windowMod != 0 && !RegisterHotKey(hWnd, RECORD_WINDOW_HOTKEY, windowMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF))) {

MessageBox(hWnd, L"The specified record hotkey is already in use.\nSelect a different record hotkey.",
APPNAME, MB_ICONERROR);
showOptions = TRUE;
MessageBox(hWnd, L"The specified record hotkey is already in use.\nSelect a different record hotkey.",
APPNAME, MB_ICONERROR);
showOptions = TRUE;
}
}
if( showOptions ) {

Expand Down Expand Up @@ -9875,9 +9886,11 @@ LRESULT APIENTRY MainWndProc(
}
if (g_RecordToggleKey)
{
UINT cropMod = g_RecordToggleMod ^ MOD_SHIFT;
UINT windowMod = g_RecordToggleMod ^ MOD_ALT;
if (!RegisterHotKey(hWnd, RECORD_HOTKEY, g_RecordToggleMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, RECORD_CROP_HOTKEY, (g_RecordToggleMod ^ MOD_SHIFT) | MOD_NOREPEAT, g_RecordToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, RECORD_WINDOW_HOTKEY, (g_RecordToggleMod ^ MOD_ALT) | MOD_NOREPEAT, g_RecordToggleKey & 0xFF))
(cropMod != 0 && !RegisterHotKey(hWnd, RECORD_CROP_HOTKEY, cropMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF)) ||
(windowMod != 0 && !RegisterHotKey(hWnd, RECORD_WINDOW_HOTKEY, windowMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF)))
{
if(!g_StartedByPowerToys)
{
Expand Down
16 changes: 14 additions & 2 deletions src/settings-ui/Settings.UI/ViewModels/ZoomItViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,13 @@ public HotkeySettings RecordToggleKeyCrop
return null;
}

// XOR with Shift: if Shift is present, remove it; if absent, add it
// XOR with Shift: if Shift is present, remove it; if absent, add it.
// If the result would have no modifier keys, return null to avoid displaying a bare-key shortcut label.
if (baseKey.Shift && !baseKey.Win && !baseKey.Ctrl && !baseKey.Alt)
{
return null;
}
Comment thread
MuyuanMS marked this conversation as resolved.

return new HotkeySettings(
baseKey.Win,
baseKey.Ctrl,
Expand All @@ -323,7 +329,13 @@ public HotkeySettings RecordToggleKeyWindow
return null;
}

// XOR with Alt: if Alt is present, remove it; if absent, add it
// XOR with Alt: if Alt is present, remove it; if absent, add it.
// If the result would have no modifier keys, return null to avoid displaying a bare-key shortcut label.
if (baseKey.Alt && !baseKey.Win && !baseKey.Ctrl && !baseKey.Shift)
{
return null;
}
Comment thread
MuyuanMS marked this conversation as resolved.

return new HotkeySettings(
baseKey.Win,
baseKey.Ctrl,
Expand Down
Loading