In our 0.2.7 SDK release we’ve added input filtering, and we no longer stretch streams to 1080p.

Input Filtering

Previously, Rainway supported selectively allowing interactive input using the RainwayInputLevel setting.

Now, you can register callbacks that filter outgoing or incoming input events with even more precision. This is useful for disabling certain key combinations, or for mapping them to logic in your app.

In the Native SDK, you can supply an incoming filter in RainwayStreamConfig, right next to the App Isolation PIDs. In the Web SDK, there’s a method on RainwayStream:

this.stream.setOutgoingInputFilter((input, heldKeys) => {
    if (
        input.discriminator === KeyboardInput.discriminator &&
        heldKeys.shift &&
        input.value.keycode === VirtualKey.K
    ) {
        // Block Shift+K by returning false.
        return false;
    }
    // Allow everything else that's allowed by InputLevel.
    return true;
});

For more explanation and examples, see the documentation page on input filtering.

Stream Resolution

Previously, Rainway streams were encoded into 1920x1080 video, which caused non-16:9 remote desktops to appear distorted.

Now, the video resolution always matches the resolution of the desktop being streamed.

This should improve the appearance of most streams. However if it does not, you can apply CSS to .rainway-inner-container and its parent to control the size of the video on your page.

Bug Fixes and Improvements

  • [.NET SDK] You can now specify MinPort and MaxPort in RainwayConfig.
  • [Web SDK] Leaving a stream while resizing the browser no longer sends an erroneous ViewportResize event.