macrobuttons.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
class MacroButton {
    [int32]$id
    
    # Constructor
    MacroButton ([Int]$id)
    {
        $this.id = $id
    }

    [int] Getter($mode) {
        return MB_Get -ID $this.id -MODE $mode
    }

    [void] Setter($set, $mode) {
        MB_Set -ID $this.id -SET $set -MODE $mode
    }

    hidden $_state = $($this | Add-Member ScriptProperty 'state' `
        {
            $this.Getter(1)
        }`
        {
            param ( $arg )
            $this._state = $this.Setter($arg, 1)
        }
    )

    hidden $_stateonly = $($this | Add-Member ScriptProperty 'stateonly' `
        {
            $this.Getter(2)
        }`
        {
            param ( $arg )
            $this._stateonly = $this.Setter($arg, 2)
        }
    )

    hidden $_trigger = $($this | Add-Member ScriptProperty 'trigger' `
        {
            $this.Getter(3)
        }`
        {
            param ( $arg )
            $this._trigger = $this.Setter($arg, 3)
        }
    )
}

Function Make_Buttons {
    [System.Collections.ArrayList]$button = @()
    0..69 | ForEach-Object {
        [void]$button.Add([MacroButton]::new($_))
    }
    $button
}