Using and Programming Cho Kanji

Universal Character Input Modules


Universal Character Input

By using Universal Character Input, it is possible to directly input from the keyboard the languages of various countries in the world with operations similar to the kana-to-kanji conversion of Japanese.

(1)
Select [Universal Input] from the [Utility] menu.

The Universal Character Input window will appear.

Universal Character Input
System (VJE)
European Script
Chinese (Simplified)
Korean

SwapKey:____________

ALT+Convert______

Switching Modules

By selecting a module (language module) registered in Universal Character Input, we change to the native input mode in the respective language.

We attach the ON mark () by clicking the module we wish to change to. The module we changed to immediately becomes valid.

European Script_________________Rab______Monday 12:00_____

Switching Modules with Keys

It is possible to select registered modules in order with only a key operation, without starting up the Universal Character Input utility.

In the Universal Character Input utility window, attach the ON mark () to [ALT + Convert].

Later, even if you do not start up the Universal Character Input module, whenever you press the [Alt] and [Convert] keys in a state in which character input is possible, it will be possible to switch in order the modules registered in the Universal Character Input utility.

European Script_________________Rab______Monday 12:00_____

When you attach the ON mark () to [ALT + Convert], it becomes impossible to use kana-to-kanji conversion and [Alt] + [Convert] key combinations through kana-to-kanji key assignments.

Referencing Key Assignments

Depending on the module, there are ones where we have assigned unique characters to the respective keys. When using this type of dictionary, it is possible to reference the unique characters that have been assigned to the keyboard.

(1)
In the Universal Character Input utility window, click the [].

The list of characters assigned to the keyboard will appear.

(2)
In the Universal Character Input utility window, click the [].

The list of the characters assigned to the keyboard will disappear.

Installing Language Modules

By installing modules matched to the respective languages in Universal Character Input, it becomes possible to directly input those languages from the keyboard.

(1)
Drag the module you would like to install into the Universal Character Input window.

Latin Script Languages
French A
French B
German A

(2)
A panel requesting confirmation as to whether or not you will install the module will appear.

French A Install?
Cancel______________________Install

(3)
Click the [Install] switch and register the module.

A newly installed module will appear in the Universal Character Input window, and it will be in the selected state.

A function to save an already installed module in a text real object does not exist. As for text real objects a user himself/herself has created, please preserve them for good keeping.

Universal Character Input
European Script
Chinese (Simplified)
Korean
French A

SwapKey:____________

ALT+Convert______

Deleting a Language Module

It is possible to delete a module that has been installed.

(1)
Attach the ON mark () by clicking on the module you wish to delete.

(2)
Select [Delete] from the [Edit] menu.

French A Delete?
Cancel______________________Delete

A panel as to whether of not you will delete the selected module will appear.

(3)
Click the [Delete] switch and delete the module.

After the module is deleted, the module that is one below the module that has been deleted will be selected. When you delete the module that was at the very bottom, System (VJE) will be selected.

Menu Operations

[View] Menu

[Display Keyboard Q] Switches between viewing and not viewing the list of characters assigned to the keyboard.

[Refresh] Redisplays at such times as when the display has become disturbed.

[Edit] Menu

[Move Up H] Changes the order of the currently selected module with the one above it.

[Move Down Y] Changes the order of the currently selected module with the one below it.

[Delete D] Deletes the currently selected module.


Inputting Chinese with Universal Character Input

We convert Pinyin into Chinese characters.

(1)
Select the [Chinese (Simplified)] module from the Universal Character Input window.

(2)
Input Pinyin.

Input alphabetic characters, and specify the tone.
Select with the henkan [Convert] key, and fix with the right [Ctrl] key.
On models where there is no right [Ctrl] key, fix with the [F10] key.

We specify the tone with the numbers [1] ~ [5]. [5] is the light tone. When you do not input one of the tones and press the [Convert] key, all the same sounding Chinese characters become candidates. Also, when you input one of the tones in a state where a candidate is displayed, a narrowing down of the candidates takes place.

For [umlaut u] 'ü' we input [umlaut u colon] 'u:'. For 'lü''nü' 'lüe' 'nüe', please input 'lu:' 'nu:' 'lu:e' 'nu:e', respectively.


Inputting Korean with Universal Character Input

