前回の記事で、SpaceFNを紹介しました。約1ヶ月くらい運用してみて、良い部分、悪い部分部分が見えて来ました。
試行錯誤して、結局スペースキーはスペースキーとして利用し、英数キー、かなキーを長押ししたときだけFnキーのように扱う方法に落ち着きました。これがかなり快適でした。。
この記事では英数、かなキーを長押ししたときだけFnキーのように動作させる方法のセットアップの方法を解説します。
※英数、かなキーを単体で入力した場合はそのまま(それぞれ英数、かなキーとして)動作します。
目次
SpaceFNで使い勝手が悪かったところ
Spaceキーは左右の親指から押しやすい位置にあり、アクセスが非常によかったので入力の観点では問題なく、むしろ使いやすかったです。
SpaceFNは、以下の通り動作します。
- Space + <なにかのキー>を入力したときは別のキーとして動作する
- Spaceキー単体で入力したときはSpaceキーとして動作する
ただ、日本語入力においては、1点問題がありました。
「高速でタイピングした後、日本語を変換しようとすると変換できない事がある」という問題です。日本語変換する際は、Spaceキーの入力が必要になるので、後者の動作が必要です。高速でタイピングした後、Spaceキーの入力が早すぎて、組み合わせ入力としてみなされてしまい、意図した漢字変換がされないことがありました。これがなかなかストレスでした。
英数、かなキーをFnキーのように動作させる発想について
SpaceFNは、スペースが必要になるシーンが多く、誤入力が多発する点が問題でした。
他のキーで、親指でアクセスしやすいキーはないか。そうキーボードを見たときにパッと目につくのは英数、かなキーでした。
左右親指からのアクセスもよく、単発入力が高速タイピング中には発生しないことから、SpaceFNで発生していたような誤入力も起きません。
英数かなFnのセットアップ方法
今回も、Windows, Mac, VIA (Keychron K8 pro)それぞれをセットアップする方法を紹介します。
VIAを利用した、英数かなFnの実現方法
ANYキーを利用して、英数キー単体では英数キーとして、長押ししたときはキーボードレイヤーを切り替える、という設定を行います。
かなキーも同様に設定します。
ANYキーについての詳細は、サリチル酸さんが以下の記事で詳しく解説してくださっていますので、参考になさってください。
https://salicylic-acid3.hatenablog.com/entry/via-manual
英数(無変換)キーには、Anyキーを選択して、以下を設定します。
LT(4, KC_MHEN)
このように書くと、英数(無変換)キーを長押ししたときはレイヤー4に、単体で押したときは英数(無変換)キーとして動作します。
お使いのキーボード設定にあわせて適宜レイヤー番号を変更ください。
かな(変換)キーも同様に以下を設定します。
LT(4, KC_HENK)
かな(変換)キーを長押ししたときはレイヤー4に、単体で押したときはかな(変換)キーとして動作します。

