今のHHKBレイアウトにMacBookを完璧に合わせる

今のHKKBのレイアウト。MacもWinもOSに依存しないものは全く同じにしている。

  • 「A」の横が「Forward Delete」
    • 勧められてやってみたら凄く便利で自分に馴染んだ。Winでもこうしてる。
  • 「右Alt」を「Ctrl」に
  • 「PgUp」と「Home」、「PgDn」と「End」を入れ替え
    • 「Home」「End」の方が使用頻度多いのに遠いため。
  • 「Help」を「Enter」に
    • 「Help」は使わないけど「Enter」は使うときあると思って。Winではこの位置に「Windowsキー」がある。

で、MacBookのキーボード(US)を利用するときもこれと同じ配列にしたいわけで以前その対応を行ったのだが、「Esc」と「`」の入れ替えを忘れていたり「caps lock」を「Forward Delete」にしたいなど、もう一度見直したいと思っていた。

ソース修正させてもらったこのソフトは以前の3.2.0から現在は5.1.0になっており、この最新版のソースを改造させてもらおうと色々見てみたら、デフォルトで用意されているマッピングがかなり増えて相当便利なものになっていて、やりたかったことほぼ全て環境設定から行うことができた。できなかったことは下記の通り src/core/kext/remap.cpp を変えて実現。

  • src/core/kext/remap.cpp#remap_hhkmode()
    • 「PgUp」と「Home」、「PgDn」と「End」を入れ替え
    // K => HOME
    if (params.ex_origKey == KeyCode::L || params.ex_origKey == KeyCode::KEYPAD_3) {
      *(params.key) = KeyCode::HOME;
    }
    // , => End
    if (params.ex_origKey == KeyCode::DOT || params.ex_origKey == KeyCode::KEYPAD_DOT) {
      *(params.key) = KeyCode::END;
    }
    // L => PageUp
    if (params.ex_origKey == KeyCode::K || params.ex_origKey == KeyCode::KEYPAD_2) {
      *(params.key) = KeyCode::PAGEUP;
    }
    // . => PageDown
    if (params.ex_origKey == KeyCode::COMMA) {
      *(params.key) = KeyCode::PAGEDOWN;
    }
  if (*(params.keyboardType) == KeyboardType::MACBOOK) {
    // ------------------------------------------------------------
    // normal remapping
    remap_leftarrow2controlL(params);
    
    // (以下remap処理ずらずら…)
  }

最後に、

このソフトを使って「caps lock」を「Foward Delete」に変更。完璧。

追記(2009年11月4日)

オリジナル版を公開しています。