We input Korean with the tu-bol system.

(1)
Select the [Korean] module from the Universal Character Input window.

(2)
Input the hangul jamo.

The jamo key arrangement is as follows:

We input the blue jamo while pressing the [Shift] key.

(3)
Convert hangul into hanja.

Press the [Convert] key, select the candidate, and fix with the right [Ctrl].


Inputting European Characters with Universal Character Input

(1)
Select the [European Script] module from the Universal Character Input window.

(2)
Input the European characters.

When you press the muhenkan [No Convert] or henkan [Convert] key immediately after you have input an alphabetic character or symbol, the character you have input will be converted into another character.

During conversion, when you press a key outside of [No Convert] or [Convert], the character fixes.

Candidates

Candidates

Symbols
____Input______________[Convert]________________[No Convert]

 

Alphabet Modifications  
__Input_______[Convert]_________[No Convert] __Input_______[Convert]________[No Convert]
  Upper case letters are the same

Special Alphabetic Characters
__Input____[Convert]____[No Convert]


Creating Language Modules

When you use Universal Character Input, you can directly input from the keyboard the languages of various countries in the world with the same operations as Japanese language kana-to-kanji conversion. We call this scheme TransGryph [TN1]. Here, we will explain about the language module scheme in order for the user himself/herself to describe input systems compatible with various languages.

Basic Concepts

In TransGryph, things are made up so that the user can define the kana-to-kanji conversion system, and so that he/she can describe a kana-to-kanji conversion system based on a script language. This script language is made up so that it can support not just kana-to-kanji conversion, but rather general multilingual input, and things are arranged so that the user can cope even with special languages.

In this system, in order to carry out operations matched to BTRON kana-to-kanji conversion, the input key is taken in as a "reading" using the ADD_KEY command. The "reading" is processed during input, and things are made up so that based on this, we can have a filter dictionary for display use and a filter dictionary for fixing, which can be compatible also with special characters. Moreover, the "reading" also is input at the time of fixing.

In regard to kana-to-kanji conversion, we have prepared a special mode for phrase conversion. This breaks things down into phrases based on the "reading," and it is made up so that we can select dictionaries and candidates regarding each phrase.

Script Commands

In the following explanation, we will explain the script commands in the order of script command name, script command function, and syntax. In accordance with need, a diagram with be attached after the syntax.

Concerning the Syntax Description

In regard the respective script commands, we will show in a figure the syntactic rules. A line without an arrow mark proceeds from left to right. Places where there is branching show that it is all right to proceed in either direction. Circles and ellipses show that we describe as is the characters written inside. Things written inside rectangles are explanations, and they show that we describe dictionary names, character strings, and so on in accordance with the explanation.

____________________

TRANSGRYPH MODE 1

This specifies the interpreter compatible with the module real object. Without fail, place "TRANSGRYPH MODE 1" and a line break at the head. It is not possible to insert a line break, space, etc., before this. The script section continues after this. The script section is executed every time there is a key input. By describing the commands here, it is possible to specify the operations for when each key is input.

____________________

From DICTIONARY, later in the dictionary section, there is a division for each dictionary.

 
 
 
 
Module Real Object Format
 
 
 
 
Script Section
 
 
 
Dictionary 1 Section
 
 
 
 
Dictionary 2 Section
 
 
 
 
Dictionary 3 Section
 
 
 
Dictionary 4 Section
 
 

____________________

DICTIONARY

This denotes the definition of a dictionary section. The script section ends up at the first dictionary, and below that becomes the definitions of the dictionaries. As for the dictionary names, it is necessary to describe them with the system script characters. In between, it is not possible to include spaces and tabs. A maximum of 26 dictionaries can be registered. By specifying registered dictionaries in the script section, they can be used as filters and phrase conversion dictionaries.

Furthermore, a dictionary of the same name cannot be defined multiple times.

Dictionary Name______________

____________________

Description of Dictionaries

In the dictionary section, we describe readings and representations one item per line. The switching of the readings of characters input from keys, roomaji-to-kana conversion, kana-to-kanji conversion, and so on can be carried out by means of dictionaries.

[ shows a valid candidate only at the beginning, < a valid candidate outside of the beginning, ] a valid candidate only at the end, and > a valid candidate only outside the end. For example, the specification [] means a valid candidate only in a case where the reading completely matches.

