Manta60を組み立てた話

世の自キ購入者が書くと言われるビルドログというものを, 自分も書いてみようと思ったのだが, 書いてみると組立に関する詳細は省かれていた. 「じゃあビルドログじゃなくない???」という心の声に従い, こんなタイトルにしている.

目次

動機

興味に加えて少々の肩こり改善欲求から, 分割型キーボードを使ってみたいと思うようになった. それまでは英語配列REALFORCE R2 PFU Limited Edition を使っていたが, これを右側に置き, 加えて左側に同じく英語配列HHKB Professional2 を配置する, 富豪的分割型キーボード*1をしばらく試した. 結果,

  • 肩は確かに改善した気がする,
  • HHKB は (借り物ゆえ詳細はわからないが) 一部バネを入れ替える改造を施してあるのも影響し, 左右の打鍵感の違いが気になる.
  • 左右分割による混乱は特になかった.

という感想を得て, 専用の分割型キーボードが欲しいと思うに至った.

選定

Booth遊舎工房自作キーボードカタログ 2020 片手*2に, 次の条件に合致するキーボードを探した.

  • ANSI 配列のキーキャップが使える: どうせ中身は ANSI に近くするのでデフォルトのキーマップはどうでもよいが, ISO エンター等キーキャップの入手性・流用性が悪いのは辛い.
  • 分割型である: そもそも肩こり改善という目標であった. 一体型でも, キーがハの字に配置されていて, 姿勢の改善が期待されそうなものもあるが, 実機を触りに行けない昨今, 分割式のほうが無難だと考えた.
  • MX 互換: ロープロファイルは趣味じゃ無さそう. 触ってみないとわからないが実機を以下略.
  • ProMicro, キースイッチ共に ソケット に対応している: Pro Micro に関しては壊さない自信がないため. スイッチに関しては, そもそも自分の好みのスイッチが何かまだわかっていないため. コントロールキーやなんかのみ入れ替えるとかもアリだし. 実機を以下略.
  • 非 Row Staggered である: せっかくだし, ちょっと新しい世界を試してみたくない???
  • 60% 以上のキー数: 持ち運ぶわけではないし, プログラムを書くので, 記号にレイヤーキーが必要になるのは避けたいと思った.
  • キットを販売している: PCB やアクリル板の図面を使って注文するのは, 自分にはハードルが高かった. また, 現在販売しておらず, 図面も公開されていないものは, そもそも入手不可能である.

また, 自分はソフトウェア屋なので, ソフトウェア的なハードルの高さ(自分好みにするのにファームウェアの書き換えが必要等)よりも, ハードウェア的なハードルの高さ(はんだ付け難易度が高い, ビルドガイドの行間が広い, 失敗の取り返しがつきにくい等)が低いことも重視した.

もろもろ考慮した結果, Manta60 を購入した. このキーボードは Ortholinear で親指キーが 4-5 個と多く, 人差し指で取るキーが3列ある. また, 小指の付け根で押すキー, Arabica37 で言う所の pinkey がついており, これが中々気に入った. スイッチは, 静かなのが好みなのと, タクタイルを試してみたく, Gateron Silent Brown にした.

組立

ビルドガイド に従い, 粛々と組立てるのみ. 初心者の感想・注意点として,

  • はんだ付けは難しい. 特にキーのソケットが難しい. 他のビルドガイドなどにあるコツを見たり, ひと通りはんだ付けした後はソケットと ProMicro のピンで導通を確認したほうがよい.
  • キースイッチとトップ・ミドルプレートの位置関係が, ビルドガイドを読み飛ばしていると一瞬わからない. ビルドガイドにある通り, トッププレートにスイッチを差込み, その後ミドルプレートを付ける. トッププレートとミドルプレートの間はスイッチが支えている仕組み.
  • 次に行う改造のため, 四箇所の optional なスペーサーはいずれも付けなかった.
  • 光るのは好みではない*3ので, LED は付けなかった.

改造

光るのは好みではないが, 何かが表示されたりするのは好きなので, OLED を取付けることにした. ビルドガイドには書いていない改造なので, 手法を記しておくが, 当然自己責任で.

