JStreamDeck est une API en Java pour le permettant de contrôler le périphérique Stream Deck d'Elgato afin de l’intégrer plus facilement dans vos applications Java. Elle permet aussi la gestion de plusieurs Stream Deck connecter à un même ordinateur.
Comme l’application d’Elgato, il est possible de créer des pages, différents types de boutons (classique, switch, animés,…).
L’API JStreamDeck s’accompagne d’une classe HIDInspector reposant sur Pure Java HID-API afin de simplifier la connexion au ou aux StreamDeck connectés.
Cette classe vient accompagner Pure Java HID-API afin de simplfier la connection à un ou plusieurs périphériques USB. Ici nous allons voir comment réaliser une connexion à un ou plusieurs Stream Deck.
L'instance d'une classe HIDInspector permet d'initialiser l'API Pure Java HID-API.
La méthode getAllDevices de HIDInspector permet de remonter tous les périphèriques USB attachés à un VID et un PID spécifique (le VID etant l'identifaint du fabriquant et le PID l'identifiant du matériel)
Par exemple pour un Stream Deck son VID=0x0FD9 et son PID=0x0060.
//Récupérer l'ensemble des périphériques USB
HIDInspector devices = new HIDInspector();
//Récupére l"ensemble des Stream Deck connectés à votre ordinateur
List<HidDeviceInfo> devlist = devices.getAllDevices((short) 0x0FD9, (short) 0x0060);
Comme nous l'avons vu plus haut, la classe HIDInspector permet de se connecter à un ou plusieurs Stream Deck. Le code suivant vous montre comment récupérer une connexion au premier Stream Deck connecté.
//Récupérer l'ensemble des périphériques USB
HIDInspector devices = new HIDInspector();
//Récupére l"ensemble des Stream Deck connectés à votre ordinateur
List<HidDeviceInfo> devlist = devices.getAllDevices((short) 0x0FD9, (short) 0x0060);
HidDevice dev;
if ( devlist.size > 0 ) {
//Récupère le premier Stream Deck connecté
dev = PureJavaHidApi.openDevice(devlist.get(0));
}
Une fois la connexion avec un Stream Deck réalisée, nous allons pouvoir controler notre Stream Deck. la suite du code s'écrit ainsi :
JStreamDeck sd;
if ( dev!= null) {
sd = new JStreamDeck(dev);
}
La méthode setBrithness( luminosité ) permet de fixer la luminosité avec une valeur comprise entre 0 et 100.
sd.setBrithness(100);
La méthode setBackground( couleur) permet de fixer la couleur de fond des touches par défaut.
sd.setBackground(Color.gray);
Il est possible de connaître la couleur de fond via la méthode getBackground()
Color bg=sd.getBackground();
La méthode fillcolor( key_number , Color(r,g,b) ) permet d'associer une couleur à une touche.
sd.fillColor(2, Color.red);
sd.fillColor(3, new Color(255, 160, 0));
les méthodes clear(int key) et clearAll() permettent d'éffacer le contenu graphique d'une touches ou de toutes les touches. La couleur par defaut sera celle définit par la méthode setBackground(Color background)
sd.clear(2); //effacer le contenu de la touche 2
sd.clearAll(); //efface toutes les touches
La méthode showDefaultLogo() permet d'afficher le logo d'Elgato sur le Stream Deck
sd.showDefaultLogo();
Une page est une configuration de boutons. Elle peut-être liée à une ou plusieurs autres via des boutons de type folder et ainsi construire une arborescence de pages. Ci dessous, un exemple de deux pages reliées par un bouton (folder) intitulé "Folder1" :
La création d'un bouton folder créé automatiquement un bouton folder parent sur la page liée (sur la première ligne/colonne).
La classe PageManger est indispensable pour la gestion des pages. Elle doit être instancier avant de créer nos pages.
//Récupérer l'ensemble des périphériques USB
HIDInspector devices = new HIDInspector();
//Récupére l"ensemble des Stream Deck connectés à votre ordinateur
List<HidDeviceInfo> devlist = devices.getAllDevices((short) 0x0FD9, (short) 0x0060);
HidDevice dev;
if ( devlist.size > 0 ) {
//Récupère le premier Stream Deck connecté
dev = PureJavaHidApi.openDevice(devlist.get(0));
}
JStreamDeck sd;
if ( dev!= null) {
sd = new JStreamDeck(dev);
}
PageManager pm = new PageManager(sd);
la création d'une page se fait via la classe JStreamDeckPage(PageManager pm, String name, JStreamDeckPage parent). Les arguments sont les suivants :
- le pointeur du PageManager
- le nom de la page
- la page parent (si la page n'a pas de parent indiquer null)
exemple :
JStreamDeckPage page_root = new JStreamDeckPage(pm, "root", null);

