Japanese Keyboard

The Japanese keyboard definition is more complex than other keyboards because of the language complexities. What follows is the information required to create a Japanese 106 keyboard layout. An example of a Japanese 106 keyboard can be found in the \CEPC platform directory.

The following table shows the Scan Key to VK (virtual key) mapping.

Scan code
VK_ key
00 _none_
01 ESCAPE
02 1
03 2
04 3
05 4
06 5
07 6
08 7
09 8
0A 9
0B 0
0C OEM_MINUS
0D OEM_7
0E BACK
0F TAB
10 Q
11 W
12 E
13 R
14 T
15 Y
16 U
17 I
18 O
19 P
1A OEM_3
1B OEM_4
1C RETURN
1D LCONTROL
1E A
1F S
20 D
21 F
22 G
23 H
24 J
25 K
26 L
27 OEM_PLUS
28 OEM_1
29 DBE_SBCSCHAR
2A LSHIFT
2B OEM_6
2C Z
2D X
2E C
2F V
30 B
31 N
32 M
33 OEM_COMMA
34 OEM_PERIOD
35 OEM_2
36 RSHIFT
37 MULTIPLY
38 LMENU
39 “ “
3A DBE_ALPHANUMERIC
3B F1
3C F2
3D F3
3E F4
3F F5
40 F6
41 F7
42 F8
43 F9
44 F10
45 NUMLOCK
46 OEM_SCROLL
47 HOME
48 UP
49 PRIOR
4A SUBTRACT
4B LEFT
4C CLEAR
4D RIGHT
4E ADD
4F END
50 DOWN
51 NEXT
52 INSERT
53 DELETE
54 SNAPSHOT
55 _none_
56 _none_
57 F11
58 F12
59 CLEAR
5A NONAME
5B NONAME
5C NONAME
5D EREOF
5E _none_
5F NONAME
60 _none_
61 _none_
62 _none_
63 _none_
64 F13
65 F14
66 F15
67 F16
68 F17
69 F18
6A F19
6B F20
6C F21
6D F22
6E F23
6F _none_
70 DBE_HIRAGANA
71 _none_
72 _none_
73 OEM_102
74 _none_
75 _none_
76 F24
77 _none_
78 _none_
79 CONVERT
7A _none_
7B NONCONVERT
7C TAB
7D OEM_5
7E ABNT_C2
7F OEM_PA2
E01C RETURN
E01D RCONTROL
E033 _none_
E035 DIVIDE
E037 SNAPSHOT
E038 RMENU
E042 _none_
E043 _none_
E044 _none_
E046 CANCEL
E047 HOME
E048 UP
E049 PRIOR
E04B LEFT
E04D RIGHT
E04F END
E050 DOWN
E051 NEXT
E052 INSERT
E053 DELETE
E05B LWIN
E05C RWIN
E05D APPS
E05E POWER
E05F SLEEP
E0F1 _none_
E0F2 _none_
E11D PAUSE (See Below)

The BREAK key is sent as the sequence E1, left CTRL, NUMLOCK. The keyboard driver must convert the E1+left CTRL sequence to the BREAK key and ignore the NUMLOCK.

The next part of the Japanese keyboard is the VK to character mapping. This mapping is dependent upon the state of other modifier keys. Some characters are shown as symbol names, which are described after these tables. The processing of VK keys should be performed in the order in which the following tables are laid out. The following table shows the characters that should be generated for each virtual key, both alone and in combination with modifier keys.

