private void SetPropertyValueButtonInput(String value, Object obj, PropertyInfo property)
        {
            Object output;

            if (Enum.TryParse(typeof(MouseKeyCode), value, true, out output))
            {
                var mouse = new MouseKeyInput((MouseKeyCode)output);
                property.SetValue(obj, mouse);
            }
            else if (Enum.TryParse(typeof(MouseMacro), value, true, out output))
            {
                var mouse = new MouseMacroInput((MouseMacro)output);
                property.SetValue(obj, mouse);
            }
            else if (Enum.TryParse(typeof(KeyboardKeyCode), value, true, out output))
            {
                var keyboard = new KeyboardKeyInput((KeyboardKeyCode)output);
                property.SetValue(obj, keyboard);
            }
            else if (Enum.TryParse(typeof(KeyboardMacro), value, true, out output))
            {
                var keyboard = new KeyboardMacroInput((KeyboardMacro)output);
                property.SetValue(obj, keyboard);
            }
        }
 private ButtonEventHandler MouseEventHandler(MouseKeyInput input, Mouse mouse)
 {
     return((statePressed, previousStatePressed) =>
     {
         if (statePressed && !previousStatePressed)
         {
             mouse.Press(input);
         }
         else if (!statePressed && previousStatePressed)
         {
             mouse.Release(input);
         }
     });
 }