【Ubuntu】【HHKB】101キーボード(EU)として使用するための設定【周辺機器接続】

Happy Hacking Keyboard (HHKB) の 101 キーボード を使うための設定。
一応、Windows と Linux の両方の設定方法を書いておくが、Linux については情報がすぐに古くなることがあるので注意。

Windows 環境での設定

レジストリを変更する

1. Ctrl - r より、regedit 実行
2. 下図の通り変更をする
 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters の LayerDriver JPN を kbd101.dll にする
 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters の OverrideKeyboardIdentifier を PCAT_101KEY にする
 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters の OverrideKeyboardSubtype を 0 にする
3. パソコンを再起動する

以下、公式サイトより抜粋する。
f:id:dnkrnka:20180424225222p:plain
 

Linux の環境設定

/etc/default/keyboard ファイルを次のように変更する。
もしも /etc/default/keyboard ファイルがなければ、/etc/X11/xorg.conf を変更する。

101キーボードとして認識させる

1. /etc/default/keyboardを変更する
XKBMODEL="pc105"
XKBLAYOUT="us"     # jp を us に変える。
XKBVARIANT="101"   # 101 を追記する。書かなくても 101 配列になることを確認している。
XKBOPTIONS=""

 

2. PC再起動

PC を再起動しても 101キーボードになっていない場合は、下記 3 を行う。
 

3. /etc/X11/xorg.conf を変更する
Option        "XkbModel"    "101"    # 105 を 101 に変える
Option        "XkbLayout"    "us"    # jp を us に変える。

 

101キーボード認識後に、「Alt+`」により入力変換をする方法 (Ubuntu 16.04)

基本的にはこちらのサイトを参考にした。
以下は実際に実行した際の記録である。
 

1. シンボル設定ファイルの作成

以下参考にしたサイト様より引用。

XKB のシンボル設定ファイルを作成する。
まず、後で動作確認のため適切なディレクトリ構造の下に保存しておく必要があるため、あらかじめ ~/.xkb というディレクトリを作成しておく。
そして、~/.xkb/symbols/hhk_swap というファイルに以下の内容を保存する(ファイル名は任意だが、サブディレクトリ名の symbols はこの通りにすること)。

% mkdir -p .xkb/symbols
% vim .xkb/symbols/hhk_swap
partial modifier_keys
xkb_symbols "alt_keys" {
  replace key <MUHE> { [ Alt_L ] };
  replace key <HENK> { [ Alt_R ] };
};

 

2. 現在の XKB の設定を確認する。
% setxkbmap -print
xkb_keymap {
	xkb_keycodes  { include "evdev+aliases(qwerty)"	};
	xkb_types     { include "complete"	};
	xkb_compat    { include "complete"	};
	xkb_symbols   { include "pc+us+inet(evdev)+level3(lalt_switch)"	};
	xkb_geometry  { include "hhk(basic)"	};
};

 

3. 上記 2 の出力結果を $HOME/.xkb/keymap/hhk として保存する
% mkdir ~/.xkb/keymap
% setxkbmap -print > ~/.xkb/keymap/hhk

 

4. $HOME/.xkb/keymap/hhk ファイルの xkb_symbols 行の設定末尾に「hhk_swap(all_keys)」を追加する。
% vim ~/.xkb/keymap/hhk
xkb_keymap {
	xkb_keycodes  { include "evdev+aliases(qwerty)"	};
	xkb_types     { include "complete"	};
	xkb_compat    { include "complete"	};
	xkb_symbols   { include "pc+us+inet(evdev)+level3(lalt_switch)+hhk_swap(alt_keys)"	};
	xkb_geometry  { include "hhk(basic)"	};
};

 

5. XKB の設定を確認する。
  • 以下のコマンドを入力し、「左Alt」+「`」(チルダ=GRACE)で変換切り替えができるかを確認する。
    • 結果としては、一度のみ入力変換ができた。再度、入力変換を試みると不可であったことから恐らく fcitx の影響だろう。
    • コンソール上の 左Alt が機能していた。(例:左Alt+BS で単語区切り削除ができた)
# xkbcomp -I$HOME/.xkb ~/.xkb/keymap/hhk $DISPLAY

 

6. システム側の XKB 設定ファイルを変更する。
  • 上記 5 で作成したシンボル設定ファイルを管理者権限で /usr/share/X11/xkb/symbols/ に配置する。(既存のファイル名と重複しないこと)
  • 次に /usr/share/X11/xkb/rules/evdev の末尾に「gsettings set org.gnome.desktop.input-sources xkb-options "['hhk:alt_keys']"」を追加する。
# cp /home/XXX/.xkb/keymap/symbols/hhk_swap  /usr/share/X11/xkb/symbols/.
# cp /usr/share/X11/xkb/rules/evdev  /usr/share/X11/xkb/rules/evdev.orig
# vim /usr/share/X11/xkb/rules/evdev
(中略)
gsettings set org.gnome.desktop.input-sources xkb-options "['hhk:alt_keys']"

 