When the lines of items are made up in character code order, searching is carried out at higher speed.

When we describe @THRU as an item, at the time of phrase conversion, it comes about that we have specified a reading as a representation as is, and thus we can create a non-conversion candidate. At the time of filter operation, it comes about that we have specified the reading of an arbitrary single character as a representation as is, and thus we can output without converting the reading.

 

Reading_______________Expression_____________

____________________

#

# describes comments in the script section and the dictionary section. From # until the line break everything is skipped over, and there is no effect to the execution of the script.

Comment__________________

____________________

IF
ELSEIF

These carry out conditional branching in the script section. In the conditions, it is possible to specify system flags, user flags, and key input characters. These are executed within the section up to the next IF ELSEIF only in a case where the conditions specified here are satisfied. When we describe only IF, it is always executed in the space up to the next IF. Furthermore, it is not possible to nest.

In a case where a flag executes when ON, in the manner of +$ENG, we describe the flag name after the +. In a case where a flag executes when OFF, in the manner of -$ENG, we describe the flag name after the -.

As for the specification of key input characters, we describe the character code in four place hexadecimal inside [], or we specify the character code range inside [], or we describe the characters themselves as a character string after a tab, or we describe the dictionary name of a dictionary in which readings have been written. In a case where multiple key input characters have been specified, if even one of them satisfies a condition, execution takes place.

ELSEIF is executed only in a case where a condition has not been satisfied with IF ELSEIF up to that point. In a case where multiple flags have been specified and flags and key input characters have been combined together and specified, execution takes place only in a case where all the conditions have been satisfied.

 
Character String
 
 
 
 
 
 
Flag Specification
 
 
Character Code
 
 
Character Code
 
 
Dictionary Name
 
 

System Flag List
$CHR ON at the time of character key input
$ENG ON with English language mode
$CAP ON with Caps/katakana mode
$LSH ON when left [Shift] is pressed
$RSH ON when right [Shift] is pressed
$SHT ON when [Shift] is pressed
$CMD ON when the [Ctrl] (command) key is pressed
$EXT ON when the [Alt] (Extend) key is pressed
$RMA ON with roomaji mode
$HLF ON with half-width mode
   
$EMP ON if there is no unfixed character
$CNV ON if it is during conversion
$TOP ON with the caret/aim phrase at the head
$END ON with the caret/aim phrase at the end

____________________

SET_FLG
CLR_FLG

These describe user flags in the script section. When we specify the flag name after +, the flag becomes ON, and when we specify the flag name after -, the flag becomes OFF.

When there is conditional branching with IF, it is possible to reference the user flag. As for the flag name, it is necessary to describe it with system script characters. It is not possible to include spaces or tabs in between. It is possible to register a maximum of 26 user flags.

User flags are maintained separately for each text input port that is compatible. In a case where input modules are switched, all the user flags are reset, so please be careful.

Flag Name___________________

____________________

SET_CNV

In the script section, this specifies the default dictionary and conversion method that will be used at the time of phrase conversion.

As for the method of conversion, we specify it with the numerals 0~2, where 0 indicates the candidate found first, 1 the candidate that matches the longest reading, and 2 the longest match of two phrases. When omitted, it becomes 0.

When we specify @THRU in a dictionary, it specifies only a non-conversion candidate. At the time of module startup, the @THRU dictionary is specified.

Dictionary Name__________________________

____________________

SET_KEY

In the script section, this specifies a filter dictionary for the purpose of converting key input characters at the time of ADD_KEY command execution.

When we specify @THRU in a dictionary, input occurs as is without conversion taking place. When we specify @NONE in a dictionary, the conversion result becomes blank, and nothing is input. At the time of module startup, the @THRU dictionary is specified.

Dictionary Name______________

____________________

SET_FIX
SET_TOP
SET_END

In the script section, these specify dictionaries concerned with the display/fixing of readings and conversion methods.

SET_FIX specifies a filter dictionary in a case where something is fixed at the time of reading input. At the time of reading input, when the fixing operation based on the OUT command, etc., takes place, readings are filtered and output using this dictionary.

