このエントリーは TechCommitアドベントカレンダー2020 の14日目の記事です!
#はじめに
最近人生で初の mac (中古の Mac mini) を買ったのですが、普段使いのWindows用の JISキーボードを繋いでみたところ、日本語入力すらままならず辟易してしまう事態になりました。
手持ちの Happy Hacking Keyboard Professional2(US配列、以後HHKB) が mac/windows 両対応で、ディップスイッチにより使い分けられる事は分かりましたが、頻繁に使うOSを切り替えたいのに一々物理スイッチをON/OFFしてられないのでツールを使い対応してみることにしました。
mac 用の日本語配列キーボードの場合スペースキーの左右にそれぞれ「英数」と「かな」キーが配置されていて、現在のモードに関わらず押したキーのモードになるのがとても使いやすい(要するに Windows の様にトグル切り替えではない)という話を聞いたので、今回は mac / Windows そして Linux でこの使い勝手を実現してみようと思います。
自分は デュアルブートな PC で Windows10 と Ubuntu のどちらかを起動した上で、切替器経由で mac と交互に使うような運用の仕方をしています。
#ディップスイッチの設定
SW1 | SW2 | SW3 | SW4 | SW5 | SW6 |
---|---|---|---|---|---|
OFF | ON | ON | ON | ON | ON |
HHKB のスイッチを上記の設定にすると、キーボード全体のモードは「Macintosh」になり、
最下段のキー押下により
Fn | Alt | Space | Alt | ◇ |
---|---|---|---|---|
のレイアウトでキー入力される形になります。
※『Alt』はmac では『Option』キーに、『◇』はWindowsでは『Win』キーに、mac では『コマンド(⌘)』キーになります。
以下、この設定における各OSでの対応の手順を記します。
#macOSでの設定
Karabiner-Elements というツールを使いますので、ダウンロードしてインストールします。
起動すると下図のように Preferences が開きますので、「Complex modification」に「オプションキーを単体で押した時に、英数・かなキーを送信する。(左オプションは英数キー、右オプションはかなキー)」というルールを選択し追加します。
以上でOKです。
Linuxでの設定
Ubuntu20.04での設定例です。
###キーボードレイアウトの変更
1.下記のコマンドを打ちます。
~% sudo dpkg-reconfigure keyboard-configuration
2.下図の様な画面が端末上に表示されるので、キーボードモデルに「Happy Hacking」を選択します。
3.後は順次下記の様に設定して行きます。
・「キーボードが由来する国」は「English(US)」
・「キーボードのレイアウト」は「English(US)」
・「AltGrとして機能させるキー」は「キーボード配置のデフォルト」
・「コンポーズキー」は「コンポーズキーなし」
・「Xサーバを強制終了するのに Contorol+Alt+Backspaceを使いますか?」は「いいえ」
以上でOKです。
###Mozcの設定
1.タスクバーに表示されている「あ▼」の部分をクリックし、「ツール」⇒「プロパティ」の順に選択し、「一般」タブの「キー設定」の「キー設定の選択」編集ボタンを押すと下図のような「Mozcキー設定」画面が開きます。
2.キー設定をいじる前に、「編集」⇒「エクスポート」で適当なファイル名を付けて現在の設定を保存します。保存したファイルはバックアップとしてコピーを取っておきましょう。
3.保存したファイルは以下のようなフォーマットになっています。
status key command
Composition Backspace Backspace
Composition Ctrl a MoveCursorToBeginning
Composition Ctrl Backspace Backspace
Composition Ctrl d MoveCursorRight
Composition Ctrl Down MoveCursorToEnd
Composition Ctrl e MoveCursorToBeginning
ファイル中の status とモード名との対応は下表です。
モード名 | status |
---|---|
変換前入力中 | Composition |
変換中 | Conversion |
直接入力 | DirectInput |
入力文字なし | Precomposition |
サジェスト選択中 | Prediction |
サジェスト表示中 | Suggestion |
4.テキストファイルから「key」の列が「Eisu」「Hiragana」の行を削除します。
5.ファイルの最下部に、下記の行を追記し、保存します。
DirectInput Hiragana IMEOn
Precomposition Hiragana IMEOn
Composition Eisu IMEOff
Precomposition Eisu IMEOff
6.編集したファイルを「インポート」すると、下表のエントリーが追加されます。
モード | 入力キー | コマンド |
---|---|---|
直接入力 | Hiragana | IMEを有効化 |
変換前入力中 | Eisu | IMEを無効化 |
入力文字なし | Eisu | IMEを無効化 |
入力文字なし | Hiragana | IMEを有効化 |
7.OKボタンで終了
###左右のAltキーの割当
1.ホームディレクトリに下記のファイルを作成します。
keycode 64 = Eisu_toggle
keycode 108 = Hiragana
2.下記の2つのスクリプトを作成します。ホームディレクトリの名称はご自分のものに置き換えてください。
sleep 2
DISPLAY=":0"
HOME=/home/rattcv/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY HOME XAUTHORITY
setxkbmap
xmodmap $HOME/.Xmodmap
#!/bin/sh
nohup /home/rattcv/kbd.sh >/dev/null 2>&1 &
3.実行属性を付けます。
~% chmod +x kbd.sh
~% chmod +x kbd_start_up.sh
4.次に「自動起動するアプリケーションの設定」を開き(タスクバーの一番下の「アプリケーションの表示」の選択窓に session
と打つと絞り込まれる)、下図の様に kbd_start_up.sh
を追加します。
以上で一度ログアウトするか再起動で望みのキーバンドになります。
###macへの切り替え後の再接続時の対処
切替器でOSを切り替えたり、キーボードを抜き差しすると xmodmap の設定が消えてしまう為、対処を行います。
上述のスクリプトの内容も含め、下記の記事を参考にさせていただきました。
1.下記コマンドでHHKBのデバイス情報を取得してみます。
~% udevadm info -a --path=$(udevadm info -q path -n /dev/input/by-id/usb-Topre_Corporation_HHKB_Professional-event-kbd)
ずらっと情報が流れますが、今回はHHKBのデバイス情報特定の為に
ATTRS{name}=="Topre Corporation HHKB Professional"
の部分を使います。
/etc/udev/rules.d/
配下に下記の udev rules を作成します。
ACTION=="add", ATTRS{name}=="Topre*", RUN+="/home/rattcv/kbd_start_up.sh"
以上でOKです!
#Windows10での設定
1.スタートメニューから「設定」を選択し、左側のタブから「言語」を選択後「オプション」押すと下記画面が表示されるので、「レイアウトを変更する」ボタンを押します。
2.下図のダイアログが表示されるので、「英語キーボード(101/102キー)」を選択し、OKを押します。
3.ありがたい事に alt-ime-ahk という今回の目的にぴったりと合うツールが公開されているので、これ使用させていただき左右の Alt キーでの ON/OFF を実現します。
zip を解凍すると alt-ime-ahk.exe
という実行形式のファイルが展開されますので、これを実行するだけです。ショートカットを作成しスタートアップに登録するのが良いでしょう。
#終わりに
うーん。結構めんどくさいですね笑
見落としてる設定もある気がするのですが、とりあえずこれで運用してみようと思います!