Upgrade to Pro — share decks privately, control downloads, hide ads and more …

なぜ私はキーボードを作るのか_builderscon2018

 なぜ私はキーボードを作るのか_builderscon2018

j-o-lantern0422

September 07, 2018
Tweet

Other Decks in Technology

Transcript

  1. 話すこと • 自作キーボードとは何か • 私がキーボードを自作するに至ったわけ • パーツ選定の楽しさ • レイヤーやキーマップについて •

    キーボード自作におけるやらかし • 自分だけの自作キーボードケースを得る方法 • どうしていくつもキーボードを自作するのか • より深みにハマる、自作キーボード沼
  2. キーボード履歴書 2010年ぐらい(学生):PCの付属品その場にあった間に合わせのキーボード 2011〜12年(学生):Thinkpad X60 2015年(社会人3年目):Happy Hacking Keyboard Lite2   メカニカルキーボード(赤軸)

    2017年前半(社会人5年目):Happy Hacking Keyboard Professional JP 2017年後半(社会人5年目):Happy Hacking Keyboard Professional JPと               Lite2の2台を両手で使う 2018年:キーボードを自作し始める
  3. 私がキーボードを自作するまで • 肩こりが酷い(HHKB時代) • 知ったきっかけは社内で盛り上がっていた HelixのGroup Buy(GB) ◦ Group Buy:クラウドファンディングに近く、

    共同購入者を集めてPCBなどの発注を一括でやること • 自分が知ったときにはすでにGBの募集期間が 終わっていた • やっぱり自作は怖いな…と思っていた
  4. HHKB2台使いの特徴 • メリット ◦ 何も自作しなくていい ◦ 日本語配列のキーキャップが手に入る ◦ 両手にすべてのキーがあるので最悪片手で全部のキーがいじれる ◦

    片側(利き手側がおすすめ)をLite2にすると 低コスト+USBポートが1つ節約できる • デメリット ◦ でかい ◦ Karabiner-elementsがないと無力 ▪ 修飾キーが左右で同期してくれないため
  5. 自作に至るモチベーション • キーボードが机の殆どを占領していて邪魔… • 1枚で使うより快適とは言え、最適な置き方をするには 取り回しづらかった • 周りのHelixを楽しみにしている空気感が自作欲を高めた ◦ 楽しそうなお祭り感(後のHelix祭り)

    ◦ Helixかっこいい ◦ 自分で考える最強のキーマップに惹かれる • キーキャップを選べるの凄く楽しそう コンパクトな感じがする 自分にとって最適なキーマップを選べる ワイワイ楽しそうだし、自作してみよう!
  6. レイヤーとキーマップ [_QWERTY] = KEYMAP( \ KC_ESC, KC_Q, KC_W, KC_E, KC_R,

    KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JA_AT\ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN,JP_COLN \ KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, JP_SCLN, JP_COLN\ KC_LSFT, KC_LGUI, KC_LALT,LOWER , KC_KANA ,KC_SPC, KC_ENT, KC_EISU, RAISE,KC_BSPC, JP_CIRC, JP_YEN \ ),
  7. 自作キーボードの紹介 Helix • 片手6×5+2 ◦ 片手32キー、合計64キー • 親指に割当て出来るキーがLet's Splitと 比較して多くErgoDox等に近い

    • 遊舎工房さんのサイトが充実していて 日本語マニュアルもあるので 初心者でも組みやすい
  8. 自作キーボードのケースについて • キットに付属しているケース ◦ HelixやErgo 42など ◦ PCBの作者の方が監修しているので精度が高い • 自分で作る

    ◦ スキルと機材のある人は3Dプリンタで自作 ◦ 私:Githubなどに上がっているデータを使ってレーザーカッターで   実装 ▪ 材料は東急ハンズで調達 ▪ レーザプリンタを持っていないのでFabCafe@渋谷で依頼
  9. ケース置き去り事件 サンドイッチタイプのキーボードケースはケースをキースイッチで挟むようにして付ける 必要がある 1. PCBとダイオード 2. ケース 3. キースイッチ 4.

    PCB の順番で挟まっている必要がある PCB ケース キースイッチをProMicroより先につける事を意識しすぎてケースのことを忘れていた
  10. ケース置き去り事件(結末) • ProMicroのような小さいパーツから半田を吸うのは 大変 • ハンダ吸い取り器とハンダ吸い取り線を酷使しても 吸いきれなかった • 順番はほんとにちゃんと確認しよう! •

    深夜に眠気に耐えながらはんだ付けするのはやめ よう! • 先のProMicroバラバラ事件の時点で新しく PCBを発 注していたので諦めた • Grab 2 switches and your top plate (That's 2 switches for each side)とちゃんと書いてあった
  11. 様々な事件を経て • 手順を最初に最後まで読んでから作業をするべき ◦ 手順通りに進めれば基本的にはOK ◦ 全体像を把握していると間違えそうなときに気づける ◦ 足りない材料や欲しくなりそうな機材がわかる •

    はんだごては絶対に温度調整ができるものにするべき ◦ PCB焼身事件を忘れるな • ProMicroはコンスルーで取り付けよう ◦ 1組100円しないのでPCBを犠牲にするより遥かにマシ ◦ ProMicroバラバラ事件を忘れるな ◦ モゲマイクロ対策にもなる
  12. フットペダルをつけよう • 足で操作すれば指は酷使されない(あたりまえ) • 指でレイヤーを切り替えるとどうなるか ◦ レイヤー切り替えキーを押しながら他のキーを押そうとするとどうしても手が 無理な形になることがある ◦ 結果的にレイヤー上で使えるキーの数が制限される

    ▪ 指を同時に置きづらいキーはレイヤー切り替えに使いづらい • 足で切り替えるメリット ◦ 手をキーボードから離してもレイヤーは切り替えられる ◦ レイヤーを切り替えてから複数同時にキーを押す操作も簡単
  13. Helixの元々のキーマップ(rev2.h) #define KEYMAP( \ L00, L01, L02, L03, L04, L05,

    R00, R01, R02, R03, R04, R05, \ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35, \ L40, L41, L42, L43, L44, L45, L46, R46, R40, R41, R42, R43, R44, R45 \ ) \ { \ { L00, L01, L02, L03, L04, L05, KC_NO }, \ { L10, L11, L12, L13, L14, L15, KC_NO }, \ { L20, L21, L22, L23, L24, L25, KC_NO }, \ { L30, L31, L32, L33, L34, L35, L36 }, \ { L40, L41, L42, L43, L44, L45, L46 }, \ { R05, R04, R03, R02, R01, R00, KC_NO }, \ { R15, R14, R13, R12, R11, R10, KC_NO }, \ { R25, R24, R23, R22, R21, R20, KC_NO }, \ { R35, R34, R33, R32, R31, R30, R36 }, \ { R45, R44, R43, R42, R41, R40, R46 } \ }
  14. #define KEYMAP( \ L00, L01, L02, L03, L04, L05, R00,

    R01, R02, R03, R04, R05, R06, \ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \ L30, L31, L32, L33, L34, L35, L36, R36, R30, R31, R32, R33, R34, R35, \ L40, L41, L42, L43, L44, L45, L46, R46, R40, R41, R42, R43, R44, R45 \ ) \ { \ { L00, L01, L02, L03, L04, L05, KC_NO }, \ { L10, L11, L12, L13, L14, L15, KC_NO }, \ { L20, L21, L22, L23, L24, L25, KC_NO }, \ { L30, L31, L32, L33, L34, L35, L36 }, \ { L40, L41, L42, L43, L44, L45, L46 }, \ { R06, R05, R04, R03, R02, R01, R00 }, \ { R15, R14, R13, R12, R11, R10, KC_NO }, \ { R25, R24, R23, R22, R21, R20, KC_NO }, \ { R35, R34, R33, R32, R31, R30, R36 }, \ { R45, R44, R43, R42, R41, R40, R46 } \ } キーマップ を対応させる(rev2.h)
  15. キーマップを対応させる(keymap.c) [_QWERTY] = KEYMAP( \ KC_ESC, KC_1, KC_2, KC_3, KC_4,

    KC_5, KC_LSFT, KC_6, KC_7, KC_8, KC_9, KC_0, JP_MINS, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, JP_AT, \ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, JP_SCLN, JP_COLN, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, JP_LBRC, JP_RBRC, KC_N, KC_M, JP_COMM, JP_DOT, JP_SLSH, JP_UNDS, \ ADJUST, KC_LGUI, KC_LALT, LOWER, EISU, KC_SPC, KC_ENT, KC_ENT, KC_SPC, KANA, KC_BSPC, KC_BSPC, JP_CIRC, RAISE \ ),
  16. ProMicroとキーマップの関係 #if HELIX_ROWS == 4 #define MATRIX_ROWS 8 #define MATRIX_ROW_PINS

    { D4, C6, D7, E6 } #else #define MATRIX_ROWS 10 #define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 } #endif // wiring of each half #define MATRIX_COLS 7 #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }