VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Mount/Hotkeys.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Mount/Hotkeys.c')
-rw-r--r--src/Mount/Hotkeys.c94
1 files changed, 48 insertions, 46 deletions
diff --git a/src/Mount/Hotkeys.c b/src/Mount/Hotkeys.c
index 96f9abcd..c0829602 100644
--- a/src/Mount/Hotkeys.c
+++ b/src/Mount/Hotkeys.c
@@ -13,6 +13,8 @@
13#include "Mount.h" 13#include "Mount.h"
14#include "Resource.h" 14#include "Resource.h"
15 15
16#include <Strsafe.h>
17
16#define MAX_KEY_COMB_NAME_LEN 260 18#define MAX_KEY_COMB_NAME_LEN 260
17 19
18TCHOTKEY Hotkeys [NBR_HOTKEYS]; 20TCHOTKEY Hotkeys [NBR_HOTKEYS];
@@ -46,56 +48,56 @@ BOOL GetKeyName (UINT vKey, wchar_t *keyName)
46 if (vKey >= 0x30 && vKey <= 0x5a) 48 if (vKey >= 0x30 && vKey <= 0x5a)
47 { 49 {
48 // ASCII characters 50 // ASCII characters
49 wsprintfW (keyName, L"%hc", (char) vKey); 51 StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%hc", (char) vKey);
50 } 52 }
51 else if (vKey >= 0xE9 && vKey <= 0xF5) 53 else if (vKey >= 0xE9 && vKey <= 0xF5)
52 { 54 {
53 // OEM-specific 55 // OEM-specific
54 wsprintfW (keyName, L"OEM-%d", vKey); 56 StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM-%d", vKey);
55 } 57 }
56 else if (vKey >= VK_F1 && vKey <= VK_F24) 58 else if (vKey >= VK_F1 && vKey <= VK_F24)
57 { 59 {
58 // F1-F24 60 // F1-F24
59 wsprintfW (keyName, L"F%d", vKey - VK_F1 + 1); 61 StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"F%d", vKey - VK_F1 + 1);
60 } 62 }
61 else if (vKey >= VK_NUMPAD0 && vKey <= VK_NUMPAD9) 63 else if (vKey >= VK_NUMPAD0 && vKey <= VK_NUMPAD9)
62 { 64 {
63 // Numpad numbers 65 // Numpad numbers
64 wsprintfW (keyName, L"%s %d", GetString ("VK_NUMPAD"), vKey - VK_NUMPAD0); 66 StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s %d", GetString ("VK_NUMPAD"), vKey - VK_NUMPAD0);
65 } 67 }
66 else 68 else
67 { 69 {
68 switch (vKey) 70 switch (vKey)
69 { 71 {
70 case VK_MULTIPLY: wsprintfW (keyName, L"%s *", GetString ("VK_NUMPAD")); break; 72 case VK_MULTIPLY: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s *", GetString ("VK_NUMPAD")); break;
71 case VK_ADD: wsprintfW (keyName, L"%s +", GetString ("VK_NUMPAD")); break; 73 case VK_ADD: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s +", GetString ("VK_NUMPAD")); break;
72 case VK_SEPARATOR: wsprintfW (keyName, L"%s Separator", GetString ("VK_NUMPAD")); break; 74 case VK_SEPARATOR: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s Separator", GetString ("VK_NUMPAD")); break;
73 case VK_SUBTRACT: wsprintfW (keyName, L"%s -", GetString ("VK_NUMPAD")); break; 75 case VK_SUBTRACT: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s -", GetString ("VK_NUMPAD")); break;
74 case VK_DECIMAL: wsprintfW (keyName, L"%s .", GetString ("VK_NUMPAD")); break; 76 case VK_DECIMAL: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s .", GetString ("VK_NUMPAD")); break;
75 case VK_DIVIDE: wsprintfW (keyName, L"%s /", GetString ("VK_NUMPAD")); break; 77 case VK_DIVIDE: StringCbPrintfW (keyName, MAX_KEY_COMB_NAME_LEN, L"%s /", GetString ("VK_NUMPAD")); break;
76 case VK_OEM_1: wcscpy (keyName, L"OEM 1 (';')"); break; 78 case VK_OEM_1: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 1 (';')"); break;
77 case VK_OEM_PLUS: wcscpy (keyName, L"+"); break; 79 case VK_OEM_PLUS: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"+"); break;
78 case VK_OEM_COMMA: wcscpy (keyName, L","); break; 80 case VK_OEM_COMMA: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L","); break;
79 case VK_OEM_MINUS: wcscpy (keyName, L"-"); break; 81 case VK_OEM_MINUS: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"-"); break;
80 case VK_OEM_PERIOD: wcscpy (keyName, L"."); break; 82 case VK_OEM_PERIOD: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"."); break;
81 case VK_OEM_2: wcscpy (keyName, L"OEM 2 ('/')"); break; 83 case VK_OEM_2: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 2 ('/')"); break;
82 case VK_OEM_3: wcscpy (keyName, L"OEM 3 (`)"); break; 84 case VK_OEM_3: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 3 (`)"); break;
83 case VK_OEM_4: wcscpy (keyName, L"OEM 4 ('[')"); break; 85 case VK_OEM_4: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 4 ('[')"); break;
84 case VK_OEM_5: wcscpy (keyName, L"OEM 5 ('\\')"); break; 86 case VK_OEM_5: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 5 ('\\')"); break;
85 case VK_OEM_6: wcscpy (keyName, L"OEM 6 (']')"); break; 87 case VK_OEM_6: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 6 (']')"); break;
86 case VK_OEM_7: wcscpy (keyName, L"OEM 7 (')"); break; 88 case VK_OEM_7: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 7 (')"); break;
87 case VK_OEM_8: wcscpy (keyName, L"OEM 8"); break; 89 case VK_OEM_8: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 8"); break;
88 case VK_OEM_AX: wcscpy (keyName, L"OEM AX"); break; 90 case VK_OEM_AX: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM AX"); break;
89 case VK_OEM_102: wcscpy (keyName, L"OEM 102"); break; 91 case VK_OEM_102: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM 102"); break;
90 case VK_ICO_HELP: wcscpy (keyName, L"ICO_HELP"); break; 92 case VK_ICO_HELP: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"ICO_HELP"); break;
91 case VK_ICO_00: wcscpy (keyName, L"ICO_00"); break; 93 case VK_ICO_00: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"ICO_00"); break;
92 case VK_ICO_CLEAR: wcscpy (keyName, L"ICO_CLEAR"); break; 94 case VK_ICO_CLEAR: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"ICO_CLEAR"); break;
93 case VK_ATTN: wcscpy (keyName, L"Attn"); break; 95 case VK_ATTN: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"Attn"); break;
94 case VK_CRSEL: wcscpy (keyName, L"CrSel"); break; 96 case VK_CRSEL: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"CrSel"); break;
95 case VK_EXSEL: wcscpy (keyName, L"ExSel"); break; 97 case VK_EXSEL: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"ExSel"); break;
96 case VK_EREOF: wcscpy (keyName, L"Erase EOF"); break; 98 case VK_EREOF: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"Erase EOF"); break;
97 case VK_PA1: wcscpy (keyName, L"PA1"); break; 99 case VK_PA1: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"PA1"); break;
98 case VK_OEM_CLEAR: wcscpy (keyName, L"OEM Clear"); break; 100 case VK_OEM_CLEAR: StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, L"OEM Clear"); break;
99 101
100 case 0: 102 case 0:
101 case 1: 103 case 1:
@@ -107,12 +109,12 @@ BOOL GetKeyName (UINT vKey, wchar_t *keyName)
107 { 109 {
108 char key[16]; 110 char key[16];
109 wchar_t *desc; 111 wchar_t *desc;
110 sprintf (key, "VKEY_%02X", vKey); 112 StringCbPrintfA (key, sizeof(key),"VKEY_%02X", vKey);
111 desc = GetString (key); 113 desc = GetString (key);
112 if (desc == UnknownString) 114 if (desc == UnknownString)
113 result = FALSE; 115 result = FALSE;
114 else 116 else
115 wcsncpy (keyName, desc, MAX_KEY_COMB_NAME_LEN); 117 StringCbCopyW (keyName, MAX_KEY_COMB_NAME_LEN, desc);
116 } 118 }
117 } 119 }
118 } 120 }
@@ -226,36 +228,36 @@ static void DisplayHotkeyList (HWND hwndDlg)
226 SendMessageW (hList,LVM_INSERTITEMW,0,(LPARAM)&item); 228 SendMessageW (hList,LVM_INSERTITEMW,0,(LPARAM)&item);
227 229
228 item.iSubItem = 1; 230 item.iSubItem = 1;
229 wcscpy (Shortcut, L""); 231 Shortcut[0] = 0;
230 wcscpy (ShortcutMod, L""); 232 ShortcutMod[0] = 0;
231 233
232 if (GetKeyName (tmpHotkeys[i].vKeyCode, Shortcut)) 234 if (GetKeyName (tmpHotkeys[i].vKeyCode, Shortcut))
233 { 235 {
234 if (tmpHotkeys[i].vKeyModifiers & MOD_CONTROL) 236 if (tmpHotkeys[i].vKeyModifiers & MOD_CONTROL)
235 { 237 {
236 wcscat (ShortcutMod, GetString ("VK_CONTROL")); 238 StringCbCatW (ShortcutMod, sizeof(ShortcutMod),GetString ("VK_CONTROL"));
237 wcscat (ShortcutMod, L"+"); 239 StringCbCatW (ShortcutMod, sizeof(ShortcutMod),L"+");
238 } 240 }
239 241
240 if (tmpHotkeys[i].vKeyModifiers & MOD_SHIFT) 242 if (tmpHotkeys[i].vKeyModifiers & MOD_SHIFT)
241 { 243 {
242 wcscat (ShortcutMod, GetString ("VK_SHIFT")); 244 StringCbCatW (ShortcutMod, sizeof(ShortcutMod),GetString ("VK_SHIFT"));
243 wcscat (ShortcutMod, L"+"); 245 StringCbCatW (ShortcutMod, sizeof(ShortcutMod),L"+");
244 } 246 }
245 247
246 if (tmpHotkeys[i].vKeyModifiers & MOD_ALT) 248 if (tmpHotkeys[i].vKeyModifiers & MOD_ALT)
247 { 249 {
248 wcscat (ShortcutMod, GetString ("VK_ALT")); 250 StringCbCatW (ShortcutMod, sizeof(ShortcutMod),GetString ("VK_ALT"));
249 wcscat (ShortcutMod, L"+"); 251 StringCbCatW (ShortcutMod, sizeof(ShortcutMod),L"+");
250 } 252 }
251 253
252 if (tmpHotkeys[i].vKeyModifiers & MOD_WIN) 254 if (tmpHotkeys[i].vKeyModifiers & MOD_WIN)
253 { 255 {
254 wcscat (ShortcutMod, GetString ("VK_WIN")); 256 StringCbCatW (ShortcutMod, sizeof(ShortcutMod),GetString ("VK_WIN"));
255 wcscat (ShortcutMod, L"+"); 257 StringCbCatW (ShortcutMod, sizeof(ShortcutMod),L"+");
256 } 258 }
257 259
258 wsprintfW (ShortcutFinal, L"%s%s", ShortcutMod, Shortcut); 260 StringCbPrintfW (ShortcutFinal, sizeof(ShortcutFinal), L"%s%s", ShortcutMod, Shortcut);
259 item.pszText = ShortcutFinal; 261 item.pszText = ShortcutFinal;
260 } 262 }
261 else 263 else