kontroll 1.0.3

Kontroll connects to Keymapp's API, allowing control of ZSAs keyboard programmaticaly.
Documentation
syntax = "proto3";

option go_package = "github.com/zsa/keymapp/api";
package api;

message Keyboard {
    int32 id = 1;
    string friendly_name = 2;
    bool is_connected = 3;
}

message ConnectedKeyboard {
    string friendly_name = 1;
    string firmware_version = 2;
    int32 current_layer = 3;
}

message GetStatusRequest {}
message GetStatusReply {
    string keymapp_version = 1;
    ConnectedKeyboard connected_keyboard = 2;
}

message GetKeyboardsRequest {}
message GetKeyboardsReply {
    repeated Keyboard keyboards = 1;
}

message ConnectAnyKeyboardRequest {}

message ConnectKeyboardRequest {
    int32 id = 1;
}
message ConnectKeyboardReply {
    bool success = 1;
}

message DisconnectKeyboardRequest {
}

message DisconnectKeyboardReply {
    bool success = 1;
}

message SetLayerRequest {
    int32 layer = 1;
}
message SetLayerReply {
    bool success = 1;
}

message SetRGBLedRequest {
    int32 led = 1;
    int32 red = 2;
    int32 green = 3;
    int32 blue = 4;
    int32 sustain = 5;
}
message SetRGBLedReply {
    bool success = 1;
}

message SetRGBAllRequest {
    int32 red = 1;
    int32 green = 2;
    int32 blue = 3;
    int32 sustain = 4;
}

message SetRGBAllReply {
    bool success = 1;
}

message SetStatusLedRequest {
    int32 led = 1;
    bool on = 2;
    int32 sustain = 3;
}

message SetStatusLedReply {
    bool success = 1;
}

message IncreaseBrightnessRequest {
}

message DecreaseBrightnessRequest {
}

message BrightnessUpdateReply {
    bool success = 1;
}

service KeyboardService {
    rpc GetStatus (GetStatusRequest) returns (GetStatusReply) {}
    // Returns a list of all detected keyboards.
    rpc GetKeyboards (GetKeyboardsRequest) returns (GetKeyboardsReply) {}
    // Connects to a keyboard using given an id retrieved from GetKeyboards.
    rpc ConnectKeyboard (ConnectKeyboardRequest) returns (ConnectKeyboardReply) {}
    // Connects to the first available keyboard.
    rpc ConnectAnyKeyboard (ConnectAnyKeyboardRequest) returns (ConnectKeyboardReply) {}
    // Disconnects to a keyboard using given an id retrieved from GetKeyboards.
    rpc DisconnectKeyboard (DisconnectKeyboardRequest) returns (DisconnectKeyboardReply) {}
    // Sets the active layer of a connected keyboard.
    rpc SetLayer (SetLayerRequest) returns (SetLayerReply) {}
    // Unsets a previously set layer.
    rpc UnsetLayer (SetLayerRequest) returns (SetLayerReply) {}
    // Sets the color of a specific LED on the keyboard.
    rpc SetRGBLed (SetRGBLedRequest) returns (SetRGBLedReply) {}
    // Sets the color of all LEDs on the keyboard.
    rpc SetRGBAll (SetRGBAllRequest) returns (SetRGBAllReply) {}
    // Sets the status LED on the keyboard.
    rpc SetStatusLed (SetStatusLedRequest) returns (SetStatusLedReply) {}
    // Increases the brightness of the keyboard.
    rpc IncreaseBrightness (IncreaseBrightnessRequest) returns (BrightnessUpdateReply) {}
    // Decreases the brightness of the keyboard.
    rpc DecreaseBrightness (DecreaseBrightnessRequest) returns (BrightnessUpdateReply) {}
}