Picture

Hi, I'm marksard.

Joy of making, Smile be making, Interest and making.

JJ40を作ってみた

img

購入動機

 AliExpressでキーキャップの品定めをしているとJJ40がどうしても目に入るんです。気になるんです。買っちゃったんです(キレ気味)

 コルネたん(きんもー☆)を日々使ってると、オレ様に数字キーは物理的に必要なかったんやー!という気づきに気づいた(?)のと、スプリットしてない一体型で格子配列(ortholinear)なキーボードも欲しいなぁという欲望とマッチングしてポチーしてしまいました。

買ったもの

  • JJ40 PCB
  • JJ40用アクリル付きアルミケース
  • XDA 40V2 dye sub keycaps set

 これらはAliExpressで買いました。

  • Kailh Pro Purple
  • Kailh Speed Copper

 これらは遊舎工房さんで買いました。

 他にUSBminiなケーブルが必要です。私はUSBmini⇔USBmicro変換コネクタを使って普段使っているケーブルを流用しています。

組み立て

img
img

 JJ40はPCBにAtmega32AとUnderGlowLED、チップダイオードや抵抗が出荷時に組み込まれているのでデリケートな作業は特にありません。キースイッチのピンの形状やケースのUSBケーブル差込口の位置から、裏表を間違えて取り付けられないようになっているので安心です。実質の作業としては、

  • キースイッチをケースにはめ込み
  • PCBをキースイッチのピンに合わせてはめ込み
  • ピンを全部ハンダ付けし
  • アクリルをビス止めする

で完成です。神経を使うLEDやチップ部品のはんだ付けがないので、そういう点では電子工作初心者向きな気がします。GroupBuyじゃないので入手しやすいし価格もお手頃です。

キースイッチを組み合わせてみる

 個人的には押したときシュコシュコっとひっかかりのないリニアなCherry赤軸が大好きで、茶軸(タクタイル:コクっと押した感があって少し音がする)や青軸(クリッキー:押した感+チャキチャキっと派手な音がする)やそれらの互換スイッチに見向きもしてなかったんです。でもちょっとタクタイルを触りたくなってJJ40が到着するまでにYOUTUBEとかでスイッチの音とか聴いてると、以前短期間使ってた茶軸のキーボードより静かでよさそうだったので使ってみることにしました。(JJ40買った当初は無駄に買ってしまった赤軸を消費するつもりもあったんですがまた在庫が吐けなくなりました)

以下のスイッチを使いました。

  • Kailh Pro Purple(タクタイルtype。Cherry比でスイッチが入るのがちょっと速い)
  • Kailh Speed Copper(タクタイルtype。Cherry比でスイッチが入るのがかなり速い)
  • Kailh Pro Burgundy(リニアtype。Cherry比でスイッチが入るのがちょっと速い)
  • Cherry Red(リニアtype)

これらをこれまでの経験から以下のように配置してみました。

img

  • 文字キーは押した感覚がつかめるとタイピングのリズム感が良くなるのでタクタイルType
    • ホームポジションは指のストロークに余裕があるのでKailh Pro Purpleを使う
    • ホームポジションから離れて指のストロークに余裕がなくなる場所はストロークが短くても反応するKailh Speed Copperを使う
  • モデファイアキーは押しながら操作が多く余計な感覚は無駄なのでリニアTypeにする
    • 親指で押下する中央4キーはストロークが短くても反応するKailh Pro Burgundy
    • その他Cherry Red

