예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }