LoginSignup
4
1

More than 3 years have passed since last update.

xkeysnail meets Apple Wireless Keyboard (US)

Posted at

概要

Ubuntuの環境設定で xkeysnail というキーリマップツールを使った話です。

作者が xkeysnail を作った話 をQiitaに書いているのと、他の方も 導入方法の記事 を詳細に書かれていたりするので、そのあたりの詳細は今回は書きません。
後者の記事にも書かれているように、xkeysnail に関する情報はまだまだ少ないので、こういう設定パターンもあるよ!という情報を増やすために今回の記事を書こうと思いました。
ThinkPadのキーボードを使って設定した記事はいくつかありましたが、Appleのキーボードを使った記事が見当たらなかったのです。

今回の設定で使ったキーボードは一世代前のApple Wireless Keyboard(US)ですが、現行で発売されているMagic Keyboardでも同様のキー配列なので同じ設定で使えるはずです。

やりたいこと

ぼくはキーボードに日本語が書かれていてスタイリッシュでないと思っているのとEnterキーの形が気持ち悪くてJIS配列が嫌いで、US配列を使っているのですが、JIS配列に負けを認めざるを得ないのが英数入力とかな入力の切り替えです。

Screen Shot 2020-03-12 at 18.24.15.png

シフトキーの左右に入力切替用のキーがあって、「かな」を何回押してもかな入力のままなのでめちゃくちゃ便利です。(Windowsはかな入力と英数入力を同じキーで切り替えますが、今どっちで入力しているのか意識しないといけないので辛いです。)

そのため、US配列でもその切り替えが実現できるように karabiner を使って以下のようにマッピングを変えています。
Screen_Shot_2020-03-12_at_18_30_35.png

これだとcommandが潰れてしまうので、左側のalt/optionキーをcommandに置き換えています。
よくcommandキーの設定を短押しで英数/かな切り替え、長押しでcommandと設定している人も見かけますが、ぼくのキー入力の癖ではその設定が合わず、意図せずcmd+hogeのショートカットを乱発させてしまい、まともに入力できないので諦めています。

caps lockキーを esc に割り当てているのはTouch Barのecsボタンでは感触に満足できず、物理ecsキーを押したいためで、caps lockくんには消えてもらいました。
caps lockは ctl でしょ!とかいろいろ派閥がありますが、ここでは戦争しないでください。

つまりこの設定を xkeysnail で実現したいという話です。

個人的にもう一つ気にしておきたいのが、macOSではかな入力で文字入力中に英数入力に切り替えることで、その入力を確定できるという仕様です。
何を言っているのか伝わりにくいと思いますが
Screen Shot 2020-03-12 at 18.40.55.png
の状態で英数キーを押すと 入れたい の文字が入力されてその後に英数入力に切り替わります。
UbuntuのMozcでこれと同じことをすると 入れたい はキャンセルされて この後に英数を の文字だけが残った状態で英数入力に切り替わります。

どれだけの人がmacOSでこの仕様を使っているかわかりませんが、無意識のうちに自分は多用していて、Mozcだとまともに日本語が入力できないことに気づいたので、この仕様も実現したいです。

実現方法

設定ファイルはこのようになりました。

config.py
import re
from xkeysnail.transform import *

define_modmap({
    Key.CAPSLOCK: Key.ESC,
    Key.LEFT_META: Key.MUHENKAN,
    Key.RIGHT_META: Key.HENKAN,
    Key.LEFT_CTRL: Key.LEFT_ALT,
    Key.LEFT_ALT: Key.LEFT_CTRL,
})

この設定でこのようにマッピングされます。

Screen_Shot_2020-03-12_at_18_22_36.png

特に目新しい情報はなくて、注意するのはcommandキーが LEFT_METARIGHT_META になっていることぐらいです。
macOSのcmd+hogeのショートカットは、ctrl+hoge で設定されていることが多いので、このように設定しています。macOSで ctrl を使っていたようなショートカットはUbuntuでも ctrl のままであることが多いので、そのショートカットはキーボードの位置が変わってしまうのですが、そこは諦めるかショートカットの設定の方で調整してください。

続いて、英数入力に切り替えた時に変換途中の文字を確定する部分です。
まず Mozc の設定の キー設定 -> キー設定の選択 -> 編集... をクリックします。
image.png

すると、このように入力状態毎にキー入力をした際にどのようなアクションを取るのかを設定する画面が出てくるので、編集 -> エントリーを追加

モード 入力キー コマンド
変換前入力中 Right (右矢印キー) 確定

の設定を追加します。

image.png

そして config.py に下3行の設定を追加してあげることで、英数キーを押したタイミングで → + 英数が入力されるので、 入力確定 + 英数入力切り替え となり、期待する挙動を実現することができました。

config.py
import re
from xkeysnail.transform import *

define_modmap({
    Key.CAPSLOCK: Key.ESC,
    Key.LEFT_META: Key.MUHENKAN,
    Key.RIGHT_META: Key.HENKAN,
    Key.LEFT_CTRL: Key.LEFT_ALT,
    Key.LEFT_ALT: Key.LEFT_CTRL,
})

# None の場合はすべてのアプリケーションで適用される
define_keymap(None, {
    K('muhenkan'): [K('right'), K('muhenkan')]
}, 'better input UX')

この設定だと、かな入力変換中でなくても、英数キーを押すことでが発動するので、カーソルが右に1つ移動してしまう問題があるのですが、自分が思いつく限りではRight(→)が一番無難な選択かなぁと思っています。
もしより良い選択肢があれば教えて下さい!!
(果たしてどれだけの人がこの問題で困っているのか…という疑問はありますが…)

Happy xkeysnail Life :tada:

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1