Beispiel #1
0
        private void OnKeyActionFurtherProcessing2(uint vkcode, uint nScanCode, bool isDown, byte[] kbstate)
        {
            var result = ((Keys)vkcode).ToString();

            // Another Fix beside the deadkeys workarround, needed because ToAscii doesnt work when STRG is pressed
            if (IsPrintableKey(vkcode) && !IsCtrlPressed())
            {
                var szKey = new StringBuilder(2);

                var nConvOld = (uint)NativeMethods.ToAscii(vkcode, nScanCode, kbstate, szKey, 0);
                _deadKeyOver = false;
                if (nConvOld > 0 && szKey.Length > 0)
                {
                    result = szKey.ToString().Substring(0, 1);
                }
            }

            if (isDown)
            {
                StringDown?.Invoke(result, new StringDownEventArgs(result.Length == 1, result, vkcode));
            }
            else
            {
                StringUp?.Invoke(result, new StringDownEventArgs(result.Length == 1, result, vkcode));
            }
        }
 private void _keyProcessing_StringUp(object sender, StringDownEventArgs e)
 {
     StringUp?.Invoke(this, e);
 }