JJ40への書き込み方法

 AliExpressやKPrepublicを見ると専用のキーマップエディタを使うようにとのことなのですが、むしろよくわからんので、QMK_Firmware JJ40 の手順を踏みます。

 私はWindows10環境でVS codeで編集し、WSLからMakeしてHexファイルを生成して、それを上記のReadme.mdに書いてあるHIDBootFlashを使ってファームウェアを書き込んでます。

 ファームの書き込み方法は上記に書いていますが、右上端のキー(通常文字Pキーから一つ右のキー)を押しながらUSBケーブル刺すとファーム書き込みモードになります。

  1. ファーム書き込みモードにする
  2. デバイスマネージャを開いてヒューマンインタフェースデバイスのツリーをみる
  3. JJ40だけ接続
  4. JJ40のHIDドライバを見極め、ベンダーID(VID)とプロダクトID(PID)を確認する
  5. HIDBootFlashにVIDとPIDを入れて検索する
  6. 下のログで見つかったと出たらmakeしたHEXファイルを指定する
  7. 書き込む
  8. ケーブルを一旦抜いてファーム書き込みモードを終了し再度差し込む

 ソフトウェアリセットキー(RESET)を自分のキーマップに割り当てれば、右上のキーを押しながら割り当てたリセットキーを押下すればファーム書き込みモードになります。HIDBootFlashにある「RebootAVR」のチェックと組み合わせることで、毎回ケーブル抜き差ししたりする手間が省けて便利です。

完成

 コンパクトでカワ(・∀・)イイ!!
img
img

KprepublicのXDA 40V2 dye sub keycaps set、しっかりした質感で印字もキレイだし色合いもキレイです。打ち心地も良好です。

使用感とか

 両肩をすぼめて使う従来型のキーボードですけど個人的には打ちやすいです。ケースの形状で適度にチルトされていて最上段もストロークしやすく、格子配列はホームポジション以外も押しやすいです。  ホームポジション列1行にワンストローク先の上下1行列+モデファイアキー列1行の合計で4行となり、ホームポジションに沿う形で手のひらを机に置いてしまえばそこから手を放すことなく全キーにアクセス出来るのでスムースに打鍵出来ます。列に関しても文字キー列が最低でも片手で5列の計10列、モデファイアに最低1列、可能なら2列あれば良いなという感じなので、4行x12列の構成は理にかなっているのかもしれません。

 要所要所で違うストロークや違う感触のキーにしたのも好みにマッチして良い感じです。タクタイルだとクリックを感じてリリース出来るのでリズムよく打てる感じがするし、小指や人差し指で下方向や斜め方向のキーを打鍵する時も少ないストロークで無理なく打鍵出来てます。
 キーマップはHelixとcrkbdをベースにして互換性を保っているので使い勝手がほとんど変わらず超快適です。

 crkbdやHelixのキースイッチも全面Kailh Pro Burgundyから一部分だけ誤操作しないようにタクタイルにするとか、Speed Silverに置き換えたくなってきたりするなぁ…

LEDを追加

 JJ40には追加でLEDをキースイッチに仕込めます。crkbdやHelixのようにフルカラーでピカピカ光るようなものではなく、色固定で2ピンのリード線を持つφ3mmのLEDが使用可能です。
 LEDを取り付けるとファーム書き込みモードの時に点滅するようになるのでちょっとわかりやすい、というメリットもあります。
 QMKにあるJJ40のビルドガイドを見ているとBACKLIGHT_ENABLE = yesで動作するようです。

 全部付けるとせっかくのUnderGlowLEDが分かりにくくなるので、今回は2個、LowerキーとRaiseキーを割り当ててる場所にはんだ付けしました。

img

橙のキャップは色合いのせいで隠ぺい力が低く透けるのでアクリル絵の具で裏面を黒くマスクしました。

img

 BACKLIGHT_ENABLE = yesにして、キーマップでのオンオフ機能とLowerとRaiseキーを押下中のみ明滅(ブレッシング)するように組んでみました。

キーマップ

 キーマップはcrkbdで作ったlike_jisの上位互換的なカタチに落ち着きました。crkbdが42キーでJJ40は48キー。crkbdの42キーがギリギリかもと思ってたので余裕があります。crkbdではレイヤ移動したり長押し、同時押しで賄ってるAdjust, Win, Tab, ., ;, :の6キーを前面に出せるだけで結構使い勝手がよくなりました。