Macの場合: Karabiner-Elementsを利用した英数かなFnの実現方法
僕が使用している英数かなFnの設定ファイルを貼っておきます。
個人的に使いやすいマッピングにカスタマイズしてしまっているのお好みに応じて変更して使用いただければと思います!
以下のファイルを ~/.config/karabiner/assets/complex_modifications/EisuuKanaFn.json に配置し、Karabiner-Elements側で有効化します。
ここをクリックしてEisuuKanaFn.jsonを表示
{
"title": "EisuuKanaFn",
"rules": [
{
"description": "EisuuKanaFnLayer",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "japanese_eisuu",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"set_variable": {
"name": "layerVar",
"value": 1
}
}
],
"to_if_alone": [
{
"key_code": "japanese_eisuu"
}
],
"to_after_key_up": [
{
"set_variable": {
"name": "layerVar",
"value": 0
}
}
]
},
{
"type": "basic",
"from": {
"key_code": "japanese_kana",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"set_variable": {
"name": "layerVar",
"value": 1
}
}
],
"to_if_alone": [
{
"key_code": "japanese_kana"
}
],
"to_after_key_up": [
{
"set_variable": {
"name": "layerVar",
"value": 0
}
}
]
}
]
},
{
"description": "EisuuKanaFnKeyMapping",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "spacebar",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "japanese_eisuu"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "1",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f1"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "2",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f2"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "3",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f3"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "4",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f4"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "5",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f5"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "6",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f6"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "7",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f7"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "8",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f8"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "9",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f9"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "0",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f10"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "hyphen",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f11"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "equal_sign",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "f12"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "u",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "left_arrow",
"modifiers": "left_command"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "o",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "right_arrow",
"modifiers": "left_command"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "e",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "escape"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "f",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "japanese_eisuu"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "h",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "left_arrow"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "a",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "left_arrow"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "j",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "down_arrow"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "s",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "down_arrow"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "k",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "up_arrow"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "w",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "up_arrow"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "l",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "right_arrow"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "d",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "right_arrow"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "close_bracket",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "page_up"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "backslash",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "page_down"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "n",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "delete_or_backspace"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
},
{
"type": "basic",
"from": {
"key_code": "m",
"modifiers": {
"optional": ["any"]
}
},
"to": [
{
"key_code": "delete_forward"
}
],
"conditions": [
{
"type": "variable_if",
"name": "layerVar",
"value": 1
}
]
}
]
}
]
}
Karabiner-Elementsの設定画面から、Complex Modifications → Add predefined rule を選択し、「EisuuKanaFnLayer」と、「EisuuKanaFnKeyMapping」の「Enable」ボタンを押します。

有効化すると以下のように追加されます。

Windowsの場合: AutoHotKeyを利用した英数かなFnの実現方法
AutoHotKeyを利用して、実現できます。
AutoHotKey(https://www.autohotkey.com/)をインストールして、キーマップの変更設定を記載したahkスクリプトを動かすことでキーマップを変更することができます。
僕が使用しているahkスクリプトを貼っておきます。過去に使用したSpaceFNのものを変更して使用しています。
個人的に使いやすいマッピングにカスタマイズしてしまっているのお好みに応じて変更して使用いただければと思います!
ここをクリックしてahkスクリプト(EisuuKanaFn.ahk)の例を表示
; https://ahkwiki.net/KeyList
;EisuuKanaFn
;変換(SC079 |vk1Csc079)をレイヤー切り替えに割り当て
#inputlevel,2
$SC079::
SetMouseDelay -1
Send {Blind}{F24 DownR}
KeyWait, SC079
Send {Blind}{F24 up}
; MsgBox, %A_ThisHotkey%-%A_TimeSinceThisHotkey%
if(A_ThisHotkey="$SC079" and A_TimeSinceThisHotkey<1000)
Send {Blind}{SC079 DownR}
return
;無変換(SC07B, vk1Dsc07B)をレイヤー切り替えに割り当て
#inputlevel,2
$SC07B::
SetMouseDelay -1
Send {Blind}{F24 DownR}
KeyWait, SC07B
Send {Blind}{F24 up}
; MsgBox, %A_ThisHotkey%-%A_TimeSinceThisHotkey%
if(A_ThisHotkey="$SC07B" and A_TimeSinceThisHotkey<1000)
Send {Blind}{SC07B DownR}
return
#inputlevel,1
F24 & f::Space
F24 & e::Escape
F24 & Space::Escape
F24 & h::Left
F24 & j::Down
F24 & k::Up
F24 & l::Right
F24 & u::Home
F24 & o::End
F24 & [::PgUp
F24 & ]::PgDn
F24 & n::Backspace
F24 & m::Delete
F24 & a::Left
F24 & s::Down
F24 & w::Up
F24 & d::Right
F24 & 1::F1
F24 & 2::F2
F24 & 3::F3
F24 & 4::F4
F24 & 5::F5
F24 & 6::F6
F24 & 7::F7
F24 & 8::F8
F24 & 9::F9
F24 & 0::F10
F24 & -::F11
F24 & =::F12
まとめ
この記事では、英数(無変換)キー、かな(変換)キーをFnキーのように動作させ、他キーとの組み合わせを活用する方法を紹介しました。セットアップ方法についても、Mac、Windows、VIAを利用した方法をそれぞれ紹介してみました。
SpaceFnで発生していた「高速タイピング中に変換ができないことがある」問題についても解決し、かなり快適になりました。
みなさんもぜひお試しあれ。