Version: 1.0.0
A RDKWindowManager plugin for Thunder framework.
The RDKWindowManager plugin provides an interface for RDKWindowManager.
The plugin is designed to be loaded and executed within the Thunder framework. For more information about the framework refer to [Thunder].
The table below lists configuration options of the plugin.
| Name | Type | Description |
|---|---|---|
| callsign | string | Plugin instance name (default: org.rdk.RDKWindowManager) |
| classname | string | Class name: RDKWindowManager |
| locator | string | Library name: libWPEFrameworkRDKWindowManager.so |
| autostart | boolean | Determines if the plugin shall be started automatically along with the framework |
The following methods are provided by the RDKWindowManager plugin:
RDKWindowManager interface methods:
| Method | Description |
|---|---|
| addKeyIntercept | Registers a key intercept for a specific key code and client |
| addKeyIntercepts | Registers multiple key intercepts in a single operation. |
| addKeyListener | Registers listeners for specific keys. |
| createDisplay | Create the display window |
| enableDisplayRender | Enable or disable the rendering of a Wayland display |
| enableInactivityReporting | Enables the inactivity reporting |
| enableInputEvents | Enables KeyInputEvents for list of clients specified |
| enableKeyRepeats | Key repeats are enabled/disabled |
| generateKey | Generates a key event for the specified keys and client. |
| getApps | Get the list of Apps which are currently active and available |
| getKeyRepeatsEnabled | Retrieves the flag determining whether keyRepeat true/false |
| getLastKeyInfo | Retrieves information about the most recent key press event, including the key code, modifier flags, and the timestamp in seconds when the key was pressed. |
| ignoreKeyInputs | Ignore key inputs |
| injectKey | Simulates a key press event with optional modifiers. |
| keyRepeatConfig | Enables KeyInputEvents for list of clients specified |
| removeKeyIntercept | Removes a key intercept for a specific key code and client. |
| removeKeyListener | Removes listeners for specific keys. |
| renderReady | To get the status of first frame is rendered or not |
| resetInactivityTime | Resets inactivity interval if EnableUserInactivity feature is enabled |
| setFocus | Sets the focus to the app with the app id |
| setInactivityInterval | Sets inactivity interval if EnableUserInactivity feature is enabled |
| setVisible | Sets the visibility of the given client or appInstanceId |
Registers a key intercept for a specific key code and client
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.intercept | string | JSON String format with the client/callSign, keyCode, modifiers |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 0,
"method": "org.rdk.RDKWindowManager.addKeyIntercept",
"params": {
"intercept": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 0, "method": "org.rdk.RDKWindowManager.addKeyIntercept", "params": {"intercept": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 0,
"result": null
}Registers multiple key intercepts in a single operation.
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.intercepts | string | JSON String format containing the array of key intercept(client/callSign, keyCode, modifiers) configuration |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 1,
"method": "org.rdk.RDKWindowManager.addKeyIntercepts",
"params": {
"intercepts": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 1, "method": "org.rdk.RDKWindowManager.addKeyIntercepts", "params": {"intercepts": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 1,
"result": null
}Registers listeners for specific keys.
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.keyListeners | string | JSON String format containing the keylisteneres with keys(keyCode,nativekeyCode,modifiers,activate,propagate) and client/callSign |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 2,
"method": "org.rdk.RDKWindowManager.addKeyListener",
"params": {
"keyListeners": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 2, "method": "org.rdk.RDKWindowManager.addKeyListener", "params": {"keyListeners": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 2,
"result": null
}Create the display window
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.displayParams | string | JSON String format with client,displayName,displayWidth,displayHeight,virtualDisplay,virtualWidth,virtualHeight,topmost,focus |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 3,
"method": "org.rdk.RDKWindowManager.createDisplay",
"params": {
"displayParams": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 3, "method": "org.rdk.RDKWindowManager.createDisplay", "params": {"displayParams": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 3,
"result": null
}Enable or disable the rendering of a Wayland display
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.client | string | the identifier of the disconnected application |
| params.enable | bool | flag to true/false the feature |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 4,
"method": "org.rdk.RDKWindowManager.enableDisplayRender",
"params": {
"client": "",
"enable": true
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 4, "method": "org.rdk.RDKWindowManager.enableDisplayRender", "params": {"client": "", "enable": true}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 4,
"result": null
}Enables the inactivity reporting
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.enable | bool | flag to true/false the feature |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 5,
"method": "org.rdk.RDKWindowManager.enableInactivityReporting",
"params": {
"enable": true
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 5, "method": "org.rdk.RDKWindowManager.enableInactivityReporting", "params": {"enable": true}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 5,
"result": null
}Enables KeyInputEvents for list of clients specified
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.clients | string | JSON String format with number of clients, enable:Flag to enable input events |
| params.enable | bool | flag to true/false the feature |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 6,
"method": "org.rdk.RDKWindowManager.enableInputEvents",
"params": {
"clients": "",
"enable": true
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 6, "method": "org.rdk.RDKWindowManager.enableInputEvents", "params": {"clients": "", "enable": true}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 6,
"result": null
}Key repeats are enabled/disabled
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.enable | bool | flag to true/false the feature |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 7,
"method": "org.rdk.RDKWindowManager.enableKeyRepeats",
"params": {
"enable": true
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 7, "method": "org.rdk.RDKWindowManager.enableKeyRepeats", "params": {"enable": true}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 7,
"result": null
}Generates a key event for the specified keys and client.
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.keys | string | JSON String format representing the key(s)(keyCode,modifiers,delay,client/callSign) to generate |
| params.client | string | the identifier of the disconnected application |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 8,
"method": "org.rdk.RDKWindowManager.generateKey",
"params": {
"keys": "",
"client": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 8, "method": "org.rdk.RDKWindowManager.generateKey", "params": {"keys": "", "client": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 8,
"result": null
}Get the list of Apps which are currently active and available
Event details will be updated soon.
This method takes no parameters.
| Name | Type | Description |
|---|---|---|
| result | object | |
| result.appsIds | string | Returns the list of app IDs as a JSON string. |
{
"jsonrpc": 2.0,
"id": 9,
"method": "org.rdk.RDKWindowManager.getApps"
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 9, "method": "org.rdk.RDKWindowManager.getApps"}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 9,
"result": {
"appsIds": ""
}
}Retrieves the flag determining whether keyRepeat true/false
Event details will be updated soon.
This method takes no parameters.
| Name | Type | Description |
|---|---|---|
| result | object | |
| result.keyRepeat | bool | flag stating whether keyRepeat true/false |
{
"jsonrpc": 2.0,
"id": 10,
"method": "org.rdk.RDKWindowManager.getKeyRepeatsEnabled"
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 10, "method": "org.rdk.RDKWindowManager.getKeyRepeatsEnabled"}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 10,
"result": {
"keyRepeat": true
}
}Retrieves information about the most recent key press event, including the key code, modifier flags, and the timestamp in seconds when the key was pressed.
Event details will be updated soon.
This method takes no parameters.
| Name | Type | Description |
|---|---|---|
| result | object | |
| result.keyCode | integer | Key code to be injected, modifiers : JSON String format with one or more modifiers |
| result.modifiers | integer | Output parameter. The modifier flags (e.g., Shift, Ctrl) active during the last key press. |
| result.timestampInSeconds | integer | Output parameter. The timestamp (in seconds) when the last key press occurred. @retval Core::ERROR_NONE: Successfully retrieved the last key press information. @retval Core::ERROR_UNAVAILABLE: No key press information is available. |
{
"jsonrpc": 2.0,
"id": 11,
"method": "org.rdk.RDKWindowManager.getLastKeyInfo"
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 11, "method": "org.rdk.RDKWindowManager.getLastKeyInfo"}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 11,
"result": {
"keyCode": 0,
"modifiers": 0,
"timestampInSeconds": 0
}
}Ignore key inputs
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.ignore | bool | flag stating whether key inputs ignored |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 12,
"method": "org.rdk.RDKWindowManager.ignoreKeyInputs",
"params": {
"ignore": true
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 12, "method": "org.rdk.RDKWindowManager.ignoreKeyInputs", "params": {"ignore": true}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 12,
"result": null
}Simulates a key press event with optional modifiers.
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.keyCode | integer | Key code to be injected, modifiers : JSON String format with one or more modifiers |
| params.modifiers | string |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 13,
"method": "org.rdk.RDKWindowManager.injectKey",
"params": {
"keyCode": 0,
"modifiers": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 13, "method": "org.rdk.RDKWindowManager.injectKey", "params": {"keyCode": 0, "modifiers": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 13,
"result": null
}Enables KeyInputEvents for list of clients specified
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.input | string | input type (default/keyboard) |
| params.keyConfig | string | JSON String format with enabled, initialDelay and repeatInterval |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 14,
"method": "org.rdk.RDKWindowManager.keyRepeatConfig",
"params": {
"input": "",
"keyConfig": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 14, "method": "org.rdk.RDKWindowManager.keyRepeatConfig", "params": {"input": "", "keyConfig": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 14,
"result": null
}Removes a key intercept for a specific key code and client.
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.intercept | string | JSON String format with the client/callSign, keyCode, modifiers |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 15,
"method": "org.rdk.RDKWindowManager.removeKeyIntercept",
"params": {
"intercept": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 15, "method": "org.rdk.RDKWindowManager.removeKeyIntercept", "params": {"intercept": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 15,
"result": null
}Removes listeners for specific keys.
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.keyListeners | string | JSON String format containing the keylisteneres with keys(keyCode,nativekeyCode,modifiers,activate,propagate) and client/callSign |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 16,
"method": "org.rdk.RDKWindowManager.removeKeyListener",
"params": {
"keyListeners": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 16, "method": "org.rdk.RDKWindowManager.removeKeyListener", "params": {"keyListeners": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 16,
"result": null
}To get the status of first frame is rendered or not
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.client | string | the identifier of the disconnected application |
| Name | Type | Description |
|---|---|---|
| result | object | |
| result.status | bool | Returns true if the application has rendered first frame, false if it has not yet. |
{
"jsonrpc": 2.0,
"id": 17,
"method": "org.rdk.RDKWindowManager.renderReady",
"params": {
"client": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 17, "method": "org.rdk.RDKWindowManager.renderReady", "params": {"client": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 17,
"result": {
"status": true
}
}Resets inactivity interval if EnableUserInactivity feature is enabled
Event details will be updated soon.
This method takes no parameters.
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 18,
"method": "org.rdk.RDKWindowManager.resetInactivityTime"
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 18, "method": "org.rdk.RDKWindowManager.resetInactivityTime"}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 18,
"result": null
}Sets the focus to the app with the app id
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.client | string | the identifier of the disconnected application |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 19,
"method": "org.rdk.RDKWindowManager.setFocus",
"params": {
"client": ""
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 19, "method": "org.rdk.RDKWindowManager.setFocus", "params": {"client": ""}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 19,
"result": null
}Sets inactivity interval if EnableUserInactivity feature is enabled
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.interval | integer | time interval set for inactivity |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 20,
"method": "org.rdk.RDKWindowManager.setInactivityInterval",
"params": {
"interval": 0
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 20, "method": "org.rdk.RDKWindowManager.setInactivityInterval", "params": {"interval": 0}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 20,
"result": null
}Sets the visibility of the given client or appInstanceId
Event details will be updated soon.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.client | string | the identifier of the disconnected application |
| params.visible | bool | boolean indicating the visibility status: true for visible, false for hide. |
| Name | Type | Description |
|---|---|---|
| result | null | On success null will be returned. |
{
"jsonrpc": 2.0,
"id": 21,
"method": "org.rdk.RDKWindowManager.setVisible",
"params": {
"client": "",
"visible": true
}
}curl -H 'content-type:text/plain;' --data-binary '{"jsonrpc": 2.0, "id": 21, "method": "org.rdk.RDKWindowManager.setVisible", "params": {"client": "", "visible": true}}' http://127.0.0.1:9998/jsonrpc
{
"jsonrpc": 2.0,
"id": 21,
"result": null
}Notifications are autonomous events, triggered by the internals of the implementation, and broadcasted via JSON-RPC to all registered observers. Refer to [Thunder] for information on how to register for a notification.
The following events are provided by the RDKWindowManager plugin:
RDKWindowManager interface events:
| Event | Description |
|---|---|
| onBlur | Notifies when an application is blurred |
| onConnected | Notifies when an application is connected |
| onDisconnected | Notifies when an application is disconnected |
| onFocus | Notifies when an application is in focus |
| onHidden | Notifies when an application is hidden |
| onReady | Posting the client for first frame ready. |
| onUserInactivity | Posting the client is inactive state |
| onVisible | Notifies when an application is visible |
Notifies when an application is blurred
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.appInstanceId | string | the identifier of the connected application |
{
"jsonrpc": 2.0,
"id": 22,
"method": "org.rdk.RDKWindowManager.onBlur",
"params": {
"appInstanceId": ""
}
}Notifies when an application is connected
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.appInstanceId | string | the identifier of the connected application |
{
"jsonrpc": 2.0,
"id": 23,
"method": "org.rdk.RDKWindowManager.onConnected",
"params": {
"appInstanceId": ""
}
}Notifies when an application is disconnected
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.client | string | the identifier of the disconnected application |
{
"jsonrpc": 2.0,
"id": 24,
"method": "org.rdk.RDKWindowManager.onDisconnected",
"params": {
"client": ""
}
}Notifies when an application is in focus
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.appInstanceId | string | the identifier of the connected application |
{
"jsonrpc": 2.0,
"id": 25,
"method": "org.rdk.RDKWindowManager.onFocus",
"params": {
"appInstanceId": ""
}
}
onHidden
Notifies when an application is hidden
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.appInstanceId | string | the identifier of the connected application |
{
"jsonrpc": 2.0,
"id": 26,
"method": "org.rdk.RDKWindowManager.onHidden",
"params": {
"appInstanceId": ""
}
}Posting the client for first frame ready.
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.client | string | the identifier of the disconnected application |
{
"jsonrpc": 2.0,
"id": 27,
"method": "org.rdk.RDKWindowManager.onReady",
"params": {
"client": ""
}
}Posting the client is inactive state
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.minutes | double | notify how long user is inactive state |
{
"jsonrpc": 2.0,
"id": 28,
"method": "org.rdk.RDKWindowManager.onUserInactivity",
"params": {
"minutes": 0.0
}
}Notifies when an application is visible
| Name | Type | Description |
|---|---|---|
| params | object | |
| params.appInstanceId | string | the identifier of the connected application |
{
"jsonrpc": 2.0,
"id": 29,
"method": "org.rdk.RDKWindowManager.onVisible",
"params": {
"appInstanceId": ""
}
}