|  | @@ -1601,6 +1601,13 @@ int la_TranslateSpecialKey(int keysym){
 | 
	
		
			
				|  |  |      case VK_CONTROL:   return LA_KEY_CTRL;
 | 
	
		
			
				|  |  |      case VK_SHIFT:     return LA_KEY_SHIFT;
 | 
	
		
			
				|  |  |      case VK_MENU:      return LA_KEY_ALT;
 | 
	
		
			
				|  |  | +    case VK_OEM_1:     return ';';
 | 
	
		
			
				|  |  | +    case VK_OEM_2:     return '/';
 | 
	
		
			
				|  |  | +    case VK_OEM_3:     return '`';
 | 
	
		
			
				|  |  | +    case VK_OEM_4:     return '[';
 | 
	
		
			
				|  |  | +    case VK_OEM_5:     return '\\';
 | 
	
		
			
				|  |  | +    case VK_OEM_6:     return ']';
 | 
	
		
			
				|  |  | +    case VK_OEM_7:      return '\'';
 | 
	
		
			
				|  |  |      default:           return keysym;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  #endif
 | 
	
	
		
			
				|  | @@ -7100,7 +7107,7 @@ LRESULT CALLBACK LA_WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
 | 
	
		
			
				|  |  |      POINT point;
 | 
	
		
			
				|  |  |      PACKET pkt;
 | 
	
		
			
				|  |  |      static POINT ptOld, ptNew;
 | 
	
		
			
				|  |  | -    static UINT prsOld, prsNew;
 | 
	
		
			
				|  |  | +    static UINT prsOld, prsNew, vkey;
 | 
	
		
			
				|  |  |      if (!hwnd) return DefWindowProc(hwnd, message, wparam, lparam);
 | 
	
		
			
				|  |  |      switch (message) {
 | 
	
		
			
				|  |  |      case WM_PAINT:
 | 
	
	
		
			
				|  | @@ -7204,7 +7211,8 @@ LRESULT CALLBACK LA_WindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |      case WM_KEYDOWN:
 | 
	
		
			
				|  |  |          if (lparam & 0x40000000) break;
 | 
	
		
			
				|  |  | -        la_SendKeyboardEvent(hwnd, LA_KEY_DOWN, la_TranslateSpecialKey(wparam));
 | 
	
		
			
				|  |  | +        vkey = wparam;
 | 
	
		
			
				|  |  | +        la_SendKeyboardEvent(hwnd, LA_KEY_DOWN, la_TranslateSpecialKey(vkey));
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |      case WM_KEYUP:
 | 
	
		
			
				|  |  |          la_SendKeyboardEvent(hwnd, LA_KEY_UP, la_TranslateSpecialKey(wparam));
 | 
	
	
		
			
				|  | @@ -7520,6 +7528,9 @@ int la_ProcessSysMessage(){
 | 
	
		
			
				|  |  |      if (PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE) != 0) Processed = 1;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
 | 
	
		
			
				|  |  | +        if (msg.wParam == VK_PROCESSKEY) {
 | 
	
		
			
				|  |  | +            msg.wParam = ImmGetVirtualKey(msg.hwnd);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          TranslateMessage(&msg); DispatchMessage(&msg);
 | 
	
		
			
				|  |  |          SendIdle = 0; MAIN.IdleStart = MAIN.TimeAccum; MAIN.IdleTriggered = 0;
 | 
	
		
			
				|  |  |      };
 |