• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

luttje / Key2Joy / 6517266969

14 Oct 2023 11:05AM UTC coverage: 12.469% (+0.2%) from 12.308%
6517266969

push

github

web-flow
Implementing plugins for better separation (#39)

* Start implementing plugins for better separation
* massive refactor in attempt to split appdomains for plugins
* (breaks old mapping profiles)
* Fix error when switching from mouse button trigger to keyboard trigger and clicking in the combobox where the mouse button capture textbox is.
* Simplify code by removing legacy
* SImplify grouping actions
* Fix profile and add helpful opposite mapping generator tool
* Change solution hierarchy
* Restrict AppDomain plugins went from Zone.MyComputer -> .Internet
* create keypair in ci
* Install the .NET framework tools
* Run command in workflow
* Plugin permissions. Plugins disabled by default
* update readme (icon is no longer used)
* Plugin action runs in seperated process
* Remove unused dependencies.
* Fix action name display for mapping
* Fix Lua plugin script calls (NOTE: laggy when using MessageBox)
* convert project to sdk style
* Add editorconfig and start cleaning up
* Fix documentation. Update namespaces to match files (breaks profiles)
* Include all projects in tests, disable building docs on debug
* Add messagebox script action
* Add tests for pluginhost
* Remove administrator from window title test
* add some icons to ui
* Add enabling/disabling plugins
* Close plugins when Key2Joy shuts down
* Fix appcommand failing
* Fix plugin permission form crashing. Fix plugin load exception not showing warning
* Handle plugin host closing better when app has crashed
* Seperate host and client logic in remote event subscriber
* Ensure the PluginHost shuts down if the app crashes
* Better error output for plugins
* Fix cmd interop not working, add some tests
* also generate docs on plugins
* Fix build order with docs
* Fix enum script parameters and ensure actions share environment scopes
* Fix _wpftmp folders being created dotnet/wpf#2930
* Fix sequence action. Add disabled trigger/action for unloaded plugins on start... (continued)

180 of 1703 branches covered (0.0%)

Branch coverage included in aggregate %.

6419 of 6419 new or added lines in 207 files covered. (100.0%)

1035 of 8041 relevant lines covered (12.87%)

8445.05 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

14.29
/Core/Key2Joy.Core/Mapping/Actions/Input/KeyboardGetKeyDownAction.cs
1
using System;
2
using System.Threading.Tasks;
3
using Key2Joy.Contracts.Mapping;
4
using Key2Joy.Contracts.Mapping.Actions;
5
using Key2Joy.Contracts.Mapping.Triggers;
6
using Key2Joy.LowLevelInput;
7
using Key2Joy.Mapping.Triggers.Keyboard;
8

9
namespace Key2Joy.Mapping.Actions.Input;
10

11
[Action(
12
    Description = "Get Keyboard Key Down",
13
    Visibility = MappingMenuVisibility.Never,
14
    NameFormat = "Get Keyboard Key Down"
15
)]
16
public class KeyboardGetKeyDownAction : CoreAction
17
{
18
    public KeyboardGetKeyDownAction(string name)
19
        : base(name)
1✔
20
    { }
2✔
21

22
    /// <markdown-doc>
23
    /// <parent-name>Input</parent-name>
24
    /// <path>Api/Input</path>
25
    /// </markdown-doc>
26
    /// <summary>
27
    /// Tests if the provided keyboard key is currently pressed.
28
    ///
29
    /// Note: This function currently has trouble distinguishing between left and right keys. This means that `Keyboard.GetKeyDown(KeyboardKey.RightControl)` will return true even if the left control is pressed.
30
    ///
31
    /// You can find the keycodes in <see href="../Enumerations/KeyboardKey.md">the KeyboardKey Enumeration</see>.
32
    /// </summary>
33
    /// <markdown-example>
34
    /// Shows how to show all keys currently pressed.
35
    /// <code language="lua">
36
    /// <![CDATA[
37
    /// for keyName, key in pairs(KeyboardKey)do
38
    ///    if(Keyboard.GetKeyDown(key))then
39
    ///       Print(keyName, "is currently pressed")
40
    ///    end
41
    /// end
42
    /// ]]>
43
    /// </code>
44
    /// </markdown-example>
45
    /// <markdown-example>
46
    /// Shows how to only simulate pressing "A" when shift is also held down. This allows binding to multiple keys, where one is the trigger and the rest of the inputs are checked in the script.
47
    /// <code language="js">
48
    /// <![CDATA[
49
    /// if(Keyboard.GetKeyDown(KeyboardKey.Shift)) {
50
    ///   GamePad.Simulate(GamePadControl.A, PressState.Press);
51
    /// }
52
    /// ]]>
53
    /// </code>
54
    /// </markdown-example>
55
    /// <param name="key">The key to test for</param>
56
    /// <returns>True if the key is currently pressed down, false otherwise</returns>
57
    /// <name>Keyboard.GetKeyDown</name>
58
    [ExposesScriptingMethod("Keyboard.GetKeyDown")]
59
    public bool ExecuteForScript(KeyboardKey key) => KeyboardTriggerListener.Instance.GetKeyDown(VirtualKeyConverter.KeysFromScanCode(key));
×
60

61
    public override async Task Execute(AbstractInputBag inputBag = null)
62
    {
×
63
        // TODO: Currently this is only a script action...
64
    }
×
65

66
    public override string GetNameDisplay() => this.Name;
×
67

68
    public override bool Equals(object obj)
69
    {
×
70
        if (obj is not KeyboardGetKeyDownAction)
×
71
        {
×
72
            return false;
×
73
        }
74

75
        // TODO: Currently this is only a script action so this is irrelevant
76
        return false;
×
77
    }
×
78
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc