我最近在联想 X220 笔记本电脑上安装了日文布局键盘。使用终端和 xmonad 作为窗口管理器,我首先做了:
$ sudo dpkg-重新配置键盘配置
我选择了 Sun 7 日文 106 键键盘,使用日文 OADG-109A 布局,因为它与我安装的板上的按键布局相匹配。
我重新启动计算机,布局是正确的,但是我在切换模式时遇到了困难。在尝试了所有其他布局选项后,我回到了 OADG-109A 布局,并直接修改了 /usr/share/X11/xkb/symbols/jp 文件;我为该文件中的第三个块添加了平假名 unicode 数字,以便我可以按右 alt 键并生成打印在键上的平假名。
这种方法使用 18.04 是成功的。
从那时起,我已经升级到 20.04,现在我的布局工作正常,在启动时输入加密密码,登录后,但奇怪的是在登录提示符下没有。
我对 /usr/share/X11/xkb/symbols/jp 所做的更改在升级后没有保留。于是,我再次进入了它们。但是,这一次,更改文件没有任何效果。
登录 gnome 后,我尝试更改键盘布局,并且能够使用 MOZC 成功生成平假名,或者是 MOCZ 布局,但是,我更喜欢使用正确的 alt + 键功能。
目前,/etc/default/keyboard 的内容是:
XKBLAYOUT="jp" BACKSPACE="guess" XKBVARIANT="OADG109A" XKBMODEL="sun_type7_jp_usb" XKBOPTIONS="compose:menu,terminate:ctrl_alt_bksp"
如您所见,我之前选择最多的是使用默认的 Altgr 作为键盘。将其更改为正确的 alt 键没有任何效果,无论是正面的还是负面的。
以防万一,这里是我编辑的“jp”符号文件的内容。您可以看到我在文件顶部输入的各种 U###:(再次@ /usr/share/X11/xkb/symbols/jp)
// 日文 106 键键盘的符号(由 [email protected] 提供)。
默认部分字母数字键 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" { // jp 106/109A 布局的“通用”键。
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 ]
};
};
部分字母数字键 xkb_symbols "henkan" { key { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ Henkan, Mode_switch ] }; };
部分字母数字键 xkb_symbols "OADG109A" {
include "jp(common)"
name[Group1]= "Japanese (OADG 109A)";
key <AE10> { [ 0 ] };
key <AE13> { [ yen, bar ] };
};
// 86 个键与假名映射部分字母数字键 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 ] };
};
部分字母数字键 xkb_symbols “假名” {
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 ]
};
};
部分 alphanumeric_keys xkb_symbols "nicola_f_bs" { key { type="", symbols[Group1]= [ bracketright, braright ] }; 键 { [ 0, 下划线 ] }; 键 { [ 冒号,星号 ] }; 键 { [ 退格键,退格键 ] }; 键 { [ 转义 ] }; 键 { [ 在,坟墓 ] }; };
// 复制自 macintosh_vndr/jp partial alphanumeric_keys xkb_symbols "mac" { include "jp(kana)" name[Group1]= "Japanese (Macintosh)";
replace key <CAPS> { [ Caps_Lock ] };
};
部分字母数字键 xkb_symbols "hztg_escape" { 替换键 { [ Escape ] }; };
部分字母数字键 xkb_symbols "dvorak" { 包括 "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 ] };
};
// 附加:
部分字母数字键 xkb_symbols "sun_type6_suncompat" { 包括 "sun_vndr/jp(sun_type6_suncompat)" };
部分字母数字键 xkb_symbols "sun_type6" { 包括 "sun_vndr/jp(sun_type6)" };
部分字母数字键 xkb_symbols "sun_type7_suncompat" { 包括 "sun_vndr/jp(sun_type7_suncompat)" };
部分字母数字键 xkb_symbols "suncompat" { 包括 "sun_vndr/jp(suncompat)" };
部分字母数字键 xkb_symbols "sun_type7" { 包括 "sun_vndr/jp(sun_type7)" };
为了生成平假名,我试图使右 alt 键起作用,但现在我运行的是 20.04,以前成功的方法不起作用。
顺便说一句,我永远无法让其他模式更改键工作,但目前我对更改适当的符号文件似乎没有效果感到困惑。这些是 'jp' 文件中的间距,以防万一。可能有格式要求更改?...
如果有人对这种错误有任何经验,任何帮助或指针将不胜感激。
谢谢你。
为清楚起见,我正在使用的电路板可以在这里看到:
https://www.ebay.com/itm/New-Japanese-JP-Keyboard-for-Lenovo-Thinkpad-X220-T410-W510-W520-45N2172-Black-/264416229353
抱歉,我在别处找不到它的照片......
解决方案
无论出于何种原因,键盘不会响应 /usr/share/X11/xkb/symbols/jp 文件中的更改,尽管选择了几个不同的板,甚至按照评论中的建议。但是,我确实注意到符号目录中有供应商文件夹。在 sun_vndr 文件夹中有一个单独的“jp”文件,我相信它在通用“jp”文件中被包含声明引用。
在这个二级供应商文件中,我注意到一个完整的块设置为 KANA 选择。我相信这些值应该是为适当的平假名/片假名符号选择的情况,即 WHEN 和 IF 平假名/片假名模式切换键正在运行。
我的不是,现在仍然不是。因此,作为一种临时解决方法,在我弄清楚如何激活我的 HKTG 平假名/片假名模式切换之前,我已将 KANA_# 调用替换为相应平假名符号的 unicode 值。
现在我可以使用右 shift+right alt 来输入平假名字符。
ぬふぅぅぇぉゃゅょを ...等等。
希望将来我会修复模式切换和平假名/片假名切换。
同时,任何拥有此键盘并希望使用 Ubuntu 20.04 将平假名放在屏幕上的人都应该能够重现我的结果。
sun_vndr 'jp' 文件中的修改块现在如下所示:
部分默认 alphanumeric_keys modifier_keys xkb_symbols "sun_type6_suncompat" {
};
更新解决方案
好的,事实证明模式切换键存在一些兼容性问题,因此在平假名和片假名之间进行切换并不像原生支持这些键那样容易,至少在编写布局文件的方式上是如此。
键的编号方式有一个明确的逻辑,但我不明白为什么设置平假名片假名、henkan 和 muhenkan 键的值不起作用。
最终,我决定使用 sun6 日文键盘,尽管我的键盘显然不是 sun,并在布局配置期间选择了 :kana: 选项。这使我能够使用 capslock 和 altgr 键切换模式。
之后,我能够在 sun 供应商的布局文件中为假名板添加 :kana_##: 行到 sun 供应商英语模式,并将平假名 unicode 值替换为最初写入假名的地方。没有能力要在片假名和平假名之间切换,无论出于何种原因,假名都默认为片假名。
现在,如果我按下大写锁定,我有完整的平假名支持:ぬふあうえ 如果我按 altgr,我有完整的片假名支持:ヌフアウエ
位于 /usr/share/X11/xkb/symbols/sun_vndr/jp 的供应商文件现在看起来像:
// // 版权所有 (c) 2010, 2012,Oracle 和/或其附属公司。版权所有。
// // 特此免费授予任何获得
本软件和相关文档文件(//“软件”)副本的人,以不受限制地处理本软件,包括
//不限于使用、复制、修改、合并、发布、
//分发和/或出售软件副本的权利,并允许向
//提供软件的人这样做,前提是 ab ove
// 版权声明和此许可声明出现在
// 该软件的所有副本中,并且上述版权声明和此
// 许可通知出现在支持文档中。// // 软件按“原样”提供,不提供任何形式的明示
// 或暗示的保证,包括但不限于// 适销性、特定用途的适用性和不侵权的保证
// 第三方权利。在任何情况下,版权持有人或//本通知中包含的持有人均不对任何索赔或//任何特殊
//间接或后果性损害,或
//因使用、数据或利润损失而导致的任何损害负责,无论是在因 使用或执行本软件而引起或与之相关的合同行为、
// 疏忽或其他侵权行为。
// // 除本通知中包含的内容外,版权所有者的姓名
// 未经版权所有者
事先书面授权 // 不得用于广告或以其他方式促进本软件的销售、使用// 或其他交易。
//
部分默认 alphanumeric_keys modifier_keys xkb_symbols "sun_type6_suncompat" {
;
键 { [ 1, 感叹号, kana_NU ], [ U306C ] } ;
键{[2,quotedbl,假名FU],[U3075]};
键 { [ 3, numbersign, kana_A ], [ U3042, U3041 ] }; 键{ [ 4, 美元, 假名U ], [ U3046, U3045 ] }; 键 { [ 5, 百分比, 假名_E ], [ U3048, U3047 ] }; 键{ [ 6, & 符号, 假名_O ], [ U304A, U3049 ] };
键 { [ 7, 撇号, kana_YA ], [ U3084, U3083 ]
};
键 { [ 8, parenleft, kana_YU ], [ U3086, U3085
] };
键 { [ 9, parenright, kana_YO ], [ U3088, U3087 ]
};
键{[0,假名WA,假名WO],[U308F,U30 92]};
键{[减号,等于,假名HO],[U307B]};
键 { [ asciicircum, asciitilde, kana_HE], [ U3078
] };
//key { [ 日元, 酒吧 ] };
;
键 { [ 左括号,左括号,半浊音 ], [ U309A ] };
;
键{[冒号,星号,假名KE],[U3096]};
键 { [ 右括号,右括号,假名MU ],[ U3080 ] };
};
键 { [ x, X, kana_SA ], [ U3055 ] } ;
键 { [ c, C, kana_SO ], [ U305D ] } ;
键 { [ v, V, kana_HI ], [ U3072 ] } ;
键 { [ b, B, kana_KO ], [ U3053 ] } ;
键 { [ n, N, kana_MI ], [ U307F ] } ;
键 { [ m, M, kana_MO ], [ U3082 ] } ;
键{[逗号,少,假名],[U306D]};键{[句号,更大,假名RU],[U308B]};键{[斜线,问题,假名ME],[U3081]};键 { [ 反斜杠,下划线,假名 RO ], [ U308D
] };
//key { [ 反斜杠, 下划线], [ kana_RO ] };
;
键 { [ SunSys_Req ] } ;
};
部分字母数字键 xkb_symbols "sun_type6" {
};
部分字母数字键 xkb_symbols "sun_type7_suncompat" {
};
部分字母数字键 xkb_symbols "suncompat" {
};
部分字母数字键 xkb_symbols "sun_type7" {
};
部分字母数字键 xkb_symbols "106" { 包括 "jp(106)" };
部分字母数字键 xkb_symbols "common" { 包括 "jp(common)" };
部分字母数字键 xkb_symbols "OADG109A" { 包括 "jp(OADG109A)" };
部分字母数字键 xkb_symbols "kana86" { 包括 "jp(kana86)" };
部分字母数字键 xkb_symbols "假名" {包括 "jp(kana)" };
部分字母数字键 xkb_symbols "nicola_f_bs" { 包括 "jp(nicola_f_bs)" };
部分字母数字键 xkb_symbols "mac" { 包括 "jp(mac)" };
部分字母数字键 xkb_symbols "hztg_escape" { 包括 "jp(hztg_escape)" };
部分字母数字键 xkb_symbols "dvorak" { 包括 "jp(dvorak)" };
在此,我要感谢所有提出有益建议的人。谢谢你!