Compare commits

...

3 Commits

7 changed files with 309 additions and 128 deletions

View File

@@ -12,12 +12,18 @@ enum class RecordingFormat
DWORD g_ToggleKey = (HOTKEYF_CONTROL << 8)| '1';
DWORD g_LiveZoomToggleKey = ((HOTKEYF_CONTROL) << 8)| '4';
DWORD g_LiveZoomDrawKey = ((HOTKEYF_CONTROL | HOTKEYF_SHIFT) << 8) | '4';
DWORD g_DrawToggleKey = ((HOTKEYF_CONTROL) << 8)| '2';
DWORD g_BreakToggleKey = ((HOTKEYF_CONTROL) << 8)| '3';
DWORD g_DemoTypeToggleKey = ((HOTKEYF_CONTROL) << 8) | '7';
DWORD g_DemoTypeResetKey = ((HOTKEYF_CONTROL | HOTKEYF_SHIFT) << 8) | '7';
DWORD g_RecordToggleKey = ((HOTKEYF_CONTROL) << 8) | '5';
DWORD g_RecordCropKey = ((HOTKEYF_CONTROL | HOTKEYF_SHIFT) << 8) | '5';
DWORD g_RecordWindowKey = ((HOTKEYF_CONTROL | HOTKEYF_ALT) << 8) | '5';
DWORD g_SnipToggleKey = ((HOTKEYF_CONTROL) << 8) | '6';
DWORD g_SnipSaveKey = ((HOTKEYF_CONTROL | HOTKEYF_SHIFT) << 8) | '6';
DWORD g_SnipPanoramaToggleKey = ((HOTKEYF_CONTROL) << 8) | '8';
DWORD g_SnipPanoramaSaveKey = ((HOTKEYF_CONTROL | HOTKEYF_SHIFT) << 8) | '8';
DWORD g_SnipOcrToggleKey = ((HOTKEYF_CONTROL | HOTKEYF_ALT) << 8) | '6';
DWORD g_ShowExpiredTime = 1;
@@ -67,10 +73,15 @@ DWORD g_TrimDialogVolume = 70; // 0-100 volume level for trim dialog preview
REG_SETTING RegSettings[] = {
{ L"ToggleKey", SETTING_TYPE_DWORD, 0, &g_ToggleKey, static_cast<DOUBLE>(g_ToggleKey) },
{ L"LiveZoomToggleKey", SETTING_TYPE_DWORD, 0, &g_LiveZoomToggleKey, static_cast<DOUBLE>(g_LiveZoomToggleKey) },
{ L"LiveZoomDrawKey", SETTING_TYPE_DWORD, 0, &g_LiveZoomDrawKey, static_cast<DOUBLE>(g_LiveZoomDrawKey) },
{ L"DrawToggleKey", SETTING_TYPE_DWORD, 0, &g_DrawToggleKey, static_cast<DOUBLE>(g_DrawToggleKey) },
{ L"RecordToggleKey", SETTING_TYPE_DWORD, 0, &g_RecordToggleKey, static_cast<DOUBLE>(g_RecordToggleKey) },
{ L"RecordCropKey", SETTING_TYPE_DWORD, 0, &g_RecordCropKey, static_cast<DOUBLE>(g_RecordCropKey) },
{ L"RecordWindowKey", SETTING_TYPE_DWORD, 0, &g_RecordWindowKey, static_cast<DOUBLE>(g_RecordWindowKey) },
{ L"SnipToggleKey", SETTING_TYPE_DWORD, 0, &g_SnipToggleKey, static_cast<DOUBLE>(g_SnipToggleKey) },
{ L"SnipSaveKey", SETTING_TYPE_DWORD, 0, &g_SnipSaveKey, static_cast<DOUBLE>(g_SnipSaveKey) },
{ L"SnipPanoramaToggleKey", SETTING_TYPE_DWORD, 0, &g_SnipPanoramaToggleKey, static_cast<DOUBLE>(g_SnipPanoramaToggleKey) },
{ L"SnipPanoramaSaveKey", SETTING_TYPE_DWORD, 0, &g_SnipPanoramaSaveKey, static_cast<DOUBLE>(g_SnipPanoramaSaveKey) },
{ L"SnipOcrToggleKey", SETTING_TYPE_DWORD, 0, &g_SnipOcrToggleKey, static_cast<DOUBLE>(g_SnipOcrToggleKey) },
{ L"PenColor", SETTING_TYPE_DWORD, 0, &g_PenColor, static_cast<DOUBLE>(g_PenColor) },
{ L"PenWidth", SETTING_TYPE_DWORD, 0, &g_RootPenWidth, static_cast<DOUBLE>(g_RootPenWidth) },
@@ -79,6 +90,7 @@ REG_SETTING RegSettings[] = {
{ L"BreakBackgroundColor", SETTING_TYPE_DWORD, 0, &g_BreakBackgroundColor, static_cast<DOUBLE>(g_BreakBackgroundColor) },
{ L"BreakTimerKey", SETTING_TYPE_DWORD, 0, &g_BreakToggleKey, static_cast<DOUBLE>(g_BreakToggleKey) },
{ L"DemoTypeToggleKey", SETTING_TYPE_DWORD, 0, &g_DemoTypeToggleKey, static_cast<DOUBLE>(g_DemoTypeToggleKey) },
{ L"DemoTypeResetKey", SETTING_TYPE_DWORD, 0, &g_DemoTypeResetKey, static_cast<DOUBLE>(g_DemoTypeResetKey) },
{ L"DemoTypeFile", SETTING_TYPE_STRING, sizeof( g_DemoTypeFile ), g_DemoTypeFile, static_cast<DOUBLE>(0) },
{ L"DemoTypeSpeedSlider", SETTING_TYPE_DWORD, 0, &g_DemoTypeSpeedSlider, static_cast<DOUBLE>(g_DemoTypeSpeedSlider) },
{ L"DemoTypeUserDrivenMode", SETTING_TYPE_BOOLEAN, 0, &g_DemoTypeUserDriven, static_cast<DOUBLE>(g_DemoTypeUserDriven) },

View File

@@ -165,12 +165,18 @@ const float STRONG_BLUR_RADIUS = 40;
DWORD g_ToggleMod;
DWORD g_LiveZoomToggleMod;
DWORD g_LiveZoomDrawMod;
DWORD g_DrawToggleMod;
DWORD g_BreakToggleMod;
DWORD g_DemoTypeToggleMod;
DWORD g_DemoTypeResetMod;
DWORD g_RecordToggleMod;
DWORD g_RecordCropMod;
DWORD g_RecordWindowMod;
DWORD g_SnipToggleMod;
DWORD g_SnipSaveMod;
DWORD g_SnipPanoramaToggleMod;
DWORD g_SnipPanoramaSaveMod;
DWORD g_SnipOcrToggleMod;
BOOLEAN g_ZoomOnLiveZoom = FALSE;
@@ -3288,30 +3294,43 @@ void RegisterAllHotkeys(HWND hWnd)
if (g_ToggleKey) registerHotkey( ZOOM_HOTKEY, g_ToggleMod, g_ToggleKey & 0xFF );
if (g_LiveZoomToggleKey) {
registerHotkey( LIVE_HOTKEY, g_LiveZoomToggleMod, g_LiveZoomToggleKey & 0xFF );
registerHotkey( LIVE_DRAW_HOTKEY, ( g_LiveZoomToggleMod ^ MOD_SHIFT ), g_LiveZoomToggleKey & 0xFF );
}
if (g_LiveZoomDrawKey) {
registerHotkey( LIVE_DRAW_HOTKEY, g_LiveZoomDrawMod, g_LiveZoomDrawKey & 0xFF );
}
if (g_DrawToggleKey) registerHotkey( DRAW_HOTKEY, g_DrawToggleMod, g_DrawToggleKey & 0xFF );
if (g_BreakToggleKey) registerHotkey( BREAK_HOTKEY, g_BreakToggleMod, g_BreakToggleKey & 0xFF );
if (g_DemoTypeToggleKey) {
registerHotkey( DEMOTYPE_HOTKEY, g_DemoTypeToggleMod, g_DemoTypeToggleKey & 0xFF );
registerHotkey( DEMOTYPE_RESET_HOTKEY, ( g_DemoTypeToggleMod ^ MOD_SHIFT ), g_DemoTypeToggleKey & 0xFF );
}
if (g_DemoTypeResetKey) {
registerHotkey( DEMOTYPE_RESET_HOTKEY, g_DemoTypeResetMod, g_DemoTypeResetKey & 0xFF );
}
if (g_SnipToggleKey) {
registerHotkey( SNIP_HOTKEY, g_SnipToggleMod, g_SnipToggleKey & 0xFF );
registerHotkey( SNIP_SAVE_HOTKEY, ( g_SnipToggleMod ^ MOD_SHIFT ), g_SnipToggleKey & 0xFF );
}
if (g_SnipSaveKey) {
registerHotkey( SNIP_SAVE_HOTKEY, g_SnipSaveMod, g_SnipSaveKey & 0xFF );
}
if( g_SnipPanoramaToggleKey &&
(g_SnipPanoramaToggleKey != g_SnipToggleKey || g_SnipPanoramaToggleMod != g_SnipToggleMod) ) {
registerHotkey( SNIP_PANORAMA_HOTKEY, g_SnipPanoramaToggleMod | MOD_NOREPEAT, g_SnipPanoramaToggleKey & 0xFF );
registerHotkey( SNIP_PANORAMA_SAVE_HOTKEY, ( g_SnipPanoramaToggleMod ^ MOD_SHIFT ) | MOD_NOREPEAT, g_SnipPanoramaToggleKey & 0xFF );
}
if (g_SnipPanoramaSaveKey &&
(g_SnipPanoramaSaveKey != g_SnipSaveKey || g_SnipPanoramaSaveMod != g_SnipSaveMod)) {
registerHotkey( SNIP_PANORAMA_SAVE_HOTKEY, g_SnipPanoramaSaveMod | MOD_NOREPEAT, g_SnipPanoramaSaveKey & 0xFF );
}
if (g_SnipOcrToggleKey) {
registerHotkey( SNIP_OCR_HOTKEY, g_SnipOcrToggleMod, g_SnipOcrToggleKey & 0xFF );
}
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 );
}
if (g_RecordCropKey) {
registerHotkey( RECORD_CROP_HOTKEY, g_RecordCropMod | MOD_NOREPEAT, g_RecordCropKey & 0xFF );
}
if (g_RecordWindowKey) {
registerHotkey( RECORD_WINDOW_HOTKEY, g_RecordWindowMod | MOD_NOREPEAT, g_RecordWindowKey & 0xFF );
}
// Note: COPY_IMAGE_HOTKEY, COPY_CROP_HOTKEY (Ctrl+C, Ctrl+Shift+C) and
@@ -5322,6 +5341,11 @@ INT_PTR CALLBACK OptionsProc( HWND hDlg, UINT message,
g_BreakTimeout = newTimeout;
g_ToggleKey = newToggleKey;
g_LiveZoomToggleKey = newLiveZoomToggleKey;
// In standalone mode, secondary hotkeys are always derived from the primary key
// since the dialog does not expose controls for independent configuration.
// Independent configuration of secondary keys is only available in PowerToys mode.
g_LiveZoomDrawKey = (newLiveZoomToggleKey & 0xFF) | (((newLiveZoomToggleKey >> 8) ^ HOTKEYF_SHIFT) << 8);
g_LiveZoomDrawMod = newLiveZoomToggleMod ^ MOD_SHIFT;
g_ToggleMod = newToggleMod;
g_DrawToggleKey = newDrawToggleKey;
g_DrawToggleMod = newDrawToggleMod;
@@ -5329,12 +5353,22 @@ INT_PTR CALLBACK OptionsProc( HWND hDlg, UINT message,
g_BreakToggleMod = newBreakToggleMod;
g_DemoTypeToggleKey = newDemoTypeToggleKey;
g_DemoTypeToggleMod = newDemoTypeToggleMod;
g_DemoTypeResetKey = (newDemoTypeToggleKey & 0xFF) | (((newDemoTypeToggleKey >> 8) ^ HOTKEYF_SHIFT) << 8);
g_DemoTypeResetMod = newDemoTypeToggleMod ^ MOD_SHIFT;
g_RecordToggleKey = newRecordToggleKey;
g_RecordToggleMod = newRecordToggleMod;
g_RecordCropKey = (newRecordToggleKey & 0xFF) | (((newRecordToggleKey >> 8) ^ HOTKEYF_SHIFT) << 8);
g_RecordCropMod = newRecordToggleMod ^ MOD_SHIFT;
g_RecordWindowKey = (newRecordToggleKey & 0xFF) | (((newRecordToggleKey >> 8) ^ HOTKEYF_ALT) << 8);
g_RecordWindowMod = newRecordToggleMod ^ MOD_ALT;
g_SnipToggleKey = newSnipToggleKey;
g_SnipToggleMod = newSnipToggleMod;
g_SnipSaveKey = (newSnipToggleKey & 0xFF) | (((newSnipToggleKey >> 8) ^ HOTKEYF_SHIFT) << 8);
g_SnipSaveMod = newSnipToggleMod ^ MOD_SHIFT;
g_SnipPanoramaToggleKey = newSnipPanoramaToggleKey;
g_SnipPanoramaToggleMod = newSnipPanoramaToggleMod;
g_SnipPanoramaSaveKey = (newSnipPanoramaToggleKey & 0xFF) | (((newSnipPanoramaToggleKey >> 8) ^ HOTKEYF_SHIFT) << 8);
g_SnipPanoramaSaveMod = newSnipPanoramaToggleMod ^ MOD_SHIFT;
g_SnipOcrToggleKey = newSnipOcrToggleKey;
g_SnipOcrToggleMod = newSnipOcrToggleMod;
reg.WriteRegSettings( RegSettings );
@@ -7216,13 +7250,19 @@ LRESULT APIENTRY MainWndProc(
g_ToggleMod = GetKeyMod( g_ToggleKey );
g_LiveZoomToggleMod = GetKeyMod( g_LiveZoomToggleKey );
g_LiveZoomDrawMod = GetKeyMod( g_LiveZoomDrawKey );
g_DrawToggleMod = GetKeyMod( g_DrawToggleKey );
g_BreakToggleMod = GetKeyMod( g_BreakToggleKey );
g_DemoTypeToggleMod = GetKeyMod( g_DemoTypeToggleKey );
g_DemoTypeResetMod = GetKeyMod( g_DemoTypeResetKey );
g_SnipToggleMod = GetKeyMod( g_SnipToggleKey );
g_SnipSaveMod = GetKeyMod( g_SnipSaveKey );
g_SnipPanoramaToggleMod = GetKeyMod( g_SnipPanoramaToggleKey );
g_SnipPanoramaSaveMod = GetKeyMod( g_SnipPanoramaSaveKey );
g_SnipOcrToggleMod = GetKeyMod( g_SnipOcrToggleKey );
g_RecordToggleMod = GetKeyMod( g_RecordToggleKey );
g_RecordCropMod = GetKeyMod( g_RecordCropKey );
g_RecordWindowMod = GetKeyMod( g_RecordWindowKey );
if( !g_OptionsShown && !g_StartedByPowerToys ) {
// First run should show options when running as standalone. If not running as standalone,
@@ -7240,13 +7280,19 @@ LRESULT APIENTRY MainWndProc(
showOptions = TRUE;
} else if( g_LiveZoomToggleKey &&
(!RegisterHotKey( hWnd, LIVE_HOTKEY, g_LiveZoomToggleMod, g_LiveZoomToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, LIVE_DRAW_HOTKEY, (g_LiveZoomToggleMod ^ MOD_SHIFT), g_LiveZoomToggleKey & 0xFF))) {
!RegisterHotKey( hWnd, LIVE_HOTKEY, g_LiveZoomToggleMod, g_LiveZoomToggleKey & 0xFF)) {
MessageBox( hWnd, L"The specified live-zoom toggle hotkey is already in use.\nSelect a different zoom toggle hotkey.",
APPNAME, MB_ICONERROR );
showOptions = TRUE;
} else if( g_LiveZoomDrawKey &&
!RegisterHotKey(hWnd, LIVE_DRAW_HOTKEY, g_LiveZoomDrawMod, g_LiveZoomDrawKey & 0xFF)) {
MessageBox( hWnd, L"The specified live-zoom draw hotkey is already in use.\nSelect a different live-zoom draw hotkey.",
APPNAME, MB_ICONERROR );
showOptions = TRUE;
} else if( g_DrawToggleKey && !RegisterHotKey( hWnd, DRAW_HOTKEY, g_DrawToggleMod, g_DrawToggleKey & 0xFF )) {
MessageBox( hWnd, L"The specified draw w/out zoom hotkey is already in use.\nSelect a different draw w/out zoom hotkey.",
@@ -7262,32 +7308,54 @@ LRESULT APIENTRY MainWndProc(
}
else if( g_DemoTypeToggleKey &&
(!RegisterHotKey( hWnd, DEMOTYPE_HOTKEY, g_DemoTypeToggleMod, g_DemoTypeToggleKey & 0xFF ) ||
!RegisterHotKey(hWnd, DEMOTYPE_RESET_HOTKEY, (g_DemoTypeToggleMod ^ MOD_SHIFT), g_DemoTypeToggleKey & 0xFF))) {
!RegisterHotKey( hWnd, DEMOTYPE_HOTKEY, g_DemoTypeToggleMod, g_DemoTypeToggleKey & 0xFF )) {
MessageBox( hWnd, L"The specified live-type hotkey is already in use.\nSelect a different live-type hotkey.",
APPNAME, MB_ICONERROR );
showOptions = TRUE;
}
else if (g_DemoTypeResetKey &&
!RegisterHotKey(hWnd, DEMOTYPE_RESET_HOTKEY, g_DemoTypeResetMod, g_DemoTypeResetKey & 0xFF)) {
MessageBox( hWnd, L"The specified live-type reset hotkey is already in use.\nSelect a different live-type reset hotkey.",
APPNAME, MB_ICONERROR );
showOptions = TRUE;
}
else if (g_SnipToggleKey &&
(!RegisterHotKey(hWnd, SNIP_HOTKEY, g_SnipToggleMod, g_SnipToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, SNIP_SAVE_HOTKEY, (g_SnipToggleMod ^ MOD_SHIFT), g_SnipToggleKey & 0xFF))) {
!RegisterHotKey(hWnd, SNIP_HOTKEY, g_SnipToggleMod, g_SnipToggleKey & 0xFF)) {
MessageBox(hWnd, L"The specified snip hotkey is already in use.\nSelect a different snip hotkey.",
APPNAME, MB_ICONERROR);
showOptions = TRUE;
}
else if (g_SnipSaveKey &&
!RegisterHotKey(hWnd, SNIP_SAVE_HOTKEY, g_SnipSaveMod, g_SnipSaveKey & 0xFF)) {
MessageBox(hWnd, L"The specified snip save hotkey is already in use.\nSelect a different snip save hotkey.",
APPNAME, MB_ICONERROR);
showOptions = TRUE;
}
else if (g_SnipPanoramaToggleKey &&
(g_SnipPanoramaToggleKey != g_SnipToggleKey || g_SnipPanoramaToggleMod != g_SnipToggleMod) &&
(!RegisterHotKey(hWnd, SNIP_PANORAMA_HOTKEY, g_SnipPanoramaToggleMod | MOD_NOREPEAT, g_SnipPanoramaToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, SNIP_PANORAMA_SAVE_HOTKEY, ( g_SnipPanoramaToggleMod ^ MOD_SHIFT ) | MOD_NOREPEAT, g_SnipPanoramaToggleKey & 0xFF))) {
!RegisterHotKey(hWnd, SNIP_PANORAMA_HOTKEY, g_SnipPanoramaToggleMod | MOD_NOREPEAT, g_SnipPanoramaToggleKey & 0xFF)) {
MessageBox(hWnd, L"The specified panorama snip hotkey is already in use.\nSelect a different panorama snip hotkey.",
APPNAME, MB_ICONERROR);
showOptions = TRUE;
}
else if (g_SnipPanoramaSaveKey &&
(g_SnipPanoramaSaveKey != g_SnipSaveKey || g_SnipPanoramaSaveMod != g_SnipSaveMod) &&
!RegisterHotKey(hWnd, SNIP_PANORAMA_SAVE_HOTKEY, g_SnipPanoramaSaveMod | MOD_NOREPEAT, g_SnipPanoramaSaveKey & 0xFF)) {
MessageBox(hWnd, L"The specified panorama snip save hotkey is already in use.\nSelect a different panorama snip save hotkey.",
APPNAME, MB_ICONERROR);
showOptions = TRUE;
}
else if (g_SnipOcrToggleKey &&
!RegisterHotKey(hWnd, SNIP_OCR_HOTKEY, g_SnipOcrToggleMod, g_SnipOcrToggleKey & 0xFF)) {
@@ -7298,14 +7366,26 @@ LRESULT APIENTRY MainWndProc(
}
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))) {
!RegisterHotKey(hWnd, RECORD_HOTKEY, g_RecordToggleMod | 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;
}
else if (g_RecordCropKey &&
!RegisterHotKey(hWnd, RECORD_CROP_HOTKEY, g_RecordCropMod | MOD_NOREPEAT, g_RecordCropKey & 0xFF)) {
MessageBox(hWnd, L"The specified record crop hotkey is already in use.\nSelect a different record crop hotkey.",
APPNAME, MB_ICONERROR);
showOptions = TRUE;
}
else if (g_RecordWindowKey &&
!RegisterHotKey(hWnd, RECORD_WINDOW_HOTKEY, g_RecordWindowMod | MOD_NOREPEAT, g_RecordWindowKey & 0xFF)) {
MessageBox(hWnd, L"The specified record window hotkey is already in use.\nSelect a different record window hotkey.",
APPNAME, MB_ICONERROR);
showOptions = TRUE;
}
if( showOptions ) {
SendMessage( hWnd, WM_COMMAND, IDC_OPTIONS, 0 );
@@ -9772,13 +9852,19 @@ LRESULT APIENTRY MainWndProc(
UnregisterAllHotkeys(hWnd);
g_ToggleMod = GetKeyMod(g_ToggleKey);
g_LiveZoomToggleMod = GetKeyMod(g_LiveZoomToggleKey);
g_LiveZoomDrawMod = GetKeyMod(g_LiveZoomDrawKey);
g_DrawToggleMod = GetKeyMod(g_DrawToggleKey);
g_BreakToggleMod = GetKeyMod(g_BreakToggleKey);
g_DemoTypeToggleMod = GetKeyMod(g_DemoTypeToggleKey);
g_DemoTypeResetMod = GetKeyMod(g_DemoTypeResetKey);
g_SnipToggleMod = GetKeyMod(g_SnipToggleKey);
g_SnipSaveMod = GetKeyMod(g_SnipSaveKey);
g_SnipPanoramaToggleMod = GetKeyMod(g_SnipPanoramaToggleKey);
g_SnipPanoramaSaveMod = GetKeyMod(g_SnipPanoramaSaveKey);
g_SnipOcrToggleMod = GetKeyMod(g_SnipOcrToggleKey);
g_RecordToggleMod = GetKeyMod(g_RecordToggleKey);
g_RecordCropMod = GetKeyMod(g_RecordCropKey);
g_RecordWindowMod = GetKeyMod(g_RecordWindowKey);
BOOL showOptions = FALSE;
if (g_ToggleKey)
{
@@ -9793,8 +9879,7 @@ LRESULT APIENTRY MainWndProc(
}
if (g_LiveZoomToggleKey)
{
if (!RegisterHotKey(hWnd, LIVE_HOTKEY, g_LiveZoomToggleMod, g_LiveZoomToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, LIVE_DRAW_HOTKEY, g_LiveZoomToggleMod ^ MOD_SHIFT, g_LiveZoomToggleKey & 0xFF))
if (!RegisterHotKey(hWnd, LIVE_HOTKEY, g_LiveZoomToggleMod, g_LiveZoomToggleKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
@@ -9803,6 +9888,17 @@ LRESULT APIENTRY MainWndProc(
showOptions = TRUE;
}
}
if (g_LiveZoomDrawKey)
{
if (!RegisterHotKey(hWnd, LIVE_DRAW_HOTKEY, g_LiveZoomDrawMod, g_LiveZoomDrawKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
MessageBox(hWnd, L"The specified live-zoom draw hotkey is already in use.\nSelect a different live-zoom draw hotkey.", APPNAME, MB_ICONERROR);
}
showOptions = TRUE;
}
}
if (g_DrawToggleKey)
{
if (!RegisterHotKey(hWnd, DRAW_HOTKEY, g_DrawToggleMod, g_DrawToggleKey & 0xFF))
@@ -9827,8 +9923,7 @@ LRESULT APIENTRY MainWndProc(
}
if (g_DemoTypeToggleKey)
{
if (!RegisterHotKey(hWnd, DEMOTYPE_HOTKEY, g_DemoTypeToggleMod, g_DemoTypeToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, DEMOTYPE_RESET_HOTKEY, (g_DemoTypeToggleMod ^ MOD_SHIFT), g_DemoTypeToggleKey & 0xFF))
if (!RegisterHotKey(hWnd, DEMOTYPE_HOTKEY, g_DemoTypeToggleMod, g_DemoTypeToggleKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
@@ -9837,10 +9932,20 @@ LRESULT APIENTRY MainWndProc(
showOptions = TRUE;
}
}
if (g_DemoTypeResetKey)
{
if (!RegisterHotKey(hWnd, DEMOTYPE_RESET_HOTKEY, g_DemoTypeResetMod, g_DemoTypeResetKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
MessageBox(hWnd, L"The specified live-type reset hotkey is already in use.\nSelect a different live-type reset hotkey.", APPNAME, MB_ICONERROR);
}
showOptions = TRUE;
}
}
if (g_SnipToggleKey)
{
if (!RegisterHotKey(hWnd, SNIP_HOTKEY, g_SnipToggleMod, g_SnipToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, SNIP_SAVE_HOTKEY, (g_SnipToggleMod ^ MOD_SHIFT), g_SnipToggleKey & 0xFF))
if (!RegisterHotKey(hWnd, SNIP_HOTKEY, g_SnipToggleMod, g_SnipToggleKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
@@ -9849,11 +9954,21 @@ LRESULT APIENTRY MainWndProc(
showOptions = TRUE;
}
}
if (g_SnipSaveKey)
{
if (!RegisterHotKey(hWnd, SNIP_SAVE_HOTKEY, g_SnipSaveMod, g_SnipSaveKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
MessageBox(hWnd, L"The specified snip save hotkey is already in use.\nSelect a different snip save hotkey.", APPNAME, MB_ICONERROR);
}
showOptions = TRUE;
}
}
if (g_SnipPanoramaToggleKey &&
(g_SnipPanoramaToggleKey != g_SnipToggleKey || g_SnipPanoramaToggleMod != g_SnipToggleMod))
{
if (!RegisterHotKey(hWnd, SNIP_PANORAMA_HOTKEY, g_SnipPanoramaToggleMod | MOD_NOREPEAT, g_SnipPanoramaToggleKey & 0xFF) ||
!RegisterHotKey(hWnd, SNIP_PANORAMA_SAVE_HOTKEY, ( g_SnipPanoramaToggleMod ^ MOD_SHIFT ) | MOD_NOREPEAT, g_SnipPanoramaToggleKey & 0xFF))
if (!RegisterHotKey(hWnd, SNIP_PANORAMA_HOTKEY, g_SnipPanoramaToggleMod | MOD_NOREPEAT, g_SnipPanoramaToggleKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
@@ -9862,6 +9977,18 @@ LRESULT APIENTRY MainWndProc(
showOptions = TRUE;
}
}
if (g_SnipPanoramaSaveKey &&
(g_SnipPanoramaSaveKey != g_SnipSaveKey || g_SnipPanoramaSaveMod != g_SnipSaveMod))
{
if (!RegisterHotKey(hWnd, SNIP_PANORAMA_SAVE_HOTKEY, g_SnipPanoramaSaveMod | MOD_NOREPEAT, g_SnipPanoramaSaveKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
MessageBox(hWnd, L"The specified panorama snip save hotkey is already in use.\nSelect a different panorama snip save hotkey.", APPNAME, MB_ICONERROR);
}
showOptions = TRUE;
}
}
if (g_SnipOcrToggleKey)
{
if (!RegisterHotKey(hWnd, SNIP_OCR_HOTKEY, g_SnipOcrToggleMod, g_SnipOcrToggleKey & 0xFF))
@@ -9875,9 +10002,7 @@ LRESULT APIENTRY MainWndProc(
}
if (g_RecordToggleKey)
{
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))
if (!RegisterHotKey(hWnd, RECORD_HOTKEY, g_RecordToggleMod | MOD_NOREPEAT, g_RecordToggleKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
@@ -9886,6 +10011,28 @@ LRESULT APIENTRY MainWndProc(
showOptions = TRUE;
}
}
if (g_RecordCropKey)
{
if (!RegisterHotKey(hWnd, RECORD_CROP_HOTKEY, g_RecordCropMod | MOD_NOREPEAT, g_RecordCropKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
MessageBox(hWnd, L"The specified record crop hotkey is already in use.\nSelect a different record crop hotkey.", APPNAME, MB_ICONERROR);
}
showOptions = TRUE;
}
}
if (g_RecordWindowKey)
{
if (!RegisterHotKey(hWnd, RECORD_WINDOW_HOTKEY, g_RecordWindowMod | MOD_NOREPEAT, g_RecordWindowKey & 0xFF))
{
if(!g_StartedByPowerToys)
{
MessageBox(hWnd, L"The specified record window hotkey is already in use.\nSelect a different record window hotkey.", APPNAME, MB_ICONERROR);
}
showOptions = TRUE;
}
}
if (showOptions)
{
// To open the PowerToys settings in the ZoomIt page.

View File

@@ -67,13 +67,19 @@ namespace winrt::PowerToys::ZoomItSettingsInterop::implementation
std::map<std::wstring, unsigned int> settings_with_special_semantics = {
{ L"ToggleKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"LiveZoomToggleKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"LiveZoomDrawKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"DrawToggleKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"RecordToggleKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"RecordCropKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"RecordWindowKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"SnipToggleKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"SnipSaveKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"SnipOcrToggleKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"SnipPanoramaToggleKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"SnipPanoramaSaveKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"BreakTimerKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"DemoTypeToggleKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"DemoTypeResetKey", SPECIAL_SEMANTICS_SHORTCUT },
{ L"PenColor", SPECIAL_SEMANTICS_COLOR },
{ L"BreakPenColor", SPECIAL_SEMANTICS_COLOR },
{ L"Font", SPECIAL_SEMANTICS_LOG_FONT },

View File

@@ -19,47 +19,77 @@ namespace Microsoft.PowerToys.Settings.UI.Library
[CmdConfigureIgnore]
public static HotkeySettings DefaultLiveZoomToggleKey => new HotkeySettings(false, true, false, false, '4'); // Ctrl+4
[CmdConfigureIgnore]
public static HotkeySettings DefaultLiveZoomDrawKey => new HotkeySettings(false, true, false, true, '4'); // Ctrl+Shift+4
[CmdConfigureIgnore]
public static HotkeySettings DefaultDrawToggleKey => new HotkeySettings(false, true, false, false, '2'); // Ctrl+2
[CmdConfigureIgnore]
public static HotkeySettings DefaultRecordToggleKey => new HotkeySettings(false, true, false, false, '5'); // Ctrl+5
[CmdConfigureIgnore]
public static HotkeySettings DefaultRecordCropKey => new HotkeySettings(false, true, false, true, '5'); // Ctrl+Shift+5
[CmdConfigureIgnore]
public static HotkeySettings DefaultRecordWindowKey => new HotkeySettings(false, true, true, false, '5'); // Ctrl+Alt+5
[CmdConfigureIgnore]
public static HotkeySettings DefaultSnipToggleKey => new HotkeySettings(false, true, false, false, '6'); // Ctrl+6
[CmdConfigureIgnore]
public static HotkeySettings DefaultSnipSaveKey => new HotkeySettings(false, true, false, true, '6'); // Ctrl+Shift+6
[CmdConfigureIgnore]
public static HotkeySettings DefaultSnipOcrToggleKey => new HotkeySettings(false, true, true, false, '6'); // Ctrl+Alt+6
[CmdConfigureIgnore]
public static HotkeySettings DefaultSnipPanoramaToggleKey => new HotkeySettings(false, true, false, false, '8'); // Ctrl+8
[CmdConfigureIgnore]
public static HotkeySettings DefaultSnipPanoramaSaveKey => new HotkeySettings(false, true, false, true, '8'); // Ctrl+Shift+8
[CmdConfigureIgnore]
public static HotkeySettings DefaultBreakTimerKey => new HotkeySettings(false, true, false, false, '3'); // Ctrl+3
[CmdConfigureIgnore]
public static HotkeySettings DefaultDemoTypeToggleKey => new HotkeySettings(false, true, false, false, '7'); // Ctrl+7
[CmdConfigureIgnore]
public static HotkeySettings DefaultDemoTypeResetKey => new HotkeySettings(false, true, false, true, '7'); // Ctrl+Shift+7
public KeyboardKeysProperty ToggleKey { get; set; }
public KeyboardKeysProperty LiveZoomToggleKey { get; set; }
public KeyboardKeysProperty LiveZoomDrawKey { get; set; }
public KeyboardKeysProperty DrawToggleKey { get; set; }
public KeyboardKeysProperty RecordToggleKey { get; set; }
public KeyboardKeysProperty RecordCropKey { get; set; }
public KeyboardKeysProperty RecordWindowKey { get; set; }
public KeyboardKeysProperty SnipToggleKey { get; set; }
public KeyboardKeysProperty SnipSaveKey { get; set; }
public KeyboardKeysProperty SnipOcrToggleKey { get; set; }
public KeyboardKeysProperty SnipPanoramaToggleKey { get; set; }
public KeyboardKeysProperty SnipPanoramaSaveKey { get; set; }
public KeyboardKeysProperty BreakTimerKey { get; set; }
public StringProperty Font { get; set; }
public KeyboardKeysProperty DemoTypeToggleKey { get; set; }
public KeyboardKeysProperty DemoTypeResetKey { get; set; }
public StringProperty Font { get; set; }
public StringProperty DemoTypeFile { get; set; }
public IntProperty DemoTypeSpeedSlider { get; set; }

View File

@@ -83,10 +83,10 @@
IsExpanded="True">
<controls:ShortcutControl HotkeySettings="{x:Bind ViewModel.LiveZoomToggleKey, Mode=TwoWay}" />
<tkcontrols:SettingsExpander.Items>
<tkcontrols:SettingsCard>
<tkcontrols:SettingsCard.Description>
<tkcontrols:MarkdownTextBlock Config="{StaticResource DescriptionTextMarkdownConfig}" Text="{x:Bind ViewModel.LiveZoomToggleKeyDraw, Mode=OneWay, Converter={StaticResource HotkeySettingsToLocalizedStringConverter}, ConverterParameter=ZoomIt_LiveZoom_Shortcut_Draw}" />
</tkcontrols:SettingsCard.Description>
<tkcontrols:SettingsCard
Name="ZoomItLiveZoomDrawShortcut"
x:Uid="ZoomIt_LiveZoom_Shortcut_Draw">
<controls:ShortcutControl HotkeySettings="{x:Bind ViewModel.LiveZoomToggleKeyDraw, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</tkcontrols:SettingsExpander.Items>
</tkcontrols:SettingsExpander>
@@ -157,9 +157,14 @@
ThumbToolTipValueConverter="{StaticResource ZoomItTypeSpeedSliderConverter}"
Value="{x:Bind ViewModel.DemoTypeSpeedSlider, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard Name="ZoomItDemoTypeShortcutReset">
<tkcontrols:SettingsCard
Name="ZoomItDemoTypeShortcutReset"
x:Uid="ZoomIt_DemoType_Shortcut_Reset">
<controls:ShortcutControl HotkeySettings="{x:Bind ViewModel.DemoTypeToggleKeyReset, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard>
<tkcontrols:SettingsCard.Description>
<tkcontrols:MarkdownTextBlock Config="{StaticResource DescriptionTextMarkdownConfig}" Text="{x:Bind ViewModel.DemoTypeToggleKeyReset, Mode=OneWay, Converter={StaticResource HotkeySettingsToLocalizedStringConverter}, ConverterParameter=ZoomIt_DemoTypeFAQ}" />
<tkcontrols:MarkdownTextBlock x:Uid="ZoomIt_DemoTypeFAQ" Config="{StaticResource DescriptionTextMarkdownConfig}" />
</tkcontrols:SettingsCard.Description>
</tkcontrols:SettingsCard>
</tkcontrols:SettingsExpander.Items>
@@ -301,14 +306,15 @@
SelectedValue="{x:Bind ViewModel.RecordMicrophoneDeviceId, Mode=TwoWay}"
SelectedValuePath="Item1" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard>
<tkcontrols:SettingsCard.Description>
<StackPanel Orientation="Vertical" Spacing="4">
<tkcontrols:MarkdownTextBlock Config="{StaticResource DescriptionTextMarkdownConfig}" Text="{x:Bind ViewModel.RecordToggleKey, Mode=OneWay, Converter={StaticResource HotkeySettingsToLocalizedStringConverter}, ConverterParameter=ZoomIt_Record_Shortcut_FullScreen}" />
<tkcontrols:MarkdownTextBlock Config="{StaticResource DescriptionTextMarkdownConfig}" Text="{x:Bind ViewModel.RecordToggleKeyCrop, Mode=OneWay, Converter={StaticResource HotkeySettingsToLocalizedStringConverter}, ConverterParameter=ZoomIt_Record_Shortcut_Crop}" />
<tkcontrols:MarkdownTextBlock Config="{StaticResource DescriptionTextMarkdownConfig}" Text="{x:Bind ViewModel.RecordToggleKeyWindow, Mode=OneWay, Converter={StaticResource HotkeySettingsToLocalizedStringConverter}, ConverterParameter=ZoomIt_Record_Shortcut_Window}" />
</StackPanel>
</tkcontrols:SettingsCard.Description>
<tkcontrols:SettingsCard
Name="ZoomItRecordCropShortcut"
x:Uid="ZoomIt_Record_Shortcut_Crop">
<controls:ShortcutControl HotkeySettings="{x:Bind ViewModel.RecordToggleKeyCrop, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Name="ZoomItRecordWindowShortcut"
x:Uid="ZoomIt_Record_Shortcut_Window">
<controls:ShortcutControl HotkeySettings="{x:Bind ViewModel.RecordToggleKeyWindow, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</tkcontrols:SettingsExpander.Items>
</tkcontrols:SettingsExpander>
@@ -318,11 +324,13 @@
Name="ZoomItSnipShortcut"
x:Uid="ZoomIt_Snip_Shortcut"
HeaderIcon="{ui:FontIcon Glyph=&#xF7ED;}">
<tkcontrols:SettingsCard.Description>
<tkcontrols:MarkdownTextBlock Config="{StaticResource DescriptionTextMarkdownConfig}" Text="{x:Bind ViewModel.SnipToggleKeySave, Mode=OneWay, Converter={StaticResource HotkeySettingsToLocalizedStringConverter}, ConverterParameter=ZoomIt_Snip_Shortcut_Save}" />
</tkcontrols:SettingsCard.Description>
<controls:ShortcutControl HotkeySettings="{x:Bind ViewModel.SnipToggleKey, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Name="ZoomItSnipSaveShortcut"
x:Uid="ZoomIt_Snip_Shortcut_Save">
<controls:ShortcutControl HotkeySettings="{x:Bind ViewModel.SnipToggleKeySave, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
<tkcontrols:SettingsCard
Name="ZoomItSnipOcrShortcut"
x:Uid="ZoomIt_SnipOcr_Shortcut"
@@ -336,10 +344,10 @@
IsExpanded="True">
<controls:ShortcutControl MinWidth="{StaticResource SettingActionControlMinWidth}" HotkeySettings="{x:Bind ViewModel.SnipPanoramaToggleKey, Mode=TwoWay}" />
<tkcontrols:SettingsExpander.Items>
<tkcontrols:SettingsCard>
<tkcontrols:SettingsCard.Description>
<tkcontrols:MarkdownTextBlock Config="{StaticResource DescriptionTextMarkdownConfig}" Text="{x:Bind ViewModel.SnipPanoramaToggleKeySave, Mode=OneWay, Converter={StaticResource HotkeySettingsToLocalizedStringConverter}, ConverterParameter=ZoomIt_Panorama_Shortcut_Save}" />
</tkcontrols:SettingsCard.Description>
<tkcontrols:SettingsCard
Name="ZoomItPanoramaSaveShortcut"
x:Uid="ZoomIt_Panorama_Shortcut_Save">
<controls:ShortcutControl HotkeySettings="{x:Bind ViewModel.SnipPanoramaToggleKeySave, Mode=TwoWay}" />
</tkcontrols:SettingsCard>
</tkcontrols:SettingsExpander.Items>
</tkcontrols:SettingsExpander>

View File

@@ -4592,6 +4592,9 @@ Press **Ctrl + Shift** to crop before copying or saving.</value>
<data name="ZoomIt_LiveZoom_Shortcut.Header" xml:space="preserve">
<value>Live Zoom activation</value>
</data>
<data name="ZoomIt_LiveZoom_Shortcut_Draw.Header" xml:space="preserve">
<value>Live drawing activation</value>
</data>
<data name="ZoomIt_DrawGroup.Header" xml:space="preserve">
<value>Draw</value>
</data>
@@ -4651,11 +4654,14 @@ In auto mode, control returns automatically after completion.
At the end of the file, ZoomIt reloads the file and restarts from the beginning.
Press the hotkey with **Shift** in the opposite mode to step back to the previous **[end]** marker.
Press **{0}** to reset DemoType and start from the beginning.</value>
Use the **DemoType reset** hotkey to reset DemoType and start from the beginning.</value>
</data>
<data name="ZoomIt_DemoType_Shortcut.Header" xml:space="preserve">
<value>DemoType activation</value>
</data>
<data name="ZoomIt_DemoType_Shortcut_Reset.Header" xml:space="preserve">
<value>DemoType reset</value>
</data>
<data name="ZoomIt_DemoType_File.Header" xml:space="preserve">
<value>Input file</value>
</data>
@@ -4785,6 +4791,12 @@ The break timer font matches the text font.</value>
<data name="ZoomIt_Record_Shortcut.Header" xml:space="preserve">
<value>Record activation</value>
</data>
<data name="ZoomIt_Record_Shortcut_Crop.Header" xml:space="preserve">
<value>Record a portion of the screen</value>
</data>
<data name="ZoomIt_Record_Shortcut_Window.Header" xml:space="preserve">
<value>Record a specific window</value>
</data>
<data name="ZoomIt_Record_Shortcut_FullScreen" xml:space="preserve">
<value>Press **{0}** to start or stop screen or zoom recording</value>
</data>
@@ -4827,12 +4839,18 @@ The break timer font matches the text font.</value>
<data name="ZoomIt_Snip_Shortcut.Header" xml:space="preserve">
<value>Snip activation</value>
</data>
<data name="ZoomIt_Snip_Shortcut_Save.Header" xml:space="preserve">
<value>Save snip to file</value>
</data>
<data name="ZoomIt_Snip_Shortcut_Save" xml:space="preserve">
<value>Press **{0}** to save the snip to a file</value>
</data>
<data name="ZoomIt_Panorama_Shortcut_Save" xml:space="preserve">
<value>Press **{0}** to save the scrolling screenshot to a file</value>
</data>
<data name="ZoomIt_Panorama_Shortcut_Save.Header" xml:space="preserve">
<value>Save scrolling screenshot to file</value>
</data>
<data name="ZoomIt_SnipOcr_Shortcut.Header" xml:space="preserve">
<value>Text recognition and extraction</value>
</data>

View File

@@ -237,7 +237,6 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
{
_zoomItSettings.Properties.LiveZoomToggleKey.Value = value ?? ZoomItProperties.DefaultLiveZoomToggleKey;
OnPropertyChanged(nameof(LiveZoomToggleKey));
OnPropertyChanged(nameof(LiveZoomToggleKeyDraw));
NotifySettingsChanged();
}
}
@@ -245,21 +244,15 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
public HotkeySettings LiveZoomToggleKeyDraw
{
get
get => _zoomItSettings.Properties.LiveZoomDrawKey.Value;
set
{
var baseKey = _zoomItSettings.Properties.LiveZoomToggleKey.Value;
if (baseKey == null)
if (_zoomItSettings.Properties.LiveZoomDrawKey.Value != value)
{
return null;
_zoomItSettings.Properties.LiveZoomDrawKey.Value = value ?? ZoomItProperties.DefaultLiveZoomDrawKey;
OnPropertyChanged(nameof(LiveZoomToggleKeyDraw));
NotifySettingsChanged();
}
// XOR with Shift: if Shift is present, remove it; if absent, add it
return new HotkeySettings(
baseKey.Win,
baseKey.Ctrl,
baseKey.Alt,
!baseKey.Shift, // XOR with Shift
baseKey.Code);
}
}
@@ -286,8 +279,6 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
{
_zoomItSettings.Properties.RecordToggleKey.Value = value ?? ZoomItProperties.DefaultRecordToggleKey;
OnPropertyChanged(nameof(RecordToggleKey));
OnPropertyChanged(nameof(RecordToggleKeyCrop));
OnPropertyChanged(nameof(RecordToggleKeyWindow));
NotifySettingsChanged();
}
}
@@ -295,41 +286,29 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
public HotkeySettings RecordToggleKeyCrop
{
get
get => _zoomItSettings.Properties.RecordCropKey.Value;
set
{
var baseKey = _zoomItSettings.Properties.RecordToggleKey.Value;
if (baseKey == null)
if (_zoomItSettings.Properties.RecordCropKey.Value != value)
{
return null;
_zoomItSettings.Properties.RecordCropKey.Value = value ?? ZoomItProperties.DefaultRecordCropKey;
OnPropertyChanged(nameof(RecordToggleKeyCrop));
NotifySettingsChanged();
}
// XOR with Shift: if Shift is present, remove it; if absent, add it
return new HotkeySettings(
baseKey.Win,
baseKey.Ctrl,
baseKey.Alt,
!baseKey.Shift, // XOR with Shift
baseKey.Code);
}
}
public HotkeySettings RecordToggleKeyWindow
{
get
get => _zoomItSettings.Properties.RecordWindowKey.Value;
set
{
var baseKey = _zoomItSettings.Properties.RecordToggleKey.Value;
if (baseKey == null)
if (_zoomItSettings.Properties.RecordWindowKey.Value != value)
{
return null;
_zoomItSettings.Properties.RecordWindowKey.Value = value ?? ZoomItProperties.DefaultRecordWindowKey;
OnPropertyChanged(nameof(RecordToggleKeyWindow));
NotifySettingsChanged();
}
// XOR with Alt: if Alt is present, remove it; if absent, add it
return new HotkeySettings(
baseKey.Win,
baseKey.Ctrl,
!baseKey.Alt, // XOR with Alt
baseKey.Shift,
baseKey.Code);
}
}
@@ -342,7 +321,6 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
{
_zoomItSettings.Properties.SnipToggleKey.Value = value ?? ZoomItProperties.DefaultSnipToggleKey;
OnPropertyChanged(nameof(SnipToggleKey));
OnPropertyChanged(nameof(SnipToggleKeySave));
NotifySettingsChanged();
}
}
@@ -350,20 +328,15 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
public HotkeySettings SnipToggleKeySave
{
get
get => _zoomItSettings.Properties.SnipSaveKey.Value;
set
{
var baseKey = _zoomItSettings.Properties.SnipToggleKey.Value;
if (baseKey == null)
if (_zoomItSettings.Properties.SnipSaveKey.Value != value)
{
return null;
_zoomItSettings.Properties.SnipSaveKey.Value = value ?? ZoomItProperties.DefaultSnipSaveKey;
OnPropertyChanged(nameof(SnipToggleKeySave));
NotifySettingsChanged();
}
return new HotkeySettings(
baseKey.Win,
baseKey.Ctrl,
baseKey.Alt,
!baseKey.Shift, // Toggle Shift: if Shift is present, remove it; if absent, add it
baseKey.Code);
}
}
@@ -390,7 +363,6 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
{
_zoomItSettings.Properties.SnipPanoramaToggleKey.Value = value ?? ZoomItProperties.DefaultSnipPanoramaToggleKey;
OnPropertyChanged(nameof(SnipPanoramaToggleKey));
OnPropertyChanged(nameof(SnipPanoramaToggleKeySave));
NotifySettingsChanged();
}
}
@@ -398,20 +370,15 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
public HotkeySettings SnipPanoramaToggleKeySave
{
get
get => _zoomItSettings.Properties.SnipPanoramaSaveKey.Value;
set
{
var baseKey = _zoomItSettings.Properties.SnipPanoramaToggleKey.Value;
if (baseKey == null)
if (_zoomItSettings.Properties.SnipPanoramaSaveKey.Value != value)
{
return null;
_zoomItSettings.Properties.SnipPanoramaSaveKey.Value = value ?? ZoomItProperties.DefaultSnipPanoramaSaveKey;
OnPropertyChanged(nameof(SnipPanoramaToggleKeySave));
NotifySettingsChanged();
}
return new HotkeySettings(
baseKey.Win,
baseKey.Ctrl,
baseKey.Alt,
!baseKey.Shift, // Toggle Shift: if Shift is present, remove it; if absent, add it
baseKey.Code);
}
}
@@ -438,7 +405,6 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
{
_zoomItSettings.Properties.DemoTypeToggleKey.Value = value ?? ZoomItProperties.DefaultDemoTypeToggleKey;
OnPropertyChanged(nameof(DemoTypeToggleKey));
OnPropertyChanged(nameof(DemoTypeToggleKeyReset));
NotifySettingsChanged();
}
}
@@ -446,21 +412,15 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
public HotkeySettings DemoTypeToggleKeyReset
{
get
get => _zoomItSettings.Properties.DemoTypeResetKey.Value;
set
{
var baseKey = _zoomItSettings.Properties.DemoTypeToggleKey.Value;
if (baseKey == null)
if (_zoomItSettings.Properties.DemoTypeResetKey.Value != value)
{
return null;
_zoomItSettings.Properties.DemoTypeResetKey.Value = value ?? ZoomItProperties.DefaultDemoTypeResetKey;
OnPropertyChanged(nameof(DemoTypeToggleKeyReset));
NotifySettingsChanged();
}
// XOR with Shift: if Shift is present, remove it; if absent, add it
return new HotkeySettings(
baseKey.Win,
baseKey.Ctrl,
baseKey.Alt,
!baseKey.Shift, // XOR with Shift
baseKey.Code);
}
}