/// <summary> /// Convert physical key to virtual key /// WT calls this function before sending input data to other players /// </summary> /// <param name="version">Key Filter version</param> /// <param name="physicalKey">Pressed physical key code defined in KeyCode class</param> /// <param name="press">Indicate the key is pressed</param> /// <param name="currentTime">Pressed system time</param> /// <param name="keyCustom">Key custom</param> /// <returns>Virtual key codes defined in WTKeyCode class</returns> public List <int> Convert(int physicalKey, bool pressed, long currentTime, IKeyCustom keyCustom) { List <int> result = new List <int>(); if (pressed && (physicalKey == (int)WTKeyCode.Shift)) { // Normal shift key pressed _shift = true; } else if (!pressed && (physicalKey == (int)WTKeyCode.Shift)) { // Normal shift key released _shift = false; } else if (pressed) { if (_shift) { // Set shift flag physicalKey |= (int)WTKeyCode.Shift; } // Set key code result.Add(physicalKey); } return(result); }
/// <summary> /// Convert physical key to virtual key /// WT calls this function before sending input data to other players /// </summary> /// <param name="version">Key Filter version</param> /// <param name="physicalKey">Pressed physical key code defined in KeyCode class</param> /// <param name="press">Indicate the key is pressed</param> /// <param name="currentTime">Pressed system time</param> /// <param name="keyCustom">Key custom</param> /// <returns>Virtual key codes defined in WTKeyCode class</returns> public List <int> Convert(int physicalKey, bool pressed, long currentTime, IKeyCustom keyCustom) { List <int> result = new List <int>(); if (pressed) { // In Software Keyboard filter, physicalKey is actual character code. // We convert Zenkaku to Hankaku here to enable input Zenkaku character in screen keyboard string s = ((char)physicalKey).ToString().Zenkaku2Hankaku(true, true); result.Add(s[0]); } return(result); }
/// <summary> /// Convert physical key to virtual key /// WT calls this function before sending input data to other players /// </summary> /// <param name="version">Key Filter version</param> /// <param name="physicalKey">Pressed physical key code defined in KeyCode class</param> /// <param name="press">Indicate the key is pressed</param> /// <param name="currentTime">Pressed system time</param> /// <param name="keyCustom">Key custom</param> /// <returns>Virtual key codes defined in WTKeyCode class</returns> public List <int> Convert(int physicalKey, bool pressed, long currentTime, IKeyCustom keyCustom) { List <int> result = new List <int>(); State._lsKeyCode = (int)keyCustom.GetMappedKey(LSNAME); State._rsKeyCode = (int)keyCustom.GetMappedKey(RSNAME); if (pressed && (physicalKey == (int)WTKeyCode.Shift)) { // Normal shift key pressed State._isShift = true; } else if (!pressed && (physicalKey == (int)WTKeyCode.Shift)) { // Normal shift key released State._isShift = false; } else if (pressed) { if (State._isShift) { // Set shift flag physicalKey |= (int)WTKeyCode.Shift; result.Add(physicalKey); return(result); } if (physicalKey == (int)WTKeyCode.Enter || physicalKey == (int)WTKeyCode.Escape) { // Special key result.Add(physicalKey); return(result); } // Process press event _state = _state.Handle(physicalKey, pressed, result, currentTime); } else if (!pressed) { // Process release event _state = _state.Handle(physicalKey, pressed, result, currentTime); } return(result); }