SET_TOP specifies the filter dictionary for the purpose of displaying the reading of the part to the left of the cursor at the time of reading input. In the same manner, SET_END specifies a filter dictionary for the purpose of displaying the reading of the part to the right of the cursor.

As for the method of conversion, we specify it with the numerals 0~2, where 0 indicates the candidate found first, 1 the candidate that matches the longest reading, and 2 the longest match of two phrases. When omitted, it becomes 0.

When we specify @THRU in a dictionary, input occurs as is without conversion taking place. When we specify @NONE in a dictionary, the conversion result becomes blank, and nothing is input. At the time of module startup, the @THRU dictionary is set for whichever.

Dictionary Name__________________________

 
Display
 
SET_TOP of Dictionary
 
 
 
 
SET_END of Dictionary
 
 
 
 
Input Reading
 
 
 
 
Output at Time of Fixing
 
 
SET_FIX of Dictionary
 
 

____________________

NEXT

In the script section, this terminates processing without executing the script that follows.

____________________

PASS
BEEP

In the script section, these make an input character into an error.

In cases such as a control key that cannot be processed with the module having been input, if we execute the PASS command, the key is processed after the fixing operation has been carried out from the application side.

In cases such as an input character key being illegal, when we execute the BEEP command, a warning sound rings out, and the key is ignored.

When we execute these commands, the script that follows will not be executed. Furthermore, operation cannot be guaranteed in a case where these commands are executed in a state where unfixed character strings and the like have taken place.

____________________

ADD_KEY

In the script section, this takes in key input characters as readings using the specified dictionaries and conversion methods. When in phrase conversion state, the reading is taken in upon there being a return to reading input state. The specification of the conversion method is the same as SET_CNV.

Key input first passes through a filter dictionary specified by means of SET_KEY. The result is combined with the reading of the part to the left of the cursor. Furthermore, it passes through the filter dictionary specified with ADD_KEY. Finally, it is combined with the reading of the part to the right of the cursor, and it becomes a new reading.

In a case where a filter dictionary has not been specified, it is taken in with non-conversion. In a case where an @NONE dictionary has been specified with SET_KEY, the key input characters are completely ignored. By utilizing this, such things as processing the reading of the part to the left of the cursor through a dictionary are also possible.

Dictionary Name___________________________

 
 
Key Input Character

Reading

 
 
 
SET_KEY of Dictionary
 
 
 
 
 
 
 
 
 
 
ADD_KEY of Dictionary
 
 
 
 
 
 

____________________

OUT_ALL
OUT_TOP

In the script section, these fix unfixed characters. When in reading input state, a reading is fixed after passing through a SET_FIX filter dictionary. Fixing can take place after dividing any number of times.

OUT_ALL fixes all the unfixed characters. OUT_TOP fixes only the part to the left of the cursor.

In a case of fixing inside phrase conversion by character input, it is necessary to input a reading using the ADD_KEY command after fixing once using the OUT_ALL command. When we execute the ADD_KEY command inside phrase conversion, phrase conversion is canceled and the reading is added, so please be careful.

____________________

CUR_TOP
CUR_END
CUR_BAK
CUR_FWD

In the script section, these carry out movement of the cursor and the aim phrase. In the case of the reading input state, they move the cursor, and during phrase conversion, they move the aim phrase.

CUR_TOP moves to the left edge, and CUR_END moves to the right edge. CUR_BAK moves one to the left, and CUR_FWD moves one to the right. In a case where you have already come to the edge, you move to the opposite edge. In a case where you would like to restrain this, make it so that you see a $TOP or $END flag and do conditional branching.

____________________

DEL_BAK
DEL_FWD

In the script section, if the state is in the middle of conversion, once there has been a return to reading input state, these delete one character before or after the cursor. DEL_BAK deletes the character immediately proceeding the cursor, and DEL_FWD deletes one character immediately after the cursor.

____________________

DEL_ALL
DEL_TOP
DEL_END

In the script section, if it is a state in the middle of conversion, once there has been a return to the reading input state, these delete reading character strings. DEL_ALL deletes all the readings, and there is a return to a state in which nothing has been input. DEL_TOP and DEL_END respectively delete from the cursor to the beginning, and from the cursor to the end.

____________________

CNV_DIC

In the script section, this begins phrase conversion.