注意事項

  • 自分はハードウェアも低レイヤーも素人に毛が生えていないレベルなので, これを信用しすぎないでほしい.
  • これは自分が得た基盤での話であり, 基盤のロット/マイナーチェンジで変わる可能性がある.
  • 当然デフォルトの Manta60 用のファームウェアは OLED モジュールに対応していないので, 自分で書き換える必要がある.
  • LED を付けていないため, LED と共存させることに不具合があるかは知らない. LED と (GND/VCCを除き) 同じピンを使用していなさそうだし大丈夫そうな気もしなくはないが, ファームウェアの方でサイズが大きすぎるなどの不都合があるかもしれない.
  • 上にも書いたが, (微妙に想定されていそうな気はするものの) ビルドガイドに書いてあるようなものではない. 「最悪壊れても仕方ない」の精神で. どこかで助けを求めたら親切な誰かが助けてくれるかもしれないが, それを前提にして挑戦するのはナンセンスだと, 個人的には思う.

使ったものは以下の通り:

  • SSD 1306 OLED (ピンソケットは不使用)
  • 適当な被覆線: OLED と基盤の接続のため.
  • 薄手で非導電性なスポンジ: OLED と ProMicro を絶縁しつつ保持するため.
  • 組立時に余らせた, トップ・ボトムプレート間用のスペーサー: ProMicro の上にスペースを取るため.
  • M2 のワッシャーかナット: ↑では微妙にスペースが足りないため. スポンジの厚さに依存して必要な厚さは変わる.

さて, (自分のバージョンには) ミドルプレート上 ProMicro と TRRS ジャックの間に, GND, SDA, BAT, SCL, VCC とシルクのある 5 つの端子が出ている. この 5 つの端子は, どうやら将来的に, BLE Micro を使うのだろうか, 電池基盤と繋げるための伏線らしいが, OLED モジュールに必要なピンと導通しているので, これを用いる. OLED モジュールと ProMicro を I^ 2 C で接続する際用いるのは GND, VCC の他に SCL (ProMicro の 3) と SDA (ProMicro の 2) であるが *4, まずはこれらが 5 つの端子のどこに導通しているかを確かめる. シルクのミスか, 配線のミスか, ファームウェアで役割を変える機能でもあるのか, 及び知らぬ理由があるのかはわからないが, 自分の基盤では, SCL と SDA が, シルクの印字と逆の導通をしていた.

さて, OLED の 4 つの端子に端を剥いた被覆線をはんだ付けし, 逆側を, シルクの印字に惑わされないよう, ミドルプレートにはんだ付けする.

あとは, ProMicro の上に適当に切ったスポンジ, その上に OLED モジュールを載せ, 長い方のスペーサーを使ってアクリルカバーを取付ける. 但し, ネジを強く締めすぎると, OLED モジュールや ProMicro の破損に繋がるため, 緩めで放置, スペーサーとミドルプレートの間にワッシャーやナットを挟むなど, 適宜工夫する. (自分は OLED 片方割りました……)

キーマップの書き換え

キーマップは自分に都合が良いように書き換えている*5. とりあえず, なるべくANSI配列と相互運用して違和感が少ないようにした. キーマップはマスター側のみの書込みで反映できるし, 気付いたことがあれば気軽に随時書き換える予定.

  • 矢印キーをデフォルトレイヤーから出し, 代わりに記号をデフォルトレイヤーに戻した.
  • G の右と H の左は, 矢印を削って記号を戻したため, ほぼ全く使っていない……
  • Lower 時, 右の方の記号の並び順を全部復活させるようにした. あまり使っていない.
  • F1〜F12 の配置を, 横並びとブロック並び両方入れるようにした.
  • 親指キーの配置を模索中. 特に 右 Ctrl と右 Alt が勿体無い気がしている.
  • 真ん中の列, つまり人差し指の三列目は, 流石にちょっと遠い……
  • Lower + 真ん中の列で, 逆の手の端の列を引っ張り込むようにしてみた. 例えば, Lower+(tの右) = y. 元々変則的に打っていたこともあるし, 右手でトラックボールを触りながら左手で Ctrl+y を取ることが多かったので, 便利.
  • Ctrl+H / Ctrl+D を BackSpace / Delete 代わりによく使っていたので, Lower + H/D に入れてみた. ブラウザなどでも使えて快適.
  • 左/右の Alt をタップすると英/日本語入力になるように IM で設定していたが, これをファームウェア側に持ち込んだ.
  • Esc と `/~ をどうするかで迷う. Vimmer だが Esc ではなく C-[ 派であった. 現状だと Esc の方が取りやすく, そちらで取ってしまう…… 一方 ` や ~ もよく使うので, 位置が変わったのがまだ気になる. とりあえず KC_GESC 試してみてるけれど, みんなどうしているんだろう.

