Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/DEVELOPER/release-notes/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,7 @@ Below is a list of key developer-facing Roku OS 11.0 updates:

* **[Option for Label and TextEditBox nodes to display the end of overflowing text](/docs/references/scenegraph/label-nodes/label.md#fields)** — The [**Label**](/docs/references/scenegraph/label-nodes/label.md#fields) and [**TextEditBox**](docs/references/scenegraph/widget-nodes/texteditbox.md) nodes now include a **leadingEllipsis** flag that enables developers to specify whether to show the end or beginning of text that overflows its available width. When this flag is set to true, the end of the text is shown. For example, "the quick brown fox jumps over the lazy dog" would be truncated to "...jumps over the lazy dog". When the flag is false, the start of the text is shown ("the quick brown fox jumps...").

* [**Voice keyboard enhancements**](/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md#fields) — The SceneGraph [**DynamicKeyboardBase**](/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md#fields)) node class now includes a **hideTextBox** flag that enables developers to hide a voice keyboard's VoiceTextEditBox.
* [**Voice keyboard enhancements**](/docs/references/scenegraph/abstract-nodes/dynamic-keyboard-base.md#fields) — The SceneGraph [**DynamicKeyboardBase**](/docs/references/scenegraph/abstract-nodes/dynamic-keyboard-base.md#fields)) node class now includes a **hideTextBox** flag that enables developers to hide a voice keyboard's VoiceTextEditBox.

#### BrightScript APIs

Expand Down Expand Up @@ -640,7 +640,7 @@ Below is a list of key developer-facing Roku OS 10.0 updates:

#### Architecture

* **[Dynamic voice-enabled keyboards](/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md)** — Developers can create keyboards, mini keyboards, and pin pads that can be controlled by voice. This helps speed up on-device sign-ups and sign-ins by enabling customers to speak their PIN codes when subscribing to apps and their passwords when logging in. A sample app demonstrating this feature is available [here](https://github.com/rokudev/dynamic-voice-enabled-keyboards).
* **[Dynamic voice-enabled keyboards](/docs/references/scenegraph/abstract-nodes/dynamic-keyboard-base.md)** — Developers can create keyboards, mini keyboards, and pin pads that can be controlled by voice. This helps speed up on-device sign-ups and sign-ins by enabling customers to speak their PIN codes when subscribing to apps and their passwords when logging in. A sample app demonstrating this feature is available [here](https://github.com/rokudev/dynamic-voice-enabled-keyboards).

* **[Standard dialog framework](/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog-framework-overview.md)** — Developers can use new pre-built modal pop-up dialogs and build custom ones. A sample app demonstrating this feature is available [here](https://github.com/rokudev/standard-dialog-framework).

Expand All @@ -652,7 +652,7 @@ Below is a list of key developer-facing Roku OS 10.0 updates:

Some fields used to set options on the Dynamic voice-enabled keyboards and the StandardDialog nodes always print their value as “invalid” in BrightScript. Equality comparisons of these field values will also not work correctly. Setting the value of these fields from either BrightScript or XML does work correctly. These fields include:

The **voiceEntryType** field of the [VoiceTextEditBox](/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md) node.<br /> The **domain** field of the [DynamicKeyboardBase](/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md) node.<br /> The **keyboardDomain** field of the [StandardKeyboardDialog](/docs/references/scenegraph/standard-dialog-framework-nodes/standard-keyboard-dialog.md) node.<br /> The **bulletType** field of the [StdDlgBulletTextItem](/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-bullet-text-item.md) node.<br /> The **graphicAlign** field of the [StdDlgGraphicItem](/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md) node.<br /> The **keyLayout** field of the [StdDlgKeyboardItem](/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-keyboard-item.md) node.<br /> The **namedTextStyle** field of the [StdDlgTextItem](/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md) node.
The **voiceEntryType** field of the [VoiceTextEditBox](/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md) node.<br /> The **domain** field of the [DynamicKeyboardBase](/docs/references/scenegraph/abstract-nodes/dynamic-keyboard-base.md) node.<br /> The **keyboardDomain** field of the [StandardKeyboardDialog](/docs/references/scenegraph/standard-dialog-framework-nodes/standard-keyboard-dialog.md) node.<br /> The **bulletType** field of the [StdDlgBulletTextItem](/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-bullet-text-item.md) node.<br /> The **graphicAlign** field of the [StdDlgGraphicItem](/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md) node.<br /> The **keyLayout** field of the [StdDlgKeyboardItem](/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-keyboard-item.md) node.<br /> The **namedTextStyle** field of the [StdDlgTextItem](/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md) node.

* **[Enhanced Visual Search Results for Roku Voice](/docs/developer-program/discovery/search/implementing-search.md#visual-search-results-for-roku-voice)** - When users ask for content while in an app, the Roku UI displays a partial overlay with content matching the search request. Content from within the active app is listed in the first row of the display if the active app participates in Roku Search. The rows below include matches from other apps.

Expand Down
114 changes: 114 additions & 0 deletions docs/REFERENCES/scenegraph/abstract-nodes/dynamic-keyboard-base.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
---
title: "DynamicKeyboardBase"
excerpt: 'The abstract base class for the DynamicKeyboard, DynamicPinPad, DynamicMiniKeyboard, and DynamicCustomKeyboard nodes'
deprecated: false
hidden: false
metadata:
title: 'DynamicKeyboardBase'
description: 'DynamicKeyboardBase is an abstract base class that combines a DynamicKeyGrid and a VoiceTextEditBox into a single node, providing text and voice entry support shared by all dynamic voice-enabled keyboard nodes.'
robots: index
next:
description: ''
---
Extends [**Group**](doc:group)

> Apps must use Roku voice keyboards for [email](doc:dynamic-keyboard), [PIN](doc:dynamic-pinpad), [password](doc:dynamic-keyboard) entry to pass [certification](doc:certification).

The DynamicKeyboardBase is an abstract class that provides the functionality for dynamic voice-enabled keyboards. It combines [**DynamicKeyGrid**](doc:dynamic-key-grid) and [**VoiceTextEditBox**](doc:voice-text-edit-box) nodes to provide a single node that supports text entry in multiple languages and voice entry in English and Spanish.

- The [**DynamicKeyGrid**](doc:dynamic-key-grid) provides keyboard functionality. The layout of the keyboard is based on a JSON-formatted Key Definition File.

The classes derived from DynamicKeyboardBase (DynamicKeyboard, DynamicPinPad, and DynamicMiniKeyboard) have built-in Key Definition Files. For example, the DynamicKeyboard node uses a Key Definition File that matches the key layout of the [legacy Keyboard node](doc:keyboard).

The [**DynamicCustomKeyboard** node](doc:dynamic-custom-keyboard) enables developers to define a custom Key Definition File in order to configure the key layout. In the Key Definition File, the developer specifies the keys in each section and row of the keyboard. The keys support the characters in the Basic Latin, Latin 1 Supplement, Latin Extended-A, and Latin Extended-B blocks. This provides support for most Western European languages, including English, French, German, Italian, Portuguese, and Spanish.

- The [**VoiceTextEditBox**](doc:voice-text-edit-box) displays the text that has been entered or spoken. This node supports multiple voice entry modes for entering email addresses, passwords, street addresses, and PINs. This node currently supports voice entry in English and Spanish.

> Developers should upgrade the [legacy keyboards](doc:keyboard) in their apps to dynamic voice-enabled keyboards in order to leverage the following benefits:
>
> - **Faster on-device sign-ups and sign-ins.** Enable customers to use voice entry to provide their information when subscribing to apps and logging in.
>
> - **Localized in-app search**: Enable customers to search for content in their native language.
>
> - **Localized customer information entry**: Enable customers to enter their personal information in their native language.

## Fields

<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Default</th>
<th>Access Permission</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>text</td>
<td>string</td>
<td>""</td>
<td>READ_WRITE</td>
<td>Contains the string of characters that has been entered. The text written to this field may also be displayed in the VoiceTextEditBox.</td>
</tr>
<tr>
<td>textEditBox</td>
<td>[<strong>VoiceTextEditBox</strong> node](doc:voice-text-edit-box)</td>
<td>The VoiceTextEditBox associated with the keyboard</td>
<td>READ</td>
<td>The internal [VoiceTextEditBox node](doc:voice-text-edit-box) used by this DynamicKeyboardBase node.<br /><br />Do not set this field to null or to a different VoiceTextEditBox node; this field should be used only to access the fields of this node's internal VoiceTextEditBox node.</td>
</tr>
<tr>
<td>hideTextBox</td>
<td>boolean</td>
<td>false</td>
<td>READ_WRITE</td>
<td>Hides the keyboard's internal <strong>VoiceTextEditBox</strong>, and renders the keyboard's <strong>DynamicKeyGrid</strong> at the top of the node.</td>
</tr>
<tr>
<td>keyGrid</td>
<td><strong>[DynamicKeyGrid node](doc:dynamic-key-grid)</strong></td>
<td>The DynamicKeyGrid associated with the keyboard</td>
<td>READ</td>
<td>The internal [DynamicKeyGrid node](doc:dynamic-key-grid) used by this DynamicKeyboardBase node.<br /><br />Do not set this field to null or to a different DynamicKeyGrid node; this field should be only used to access the fields of this node's internal DynamicKeyGrid node, such as the mode or horizWrapping fields.</td>
</tr>
<tr>
<td>domain</td>
<td>string</td>
<td>"generic"</td>
<td>READ_WRITE</td>
<td>
The keyboard mode, which may be one of the following:
<ul>
<li>"email": letter-by-letter dictation for emails.</li>
<li>"numeric": letter-by-letter dictation for PIN codes, zip codes, and other numeric input.</li>
<li>"alphanumeric": letter-by-letter dictation for street addresses or other sequences of numbers and letters.</li>
<li>"generic": Full word input for search queries or other sequences of numbers, letters and symbols.</li>
<li>"password": letter-by-letter dictation for passwords.</li>
</ul>
The domain may be used to:
<ul>
<li>Set options for the speech recognition system.</li>
<li>Identify when a complete string has been entered (for example, an email address).</li>
<li>Specify whether the entered string is displayed as a single string or a discrete sequence of characters (for example, a PIN code).</li>
<li>Enable key suggestions (for example, a pop-up for the ampersand key (&amp;) to provide common email choices).</li>
</ul>
</td>
</tr>
</tbody>
</table>

## UX recommendations

1. Do not show hint text in the [VoiceTextEditBox](doc:voice-text-edit-box).
2. Display secondary text under the title.
3. Show the horizontal blinking cursor when the focus is on the [VoiceTextEditBox](doc:voice-text-edit-box) and vertical blinking cursor when the focus is on the keyboard buttons.

![roku815px - email-keyboard](https://image.roku.com/ZHZscHItMTc2/email-keyboard.png)

![roku815px - email-keyboard](https://image.roku.com/ZHZscHItMTc2/email-keyboard-2.png)

## Sample app

You can download and install a [sample app](https://github.com/rokudev/dynamic-voice-enabled-keyboards) that demonstrates how to create and configure dynamic voice-enabled keyboards. The sample app includes a voice-enabled keyboard, PIN pad, mini-keyboard, and custom keyboard (an address keyboard form).
Loading
Loading