⌨️

右手小指が痛い人のためのホームポジション変更のすすめ

2022/06/08に公開
2

要約

  • 右手小指が痛くなりやすいプログラマー用の配列を作りました。
  • 右手のホームポジションを2列右にずらしています(人差し指がLの位置)
  • 2列ずらした結果、無くなってしまった記号類は「ひらがなキー」を押した際に出る「Hyper面」にて打てるようにしています
  • JIS配列を使っている方用のデモサイトを作りました

https://small-stall.com/righthomeposition

右手小指、働かせすぎ問題

私はもともと小指が痛くなりがちでした。痛くなり始めるのは決まって右側で、タイピングのしすぎが原因でした。JIS配列の欠陥って、アルファベットの並びもありますが、致命的なのは記号の軽視にあると思います。プログラミングをやってると記号を打ちます。下の図を見ても、右手の小指に役割が集中しているのがわかります。

右手小指の担当キーは8個なのに対し、親指なんて両手でスペース1個しか担当しないケースがほとんどです。この不平等を解消すれば小指が痛くなくなり、生産性が上がるはずです。
というわけで、ホームポジションを変更したら小指が痛いのがなくなったので、布教活動をします。今回オススメするのはこちらです。

右に2列ずれています。こうすることで右手小指の担当キーを2個にまで減らしています。両手の距離が通常よりも開くため、縮こまった体勢でタイピングしなくなり、肩こりなどにも効果があると思います。ずれてなくなってしまった右手の小指キー担当だったところは、後述する新たなシフトキー(Hyper)とアルファベットを組み合わせて割り当てしています。

追いやった右手小指担当のキーをどうするか

親指を有効活用するために、ひらがなキーとスペースキーを新しいシフトキー(Hyperキー)に割り当てます。こうすることで異なるキーボードの面(Hyper面)を下図の通り追加できるのでとても便利です。

Hyper/Spaceとなっているキーでは、単独で押したときにはSpaceキーが入力され、何かのキーと組み合わせるとHyperキーとして機能します。イメージがわかない方はDual-role keysなどで調べてみてください。

キーボードのキー配列をOSごと変えるには

OSごとに色々なソフトがありますので、お好みでどうぞ。

  • Windows
    のどか
Logicool K380用の設定
include "109.mayu"
keymap Global

###親指の設定###
mod mod0 += Hiragana
mod mod0 += NonConvert

key *Hiragana = &Ignore
key *NonConvert = &Ignore


###右側定義###
def subst *U = *LeftSquareBracket
def subst *I = *Y
def subst *O = *U
def subst *P = *I
def subst *CommercialAt = *O
def subst *LeftSquareBracket = *P

def subst *K = *H
def subst *L = *J
def subst *Semicolon = *K
def subst *Colon = *L
def subst *RightSquareBracket = *Colon

def subst *M = *HyphenMinus
def subst *Comma = *N
def subst *FullStop = *M
def subst *Solidus = *Comma
def subst *ReverseSolidus = *FullStop

###数字キーの移動###
def subst *_6 = *_5
def subst *_7 = *_6
def subst *_8 = *_6
def subst *_9 = *_7
def subst *_0 = *_8
def subst *HyphenMinus = *_9
def subst *CircumflexAccent = *_0
def subst *YenSign = *CircumflexAccent

###M0面の設定###
##左側
key *IL-*IC-M0-Q = CommercialAt
key *IL-*IC-M0-W = S-YenSign
key *IL-*IC-M0-E = Semicolon
key *IL-*IC-M0-R = S-LeftSquareBracket
key *IL-*IC-M0-T = S-RightSquareBracket

key *IL-*IC-M0-A = S-_7
key *IL-*IC-M0-S = S-ReverseSolidus
key *IL-*IC-M0-D = S-HyphenMinus
key *IL-*IC-M0-F = S-_8
key *IL-*IC-M0-G = S-_9

key *IL-*IC-M0-Z = S-Semicolon
key *IL-*IC-M0-X = YenSign
key *IL-*IC-M0-C = Solidus
key *IL-*IC-M0-V = LeftSquareBracket
key *IL-*IC-M0-B = RightSquareBracket

