/// <summary>
        /// Creates a new instance of the ActionKeyInfo class.
        /// </summary>
        /// <param name="actionKey">The key that invokes the action.</param>
        /// <param name="callback">The callback function that should be called when the action key comes down.</param>
        /// <param name="modifierKeys">A list of modifier keys that must be pressed to fire callback.</param>
        /// <param name="once">Fires only once for key down, the key has to be released and pressed again to fire the callback again.</param>
        public ActionKeyInfo(VirtualKey actionKey, ActionKeyHandler callback, ModifierKey[] modifierKeys = null, bool once = false)
        {
            mActionKey    = actionKey;
            mModifierKeys = modifierKeys;
            mCallBack     = callback;
            mOnce         = once;

            ControlKeysState = new ControlKeysState();
        }
        /// <summary>
        /// Creates a new instance of the ActionKeyInfo class.
        /// </summary>
        /// <param name="actionKey">The key that invokes the action.</param>
        /// <param name="callback">The callback function that should be called when the action key comes down.</param>
        /// <param name="modifierKeys">A list of modifier keys that must be pressed to fire callback.</param>
        /// <param name="once">Fires only once for key down, the key has to be released and pressed again to fire the callback again.</param>
        public ActionKeyInfo(VirtualKey actionKey, ActionKeyHandler callback, ModifierKey[] modifierKeys = null, bool once = false)
        {
            mActionKey = actionKey;
            mModifierKeys = modifierKeys;
            mCallBack = callback;
            mOnce = once;

            ControlKeysState = new ControlKeysState();
        }