Site icon image ganyariya blog

Post title icon Lofree Flow v2 Review…

はじめに

PreOrder していた Lofree Flow v2 (black/tactile) が届きました。

この記事ではこちらのキーボードの所感をまとめます。

Image in a image block
Image in a image block

この記事で扱わないこと

Lofree Flow v2 の詳細なスペック・キーの押圧などについては触れません。
他の方の動画やブログ・ Kickstarter page をご参照ください。

ganyariya が使ってみてどう思ったか、について触れていきます。

購入した経緯

Daihuku Keyboard さんの動画を視聴して、 Lofree Flow v2 の存在を知りました。

外観が非常におしゃれかつ打鍵感も心地よく、すぐに欲しくなってしまいました。

  • 2025 のはじめに Lofree Flow Lite を購入しており、もし Lofree Flow v2 を購入したら 2 台目になってしまう…
  • 2025/04 に Nuphy Kick75 を、2025/05 に IQUNIX MQ80 を購入し、キーボードが着実に増えてきている…

という買わない理由が脳裏に一瞬浮かびましたが、物欲が理性を圧倒的に超えてしまい、気づかぬうちに Flow V2 の情報を探しはじめていました(恐ろしい…)。

今回、事前に VIP Depot $1 を支払うことによって VIP 価格で購入できるキャンペーンがおこなわれていました。
Lofree Flow Lite や Kick75 でも同様の施策がおこなわれており、その経験から忘れずに VIP Depot を購入できました。

Image in a image block

Kickstarter 上で Early Access Preorder がおこなわれ、こちらで VIP として購入しました。

通常価格であれば 189$ だったところ 89$ で購入できました。 2 万後半だったところを 12000 円強で購入できたため非常にありがたいです。

よかった点

外観が非常にかっこいい

見た目がなによりかっこいいです。

フルアルミかつ黒に統一されており、キーキャップの印字もはっきりしています。
筐体の右端にはタッチセンサーがついており、音量調整やライティングの調整が行えます。

Lofree Flow Lite と比べて高級感が強く、物欲をはっきりと満たしてくれました…。

Image in a image block

打鍵感・打鍵音がよい

こちらのキーボードをはじめて触った感想が「うーん…?」という感想でした。
というのも自分が想定していたものと完全に異なっていたためです。

ganyariya はリニア黒軸が好きであり音が静かめかつ打鍵圧が強いものを好みます。
そのため、現在所持しているすべてのキーボードのキーはリニア軸でありタクタイルは持っていませんでした。

久しぶりにタクタイルに触った結果

  • タクタイルの打鍵感ってこんな感じだったっけ…?
  • リニアに比べてこんな打鍵音だったっけ…?

と戸惑いが大きかったです。

ただ、一日経ってみると、タクタイルキーボードとしてキーを押すのが非常に楽しく快適です。
はっきりとキーを押せる、それに対してクリッキーに音が返ってくる。
初めて買ったメカニカルキーボードがそのようなキーボードでその感動を思い出しました。

Lofree Flow v2 を機に、もっとリニア以外の軸も使っていきたいなと思いました。

うーんとなった点

金属の反響音が気になる

今回 Lofree Flow v2 を購入して一番うーんとなった点です。

Lofree Flow Lite と異なり、フルアルミで構成されています。
また、右サイドにはインジケータ・サイドタッチセンサーがついており、金属の領域が広いです。

Image in a image block

その結果、 キーボードの右端 25% ほどを押したときに「こぉん…」と金属音がなります。
これが少しうーんとなってしまいます。

なにか音楽を鳴らしていれば気にならないのですが、無音の状態でコーディングしていると Enter, \, delete などを押すと金属音がどうしても…。

機能・ビジュアルが非常によいため、惜しいな…と感じました。

個体差だったりするのですかね…。であればより悲しい…。

リニアにすればよかった

  • 黒色のキーボードを持っていなかった
    • 白・シルバーが中心シルバーがちゅう
  • タクタイルのキーボードを持っていなかった

ことからタクタイルならびにブラックとして注文しました。

ただ、Lofree Flow Lite (白) のほうが打鍵感がすきであり、やはり自分はリニアのほうが好きなのだと…。

リニアの Lofree Flow v2 はどのような打鍵感・打鍵音だったのかなと少し後悔です。
でもタクタイルキーボードも欲しかったので OK 😺

サイドタッチセンサーが誤作動する

ganyariya はキーボードの位置を調整するときにキーボードの両端をもって移動させてしまう癖があります。

このとき、タッチセンサーが誤作動してしまい音量が上がってしまうことがあります。

ショートカットによってタッチセンサーを Off にはできますが、せっかくついているのにもったいなく…。

こちらについては自分の癖を改善し、キーボードの上部・下部をあわせもって移動させる、を意識しようとおもいます。

Firmware Update がない

これまで気づかなかったのですが Lofree 製のキーボードについて Firmware のアップデートがないようです。
2025/09/10 時点において、Lofree Flow v2 の Firmware アップデートはありません。