#右側
key *IL-*IC-M0-Y = A-S-Tab
key *IL-*IC-M0-U = C-S-Tab
key *IL-*IC-M0-I = A-Tab
key *IL-*IC-M0-O = C-Tab
key *IL-*IC-M0-P = C-F4

key *IL-*IC-M0-H = Left
key *IL-*IC-M0-J = Down
key *IL-*IC-M0-K = Up
key *IL-*IC-M0-L = Right
key *IL-*IC-M0-Colon = Home S-End

key *IL-*IC-M0-N = A-Left
key *IL-*IC-M0-M = PageDown
key *IL-*IC-M0-Comma = PageUp
key *IL-*IC-M0-FullStop = A-Right
  • Mac
    Karabiner Elements
    Complex Modificationsに以下のテキストが書かれたjsonファイルを指定してください。読み込んだらRIGHT_HOMEというルールを指定してください(Macbook用になっています)。
MacBook用Complex Modifications設定ファイル
complex_modifications/right_home.json
  {
  "title": "RIGHT HOME Pisition config for Macbook",
  "rules" : [ {
    "description" : "RIGHT_HOME",
    "manipulators" : [ {
      "to_if_alone" : [ {
        "key_code" : "japanese_eisuu"
      } ],
      "from" : {
        "key_code" : "japanese_eisuu",
        "modifiers" : {
          "optional" : [ "any" ]
        }
      },
      "to" : [ {
        "key_code" : "left_shift"
      } ],
      "type" : "basic"
    }, {
      "to_if_alone" : [ {
        "key_code" : "spacebar"
      } ],
      "from" : {
        "key_code" : "spacebar",
        "modifiers" : {
          "optional" : [ "any" ]
        }
      },
      "to" : [ {
        "key_code" : "left_shift",
        "modifiers" : [ "left_command", "left_control", "left_option" ]
      } ],
      "type" : "basic"
    }, {
      "to_if_alone" : [ {
        "key_code" : "spacebar"
      } ],
      "from" : {
        "key_code" : "japanese_kana",
        "modifiers" : {
          "optional" : [ "any" ]
        }
      },
      "to" : [ {
        "key_code" : "left_shift",
        "modifiers" : [ "left_command", "left_control", "left_option" ]
      } ],
      "type" : "basic"
    }, {
      "to_if_alone" : [ {
        "key_code" : "japanese_kana"
      } ],
      "from" : {
        "key_code" : "right_command",
        "modifiers" : {
          "optional" : [ "any" ]
        }
      },
      "to" : [ {
        "key_code" : "right_command"
      } ],
      "type" : "basic"
    }, {
      "to_if_alone" : [ {
        "key_code" : "slash",
        "modifiers" : [ "left_shift" ]
      } ],
      "from" : {
        "key_code" : "left_shift",
        "modifiers" : {
          "optional" : [ "any" ]
        }
      },
      "to" : [ {
        "key_code" : "left_shift"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "caps_lock"
      },
      "to" : [ {
        "key_code" : "2",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "6"
      },
      "to" : [ {
        "key_code" : "5"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "7"
      },
      "to" : [ {
        "key_code" : "6"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "8"
      },
      "to" : [ {
        "key_code" : "7"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "9"
      },
      "to" : [ {
        "key_code" : "8"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "0"
      },
      "to" : [ {
        "key_code" : "9"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "hyphen"
      },
      "to" : [ {
        "key_code" : "0"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "i"
      },
      "to" : [ {
        "key_code" : "y"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "o"
      },
      "to" : [ {
        "key_code" : "u"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "p"
      },
      "to" : [ {
        "key_code" : "i"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "open_bracket"
      },
      "to" : [ {
        "key_code" : "o"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "close_bracket"
      },
      "to" : [ {
        "key_code" : "p"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "k"
      },
      "to" : [ {
        "key_code" : "h"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "l"
      },
      "to" : [ {
        "key_code" : "j"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "semicolon"
      },
      "to" : [ {
        "key_code" : "k"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "quote"
      },
      "to" : [ {
        "key_code" : "l"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "non_us_pound"
      },
      "to" : [ {
        "key_code" : "semicolon"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "m"
      },
      "to" : [ {
        "key_code" : "hyphen"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "comma"
      },
      "to" : [ {
        "key_code" : "n"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "period"
      },
      "to" : [ {
        "key_code" : "m"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "slash"
      },
      "to" : [ {
        "key_code" : "comma"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "international1"
      },
      "to" : [ {
        "key_code" : "period"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "right_shift"
      },
      "to" : [ {
        "key_code" : "slash"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "caps_lock",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "equal_sign",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "6",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "5",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "7",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "6",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "8",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "7",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "9",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "8",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "0",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "9",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "hyphen",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "0",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "i",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "y",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "o",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "u",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "p",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "i",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "open_bracket",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "o",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "close_bracket",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "p",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "k",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "h",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "l",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "j",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "semicolon",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "k",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "quote",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "l",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "non_us_pound",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "semicolon",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "m",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "hyphen",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "comma",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "n",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "period",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "m",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "slash",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "comma",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "international1",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "period",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "right_shift",
        "modifiers" : {
          "mandatory" : [ "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "slash",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "q",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "open_bracket"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "w",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "international3",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "e",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "semicolon"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "r",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "close_bracket",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "t",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "backslash",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "caps_lock",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "open_bracket",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "a",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "7",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "s",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "international1",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "d",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "hyphen",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "f",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "8",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "g",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "9",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "z",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "semicolon",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "x",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "quote",
        "modifiers" : [ "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "c",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "international3"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "v",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "close_bracket"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "b",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "backslash"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "i",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "tab",
        "modifiers" : [ "left_command", "left_shift" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "o",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "left_arrow",
        "modifiers" : [ "left_command", "left_option" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "p",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "tab",
        "modifiers" : [ "left_command" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "open_bracket",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "right_arrow",
        "modifiers" : [ "left_command", "left_option" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "close_bracket",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "w",
        "modifiers" : [ "left_command" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "k",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "left_arrow"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "l",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "down_arrow"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "semicolon",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "up_arrow"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "quote",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "right_arrow"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "comma",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "left_arrow",
        "modifiers" : [ "left_command" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "period",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "page_down"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "slash",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "page_up"
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "international1",
        "modifiers" : {
          "mandatory" : [ "left_command", "left_control", "left_option", "left_shift" ]
        }
      },
      "to" : [ {
        "key_code" : "right_arrow",
        "modifiers" : [ "left_command" ]
      } ],
      "type" : "basic"
    }, {
      "from" : {
        "key_code" : "caps_lock",
        "modifiers" : {
          "mandatory" : [ "left_command" ]
        }
      },
      "to" : [ {
        "key_code" : "2",
        "modifiers" : [ "left_command" ]
      } ],
      "type" : "basic"
    } ]
  } ]
}

karabinerのjsonファイル生成元となるgoku用の設定も置いておきます。

gokuファイル
karabiner.edn
{
:main [{:des "RIGHT_HOME"
:rules [
  ;;親指の設定
  ;;dual-roleキー(他のキーと組み合わせたときと単独で押したときとで別なキー出力になる)設定になっています
  [:##japanese_eisuu :left_shift nil {:alone :japanese_eisuu}], ;;シフト/英数キー
  [:##spacebar :!CTOleft_shift nil {:alone :spacebar}], ;;hyperキー/spaceキー
  [:##japanese_kana :!CTOleft_shift nil {:alone :spacebar}], ;;hyperキー/スペースキー
  [:##right_command :right_command nil {:alone :japanese_kana}], ;;commandキー/かなキー

  ;;小指の設定
  [:##left_shift :left_shift nil {:alone :!Sslash}],

  ;;左手オモテ面の設定
  [:caps_lock :!S2],

  ;;右手オモテ面の設定
  [:6 :5],
  [:7 :6],
  [:8 :7],
  [:9 :8],
  [:0 :9],
  [:hyphen :0],
  [:i :y],
  [:o :u],
  [:p :i],
  [:open_bracket :o],
  [:close_bracket :p],
  [:k :h],
  [:l :j],
  [:semicolon :k],
  [:quote :l],
  [:non_us_pound :semicolon],
  [:m :hyphen],
  [:comma :n],
  [:period :m],
  [:slash :comma],
  [:international1 :period],
  [:right_shift :slash],
  
  ;;左手シフト面の設定
  [:!Scaps_lock :!Sequal_sign],

  ;;右手シフト面の設定
  [:!S6 :!S5],
  [:!S7 :!S6],
  [:!S8 :!S7],
  [:!S9 :!S8],
  [:!S0 :!S9],
  [:!Shyphen :!S0],
  [:!Si :!Sy],
  [:!So :!Su],
  [:!Sp :!Si],
  [:!Sopen_bracket :!So],
  [:!Sclose_bracket :!Sp],
  [:!Sk :!Sh],
  [:!Sl :!Sj],
  [:!Ssemicolon :!Sk],
  [:!Squote :!Sl],
  [:!Snon_us_pound :!Ssemicolon],
  [:!Sm :!Shyphen],
  [:!Scomma :!Sn],
  [:!Speriod :!Sm],
  [:!Sslash :!Scomma],
  [:!Sinternational1 :!Speriod],
  [:!Sright_shift :!Sslash],

  ;;左手Hyper面の設定
  [:!!q :open_bracket],
  [:!!w :!Sinternational3],
  [:!!e :semicolon],
  [:!!r :!Sclose_bracket],
  [:!!t :!Sbackslash],
  [:!!caps_lock :!Sopen_bracket],
  [:!!a :!S7],
  [:!!s :!Sinternational1],
  [:!!d :!Shyphen],
  [:!!f :!S8],
  [:!!g :!S9],
  [:!!z :!Ssemicolon],
  [:!!x :!Squote],
  [:!!c :international3],
  [:!!v :close_bracket],
  [:!!b :backslash],

  ;;右手Hyper面の設定
  [:!!i :!CStab],
  [:!!o :!COleft_arrow],
  [:!!p :!Ctab],
  [:!!open_bracket :!COright_arrow],
  [:!!close_bracket :!Cw],

  [:!!k :left_arrow],
  [:!!l :down_arrow],
  [:!!semicolon :up_arrow],
  [:!!quote :right_arrow],

  [:!!comma :!Cleft_arrow],
  [:!!period :page_down],
  [:!!slash :page_up],
  [:!!international1 :!Cright_arrow],

  ;;command面
  [:!Ccaps_lock :!C2],
]}]}
  • Linux
    .xmodmap
    手元にLinux環境がないのでどなたか作ってください(丸投げ)。

デメリット

メリットをお伝えしたので、デメリットもお伝えします。

  • キーボードの印字と打った文字が異なる
    Lキーを打ってJが出たり、Oキーを打ってUが出ることに初めは違和感があると思います。キーボードを打つとき手元をほとんど見ない人なら気にならなくなると思いますが、どうしても気になる人もいると思います。
  • OSにログインするときのパスワード入力
     キー配列変更ソフトを使う場合、OSが起動しない限りは動かないのでデフォルトのQWERTY配列になります。どちらの入力モードだったか混乱するケースがあります。
  • 数字が打ちづらい
     数字は見て入力することが多いのでちょっと打ちづらいです。

終わりに

今回はホームポジションの新しい例として、右手を2列ずらした「RIGHTホームポジション」をご紹介しました。これは筆者がゼロから考えたものではなく、orzレイアウトをもとにアレンジしたものです。
http://www.orz-layout.com/
また、デモサイトのソースコードは次のコードを参考にさせていただきました。
https://github.com/Hiroya-W/Eucalyn_typing_site
この場をお借りしてお礼申し上げます。

デモサイトのソースはこちらに載せました。ではでは。
https://github.com/smallStall/RightHomePosition

Discussion

五所 和哉 (MonCargo CTO)五所 和哉 (MonCargo CTO)

記事ありがとうございます。自分も最近、右手2列シフト配列を試しており、大変参考になりました。

手元にLinux環境がないのでどなたか作ってください(丸投げ)。

自分は Linux 環境で、 xmodmap ではないですが、より高機能な keyd を使っています。本文中のHyper レイヤー相当の機能を実現できるためです。どなたかの参考になれば幸いです。

[global]
overload_tap_timeout = 200

[ids]
*

[main]
9 = 7
0 = 8
- = 9
= = 0
yen = -

i = y
o = u
p = i
[ = o
] = p

k = h
l = j
semicolon = k
apostrophe = l
backslash = semicolon

m = b
comma = n
dot = m
slash = comma
ro = dot
# 単押しでスラッシュ、長押しで Shift
rightshift = overload(shift, slash) 
smallStallsmallStall

keydというのがあるんですね!
Linuxの設定をのせていただき、ありがとうございます。