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

luttje / Key2Joy / 6602669847

22 Oct 2023 08:23AM UTC coverage: 44.094% (-8.4%) from 52.519%
6602669847

push

github

web-flow
Add XInput in preparation for gamepad triggers + add xmldoc (#50)

* Add XInput in preparation for gamepad triggers + add xmldoc

* add parent-child relation between mapped options

* add remove child mappings option + remove debug context menu

* x86 > AnyCPU (gives more sensible errors in WinForms Designer) - Fixed Designer failing on MappingForm

* Fix polling gamepad

* Add gamepad input trigger and config control + Fix mapping list not updating correctly

* remove broken and quite useless test

* update readme with warning regarding #46 + update readme special thanks

* add warning on same gamepad id trigger and action

* attempt to give github actions more time before timeout (tests sometimes fail)

* use current default mapping profile from app (so we dont have to copy it to tests everytime manually)

* Add gamepad button trigger

* Add multi-property edit mode

* Show physical gamepad connection warning

* give even more time for tests so they dont fail

* Block arming mappings if simulated gamepad index collides with physical gamepad

* Cleanup + add GamePad Trigger Trigger

* Fix combined trigger remove not working

* Separate stick action and allow custom scaling

* improve stick feeling

* fix parent picker

* update default mappings

* add trigger and try work out conflicts between physical and simulated devices (no luck yet)

* Fix simulated gamepad recognized as physical

* Show gamepad devices in UI

* fix mapping form + add more multi-edit type support

* make reverse mapping tool more useful

* easily setup/update reverse mappings while creating/updating a mapping

* update readme screenshots + prefer 'Arm' terminology for enabling profile

* support more nullable types in mapping profile

* simplify groups

* add configurable grouping

* prevent wonky sorting across groups

* Add easy switch group option

* Fix being able to create corrupt profile

* fail loading ... (continued)

762 of 2383 branches covered (0.0%)

Branch coverage included in aggregate %.

3060 of 3060 new or added lines in 106 files covered. (100.0%)

3897 of 8183 relevant lines covered (47.62%)

12635.93 hits per line

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

0.0
/Key2Joy.Gui/DeviceListControl.cs
1
using System.Drawing;
2
using System.Windows.Forms;
3
using CommonServiceLocator;
4
using Key2Joy.LowLevelInput.SimulatedGamePad;
5
using Key2Joy.LowLevelInput.XInput;
6

7
namespace Key2Joy.Gui;
8

9
public partial class DeviceListControl : UserControl
10
{
11
    public DeviceListControl()
×
12
    {
13
        this.InitializeComponent();
×
14

15
        if (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv")
×
16
        {
17
            return; // The designer can't handle the code below.
×
18
        }
19

20
        this.RefreshDevices();
×
21
    }
×
22

23
    public void RefreshDevices()
24
    {
25
        this.pnlDevices.Controls.Clear();
×
26

27
        this.RefreshSimulatedDevices();
×
28
        this.RefreshPhysicalDevices();
×
29

30
        if (this.pnlDevices.Controls.Count == 0)
×
31
        {
32
            this.pnlDevices.Controls.Add(new Label()
×
33
            {
×
34
                Text = "No physical or simulated devices found. Try arming the mappings.",
×
35
                Font = new Font("Arial", 8, FontStyle.Italic),
×
36
                Padding = new Padding(5),
×
37
                Dock = DockStyle.Top,
×
38
                Height = 100,
×
39
                TextAlign = ContentAlignment.MiddleCenter,
×
40
            });
×
41
        }
42
    }
×
43

44
    private void AddDeviceControl(DeviceControl control)
45
    {
46
        control.Dock = DockStyle.Top;
×
47
        this.pnlDevices.Controls.Add(control);
×
48
    }
×
49

50
    private void RefreshPhysicalDevices()
51
    {
52
        var xInputService = ServiceLocator.Current.GetInstance<IXInputService>();
×
53
        xInputService.RecognizePhysicalDevices();
×
54
        var deviceIndexes = xInputService.GetActiveDevicesInfo();
×
55

56
        foreach (var device in deviceIndexes)
×
57
        {
58
            this.AddDeviceControl(new DeviceControl(device));
×
59
        }
60
    }
×
61

62
    private void RefreshSimulatedDevices()
63
    {
64
        var gamePadService = ServiceLocator.Current.GetInstance<ISimulatedGamePadService>();
×
65
        var simulatedGamePads = gamePadService.GetActiveDevicesInfo();
×
66

67
        foreach (var gamePad in simulatedGamePads)
×
68
        {
69
            this.AddDeviceControl(new DeviceControl(gamePad));
×
70
        }
71
    }
×
72

73
    private void BtnRefresh_Click(object sender, System.EventArgs e) => this.RefreshDevices();
×
74
}
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