所感と抱負

  • 現状満足してはいるが, 「次は」などと考えてしまうあたり, やはり沼なのかもしれない.
  • 次は Column Staggered, もしくは Alice 配列 を試してみたい. Alice 配列の分割型キーボードとかあるんだろうか.
  • 別のプロファイルのキーキャップも試してみたい. (今は SA プロファイル)
  • 静音性には満足している.
  • キーの感触の好みだけで言えば, それまで使っていた RealForce を超えられていない.
  • 特にキースイッチの擦れる感じがちょっと好きじゃない. Lube るか, 別のスイッチも試してみたい. リニアなら少しマシだったりするだろうか.
  • まだ 60% から脱却できそうな気がしていない. Shift+数字キー で出る記号を直接 Lower+何か に割当てるなどすれば行けるかも? 何なら数字より記号の方が大事だし, ここだけ Shift を逆転させてもいいかもしれない.
  • 相変わらず y を左右両方で取りたいが, Column Staggered だとこれが出来るものは少なさそうなので, なんとかしたい.
  • pinkey が便利過ぎる. これが無いキーボードに慣れるのが大変な気がする.
  • 左右のシフト同時押しで Caps Lock されるように set-x11-keymap で設定しているが, これもファームウェア側に持ち込みたい. しかしそもそも片手で数えるほどしか使ったことが無い気がする.
  • ブラウジング用のレイヤーなどを入れてもいいかもしれない. また, レイヤーをロックするキーを導入してもいいかもしれない.
  • ところで OLED 付けたはいいものの, 表示したいものが特に無かった. なので, レイヤーに押し込めるのすら躊躇する機能を突っ込むコマンドモード的なのを実装してみた. 特定のキーを押すと選択肢が OLED 上に表示され, そこから左右キーで選択してエンターで実行すると, 例えばファームウェアのバージョンを吐いたりできる.

この記事は Manta60 + Gateron Silent Brown で書かれました.

*1:標準的な呼称を知らないので適当を言っている

*2:正確に言うならば片モニタ

*3:同志には, 充電器やケーブルの光を防ぐのに 黒いマステ がおすすめ.

*4:参考文献: 自作キーボード設計入門2

*5:ファームウェアここ

template/snippet plugin for Battle Programmer

これは, Vim Advent Calendar 2012 74日目の記事です.
昨日の記事は, [twitter:@manga_osyo] さんの neobundle.vim の遅延処理で Vim の起動を高速化する でした.
僕もちょうど .vimrc を掃除しているので, ついでに高速化もしてみようと思います.


さて, 何番煎じかという感じですが, プラグインを作ったので, この記事ではその紹介をしたいと思います.

続きを読む

vimのテンプレート管理ぷらぎん達

ここでは, neosnippet, snipMate.vim等, 超短いコード断片向けな物は除いて扱う.
更新が盛んな物もあったり, 新規に作る人も多そうなので, 情報が古い可能性や, 漏れている可能性が多分にある.
そのうちレビューしてみたい.

これら以外に知っている物があったり, これはこういう所がいいとかあれば, コメントして頂けると嬉しいです.

2013/02/09 追記: Unite neobundle/search で template とかすると(死)

autocmd

pluginなんて使わず, vimrcで適当に設定する方法も.
autocmd BufNewFile でググろう.

unite.vim

俺は全て unite.vim で済ませるんだ! 派とか.

nnoremap <silent> [unite]l :<C-u>execute
      \ "Unite file:~/.vim/template/" . expand("%:e").
      \ " -default-action=insert_file"<CR>

let insert_file = {
      \ 'is_selectable' : 1,
      \ }

function! insert_file.func(candidates)
  for l:candidate in a:candidates
    silent exe "r " . l:candidate.action__path
  endfor