If in the reading input state, this makes the left of the cursor one phrase, and converts it with the specified dictionary. In a case where the dictionary has been omitted, conversion takes place with the SET_CNV dictionary. The part to the right of the cursor is broken down into phrases with the SET_CNV and converted. In a case where you would like to break the entirety down into phrases and convert, execute CNV_DIC after executing CUR_TOP.

If in the middle of phrase conversion, we modify the aim phrase with the specified dictionary. In a case where you have omitted the dictionary, the dictionary will not be modified. The phrase to the right of the aim phrase will be reanalyzed with the SET_CNV dictionary and converted.

Dictionary Name______________

____________________

CNV_FWD
CNV_BAK
CNV_TOP

In the script section, these control the candidates of the aim phrase during phrase conversion. If not in the middle of phrase conversion, these become exactly the same operation as the CNV_DIC command.

CNV_FWD selects the next candidate in regard to the aim phrase. In a case where a dictionary has been selected and switching has occurred, it selects the first candidate. CNV_BAK, in the same manner, selects the previous candidate.

CNV_TOP selects the first candidate in regard to the aim phrase, after switching to the specified dictionary if a dictionary has been specified.

Dictionary Name_____________

____________________

CNV_SHT
CNV_LNG

In the script section, these manipulate the candidate for the aim phrase during phrase conversion. If not in the middle phrase conversion, they become exactly the same operation as CNV_DIC.

CNV_SHT shortens by one character the phrase length for the aim phrase. If a dictionary has been specified, it selects the first candidate after switching to the specified dictionary. In keeping with the phrase length having been modified, the continuing phrase is automatically broken down into phrases with the SET_CNV dictionary, and it is reconverted.

CNV_LNG, in the same manner, lengthens the phrase length by one character.

Dictionary Name______________

____________________

CNV_CAN

In the script section, if in the middle of phrase conversion, this returns to reading input state. If it is not so, nothing occurs.

____________________

Script Example

A script for editing input keys as readings is as follows:

First, for cases where the [Ctrl] (command) key (+$CMD) and a character key (+$CHR) have been pressed, we execute the PASS command and pass over to the application, because this indicates a menu key macro. Also, although it is not needed in this script, for cases where a character key (+$CHR) is pressed during conversion (+$CNV), we fix it and put in place beforehand with OUT_ALL.

For cases where a character key (+$CHR) has been pressed when there is a non-input (+$EMP) in English mode (+$ENG), we add it to the reading with ADD_KEY and immediately fix it with OUT_ALL. For cases of a character key that is not so, we add to the reading with ADD_KEY.

Later, things outside of character keys, in other words control keys, get processed. For cases of non-input (+$EMP), the control key is passed to the application with the PASS command.

The cursor keys are 0100 down, 0101 up, 0102 right, and 0103 left. The [Ctrl] key is 0004, henkan [Convert] is 001e, [Shift] + henkan [Convert] are 001f, muhenkan [No Convert] is 1151, and [Shift] + muhenkan [No Convert] are 1152.

In the case of the right [Ctrl] key, we fix the entirety.

The [Del] key (007f) and the [Esc] (cancel) key (0018) completely delete the reading. When the [Shift] key (+$SHT) and the [Back Space] (erase one character) key (0008) have been pressed, we execute DEL_FWD and erase one character immediately behind the cursor. In the case of only the [Back Space] (erase one character) key, we execute DEL_BAK, and delete one character immediately in front of the cursor.

For keys outside of these, we pass to the application with the PASS command.

As for the script below, you will be able to utilize it by inputting it as a text real object with the Basic Text Editor and dragging it into the Universal Character Input window.

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Customize example:
 
When we add the below, the
cursor comes not to loop.
 
 
 
 
 
 
 
 
 
 
When we add [000a], we fix
with the [Enter] (return) key.
 
 

____________________

[Translator's Note 1] Correct English would be "TransGlyph," but the person who designed this scripting language made a mistake, and the rest, as they say, is history. As a result, the term "TRANSGRYPH" has to be written in language module scripts.


The above translation is content taken from the built-in "Help Guide" that is part of Personal Media Corporation's Cho Kanji operating system.

Copyright © 2007 Personal Media Corporation

Copyright © 2007 Sakamura Laboratory, University Museum, University of Tokyo