7. GNOME の設定(ユーザ毎の設定)
  • 一般ユーザアカウントに戻り、以下のコマンドを実行する。これで再度ログインするとキー変更が反映される。
% gsettings set org.gnome.desktop.input-sources xkb-options "['hhk:alt_keys']"

 

8. 再度ログインし直す

「左Alt が認識されない」「左Alt + ` (チルダ、GRACE)」で入力切り替えができない場合は
/usr/share/X11/xkb/keycodes/evdev を [http://d.hatena.ne.jp/rna/touch/20151012/p1:title=参考にしたサイト様」と合っているか確認すること。
参考にしたサイト様との違いは、/usr/share/X11/xkb/keycodes/evdev の編集があった。
 

9. Ctrl-SPACE による入力変換(ローマ字⇔日本語)のトリガを無効にする
  • GUI の「システム設定」→「テキスト入力」で以下のように設定することで解消した。
    • 具体的には「前のソースへの切り替え」を「Control+Space」から空欄にすることで良かった。
      • (1)「次のソースへの切り替え」を適当な「Alt+`」以外のキー割り当て(Control+Shift)にする
      • (2)「前のソースへの切り替え」を「Alt+`」にする。
      • (3)「次のソースへの切り替え」を「Alt+`」にすると、衝突するという警告が出る
      • (4) ダイアログに従い、「前のソースへの切り替え」を無効にする。

 
上記でも正しく動作しない場合は下記を実施してみる。
 

fcitx を塞いで、mozc を有効にする

1. mozc のインストール

日本語入力メソッドとして fcitx から mozc に切り替える。(fcitx はキーマッピングに悪影響を及ぼすためらしい)

# apt-get install ibus-mozc
# killall ibus-daemon
# ibus-daemon -d -x &

 

2. OSにUSキーボードと認識させる

JPキーボードと認識されているので、「dpkg-reconfigure keyboard-configuration」を実行して HHKB(US) を選択する。

# dpkg-reconfigure keyboard-configuration

 
「/etc/default/keyboard」が以下のように US 版であることを確認する。

# cat /etc/default/keyboard
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="hhk"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="lv3:lalt_switch"

BACKSPACE="guess"

 

3. mozc の設定を US に切り替える

以下は 「default」を「en」に書き換えた後の「/usr/share/ibus/component/mozc.xml」ファイル全文である。

% cat /usr/share/ibus/component/mozc.xml
<component>
  <version>2.17.2116.102+gitfd0f5b34+dfsg-1ubuntu2</version>
  <name>com.google.IBus.Mozc</name>
  <license>New BSD</license>
  <exec>/usr/lib/ibus-mozc/ibus-engine-mozc --ibus</exec>
  <textdomain>ibus-mozc</textdomain>
  <author>Google Inc.</author>
  <homepage>http://code.google.com/p/mozc/</homepage>
  <description>Mozc Component</description>
<engines>
<engine>
  <symbol>&#x3042;</symbol>
  <rank>80</rank>
  <description>Mozc (Japanese Input Method)</description>
  <language>ja</language>
  <icon>/usr/share/ibus-mozc/product_icon.png</icon>
  <setup>/usr/lib/mozc/mozc_tool --mode=config_dialog</setup>
  <layout>en</layout>
  <name>mozc-jp</name>
  <longname>Mozc</longname>
</engine>
</engines>
</component>

 

Ubuntu 18.04 環境で「~」が入力できない

  • 環境
    • fcitx + mozc を使用
    • デスクトップ環境は xfce を使用 (関係無いかとは思うが..)
  • 状況の詳細
    • Gnome では HHKB の一番右上キーを押すと正しくチルダ「~」やバックスラッシュが入力できる
    • xfce ではチルダやバックスラッシュが入力できずに日本語入力切り替えに進んでしまう
    • 多分、Mozc が悪さをしている
  • 対策

以下の要領で ibus kkc を入れることで回避できた。
もちろん、日本語入力は相当酷く、ストレス満載。

  • 全角スペースが入れられない
  • 日本語入力モードでは半角英字が入れられない→lt と入力すると t しか入らない。。。

1. ibus-kcc を入れる

sudo apt-get install -y ibus-kkc

2. ibus を有効にする。

% im-config -n ibus

 
3. 「設定」→「言語サポート」に「ibus」を指定する
f:id:dnkrnka:20180522012744p:plain:w300
 
4. 「設定」→「ibus」より、以下のように kkc を先頭にする
f:id:dnkrnka:20180522013105p:plain
 
5. kcc の「設定」に進み、以下のように切り替えを Alt + ` にする
f:id:dnkrnka:20180522013937p:plain
 
6. Linux再起動
 
7. ログイン時に ibus-daemon を再起動させる

% ibus-daemon -drx

 
8. 以上で Alt + ` で切り替えができるようになった