#define KC_TBSF  LSFT_T(KC_TAB)

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [_QWERTY] = KC_LAYOUT_ortho_4x12( \
  //,-----------------------------------------------------------------------------------.
        ESC,     Q,     W,     E,     R,     T,     Y,     U,     I,     O,     P,  MINS,\
  //|------+------+------+------+------+------|------+------+------+------+------+------|
       TBSF,     A,     S,     D,     F,     G,     H,     J,     K,     L,  SCLN,  QUOT,\
  //|------+------+------+------+------+------|------+------+------+------+------+------|
       LSFT,     Z,     X,     C,     V,     B,     N,     M,  COMM,   DOT,    UP,   ENT,\
  //|------+------+------+------+------+------|------+------+------+------+------+------|
      LCTRL,  LALT,  LGUI, ADJST, LOWER,  BSPC,   SPC, RAISE,   APP,  LEFT,  DOWN,  RGHT \
  //|------+------+------+------+------+-------------+------+------+------+------+------|
  ),

  [_LOWER] = KC_LAYOUT_ortho_4x12( \
  //,-----------------------------------------------------------------------------------.
        TAB,    F1,    F2,    F3,    F4,    F5, XXXXX,  MINS,   EQL,  JYEN,  LBRC,  RBRC,\
  //|------+------+------+------+------+------|------+------+------+------+------+------|
      _____,    F6,    F7,    F8,    F9,   F10, XXXXX, XXXXX, XXXXX,  SCLN,  QUOT,  BSLS,\
  //|------+------+------+------+------+------|------+------+------+------+------+------|
      _____,   F11,   F12, XXXXX, KANJI,   ENT, XXXXX, XXXXX,  COMM,   DOT,  SLSH,    RO,\
  //|------+------+------+------+------+-------------+------+------+------+------+------|
      _____, _____, _____, _____, _____,   DEL, XXXXX, _____, _____, _____, _____, _____ \
  //|------+------+------+------+------+-------------+------+------+------+------+------|
  ),

  [_RAISE] = KC_LAYOUT_ortho_4x12( \
  //,-----------------------------------------------------------------------------------.
      _____,     1,     2,     3,     4,     5,     6,     7,     8,     9,     0,  MINS,\
  //|------+------+------+------+------+------|------+------+------+------+------+------|
      _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,     4,     5,     6,  QUOT,  PLUS,\
  //|------+------+------+------+------+------|------+------+------+------+------+------|
      _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,     0,     1,     2,     3,   DOT,  SLSH,\
  //|------+------+------+------+------+-------------+------+------+------+------+------|
      _____, _____, _____, _____, _____, XXXXX, XXXXX, _____, _____, _____, _____, _____ \
  //|------+------+------+------+------+-------------+------+------+------+------+------|
  ),

  [_ADJUST] = KC_LAYOUT_ortho_4x12( \
  //,-----------------------------------------------------------------------------------.
      XXXXX,   RST,  LRST,  KNRM,  KSWP, XXXXX, XXXXX,  WH_L,  WH_U,  HOME,  PGUP, XXXXX,\
  //|------+------+------+------+------+------|------+------+------+------+------+------|
      XXXXX,  LTOG,  LHUI,  LSAI,  LVAI,  BTOG,  BINC,  WH_R,  WH_D,   END,  PGDN, XXXXX,\
  //|------+------+------+------+------+------|------+------+------+------+------+------|
      XXXXX, LSMOD,  LHUD,  LSAD,  LVAD, XXXXX,  BDEC, XXXXX,  BTN1,  BTN2,  MS_U, XXXXX,\
  //|------+------+------+------+------+-------------+------+------+------+------+------|
      _____, _____, _____, _____, _____, XXXXX, XXXXX, _____, _____,  MS_L,  MS_D,  MS_R \
  //|------+------+------+------+------+-------------+------+------+------+------+------|
  )
};
Back to Top