読者です 読者をやめる 読者になる 読者になる

Corredor

ウェブ、プログラミングの勉強メモ。

日本語キーボードの MacBook で英数・かなキーと Cmd キーにお互いの機能を持たせる

会社で日本語キーボードの MacBook を利用している。家では英字配列の MacBookPro を使っているので、スペースキーの左右に Command キーがなく、「英数」「かな」キーが存在していることが慣れない。

英数・かなキーがそのまま Command キーになるようなキーリマップはできないかなと思ったのだが、それだと入力切り替えができなくなりそうだ。

そこで、

  • 英数・かなキーと他のキーのコンビネーションを、Cmd キーのコンビネーションとして見せかけつつ、
  • 英数・かなキー単体で押した時は本来の入力切り替えの動作として使えるようにし、
  • Command キーを単体で押したときも英数・かなキーと同じように入力切り替えの動作をさせる

ということができないか試行錯誤してみた。

結果としては、「英かな」と「Karabiner-Elements」を組み合わせることで実現できた。

「英かな」の設定

MacOS Sierra で Karabiner が使えなくなり、その代替アプリとして広まっている「英かな」。最近は英数・かなキー以外のキーリマップもできるようになったようだ。

「英かな」では、「Command キーを単独で押したときに英数・かなキーの動作をさせる」ように設定する。

  • Command_L → 英数
  • Command_R → かな

Karabiner-Elements の設定

Karabiner-Elements も Karabiner の代替アプリで、機能が少ない。

「英かな」だと、「英数キーを押したときに Command キーに見せかける」といった設定ができなかったので、こちらで設定してみた。

なお、予め「Virtual Keyboard」タブで「JIS」を選んでおくこと。

  • 英数キー → left_command
  • かなキー → right_command
  • left_control → caps_lock
  • caps_lock → left_control

上の2つで、英数・かなキーをそれぞれ Command キーとして見せかけることができている。

下の2つは、システム環境設定の「修飾キー」設定で Ctrl と CapsLock を入れ替える設定にしていたものが効かなくなっていたので、Karabiner-Elements で再指定するようにしたもの。何で日本語配列だと Control の位置に CapsLock があるんだろうなぁ…。

とりあえずこれで、

  • 英数・かなキーと他のキーのコンビネーションを、Cmd キーのコンビネーションとして見せかけつつ、
  • 英数・かなキー単体で押した時は本来の入力切り替えの動作として使えるようにし、
  • Command キーを単体で押したときも英数・かなキーと同じように入力切り替えの動作をさせる

ことが可能になった。

英数・かなキーは Command キーのように振る舞えるので、「Cmd + S」みたいなことが「英数 + S」キーとかでできるようになっているし、それでいて「英数・かな」単独でも、「Command」キー単独でも、入力方式の切り替えができるようになった。

Win + Space キーで入力言語が切り替わるのを防ぐ AutoHotKey スクリプト

Win キーとスペースキーを押すと入力言語が切り替わるのだが、これを無効化したい。

キー操作をハックする AutoHotKey を使えば実現できる。やり方はまさに以下の記事そのまま。

AutoHotKey スクリプトに以下の1行を書けば OK。

#Space::

# は Windows キー、これと Space を組み合わせた時に (::) 何もしない (何も書かない)、ということ。

他にも Alt + Shift キーなどの組み合わせがあるが、それは設定画面から無効にできる。以下で紹介した。

neos21.hatenablog.com

Grep で特定の拡張子のファイルのみ対象・除外する

Grep で特定の拡張子のファイルのみ対象・除外する方法のメモ。

--include : 特定の拡張子のみ対象にする

grep コマンドで特定の拡張子のファイルのみ対象にするには、--include オプションを使う。

$ grep -irl sampleMethod --include='*.java'

これで、拡張子が .java のファイルだけを対象に、sampleMethod という文字列を含むファイルを検索できる。

  • -i … 検索文字列の大文字小文字を区別しなくなる。
  • -r … サブディレクトリも対象にする。
  • -l … ヒットしたファイル名のみ出力する。このオプションを外せばヒットした箇所も含めて出力する。

--include は複数書くことで OR 条件を実現できる。

# Java ファイルと SQL ファイルを対象に検索する
$ grep -irl sample_table_name --include='*.java' --include='*.sql'

--exclude : 特定の拡張子を除外する

--exclude オプション--include オプションの逆で、特定の拡張子を検索対象から除外する。使い方は --include のときと同じ。

# properties ファイルを除外する
$ grep -irl some-property --exclude='*.properties'

# 複数指定 : Java と Class ファイルを除外する
$ grep -irl something --exclude='*.class' --exclude='*.java'