To control CTL functionality in an application, use the following Motif resources:
layoutModifier
Visual mode
Default keystroke override
layoutDirection
Dynamically switch screen layout
Step 1. Control the behavior of the language engine through the layoutModifier resource in the application resource file. For example, the default numeral type, text type, and text orientation can be changed using the following resource:*layoutModifier: @ls numerals=nominal:contextual,typeoftext=implicit:visual, orientation=ltr:rtl
Table 3-1 Common Modifiers
Modifier |
Values |
Description |
---|---|---|
orientation=in:out |
ltr |
left-to-right global orientation (default in and out) |
|
rtl |
right-to-left global orientation |
|
contextual |
context-sensitive orientation |
numerals=in:out |
nominal |
Arabic numerals (Latin) (default in) |
|
national |
national shaping of numerals |
|
contextual |
numeral shaping based on the context of the surrounding text (default out) |
swapping=value |
yes |
enable symmetric swapping (default) |
|
no |
disable symmetric swapping |
typeoftext=in:out |
visual |
visual order (default out) |
|
implicit |
logical order (default in) |
|
explicit |
logical order with embedded control |
For a complete list of layout modifiers, see Portable Layout Services: Context-Dependent and Directional Text: ISBN 1-85912-075-X.
Step 2. Configure Hebrew and Arabic locales to support Visual mode for editing in the resource file as follows: *editPolicy: XmEDIT_VISUAL (default is XmEDIT_LOGICAL)
Step 3. To override the default keystrokes in an application, make the necessary changes in the resource file, as shown in the following example:
*XmText.translations: #override \n\ c <Key>q:right-word() \n\ c <Key>w:left-word() \n\ c <Key>g:forward-word(extend) \n\ c <Key>h:backward-word(extend) \n\ c <Key>f:next-line(extend) \n\ c <Key>b:previous-line(extend) \n\ c <Key>>:right-character() \n\ c <Key><:left-character() \n\ c <Key>t:prev-cell() \n\ c <Key>v:forward-cell() \n\ c <Key>+:delete-right-word() \n\ c <Key>-:delete-left-word() \n\ c <Key>r:right-character(extend) \n\ c <Key>l:left-character(extend)
Step 4. The Motif resource layoutDirection can be used to set the right to left screen layout. In this screen mode, the screen origin is the top right corner and all application Motif widgets are mirrored. The following example shows how to set this in the resource file:*layoutDirection: XmBOTTOM_TO_TOP_RIGHT_TO_LEFT
This resource changes the layout of the whole application. To change the layout of some widgets only, such as Text or TextField, use the following:
*XmText*layoutDirection: XmBOTTOM_TO_TOP_RIGHT_TO_LEFT *XmTextField*layoutDirection: XmBOTTOM_TO_TOP_RIGHT_TO_LEFT
Step 5. The screen layout can be dynamically switched for the Text and TextField widgets by defining the dynamic switching hot keys in the Motif translation table. The following example shows how to add this function to the resource file:
*XmText.translations: #override \n\ Ctrl<Key>m:toggle-rtl-mode()2-TextField:
*XmTextField.translations: #override \n\ Ctrl<Key>m:toggle-rtl-mode()
CTRL+m is defined as the key combination to dynamically switch the screen layout. Any key combination which doesn't interfere with the application hot keys can be defined instead. This entry can also be appended to the original key translation table as discussed in Step 3 above.