Linuxで尊師スタイルの環境構築


対象となる読者

  • 尊師なスタイルに憧れているLinuxユーザー
  • fcitx環境でJIS・USキーボードを即座に切り替えたい人
  • やり方を忘れた未来の自分

あらすじ

  1. 尊師スタイルしたい!
  2. キーボード買った
  3. 手動でIMEの設定だるい
  4. Linux版Karabinerとかないんかな
  5. ない
  6. 作ろう

尊師スタイルとは

ノートPCの上に外付けキーボードを置いて使うことを尊師スタイルと言います。
名前の由来は聞き飽きたと思いますので省略します。

HHKB&Macbookで尊師スタイルをしている人が圧倒的に多い気がします。羨ましい限りです。

私のノートPCは、Fujitsu Lifebook SH90/Mで、キーボードはJIS配列です。
私は1年前にUSキーボード信者になったため、US配列のノートPC欲しいなあと思いつつ、4年間使い続けているLifebookを手放すのは惜しいなあと思ってました。

なら尊師スタイルしかないな・・・ と思い立ったわけです。
しかし、ネットで調べても、尊師スタイルの記事はMacbookの記事ばかりで、Linuxユーザーのための記事が殆ど無かったので、ここに記事にしようと思い立ちました(Linuxユーザーはこれぐらいのことは難無く出来るとは思いますが)。

使うキーボード

Topreクローンとして有名なNiZ Plum 75を先日買いました。
HHKBも考えましたが、「矢印キーがない」という未開の地に3万円近く費やす勇気はありませんでした。。

そんなことはさておき、NiZの簡単なレビューですが、メインで使っているRealForce 104UBと比べると音がとても軽やかです。
両方とも静電容量無接点方式ですが、Plumは高周波数帯が比較的小さく「ポコスコ」といった打鍵音で、この動画のまんまです。
Fnキー位置が気に食わなかったり、タッチが軽すぎるといった問題も少しありますが、Windows専用ソフトと付属のバネでどうにかなります。

やり方

環境

  • ubuntu 16.04 LTS(Tweak Toolで外観Macぽくしてます)
  • fcitx-mozc
  • NiZ Plum 75(USBタイプ)

fcitx-imlistのインストール(2018/9/2編集)

※内蔵・外付けキーボードが同じ配列の場合はスキップしてください

「尊師スタイルじゃなくて普通にタイピングしたい!」といった場面もあると思うので、内蔵キーボードを常時殺しておくわけにはいきません。

内蔵・外付けキーボードが双方同じ配列なら楽なのですが、使っているキーボードの配列によって、直接入力の配列をJISとUSにそれぞれ変更しなければなりません。

下図のようにfcitx-configtoolで設定すればいいのですが、繋ぎ直す度にGUIで入力メソッドを設定し直すのは手間です。


これをコマンドで設定できるツールがfcitx-imlistです。作者様ありがとうございます。

以下のようにクローンを作ってインストールしてやります。


$ sudo apt-get install dh-autoreconf
$ sudo apt-get install glib-2.0
$ sudo apt-get install libperl-dev
$ sudo apt-get install libgtk2.0-dev

$ sudo apt-get install build-essential fcitx-libs-dev
$ git clone https://github.com/kenhys/fcitx-imlist
$ cd fcitx-imlist
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

最初の4行は環境によって必要ないかもしれません(私はここでつまづきました1)。
これでfcitx-imlistのインストールは終わりです。

内蔵キーボードの名前

xinput listを端末に打ち込んでやります。
Windowsでいうデバイスマネージャーみたいなもんです。


$ xinput list
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ CATEX TECH. 75EC-S                        id=11   [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                          id=12   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
    ↳ Fujitsu FUJ02E3                             id=6    [slave  keyboard (3)]
    ↳ Video Bus                                   id=7    [slave  keyboard (3)]
    ↳ Fujitsu FUJ02B1                             id=8    [slave  keyboard (3)]
    ↳ Power Button                                id=9    [slave  keyboard (3)]
    ↳ CATEX TECH. 75EC-S                          id=10   [slave  keyboard (3)]
    ↳ FJ Camera                                   id=13   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard                id=14   [slave  keyboard (3)]

いろいろ出てきましたね。この中から、内臓キーボードのidと括弧の中の数字(以下:マスターNo.)を控えておいてください。後で使います。

作者の環境では
AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
となっていました。

肝心のコマンド


上図の画面のfcitx configurationで設定した入力メソッドオンオフ
/home/user/.config/fcitx/config の3行目の変数TriggerKeyに格納されます。


また、「入力メソッド」タブのmozcをクリックした際にキーボードレイアウトの画面が出てきます。このレイアウトは
/home/user/.config/fcitx/data/layout_override の1行目に記録されます。

この2つのファイルの該当行をコマンドで書き換えてやればいいわけです。

尊師スタイルをONにするときは


$ xinput float 14
$ fcitx-imlist -s mozc
$ fcitx-imlist -s fcitx-keyboard-us
$ sed -i 's/mozc,jp/mozc,us/' /home/user/.config/fcitx/data/layout_override
$ sed -i -e '3c\TriggerKey=CTRL_SPACE' /home/user/.config/fcitx/config

を実行します。

  • 1行目:内蔵キーボードを殺す
  • 2,3行目: 直接入力をUS、日本語入力をmozcに変更
  • 4行目:mozcを使う際のレイアウトをUS配列に変更
  • 5行目:入力メソッド切り替えボタンをCtrl+Spaceに変更

同じように、尊師スタイルをOFFにするときは以下のコマンドを実行します。


$ xinput reattach 14 3
$ fcitx-imlist -s mozc
$ fcitx-imlist -s fcitx-keyboard-jp
$ sed -i 's/mozc,us/mozc,jp/' /home/user/.config/fcitx/data/layout_override
$ sed -i -e '3c\TriggerKey=CTRL_SPACE ZENKAKUHANKAKU' /home/user/.config/fcitx/config
  • 1行目:内蔵キーボードを復活させる(ここで先程のマスターNo.が必要)
  • 2,3行目: 直接入力をJIS、日本語入力をmozcに変更
  • 4行目:mozcを使う際のレイアウトをJPS配列に変更
  • 5行目:入力メソッド切り替えボタンをCtrl+Spaceと半角/全角に変更

IME切り替えが他のボタン(Alt空打ち)とかにしたい人はconfigの34,36行目のActivateKey,InactivateKeyを書き換えるコマンドを追加すれば可能です。

以上コマンドで、CUI上で尊師スタイルのON, OFFを切り替えることができます。

面倒くさいから.shを作った

上のコマンドをまとめました。
https://github.com/MTfirst/Sonshi-Changer
シェルスクリプトは今までまともなものを作ったことが無かったので、正直ここが一番難儀しました。もっと良い書き方があるかもしれません。
4行目で、grepを使って内蔵キーボードのidを取得しています。
他のデバイスと被らないよう、内蔵キーボード固有の名前をgrepに渡すよう、環境に応じて修正してください。


こんな感じで動作します。

※たまに入力メソッドの切り替えボタンがうまく効かないことがあります。そのときはfcitxを再起動してみてください。

現在


こんな感じで使ってます。
NiZはデフォルトの状態だと少し野暮ったいので、しばらくしたらキートップの交換など諸々やっていこうと思います。
ガチガチに静音化してカフェでドヤるのが夢です。

おわりに

キーボードの沼は深い

参考