Browse Source

fixed issue with assigning hot keys, fixed issue with assigning up/down keys

ScottBrogden 9 years ago
parent
commit
398a027108
3 changed files with 61 additions and 13 deletions
  1. 3 3
      CP_Main.rc
  2. 57 10
      QuickPasteKeyboard.cpp
  3. 1 0
      QuickPasteKeyboard.h

+ 3 - 3
CP_Main.rc

@@ -892,14 +892,14 @@ BEGIN
     LTEXT           "Count",IDC_STATIC_SELECTED_COUNT,259,300,39,8
 END
 
-IDD_OPTIONS_QUICK_PASTE_KEYBOARD DIALOGEX 0, 0, 375, 265
+IDD_OPTIONS_QUICK_PASTE_KEYBOARD DIALOGEX 0, 0, 375, 272
 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION " "
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
     CONTROL         "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,361,115
     CONTROL         "",IDC_HOTKEY1,"msctls_hotkey32",WS_BORDER | WS_TABSTOP,25,183,80,14
-    PUSHBUTTON      "Assign",IDC_ASSIGN,318,244,50,14
+    PUSHBUTTON      "Assign",IDC_ASSIGN,318,251,50,14
     CONTROL         "",IDC_HOTKEY2,"msctls_hotkey32",WS_BORDER | WS_TABSTOP,202,185,80,14
     CONTROL         "Keyboard Shortcut",IDC_RADIO_KEYBOARD,"Button",BS_AUTORADIOBUTTON | WS_GROUP,18,170,76,10
     CONTROL         "Mouse Click",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,18,207,53,10
@@ -1115,7 +1115,7 @@ BEGIN
         LEFTMARGIN, 7
         RIGHTMARGIN, 368
         TOPMARGIN, 7
-        BOTTOMMARGIN, 258
+        BOTTOMMARGIN, 265
     END
 END
 #endif    // APSTUDIO_INVOKED

+ 57 - 10
QuickPasteKeyboard.cpp

@@ -46,6 +46,7 @@ BEGIN_MESSAGE_MAP(CQuickPasteKeyboard, CPropertyPage)
 	ON_WM_KILLFOCUS()
 	ON_BN_CLICKED(IDC_BUTTON_ENTER, &CQuickPasteKeyboard::OnBnClickedButtonEnter)
 	ON_BN_CLICKED(IDC_BUTTON_ENTER2, &CQuickPasteKeyboard::OnBnClickedButtonEnter2)
+	ON_WM_KEYUP()
 END_MESSAGE_MAP()
 
 
@@ -226,14 +227,15 @@ void CQuickPasteKeyboard::OnBnClickedAssign()
 	int id = SelectedCommandId();
 	int row = SelectedCommandRow();
 
-	if (id > 0 &&
-		id < (int)m_map.size() &&
+	if (m_map.find(id) != m_map.end() &&
 		shortCutId >= 0 &&
 		shortCutId < 10)
 	{
 		m_map[id].Array[shortCutId].Dirty = true;
-		m_map[id].Array[shortCutId].A = m_hotKey1.GetHotKey();
-		m_map[id].Array[shortCutId].B = m_hotKey2.GetHotKey();
+
+		//remove the extended key flag, don't think this is needed now days
+		m_map[id].Array[shortCutId].A = ACCEL_MAKEKEY(LOBYTE(m_hotKey1.GetHotKey()), (HIBYTE(m_hotKey1.GetHotKey()) & ~HOTKEYF_EXT));
+		m_map[id].Array[shortCutId].B = ACCEL_MAKEKEY(LOBYTE(m_hotKey2.GetHotKey()), HIBYTE(m_hotKey2.GetHotKey()) & ~HOTKEYF_EXT);		
 
 		CString sh = GetShortCutText(m_map[id]);
 		LVITEM lvi;
@@ -275,8 +277,7 @@ void CQuickPasteKeyboard::OnCbnSelchangeComboAllAssigned()
 	int shortCutId = SelectedCommandShortCutId();
 	int id = SelectedCommandId();
 
-	if (id > 0 &&
-		id < (int)m_map.size() &&
+	if (m_map.find(id) != m_map.end() &&
 		shortCutId >= 0 &&
 		shortCutId < 10)
 	{
@@ -284,14 +285,12 @@ void CQuickPasteKeyboard::OnCbnSelchangeComboAllAssigned()
 	}
 }
 
-
 void CQuickPasteKeyboard::OnBnClickedButtonRemove()
 {
 	int shortCutId = SelectedCommandShortCutId();	
 	int id = SelectedCommandId();
 
-	if (id > 0 &&
-		id < (int)m_map.size() &&
+	if (m_map.find(id) != m_map.end() &&
 		shortCutId >= 0 &&
 		shortCutId < 10)
 	{
@@ -331,7 +330,7 @@ void CQuickPasteKeyboard::OnBnClickedButtonAdd()
 	if (count < 10)
 	{
 		int id = SelectedCommandId();
-		if (id > 0 && id < (int)m_map.size())
+		if (m_map.find(id) != m_map.end())
 		{
 			CString shortcut;
 			int pos = m_assignedCombo.AddString(shortcut);
@@ -391,12 +390,52 @@ void CQuickPasteKeyboard::LoadHotKey(KeyboardAB ab)
 	if (ab.A > 0)
 	{
 		a = ab.A;
+
+		switch (LOBYTE((DWORD)a))
+		{
+			case VK_LEFT:
+			case VK_UP:
+			case VK_RIGHT:
+			case VK_DOWN: // arrow keys
+			case VK_PRIOR:
+			case VK_NEXT: // page up and page down
+			case VK_END:
+			case VK_HOME:
+			case VK_INSERT:
+			case VK_DELETE:
+			case VK_DIVIDE: // numpad slash
+			case VK_NUMLOCK:
+			{
+				a = ACCEL_MAKEKEY(LOBYTE(a), (HIBYTE(a) | HOTKEYF_EXT));
+				break;
+			}
+		}
 	}
 
 	int b = 0;
 	if (ab.B > 0)
 	{
 		b = ab.B;
+
+		switch (LOBYTE((DWORD)b))
+		{
+		case VK_LEFT:
+		case VK_UP:
+		case VK_RIGHT:
+		case VK_DOWN: // arrow keys
+		case VK_PRIOR:
+		case VK_NEXT: // page up and page down
+		case VK_END:
+		case VK_HOME:
+		case VK_INSERT:
+		case VK_DELETE:
+		case VK_DIVIDE: // numpad slash
+		case VK_NUMLOCK:
+		{
+			b = ACCEL_MAKEKEY(LOBYTE(b), (HIBYTE(b) | HOTKEYF_EXT));
+			break;
+		}
+		}
 	}
 
 	m_hotKey1.SetHotKey(LOBYTE((DWORD)a), (HIBYTE((DWORD)a)));
@@ -504,3 +543,11 @@ void CQuickPasteKeyboard::OnBnClickedButtonEnter2()
 	DWORD hk = m_hotKey2.GetHotKey();
 	m_hotKey2.SetHotKey(VK_RETURN, (HIBYTE((DWORD)hk)));
 }
+
+
+void CQuickPasteKeyboard::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
+{
+	// TODO: Add your message handler code here and/or call default
+
+	CPropertyPage::OnKeyUp(nChar, nRepCnt, nFlags);
+}

+ 1 - 0
QuickPasteKeyboard.h

@@ -79,4 +79,5 @@ public:
 	virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
 	afx_msg void OnBnClickedButtonEnter();
 	afx_msg void OnBnClickedButtonEnter2();
+	afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
 };