macbook (m4) & bluetooth 接続において、たまに接続が切れてしまうため Firmware アップデートがあるとありがたいですね…

注意点

他の方の動画でも話されていますが、現時点において Color ならびにキーの軸はセットになっています。

  • White → Linear
  • Black → Tactile

という組み合わせとなります。

好きな色のキーボードを選んだら想定していない軸が来てしまった…ということがないようにご注意ください。

Kickstarter でない、公式サイトによる発売時では好きに選べると嬉しいですね。

Manual (JP)

Image in a image block
Image in a image block
Image in a image block

VIA Keymap

Keymap JSON

https://www.dropbox.com/scl/fo/gfzjhsawxjxqys27rxawd/AObvtrBR_LB3Z8VlhFjQzcw?rlkey=rb8d8euaqg1moxq0y7fzwv3ut&e=1&st=w0wr8aq5&dl=0

Image in a image block

⑦ 先ほどダウンロードしたフォルダの中から、ご自身が使用しているマシンに対応したJSONファイルを選択し、アップロードします。

なお、Flow2 の 60% モデルを利用している人は要注意。ファイル名が異なっておりますので、「FLOW2-100key-OE928-Json-20250905.json」という名前のファイルを使用してください。

60% キーボードのファイル名が間違っているのですね…
84key の json を読み込んであれ〜となっていましたが、ファイル名自体が間違っているようです。

上記の json を読みこんだところちゃんと VIA が認識されました。

初期配置

default json
{
  "name": "Flow2@Lofree",
  "vendorProductId": 948764673,
  "macros": ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""],
  "layers": [
    [
      "KC_ESC",
      "KC_1",
      "KC_2",
      "KC_3",
      "KC_4",
      "KC_5",
      "KC_6",
      "KC_7",
      "KC_8",
      "KC_9",
      "KC_0",
      "KC_MINS",
      "KC_EQL",
      "KC_BSPC",
      "KC_DEL",
      "KC_TAB",
      "KC_Q",
      "KC_W",
      "KC_E",
      "KC_R",
      "KC_T",
      "KC_Y",
      "KC_U",
      "KC_I",
      "KC_O",
      "KC_P",
      "KC_LBRC",
      "KC_RBRC",
      "KC_BSLS",
      "KC_GRV",
      "KC_CAPS",
      "KC_A",
      "KC_S",
      "KC_D",
      "KC_F",
      "KC_G",
      "KC_H",
      "KC_J",
      "KC_K",
      "KC_L",
      "KC_SCLN",
      "KC_QUOT",
      "KC_NO",
      "KC_ENT",
      "KC_HOME",
      "KC_LSFT",
      "KC_NO",
      "KC_Z",
      "KC_X",
      "KC_C",
      "KC_V",
      "KC_B",
      "KC_N",
      "KC_M",
      "KC_COMM",
      "KC_DOT",
      "KC_SLSH",
      "KC_RSFT",
      "KC_UP",
      "KC_END",
      "KC_LCTL",
      "KC_LALT",
      "KC_LGUI",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_SPC",
      "KC_NO",
      "KC_NO",
      "KC_RGUI",
      "MO(1)",
      "KC_RALT",
      "KC_LEFT",
      "KC_DOWN",
      "KC_RGHT"
    ],
    [
      "KC_TRNS",
      "KC_BRID",
      "KC_BRIU",
      "CUSTOM(7)",
      "KC_WWW_SEARCH",
      "BL_DEC",
      "BL_INC",
      "KC_MPRV",
      "KC_MPLY",
      "KC_MNXT",
      "KC_MUTE",
      "KC_VOLD",
      "KC_VOLU",
      "MO(5)",
      "CUSTOM(8)",
      "CUSTOM(16)",
      "0x7793",
      "0x7794",
      "0x7795",
      "0x7785",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_NO",
      "KC_TRNS",
      "KC_PGUP",
      "MO(4)",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "MAGIC_TOGGLE_NKRO",
      "TO(2)",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_PGDN",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "CUSTOM(13)",
      "KC_NO",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "CUSTOM(10)",
      "KC_TRNS",
      "CUSTOM(14)"
    ],
    [
      "KC_ESC",
      "KC_1",
      "KC_2",
      "KC_3",
      "KC_4",
      "KC_5",
      "KC_6",
      "KC_7",
      "KC_8",
      "KC_9",
      "KC_0",
      "KC_MINS",
      "KC_EQL",
      "KC_BSPC",
      "KC_DEL",
      "KC_TAB",
      "KC_Q",
      "KC_W",
      "KC_E",
      "KC_R",
      "KC_T",
      "KC_Y",
      "KC_U",
      "KC_I",
      "KC_O",
      "KC_P",
      "KC_LBRC",
      "KC_RBRC",
      "KC_BSLS",
      "KC_GRV",
      "KC_CAPS",
      "KC_A",
      "KC_S",
      "KC_D",
      "KC_F",
      "KC_G",
      "KC_H",
      "KC_J",
      "KC_K",
      "KC_L",
      "KC_SCLN",
      "KC_QUOT",
      "KC_NO",
      "KC_ENT",
      "KC_HOME",
      "KC_LSFT",
      "KC_NO",
      "KC_Z",
      "KC_X",
      "KC_C",
      "KC_V",
      "KC_B",
      "KC_N",
      "KC_M",
      "KC_COMM",
      "KC_DOT",
      "KC_SLSH",
      "KC_RSFT",
      "KC_UP",
      "KC_END",
      "KC_LCTL",
      "KC_LGUI",
      "KC_LALT",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_SPC",
      "KC_NO",
      "KC_NO",
      "KC_RALT",
      "MO(3)",
      "KC_RCTL",
      "KC_LEFT",
      "KC_DOWN",
      "KC_RGHT"
    ],
    [
      "KC_TRNS",
      "KC_BRID",
      "KC_BRIU",
      "CUSTOM(7)",
      "KC_WWW_SEARCH",
      "BL_DEC",
      "BL_INC",
      "KC_MPRV",
      "KC_MPLY",
      "KC_MNXT",
      "KC_MUTE",
      "KC_VOLD",
      "KC_VOLU",
      "MO(5)",
      "CUSTOM(8)",
      "CUSTOM(16)",
      "0x7793",
      "0x7794",
      "0x7795",
      "0x7785",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_NO",
      "KC_TRNS",
      "KC_PGUP",
      "MO(4)",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "MAGIC_TOGGLE_NKRO",
      "KC_NO",
      "TO(0)",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_PGDN",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "CUSTOM(13)",
      "KC_NO",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "KC_APP",
      "CUSTOM(10)",
      "KC_TRNS",
      "CUSTOM(14)"
    ],
    [
      "RESET",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "QK_CLEAR_EEPROM",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "CUSTOM(11)",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_TRNS",
      "KC_NO",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS"
    ],
    [
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "QK_CLEAR_EEPROM",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_NO",
      "KC_NO",
      "KC_NO",
      "KC_TRNS",
      "KC_NO",
      "KC_NO",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS",
      "KC_TRNS"
    ]
  ],
  "encoders": []
}