endfunction
call unite#custom_action('file', 'insert_file', insert_file)
unlet insert_file

vim-template

ここを見るとよい.
ここでも触れられている.
自分でカスタマイズしてね系.

vimtemplate

これ

qtmplsel.vim

これ.
ここに説明あり.

sonictemplate-vim

ここを見るとよい.
こっちに unite source が追加された版があるが, 元バージョンが古い.
使ってみた系の記事が結構あるので, ググるとよい.

templates.vim

これ

tSkeleton

これ

template file loader

これ

vim-template

これ

ztemplate

これ

bwTemplate

これ

RGLPKの使い方

線形計画法ライブラリのGLPKをrubyから使えるRglpkなる物があったが, ドキュメントが全然見当たらなかったので, 使い方をメモしておこうかと.
なんか間違ってたら教えてくれると嬉しいです.

続きを読む

Googleと正規表現

正規表現使ってググれればいいのにと何度思った事だろうか…
正規表現だけで検索するってのは厳しいのかもしれないけれど、せめて通常の検索結果の絞り込みを正規表現で出来るようにするとかしてくれてもいいと思うの。

無ければ作れという言葉に従おうかと思ったものの、java scriptとか動的html生成なんて知らんし、webページとして公開するにも鯖なんて持ってないし、まぁ自分で使えればいいやという感じの物になった。
gem install hpricotが必要

#!ruby -Ku
require 'rubygems'
require 'hpricot'
require 'open-uri'

keyWord = URI.escape("ほげ")
keyRegexp = Regexp.new(".げら")
mainDoc = Hpricot(open("http://www.google.co.jp/search?num=1&hl=ja&q="+keyWord+"&ie=utf-8&oe=utf-8"))
results = []
0.step(500, 100) do |startIndex|
    page = Hpricot(open("http://www.google.co.jp/search?num=100&hl=ja&safe=off&start="+startIndex.to_s+"&q="+keyWord+"&ie=utf-8&oe=utf-8"))

    (page/"li.g").each do |result|
        next if result.at("div.s").class == NilClass
        results << result if keyRegexp =~ (result.at("div.s").inner_html).gsub(/<\/?em>/,"")
    end
end

mainDoc.at("li.g").swap(Hpricot::Elements[*results].to_html)
puts mainDoc.to_html

keyWordで600件ほどググったソース持ってきて、検索結果のサイト要約を一つずつkeyRegexpと一致するか確かめてる感じ。
つまり、要約の所に出てこないワードで絞り込むのは無理っていう。
出力を適当にリダイレクトしてブラウザで開くと、javascriptだか相対リンクだか何かのせいで多少変だけど、それっぽい検索結果が見られる。

参考:
http://tam.qmix.org/wiki/Hpricot.html
RubyでGoogle検索順位を調べる(ちょっと修正) - K's Garage Blog

TeXメモ

TeXを使えるようになろうと思いつつ,インスコすらしていなかったので,とりあえずインストールする所から初めてみた.
が,こういうのは大抵OS入れ替える時とかに忘れるので,何をやったかメモっておく.

ここインストーラを使わせて戴く.
こっちのページからpluginも同時にDLして,纏めてインストールしてもらう.
Program Filesが空白入りで,インストール先に指定出来ずイライラする.空白爆発しろ.

とりあえずこれだけで動いているけれど,何かしら追加で入れた時に忘れるハズなので備忘的に書いておこうと思う.
という事で,何かした時にここにメモる.
多分何もしないけど.

参考にしている所:
作ったもの,書いたもの,他
TeX Wiki
http://keizai.xrea.jp/latex/
http://mailsrv.nara-edu.ac.jp/~asait/
http://next1.cc.it-hiroshima.ac.jp/MULTIMEDIA/HotEqnAll/latex.html
ここまで2011/06/25


追記
ここのTeXShell2入れた.変換らくちんでおいしい.ゆとりばんざい.

このブログについて。

前のアカウントを変えて、残しておきたい記事だけ持ってきた感じです。
この記事以前の物は、前のアカウントからの移行物。
TopCoderとかCodeForcesとか、プロコン関連のアカウントとアカウント名を揃えておきたかった感じです。

おそらくプロコン関連はTopCoder部とかで書かせて戴くと思います。