示例#1
0
        // If there are any keys defined in this file, store them in a dictionary for easy use
        private void ParseKeyDefs()
        {
            List <DitaElement> keyDefElements = RootElement.FindChildren("keydef");

            if (keyDefElements != null)
            {
                foreach (DitaElement keyDefElement in keyDefElements)
                {
                    DitaKeyDef keyDef = new DitaKeyDef {
                        Format         = keyDefElement.AttributeValueOrDefault("format", ""),
                        Href           = keyDefElement.AttributeValueOrDefault("href", ""),
                        Keys           = keyDefElement.AttributeValueOrDefault("keys", ""),
                        Scope          = keyDefElement.AttributeValueOrDefault("scope", ""),
                        ProcessingRole = keyDefElement.AttributeValueOrDefault("processing-role", ""),
                        Keywords       = keyDefElement.ToString()
                    };

                    if (!KeyDefs.ContainsKey(keyDef.Keys))
                    {
                        KeyDefs.Add(keyDef.Keys, keyDef);
                    }
                    else
                    {
                        Trace.TraceWarning($"Duplicate keyref {keyDef.Keys}");
                    }
                }
            }
        }
示例#2
0
 private void OnKeyExceptCapsLockChanged(GlobalKeyboardHookEventArgs e)
 {
     if (e.KeyboardData.VirtualCode == (int)VirtualKey.LeftShift && _status.Replacing == 1)
     {
         e.Handled = true;
     }
     #region Capslock+Space 实现 左Ctrl+Space
     if ((VirtualKey)e.KeyboardData.VirtualCode == VirtualKey.Space)
     {
         if (e.KeyboardState == KeyboardState.KeyUp || !_status.PressingCapsLock)
         {
             return;
         }
         _status.Replacing = 1;
         SendKeySimulatedAndSetStatus(ref _status.ReleasingCapsLockSimulated, false, VirtualKey.CapsLock);
         SendKeyEvent((int)VirtualKey.LeftControl, 0, 0, UIntPtr.Zero);
         SendKeyEvent((int)VirtualKey.Space, 0, 0, UIntPtr.Zero);
         SendKeyEvent((int)VirtualKey.LeftControl, 0, 2, UIntPtr.Zero);
         _status.Replacing = 2;
         e.Handled         = true;
         return;
     }
     #endregion
     var keyDef = KeyDefs.FirstOrDefault(x => x.AdditionKey == (VirtualKey)e.KeyboardData.VirtualCode);
     if (keyDef.Equals(default(KeyDef)) || e.KeyboardState == KeyboardState.KeyUp || !_status.PressingCapsLock)
     {
         return;
     }
     _status.Replacing = 1;
     SendKeySimulatedAndSetStatus(ref _status.ReleasingCapsLockSimulated, false, VirtualKey.CapsLock);
     SendKeyEvent((int)keyDef.AdditionKey, 0, 2, UIntPtr.Zero);
     SendKeyEvent((int)keyDef.ReplacingKey, 0, 0, UIntPtr.Zero);
     _status.Replacing = 2;
     e.Handled         = true;
 }
示例#3
0
        private void OnKeyExceptCapsLockChanged(GlobalKeyboardHookEventArgs e)
        {
            var keyDef = KeyDefs.FirstOrDefault(x => x.AdditionKey == (VirtualKey)e.KeyboardData.VirtualCode);

            if (keyDef.Equals(default(KeyDef)) || e.KeyboardState == KeyboardState.KeyUp || !_status.PressingCapsLock)
            {
                return;
            }
            _status.Replacing = 1;
            SendKeySimulatedAndSetStatus(ref _status.ReleasingCapsLockSimulated, false, VirtualKey.CapsLock);
            SendKeyEvent((int)keyDef.AdditionKey, 0, 2, UIntPtr.Zero);
            SendKeyEvent((int)keyDef.ReplacingKey, 0, 0, UIntPtr.Zero);
            _status.Replacing = 2;
            e.Handled         = true;
        }