Virtual key
CAPLOCK / KANALOCK
Character
SHIFT
KANA
KANA+SHIFT
0 KANALOK 0 WCH_NONE WCH_WA WCH_WO
1 KANALOK 1 ! WCH_NU WCH_NU
3 KANALOK 3 # WCH_A WCH_AA
4 KANALOK 4 $ WCH_U WCH_UU
5 KANALOK 5 % WCH_E WCH_EE
7 KANALOK 7 0x27 WCH_YA WCH_YAA
8 KANALOK 8 ( WCH_YU WCH_YUU
9 KANALOK 9 ) WCH_YO WCH_YOO
A CAPLOK| KANALOK a A WCH_TI WCH_TI
B CAPLOK | KANALOK b B WCH_KO WCH_KO
C CAPLOK | KANALOK c C WCH_SO WCH_SO
D CAPLOK | KANALOK d D WCH_SI WCH_SI
E CAPLOK | KANALOK e E WCH_I WCH_II
F CAPLOK | KANALOK f' F WCH_HA WCH_HA
G CAPLOK | KANALOK g G WCH_KI WCH_KI
H CAPLOK | KANALOK h H WCH_KU WCH_KU
I CAPLOK | KANALOK i I WCH_NI WCH_NI
J CAPLOK | KANALOK j J WCH_MA WCH_MA
K CAPLOK | KANALOK k K WCH_NO WCH_NO
L CAPLOK | KANALOK l L WCH_RI WCH_RI
M CAPLOK | KANALOK m M WCH_MO WCH_MO
N CAPLOK | KANALOK n N WCH_MI WCH_MI
O CAPLOK | KANALOK o O WCH_RA WCH_RA
P CAPLOK | KANALOK p P WCH_SE WCH_SE
Q CAPLOK | KANALOK q Q WCH_TA WCH_TA
R CAPLOK | KANALOK r R WCH_SU WCH_SU
S CAPLOK | KANALOK s S WCH_TO WCH_TO
T CAPLOK | KANALOK t T WCH_KA WCH_KA
U CAPLOK | KANALOK u U WCH_NA WCH_NA
V CAPLOK | KANALOK v V WCH_HI WCH_HI
W CAPLOK | KANALOK w W WCH_TE WCH_TE
X CAPLOK | KANALOK x X WCH_SA WCH_SA
Y CAPLOK | KANALOK y Y WCH_NN WCH_NN
Z CAPLOK | KANALOK z Z WCH_TU WCH_TUU
OEM_1 KANALOK “:” * WCH_KE WCH_KE
OEM_2 KANALOK / ? WCH_ME WCH_MD
OEM_3 KANALOK @ “`” WCH_VS WCH_VS
OEM_7 KANALOK ^ ~ WCH_HE WCH_HE
OEM_8 0 WCH_NONE WCH_NONE WCH_NONE WCH_NONE
OEM_COMMA KANALOK “,” < WCH_NE WCH_IC
OEM_PERIOD KANALOK “.” > WCH_RU WCH_IP
OEM_PLUS KANALOK “;” + WCH_RE WCH_RE
TAB 0 \t \t \t \t
ADD 0 + + + +
DECIMAL 0 “.” “.” “.” “.”
DIVIDE 0 / / / /
MULTIPLY 0 * * * *
SUBTRACT 0 - - - -

Note CAPSLOK and KANALOK indicate that a key is affected by the state of the CAPS LOCK and KANA LOCK keys.

Virtual key
CAPSLOCK / KANALOCK
Char
SHIFT
KANA
KANA+SHIFT
BACK 0 \b \b \b \b
CANCEL 0 0x03 0x03 0x03 0x03
ESCAPE 0 0x1b 0x1b 0x1b 0x1b
OEM_4 KANALOK [ { WCH_SVS WCH_OB
OEM_5 KANALOK \\ | WCH_PS WCH_PS
OEM_102 KANALOK \\ _ WCH_RO WCH_RO
OEM_6 KANALOK ] } WCH_MU WCH_CB
RETURN 0 \r \r \r \r
SPACE 0 “ “ “ “ “ “ “ “

VK_key
CTRL
KANA+CTRL
BACK 0x7f 0x7f
CANCEL 0x03 0x03
ESCAPE 0x1b 0x1b
OEM_4 0x1b 0x1b
OEM_5 0x1c 0x1c
OEM_102 0x1c 0x1c
OEM_6 0x1d 0x1d
RETURN \n \n
SPACE 0x20 0x20

Virtual key
CAPSLOCK / KANALOK*
Char
SHIFT
KANA
KANA+
SHIFT
2 KANALOK 2 " WCH_HU WCH_HU
6 KANALOK 6 & WCH_O WCH_OO
OEM_MINUS KANALOK - = WCH_HO WCH_HO

Virtual key
CTRL
KANA+CTRL
SHIFT+CTRL
KANA+
SHIFT+
CTRL
2 WCH_NONE WCH_NONE 0x00 0x00
6 WCH_NONE WCH_NONE 0x1e 0x1e
OEM_MINUS WCH_NONE WCH_NONE 0x1f 0x1f

VK_
CAPLOK / KANALOK
Char
SHIFT
KANA
KANA+SHIFT
NUMPAD0 0 0 WCH_NONE 0 WCH_NONE
NUMPAD1 0 1 WCH_NONE 1 WCH_NONE
NUMPAD2 0 2 WCH_NONE 2 WCH_NONE
NUMPAD3 0 3 WCH_NONE 3 WCH_NONE
NUMPAD4 0 4 WCH_NONE 4 WCH_NONE
NUMPAD5 0 5 WCH_NONE 5 WCH_NONE
NUMPAD6 0 6 WCH_NONE 6 WCH_NONE
NUMPAD7 0 7 WCH_NONE 7 WCH_NONE
NUMPAD8 0 8 WCH_NONE 8 WCH_NONE
NUMPAD9 0 9 WCH_NONE 9 WCH_NONE

The following table defines the character symbols used in the previous table.

Define
Unicode value
Character
WCH_IP FF61 Ideographic period
WCH_OB FF62 Opening corner bracket
WCH_CB FF63 Closing corner bracket
WCH_IC FF64 Ideographic comma
WCH_MD FF65 Katakana middle dot
WCH_WO FF66 Katakana syllable wo
WCH_AA FF67 Katakana letter lowercase a
WCH_II FF68 Katakana letter lowercase i
WCH_UU FF69 Katakana letter lowercase u
WCH_EE FF6A Katakana letter lowercase e
WCH_OO FF6B Katakana letter lowercase o
WCH_YAA FF6C Katakana syllable lowercase ya
WCH_YUU FF6D Katakana syllable lowercase yu
WCH_YOO FF6E Katakana syllable lowercase yo
WCH_TUU FF6F Katakana syllable lowercase tu
WCH_PS FF70 Katakana prolonged sound mark
WCH_A FF71 Katakana letter A
WCH_I FF72 Katakana letter I
WCH_U FF73 Katakana letter U
WCH_E FF74 Katakana letter E
WCH_O FF75 Katakana letter O
WCH_KA FF76 Katakana syllable ka
WCH_KI FF77 Katakana syllable ki
WCH_KU FF78 Katakana syllable ku
WCH_KE FF79 Katakana syllable ke
WCH_KO FF7A Katakana syllable ko
WCH_SA FF7B Katakana syllable sa
WCH_SI FF7C Katakana syllable si
WCH_SU FF7D Katakana syllable su
WCH_SE FF7E Katakana syllable su
WCH_SO FF7F Katakana syllable so
WCH_TA FF80 Katakana syllable ta
WCH_TI FF81 Katakana syllable ti
WCH_TU FF82 Katakana syllable tu
WCH_TE FF83 Katakana syllable te
WCH_TO FF84 Katakana syllable to
WCH_NA FF85 Katakana syllable na
WCH_NI FF86 Katakana syllable ni
WCH_NU FF87 Katakana syllable nu
WCH_NE FF88 Katakana syllable ne
WCH_NO FF89 Katakana syllable no
WCH_HA FF8A Katakana syllable ha
WCH_HI FF8B Katakana syllable hi
WCH_HU FF8C Katakana syllable hu
WCH_HE FF8D Katakana syllable he
WCH_HO FF8E Katakana syllable ho
WCH_MA FF8F Katakana syllable ma
WCH_MI FF90 Katakana syllable mi
WCH_MU FF91 Katakana syllable mu
WCH_ME FF92 Katakana syllable me
WCH_MO FF93 Katakana syllable mo
WCH_YA FF94 Katakana syllable ya
WCH_YU FF95 Katakana syllable yu
WCH_YO FF96 Katakana syllable yo
WCH_RA FF97 Katakana syllable ra
WCH_RI FF98 Katakana syllable ri
WCH_RU FF99 Katakana syllable ru
WCH_RE FF9A Katakana syllable re
WCH_RO FF9B Katakana syllable ro
WCH_WA FF9C Katakana syllable wa
WCH_NN FF9D Katakana letter n
WCH_VS FF9E Katakana voiced sound mark
WCH_SVS FF9F Katakana semi-voiced sound mark