Skip to content

Commit 9aa7513

Browse files
authored
Merge pull request #44 from Fabianexe/add_Stream_Deck_MK.2
Add stream deck mk.2
2 parents 0d1bf2f + bb01517 commit 9aa7513

File tree

3 files changed

+74
-14
lines changed

3 files changed

+74
-14
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", MODE:="666"
2727
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", MODE:="666"
2828
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", MODE:="666"
2929
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", MODE:="666"
30+
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", MODE:="666"
3031
```
3132

3233
## Usage

devices/origmk2.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package devices
2+
3+
import (
4+
"image"
5+
6+
streamdeck "github.com/magicmonkey/go-streamdeck"
7+
)
8+
9+
var (
10+
omk2Name string
11+
omk2ButtonWidth uint
12+
omk2ButtonHeight uint
13+
omk2ImageReportPayloadLength uint
14+
)
15+
16+
// GetImageHeaderOv2 returns the USB comms header for a button image for the XL
17+
func GetImageHeaderOMK2(bytesRemaining uint, btnIndex uint, pageNumber uint) []byte {
18+
thisLength := uint(0)
19+
if ov2ImageReportPayloadLength < bytesRemaining {
20+
thisLength = ov2ImageReportPayloadLength
21+
} else {
22+
thisLength = bytesRemaining
23+
}
24+
header := []byte{'\x02', '\x07', byte(btnIndex)}
25+
if thisLength == bytesRemaining {
26+
header = append(header, '\x01')
27+
} else {
28+
header = append(header, '\x00')
29+
}
30+
31+
header = append(header, byte(thisLength&0xff))
32+
header = append(header, byte(thisLength>>8))
33+
34+
header = append(header, byte(pageNumber&0xff))
35+
header = append(header, byte(pageNumber>>8))
36+
37+
return header
38+
}
39+
40+
func init() {
41+
omk2Name = "Stream Deck MK.2"
42+
omk2ButtonWidth = 72
43+
omk2ButtonHeight = 72
44+
omk2ImageReportPayloadLength = 1024
45+
streamdeck.RegisterDevicetype(
46+
omk2Name, // Name
47+
image.Point{X: int(omk2ButtonWidth), Y: int(omk2ButtonHeight)}, // Width/height of a button
48+
0x80, // USB productID
49+
resetPacket32(), // Reset packet
50+
15, // Number of buttons
51+
3, // Number of rows
52+
5, // Number of columns
53+
brightnessPacket32(), // Set brightness packet preamble
54+
4, // Button read offset
55+
"JPEG", // Image format
56+
omk2ImageReportPayloadLength, // Amount of image payload allowed per USB packet
57+
GetImageHeaderOMK2, // Function to get the comms image header
58+
)
59+
}

image.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,19 @@ func resizeAndRotate(img image.Image, width, height int, devname string) image.I
2525

2626
func deviceSpecifics(devName string, width, height int) (*gift.GIFT, error) {
2727
switch devName {
28-
case "Streamdeck XL", "Streamdeck (original v2)":
29-
return gift.New(
30-
gift.Resize(width, height, gift.LanczosResampling),
31-
gift.Rotate180(),
32-
), nil
33-
case "Streamdeck Mini":
34-
return gift.New(
35-
gift.Resize(width, height, gift.LanczosResampling),
36-
gift.Rotate90(),
37-
gift.FlipVertical(),
38-
), nil
39-
default:
40-
return nil, errors.New(fmt.Sprintf("Unsupported Device: %s", devName))
28+
case "Streamdeck XL", "Streamdeck (original v2)", "Stream Deck MK.2":
29+
return gift.New(
30+
gift.Resize(width, height, gift.LanczosResampling),
31+
gift.Rotate180(),
32+
), nil
33+
case "Streamdeck Mini":
34+
return gift.New(
35+
gift.Resize(width, height, gift.LanczosResampling),
36+
gift.Rotate90(),
37+
gift.FlipVertical(),
38+
), nil
39+
default:
40+
return nil, errors.New(fmt.Sprintf("Unsupported Device: %s", devName))
4141
}
4242
}
4343

@@ -56,7 +56,7 @@ func getImageForButton(img image.Image, btnFormat string) ([]byte, error) {
5656

5757
func getSolidColourImage(colour color.Color, btnSize int) *image.RGBA {
5858
img := image.NewRGBA(image.Rect(0, 0, btnSize, btnSize))
59-
//colour := color.RGBA{red, green, blue, 0}
59+
// colour := color.RGBA{red, green, blue, 0}
6060
draw.Draw(img, img.Bounds(), image.NewUniform(colour), image.Point{0, 0}, draw.Src)
6161
return img
6262
}

0 commit comments

Comments
 (0)