上のスクショが実際のVIAの設定画面です。Flow2のレイヤーは、0~2までがMac用、3~5までがWindows用の合計6レイヤー。

キーマップ変更のほか、マクロや設定保存・読み込みができるようになっていますが、ライティング設定がサポートされていないようです。

ライティング設定のショートカットは、明るさ調整「Fn+5 or 6」、モード切替「Fn+← or →」で変更することになります。

CUSTOM(%d) としか表示されないの少し不便ですねぇ…

key effect VIA
Fn + Space (3s) サイドタッチ機能 Toggle CUSTOM(13)
Fn + {Q, W, E} Bluetooth 接続 0x7793,4,5
Fn + R 無線 2.5GHz 接続 0x7785
Fn + {←, →} バックライト Toggle CUSTOM(10), (14)
Fn + M Mac Mode Layer3 に TO(0) が設定されている
Fn + N Windows Mode Layer1 に TO(2) が設定されている
Fn + Shift + Backspace リセット QK_CLEAR_EPROM
Fn + Tab 数字とファンクションキーの切り替え CUSTOM(16)
Fn + 3 Ctrl + ↑ で見れる一覧アプリのやつ CUSTOM(7)
Fn + 4 Spotlight 検索 Srch

Layer0

Image in a image block

Layer1

Image in a image block

Mac において Function Key が動作するようにする

ps: If you're a Mac user and want to trigger multimedia keys directly (without pressing FN), you'll need to set it up in VIA beforehand.

Layer5 に F1 ~ F12 を追加で設定しました。

Layer1 の最上部に 「Scr-」「Scr+」「CSTM(7)」… などのメディアキーが設定されており、レイヤを分離して F1 ~ F12 を設定したいためです。

Image in a image block

tilde を Esc の位置におく

Lofree Flow 2 (65%) において ~ が Home Key の上という気難しい位置にあります。

そのため、 tilde を Esc キーの位置に配置するようにします。

Layer1

` を左上 (Esc) に配置します。

ただ、 Layer1 の Shift キーの位置に MO(4) があり、~ が入力できずレイヤー4に移動してしまいます。

Image in a image block

そのため、レイヤー4の Esc の位置に ~ 単体を直接配置します。

かわりに Reset キーを end キーの位置に移動させています。こちらのほうが押し間違えがなさそう。

Image in a image block

まとめ

Lofree Flow v2 を購入し使用しはじめました。

久しぶりのタクタイルかつ筐体がブラックで、頻繁につかうキーボードになりそうです。

惜しい点として右側を押したときに金属の反響音が鳴ってしまうため、そこだけ改善されるともっと嬉しいなぁ…と感じました。