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 |