I recently installed a Japanese layout keyboard on a Lenovo X220 laptop. Using the terminal, and xmonad as a window manager, I first did:
$ sudo dpkg-reconfigure keyboard-configuration
Where I selected the Sun 7 Japanese 106 key keyboard, using the Japanese OADG-109A layout, as it
matches the layout of the keys on the board I installed.
I rebooted the computer, and the layout was correct, however I had difficulty switching modes. After trying all of the other layout options, I came back to the OADG-109A layout, and made direct modifications to the /usr/share/X11/xkb/symbols/jp file; I added the hiragana unicode numbers for the third block within that file, so that I could press the right alt key and produce the hiragana that were printed on the keys.
This approach was successful using 18.04.
Since then, I have upgraded to 20.04, and now my layout is working generally, for inputting the encryption password at boot, and after logging in, but curiously not at the login prompt.
The changes I made to /usr/share/X11/xkb/symbols/jp did not persist after the upgrade. So, I entered them again. This time, however, having changed the file has had no effect.
I tried changing the keyboard layout after logging into gnome, and was able to successfully produce hiragana with the MOZC, or was it MOCZ, layout, however, I prefer to have the right alt + key functionality working.
Currently, the contents of /etc/default/keyboard are :
XKBLAYOUT="jp"
BACKSPACE="guess"
XKBVARIANT="OADG109A"
XKBMODEL="sun_type7_jp_usb"
XKBOPTIONS="compose:menu,terminate:ctrl_alt_bksp"
Where, as you can see, I have selected most previously to use the default Altgr for the keyboard. Changing this to the right alt key has had no effect, positive or negative.
Just in case it is relevant, here are the contents of the 'jp' symbols file that I have edited. You can see the various U### I have input toward the top of the file:
(again @ /usr/share/X11/xkb/symbols/jp)
// Symbols for Japanese 106-keys keyboards (by [email protected]).
default partial alphanumeric_keys
xkb_symbols "106" {
include "jp(common)"
name[Group1]= "Japanese";
key <AE10> { [ 0, asciitilde, U308F, U3092 ] };
key <AE13> { [ backslash, bar ] };
};
hidden partial alphanumeric_keys
xkb_symbols "common" {
// "Common" keys for jp 106/109A layouts.
key <HZTG> {
type[Group1]="PC_ALT_LEVEL2",
symbols[Group1]= [ Zenkaku_Hankaku, Kanji ]
};
key <AE01> { [ 1, exclam, U306C ] };
key <AE02> { [ 2, quotedbl, U3075 ] };
key <AE03> { [ 3, numbersign, U3042, U3041 ] };
key <AE04> { [ 4, dollar, U3046, U3045 ] };
key <AE05> { [ 5, percent, U3048, U3047 ] };
key <AE06> { [ 6, ampersand, U304A, U3049 ] };
key <AE07> { [ 7, apostrophe, U3084, U3083 ] };
key <AE08> { [ 8, parenleft, U3086, U3085 ] };
key <AE09> { [ 9, parenright, U3088, U3087 ] };
key <AE11> { [ minus, equal, U307B ] };
key <AE12> { [ asciicircum, asciitilde, U3078] };
key <AD01> { [ q, Q, U305F ] };
key <AD02> { [ w, W, U3066 ] };
key <AD03> { [ e, E, U3044, U3043 ] };
key <AD04> { [ r, R, U3059 ] };
key <AD05> { [ t, T, U3095 ] };
key <AD06> { [ y, Y, U3093 ] };
key <AD07> { [ u, U, U306A ] };
key <AD08> { [ i, I, U306B ] };
key <AD09> { [ o, O, U3089 ] };
key <AD10> { [ p, P, U305B ] };
key <AD11> { [ at, grave, U3099 ] };
key <AD12> { [ bracketleft, braceleft, U309A ] };
key <CAPS> { [ Eisu_toggle, Caps_Lock ] };
key <AC01> { [ a, A, U3061 ] };
key <AC02> { [ s, S, U3068 ] };
key <AC03> { [ d, D, U3057 ] };
key <AC04> { [ f, F, U306F ] };
key <AC05> { [ g, G, U304D ] };
key <AC06> { [ h, H, U304F ] };
key <AC07> { [ j, J, U307E ] };
key <AC08> { [ k, K, U306E ] };
key <AC09> { [ l, L, U308A ] };
key <AC10> { [ semicolon, plus, U308C ] };
key <AC11> { [ colon, asterisk, U3096 ] };
key <AC12> { [ bracketright, braceright, U3080 ] };
key <AB01> { [ z, Z, U3064 ] };
key <AB02> { [ x, X, U3063 ] };
key <AB03> { [ c, C, U305D ] };
key <AB04> { [ v, V, U3072 ] };
key <AB05> { [ b, B, U3053 ] };
key <AB06> { [ n, N, U307F ] };
key <AB07> { [ m, M, U3082 ] };
key <AB08> { [ comma, less, U306D ] };
key <AB09> { [ period, greater, U308B ] };
key <AB10> { [ slash, question, U3081 ] };
key <AB11> { [ backslash, underscore, U308D] };
key <LCTL> { [ Control_L, ] };
key <NFER> { [ Muhenkan ] };
key <XFER> {
type[Group1]="PC_ALT_LEVEL2",
symbols[Group1]= [ Henkan, Mode_switch ]
};
key <HKTG> {
type[Group1]="PC_ALT_LEVEL2",
symbols[Group1]= [ Hiragana_Katakana, Romaji ]
};
key <EISU> {
type[Group1]="PC_ALT_LEVEL2",
symbols[Group1]= [ Eisu_toggle ]
};
key <KANA> {
type[Group1]="PC_ALT_LEVEL2",
symbols[Group1]= [ Hiragana_Katakana ]
};
key <PRSC> {
type[Group1]= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Execute ]
};
};
partial alphanumeric_keys
xkb_symbols "henkan" {
key {
type[Group1]="PC_ALT_LEVEL2",
symbols[Group1]= [ Henkan, Mode_switch ]
};
};
partial alphanumeric_keys
xkb_symbols "OADG109A" {
include "jp(common)"
name[Group1]= "Japanese (OADG 109A)";
key <AE10> { [ 0 ] };
key <AE13> { [ yen, bar ] };
};
// 86 keys with kana map
partial alphanumeric_keys
xkb_symbols "kana86" {
include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(numoperdecsep)"
include "altwin(menu)"
include "jp(kana)"
include "jp(OADG109A)"
name[Group1]= "Japanese (Kana 86)";
key <ESC> { [ Escape ] };
key <NMLK> { [ Num_Lock ] };
key <BKSP> { [ BackSpace ] };
key <TAB> { [ Tab, ISO_Left_Tab ] };
key <RTRN> { [ Return ] };
key <LFSH> { [ Shift_L ] };
key <RTSH> { [ Shift_R ] };
key <LWIN> { [ Super_L ] };
key <LALT> { [ Alt_L ] };
key <SPCE> { [ space ] };
key <RALT> { [ Alt_R ] };
// For compatibility with other keyboards connected at the same time:
key <RWIN> { [ Super_R ] };
key <RCTL> { [ Control_R ] };
};
partial alphanumeric_keys
xkb_symbols "kana" {
name[Group1]= "Japanese (Kana)";
key <HZTG> {
type[Group1]="PC_ALT_LEVEL2",
symbols[Group1]= [ Zenkaku_Hankaku, Kanji ]
};
key <AE01> { [ kana_NU ] };
key <AE02> { [ kana_FU ] };
key <AE03> { [ kana_A, kana_a ] };
key <AE04> { [ kana_U, kana_u ] };
key <AE05> { [ kana_E, kana_e ] };
key <AE06> { [ kana_O, kana_o ] };
key <AE07> { [ kana_YA, kana_ya ] };
key <AE08> { [ kana_YU, kana_yu ] };
key <AE09> { [ kana_YO, kana_yo ] };
key <AE10> { [ kana_WA, kana_WO ] };
key <AE11> { [ kana_HO ] };
key <AE12> { [ kana_HE ] };
key <AE13> { [ prolongedsound ] };
key <AD01> { [ kana_TA ] };
key <AD02> { [ kana_TE ] };
key <AD03> { [ kana_I, kana_i ] };
key <AD04> { [ kana_SU ] };
key <AD05> { [ kana_KA ] };
key <AD06> { [ kana_N ] };
key <AD07> { [ kana_NA ] };
key <AD08> { [ kana_NI ] };
key <AD09> { [ kana_RA ] };
key <AD10> { [ kana_SE ] };
key <AD11> { [ voicedsound ] };
key <AD12> { [ semivoicedsound, kana_openingbracket ] };
key <CAPS> { [ Eisu_toggle, Caps_Lock ] };
key <AC01> { [ kana_CHI ] };
key <AC02> { [ kana_TO ] };
key <AC03> { [ kana_SHI ] };
key <AC04> { [ kana_HA ] };
key <AC05> { [ kana_KI ] };
key <AC06> { [ kana_KU ] };
key <AC07> { [ kana_MA ] };
key <AC08> { [ kana_NO ] };
key <AC09> { [ kana_RI ] };
key <AC10> { [ kana_RE ] };
key <AC11> { [ kana_KE ] };
key <AC12> { [ kana_MU, kana_closingbracket ] };
key <AB01> { [ kana_TSU, kana_tsu ] };
key <AB02> { [ kana_SA ] };
key <AB03> { [ kana_SO ] };
key <AB04> { [ kana_HI ] };
key <AB05> { [ kana_KO ] };
key <AB06> { [ kana_MI ] };
key <AB07> { [ kana_MO ] };
key <AB08> { [ kana_NE, kana_comma ] };
key <AB09> { [ kana_RU, kana_fullstop ] };
key <AB10> { [ kana_ME, kana_middledot ] };
key <AB11> { [ kana_RO ] };
key <LCTL> { [ Control_L ] };
key <NFER> { [ Muhenkan ] };
key <XFER> {
type[Group1]="PC_ALT_LEVEL2",
symbols[Group1]= [ Henkan, Mode_switch ]
};
key <HKTG> {
type[Group1]="PC_ALT_LEVEL2",
symbols[Group1]= [ Hiragana_Katakana, Romaji ]
};
key <PRSC> {
type[Group1]= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Execute ]
};
};
partial alphanumeric_keys
xkb_symbols "nicola_f_bs" {
key {
type="",
symbols[Group1]= [ bracketright, braceright ]
};
key { [ 0, underscore ] };
key { [ colon, asterisk ] };
key { [ BackSpace, BackSpace ] };
key { [ Escape ] };
key { [ at, grave ] };
};
// Copied from macintosh_vndr/jp
partial alphanumeric_keys
xkb_symbols "mac" {
include "jp(kana)"
name[Group1]= "Japanese (Macintosh)";
replace key <CAPS> { [ Caps_Lock ] };
};
partial alphanumeric_keys
xkb_symbols "hztg_escape" {
replace key { [ Escape ] };
};
partial alphanumeric_keys
xkb_symbols "dvorak" {
include "jp(OADG109A)"
name[Group1]= "Japanese (Dvorak)";
key <AE11> { [ at, grave ] };
key <AD01> { [ colon, asterisk ] };
key <AD02> { [ comma, less ] };
key <AD03> { [ period, greater ] };
key <AD04> { [ p, P ] };
key <AD05> { [ y, Y ] };
key <AD06> { [ f, F ] };
key <AD07> { [ g, G ] };
key <AD08> { [ c, C ] };
key <AD09> { [ r, R ] };
key <AD10> { [ l, L ] };
key <AD11> { [ slash, question ] };
key <AC02> { [ o, O ] };
key <AC03> { [ e, E ] };
key <AC04> { [ u, U ] };
key <AC05> { [ i, I ] };
key <AC06> { [ d, D ] };
key <AC07> { [ h, H ] };
key <AC08> { [ t, T ] };
key <AC09> { [ n, N ] };
key <AC10> { [ s, S ] };
key <AC11> { [ minus, equal ] };
key <AB01> { [ semicolon, plus ] };
key <AB02> { [ q, Q ] };
key <AB03> { [ j, J ] };
key <AB04> { [ k, K ] };
key <AB05> { [ x, X ] };
key <AB06> { [ b, B ] };
key <AB08> { [ w, W ] };
key <AB09> { [ v, V ] };
key <AB10> { [ z, Z ] };
};
// EXTRAS:
partial alphanumeric_keys
xkb_symbols "sun_type6_suncompat" {
include "sun_vndr/jp(sun_type6_suncompat)"
};
partial alphanumeric_keys
xkb_symbols "sun_type6" {
include "sun_vndr/jp(sun_type6)"
};
partial alphanumeric_keys
xkb_symbols "sun_type7_suncompat" {
include "sun_vndr/jp(sun_type7_suncompat)"
};
partial alphanumeric_keys
xkb_symbols "suncompat" {
include "sun_vndr/jp(suncompat)"
};
partial alphanumeric_keys
xkb_symbols "sun_type7" {
include "sun_vndr/jp(sun_type7)"
};
I have tried to no avail to make functional the right-alt key for the purposes of producing hiragana, but now that I'm running 20.04, the previously successful method just isn't working.
I never could get the other mode changing keys to work, by the way, but for the time being I'm perplexed at how changing the appropriate symbols file seems to have no effect. Those are , spacings in the 'jp' file, in case that's relevant. Possibly there has been a format requirement change?....
If anyone out there has any experience with this kind of bug, any help or pointer would be greatly appreciated.
Thank You.