キーボードについてのポエム

序言

キーボードについて、思うことを書きつらねてみる。

最初に自分が好きなキーボードの特徴について書いて、その後キー割り当てについて書き、最後にこんなの作りたいなぁという妄想を書いてみます。考えがもう少しまとまったらまたこの記事は更新すると思います。

一般的なキーボードに対する"想い"については、ゆかりさん(@eucalyn_)のブログが記事が非常に分かりやすいと思います。エネルギーを感じる非常に楽しい記事ですね。

eucalyn.hatenadiary.jp

自分の好きなキーボードについて

自分の好きなキーボードについての特徴や方針について羅列します。

  • 左右分離
    • 一体型よりも姿勢が楽です。
  • アルミなどの頑強なフレーム
    • アクリルプレートなどでサンドイッチされたキーボードは個人的に打鍵感に頑強さが足りないので、重めのずっしりとしたフレームが好きです。人によっては鉄板などをキーボードに仕込んで重くしたりしているようですね。
  • 40%キーボード
    • 通常の5行あるような60%キーボードの一番上の行や下1行の端の方は、基本的に手首を浮かせて動かさないと打ちにいけないと思います。それなら4行の40%キーボードで全入力が済むようにキー割り当てを考えた方が良いのではないかと思っています。あと単純に40%キーボードは小さくてかわいいです。机を広々と使えるのが良いところですね。
  • キーボードの中心側が高くなるような傾斜がついている。
    • 通常の平らなキーボードは人間の手がキーボードに合わせに行っていて好ましくないと思っています。理想的にはマウスを握るような手の形状が楽な姿勢だと思うのですが、それに近い形のキーボードの形状を考えると、ホームポジション時に外側よりも中心側に傾斜がついたキーボードの方が叩きやすいと思います。
  • 親指部分にキーがある。スペースキーのみが親指部分を占有していない。
    • 大文字アルファベットを打つ場合、通常のキーボードでは左手小指でシフトキーを抑えながら打ちに行きますが、それでは左手のホームポジションが崩れてしまいます。親指部分にスペースキーだけでなく、シフトキーをアサインできればこの問題は解決できます。通常のキーボードでは、左手も右手も小指を使いすぎていると思っており、このあたりのキー割り当てを親指部分で行うことができれば、キーボードの入力が楽になると思います。
  • SAプロファイルのキーキャップ
    • 背が高くてキャップの傾斜が自分の指にフィットして好きです。
  • 静音のキースイッチ
    • キースイッチに関してはまだまだ考察や試行錯誤が足りていないのですが、静音赤軸が一番しっくりきています。フィルムやあまり高いキースイッチは試していないのですが、ひとまず満足しています。
  • 可能であれば、ポインティングデバイスを右手親指部分につけたい。トラックボールが良い。
  • 無線化(Bluetooth)

現在使用しているキーボード

上記を踏まえて、自分はcorne keyboardを、アルミでできたIMK corne caseで使用しています。

アルミ製のフレームはそこそこのお値段するのですが、やはり打鍵感がしっかりしていて気に入っています。アルマイトされた青の色も綺麗で、見た目も好きです。

余談ですがマグロキーキャップや睨みキーキャップも良いですね。

Bluetooth化もやりたくてBLE Micro Proを試したのですが、macbookとの相性が悪いのか自宅の電波環境が悪いのか、あまりスムーズな通信ができなかったので諦めて有線で使用しています。

キー配列について

有名なキー配列の比較や、自分流のキー配列作成については、以下の記事がわかりやすいかと思います。

上記の記事と被る部分がほとんどかと思いますが、自分が利用しているキー配列の特徴について以下に羅列します。

  1. 通常時はQWERTY配列となるべくかけ離れないようにする。
    • 通常のQWERTY配列と異なるようなキー配列にした場合、コピペなどのショートカットキーがmacbookのキーボードなどと解離してしまって使いづらくなってしまうためです。
  2. 左手だけで数字キーを打てるようにする。
    • 数字を打つ際は、左手だけでテンキーのように打てると便利だと思います。
  3. 右手だけでvimのカーソル移動をしやすいようする。
    • 記号キーを用いたカーソル移動を右手のキーボードだけでできると便利かと思います。
  4. 記号キーについては、なるべく通常のキーボードの一番上の行の記号キーの順番のままにする。
    • 記号キーの位置は、通常のUS配列のキーボードに寄せた方が覚えやすいと思います。

実際のキー配列

↓が通常時のキー配列です。QWERTY配列で使用しています。

特別なにか変わったキー配列にはなっていないかと思いますが、特徴としては「左手親指の真ん中が長押しでSHIFTキー、短く押すとスペースキー」となる「SFTSP」というものを割り当てています。これはよく使われているものかと思いますが、やはり便利ですね。

一番下の行の6個のキーについて、全てのキーの説明を書きます。左から以下の機能を有しています。

  • キーレイヤーを押下中変更するRAISE
  • 短く押すとスペース、長く押すとシフトになるSFTSP
  • 短く押すとタブ、長く押すとcommandとなるGUITB
  • 短く押すとタブ、長く押すとLOWERとなるLOWTB
  • 短く押すとエンター、長く押すとRAISEとなるRASEN
  • CTLとALTの同時押しになるCTALT
  //,-----------------------------------------.                ,-----------------------------------------.
        GRV,     Q,     W,     E,     R,     T,                      Y,     U,     I,     O,     P,  MINS,\
  //|------+------+------+------+------+------|                |------+------+------+------+------+------|
       LALT,     A,     S,     D,     F,     G,                      H,     J,     K,     L,  SCLN,  QUOT,\
  //|------+------+------+------+------+------|                |------+------+------+------+------+------|
       LCTL,     Z,     X,     C,     V,     B,                      N,     M,  COMM,   DOT,  SLSH,  BSPC,\
  //|------+------+------+------+------+------+------|  |------+------+------+------+------+------+------|
                                  RAISE, SFTSP, GUITB,    LOWTB, RASEN, CTALT \
                              //`--------------------'  `--------------------'

↓がRAISEのキー配列です。

「左手側の一番下の行の左端のキー」もしくは「右手側の一番下の行の真ん中のキー」を押している間、このレイアウト(キー出力)となります。

左手側について、数字キーを打てるようになっています。また一番上の1行の記号は、通常のキーボードの一番上の行の記号と同じになるようになっています。「4. なるべく通常のキーボードの一番上の行の記号キーの順番のままにする。」に従って、このようにしています。

右手側について、hとjキーの列(右手の左端の2列)に、^/$/0などのvimのカーソル移動系の記号を集めています。また通常時にiとoとなるキーの列に、括弧系の記号を集めています。

  //,-----------------------------------------.                ,-----------------------------------------.
       TILD,  EXLM,    AT,  HASH,   DLR,  PERC,                   ASTR,  PLUS,  LBRC,  RBRC,  PIPE,  MINS,\
  //|------+------+------+------+------+------|                |------+------+------+------+------+------|
        GRV,     1,     2,     3,     4,     5,                   CIRC,   DLR,  LPRN,  RPRN,  AMPR,  BSLS,\
  //|------+------+------+------+------+------|                |------+------+------+------+------+------|
       LSFT,     6,     7,     8,     9,     0,                      0,   EQL,  LCBR,  RCBR,  QUES,  BSPC,\
  //|------+------+------+------+------+------+------|  |------+------+------+------+------+------+------|
                                  RAISE, SFTSP, GUITB,    LOWTB, RASEN, CTALT \
                              //`--------------------'  `--------------------'

↓がLOWERのキー配列です。

「右手側の左端のキーを長押し」している間、このレイアウト(キー出力)になります。

主にスクリーンショットやF系のキーが使いたい場合のキーを割り当てています。

もうちょっと便利にできるかと思いますが、まだどのようにするかは思案中です。

  //,-----------------------------------------.                ,-----------------------------------------.
        ESC,    F1,    F2,    F3,    F4,    F5,                  XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
  //|------+------+------+------+------+------|                |------+------+------+------+------+------|
       LALT,    F6,    F7,    F8,    F9,   F10,                  XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,\
  //|------+------+------+------+------+------|                |------+------+------+------+------+------|
       LCTL, SFGUI,     4,     5,   F11,   F12,                  XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,  BSPC,\
  //|------+------+------+------+------+------+------|  |------+------+------+------+------+------+------|
                                  RAISE, SFTSP, GUITB,    LOWTB, RASEN, CTALT \
                              //`--------------------'  `--------------------'

補足として、矢印キーは欲しいので「LALT+h/j/k/l」で矢印キーになるようにkarabinerで割り当てています。

pro micro自体で設定せず、mac側のkarabinerでこの矢印のキーバインド設定を行っているのは、macbookのキーボード自体にも矢印キーのキーバインドを反映させたいためです。

またmacbookのcaps lockキーはleft altlにして、自作キーボードのキーバインドに近づけています。

上記の設定で、基本的にはmacbookのキーボードでもcorne keyboardでも割と近いキー配列になっているため、切替がそれほどコストにはなりません。(個人談)

作りたいキーボードについて

上記のキー配列のキーボードでだいぶ満足はしているのですが、IMK corne caseの右手親指部分にトラックボールがついたものが欲しいです。

以下はその試作的ななにかです。 無限の可能性を利用して作成しており、基板設計からやりたいのですが、やる気が足りておらずここで止まってます。

日頃MX ERGOというトラックボールマウスを利用しているのですが、こいつの握り心地やボールサイズが非常にちょうどよく、この形状を真似てキーボードに埋め込みたいです。誰か作って欲しい。

おわりに

久々のブログでした。今回はここまで。

もうちょっと推敲して分かりやすい日本語にしたり、網羅性を上げた記事にしたいですが、またやる気が出た時に考えます。

自作キーボードのキット等を販売している方々や、日頃から楽しく開発されている方々のツイートには非常に刺激を受けています。ありがとうございます。

GitHub Pagesでメモサイトを作った

1週間ぶりですね、神です。

最近、線形代数を勉強していて、数式がmarkdown形式で書けてgitで管理できるブログがほしくなって作成しました。
雰囲気にはyagami_360さんのブログをみたいなのを考えていました。
ひさびさに見返してたのですが、相変わらず量と質がすごいですね...w
yagami12.hatenablog.com

以下が一応完成したページです。まだデザインを色々いじりたい場所はあるのですが、とりあえず公開。
このサイトについて | かみんちゅのメモ

以下が対応するレポジトリです。
作業結果を差分で管理して見れるのは嬉しいところですね。
GitHub - cominchu/memo-cominchu: Notes of Mathematics by cominchu

ページの作成と公開

構成的にはGitHub Pages + Jekyll + MathJax v3です。
このQiitaの指示通りに作成しました。
Github Pages で数式を ~ MathJax v3 設定のポイント - Qiita

サイトのデザインはleap day themeを使っています。
GitHub - pages-themes/leap-day: Leap day is a Jekyll theme for GitHub Pages

GitHub Pagesを公開するレポジトリは.github.ioという名前を入れないといけないかと思っていましたが、別に入れる必要はないみたいです。

課題

現状GitHub Pagesのleap day themeを使っているのですが、CSSやJavaScriptはレポジトリ外からimportする仕様になっていて、この辺を編集しようとすると少しめんどうそうです。
もう少しお洒落なページにしたかったらHugoのテンプレートを使った方がいいかもしれません。
今後、ページのデザインはHugoに変えるかもです。

あとMathJax v3というのは数式をtexライクに描画してくれるライブラリなのですが、KaTeXの方が描画が速いらしいのでこれも気が向いたら入れ替えるかも。
下のページに線形代数の勉強メモを少し書いてみたのですが、描画に1秒もかかっていないようなので、当分変更する必要はなさそうです。
線形代数[linear algebra] | かみんちゅのメモ

おわりに

サイトのデザインで気になるところがいくつかあるのですが、それより線形代数や英語に集中したいので当分はいじらない気がします。
もっと集中して精進していきたいですね。

今後こっちのブログは日記や紹介やらポエム的内容がメインになるかもです。

3D プリンタとFusion360とかの日記

お久しぶりです、神です。

特に記事にすることはないんですが、3週間に1回くらいはブログ書きたいな、ということで更新してみる。
( 前回は2週間に1回と言っていたらしい)

最近のあれこれ。

まとめ

だいたい3D プリンタで遊んでた気がする。
Docker、GitHub Actions、Poetry、Djangoあたりを使って適当なアプリ作りたいなとか妄想していた。
webアプリになるとめんどいのでもうちょっと簡易な付箋的なアプリ作ってみるか。
英語と数学もちょくちょくやっていきたい...本当はTOEICかIELTSとかを計画立てて真面目にやった方が良いんだろうがやる気が皆無

自作PCとか物欲の日記

お久しぶりです、神です。

特に記事にすることはないんですが、2週間に1回くらいはブログ書きたいな、ということで更新してみる。

最近のあれこれ。

  • 研修がほとんど終わった。まぁ何事もなく平和に終わった気がする(?)
  • 水木しげるのヒットラー読んだ。実際に戦争経験された方のこういう話は面白いですね。
  • ニーチェ入門読んだ。公理論的というか、時代に対して風刺的に必要な要素を考えて思想を作ったんだなと感じた。
  • Netflixで日英同時字幕のChrome拡張を試した。リスニングに良さそう。
    Netflixで英語学習ができるLLN(Language Learning with Netflix)が最高すぎるので使い方をご紹介 – SF Tech-Tech
  • NHKオンデマンド契約した。100分de名著とかプロフェッショナルとかねぽりんはぽりんとか適当に見とる。
  • 自作PC色々調べる。以下てきとうなまとめ。
    編集中&動くかは保証できないが、リンクの構成を考え中。https://pcjisaku.com/part_list/NWbbony8
    自作の目的は、サーバー立てて遊びたい&機械学習を手元の環境で遊べるようなのが欲しい&Kaggleをちょっと意識した。
    メモリやCPUは、テーブルコンペによってはメモリの問題でGCPじゃないと話にならなかったりするらしいのでそこそこのやつにした。
    ssdはサムスンのPCIe3.0×NVMe接続のものが早くて安定してて良いらしい
    マザボはGPUを複数枚挿せる構成にしておくことを意識してX570を選んだ。3枚も刺さないだろうし2枚挿せるB550で十分かも。3枚刺すとなると電源も厳しいし...
    GPUは2080TiかRTXじゃないとお話にならないかもしれないけど、NVLink SLIが可能な中で値段的に安い2070 superで妥協。GPU複数枚挿しとかしない人は、自作せずともfrontierで適当にセールのやつを買っちゃうのが楽だと思われる。
    初夏のBIG SALE!! | パソコンのセール情報 FRONTIER(フロンティア)公式オンラインストア〜 BTOパソコン通販・下取りもお任せください 〜
    とりあえず20万程度になりそうなのがわかったが、財布的に厳しい&優先度がさほど高くないため購入見送り。 以下のリンクがもっとも(?)参考になった。
    【2020最新版】ディープラーニング用PCを安く作る方法 | 創造の館
  • ロボット掃除機。調べたところルンバは高いので他でAnker製のものを発見。
    この値段でゴミ取りと拭き掃除ができるのは気になる。
    https://www.amazon.co.jp/gp/product/B07SM64VZZ/ref=ox_sc_act_title_1?smid=A2Q9OW6QVJC5XE&psc=1
  • 食器洗い機。安くて工事不要で人気があるものを調べたところアイリスオーヤマの物が良さそう。
    水道自体をDIYでいじるのは大変そうなので、水道の蛇口からホースを引いてタンクに水を貯めると楽そう。
    食洗機 工事不要 卓上 食洗器 食器洗い乾燥機 食器洗い洗浄機 コンパクト ISHT-5000-W アイリスオーヤマ ウエノ電器PayPayモール店 - 通販 - PayPayモール
  • キーボードぽちった。自作トラックパッドがどんな感じか楽しみ。
    Toybox keyboard (alpha版) - のぎけす屋 - BOOTH

まとめ

特に内容がないですが、今回はこんな感じで。
最近は研修がちょっと大変だったのと、仕事の配属がまだどうなるかわからないので勉強サボってしまった。
英語とか数学とかRustとかコツコツやりたいっすね。
色々細かいものを調べたりする期間だった気がする。おわり  

SQLをちょっと勉強した。

約1週間ぶりですかね、神です。
最近は研修で必要性を感じたのもありSQLをちょっと勉強してました。
用途的にはデータ分析の前処理やら集計といった感じです。
なのでとりあえずソフトウェア開発などの用途ではないです。

授業やインターンなどで軽く触ったことはあったんですが、まとまった勉強をしたことがないので、
フォロワーさんに聞いて本で勉強していくことに。
まずこの土日で「10年戦えるデータ分析入門」を読了しました。
5年前の本なのであと5年は使えるのかな?
https://www.amazon.co.jp/10%E5%B9%B4%E6%88%A6%E3%81%88%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E5%85%A5%E9%96%80-SQL%E3%82%92%E6%AD%A6%E5%99%A8%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E6%B4%BB%E7%94%A8%E6%99%82%E4%BB%A3%E3%82%92%E7%94%9F%E3%81%8D%E6%8A%9C%E3%81%8F-Informatics-IDEA-%E9%9D%92%E6%9C%A8/dp/4797376279

SQLクライアントツールは、モダンっぽくて無料で使えるTablePlusを使って読み進めていました。
tableplus.com
内容自体は非エンジニアでも読めるよう意識され書かれており、非常に平易で読みやすい&理解しやすかったです。
簡単なSQLの書き方が大体勉強できます。

またTakami Sato氏のこの動画がSQLで作業する雰囲気が掴めてよかったです。
https://www.youtube.com/watch?v=oNH_rhf32y0&t=709s

今後やることとしては、「達人に学ぶSQL徹底指南書」、「SQLアンチパターン」、オライリーのSQLの本かなという気がしています。
それかsqlzooで適当に演習こなすのが良いかもしれない。
SQLZOO

他にやりたいこともあるので、また気が向いた時にやる。

ちょっとした最近の日記

お久しぶりです。神です。
最近ツイッターの方はかみんちゅという名前に変えました。
4月からIT企業に就職で東京に住んでおります。

ここ1ヶ月くらいでやってたことを適当にまとめようかなと思います。

もうちょっとキャリアなど考えて目標を立てて勉強したいものの、しばらくは仕事で使いそうな知識メインの勉強になりそうです。
趣味的にはせっかくRustをやったのでRustでちょっとしたプロジェクトくらい書いて知識をまとめておきたいのですが先になりそう。
最近サボりがちな英語は毎日1時間でも継続的にやらないとダメですね。
数学も機械学習とPython周りの学習が落ち着いたらやっていきたい。

まぁぼちぼちやっていき

トラックボールマウスを分解してArduino Microで動かした話

キーボード Advent Calendar 2019 の2枚目、24日目の記事です。
キーボード #2 Advent Calendar 2019 - Adventar
今日はcorne cherry設計者のfoostanさんと同日に記事を公開するということで恐縮しております。
また本記事の内容で、なにかの損害を生まれたとしても責任は負いません。
今時間的余裕がないのでとりあえず公開するのですが、全然推敲できていないのであとでこの記事は修正する予定です。
申し訳ない😢

はじめに

さて、著者の自作キーボードの遍歴なのですが、自作キーボードを今年から作り始めました。
最初はmint60を作り、次に左右分離が試したくなりcorne cherryを作りました。
すると、どんどん自作キーボードの沼にハマっていき、キーボードにポインティングデバイスをつけたくなりました...
ポインティングデバイスを調べたところ、サイズや慣れからトラックボールにすることに。
最初はBlackBerryのトラックボールを購入して試したんですが、分解能がよろしくなく、他のものを調べました。
ブラックベリーのトラックボール--販売終了 - スイッチサイエンス
そこで既製品を分解して再利用することに

ELECOMのトラックボールマウスの分解

メルカリで中古のELECOMのトラックボールマウスを購入し分解しました。
分解は以下の記事が詳しいです。
マウスM-XT3DRBKの使用・分解について - HAVRMの空空活動誌
すると以下の画像のようなトラックボール部分を取り出すことができます。
f:id:nanabyo:20191224014054j:plain
裏側の光学式エンコーダ部分を見ると、以下の画像のようになってます。
f:id:nanabyo:20191224014100j:plain
エンコーダの印字を調べると、PMW3320DB-TYDUというセンサ(?)を使っているようです。
こいつからはフラットケーブルが伸びてるので、PMW3320DB-TYDUをフラットケーブル読み取り基板をarduinoに繋げてやれば読み取れそうですね。

PMW3320DB-TYDUをArduino Microで読む

データシートは調べるとすぐ出てきました。
https://www.epsglobal.com/Media-Library/EPSGlobal/Products/files/pixart/PMW3320DB-TYDU.pdf?ext=.pdf
仕様を見ると、3.4Vで動くのでArduino Microで動かせそうですね。
ただ3-wired SPIという通信方式がデフォルトのArduinoのライブラリにないので自分で実装する必要がありそうでした。
今回はソフトウェアSPIで実装しました。
調べたところ、トラックボール側基板からのフラットケーブルの6本の信号は、SCLKピン、MOTIONピン、GNDピン、VDDピン、NCSピン、SDIOピンという順番並んでいるようでした。
そこでSCLKをSCK、MOTIONをDATA3、GNDをGND、VDDを3V、NCSをDATA4、SDIOをMIという風にピンを繋げます。
繋げた画像は以下になります。
f:id:nanabyo:20191224015910j:plain
またコードは以下になります。Arduino IDEで書き込めば動くと思います。


動作例は以下みたいな感じで動くと思います。


終わりに

Arduinoを介することで、マウスの動き方を自由に変えられるのがいいですね。
製品の方を動かした時はトラックボールの動きが鈍いかなと思ったんですが、センサの検出量に定数をかけることでマウスをぬるぬる動くようにできます。
PMW3320DB-TYDUをpro microで読み取って、qmkで動かすのところまでやりたかったのですが、余裕がなくてarduino microで動かして満足しました。
(すでにやってる人がいるかも?)

ところで最近せきごんさんのKugel-1を購入して触ってるんですが、やはりキーボードにポインティングデバイスがついてるのはいいですね。
Kugel-1 - のぎけす屋 - BOOTH
面白いキットをありがとうございます。
BLE Pro Microも初めて触ったんですが、電池もキーボードに載せることでケーブルレスにできるのは非常にいいですね
ただちょっと自分の組み立てが悪いのか、センサの精度の問題なのかときどき反応が悪くなって、小さいボールの動きをセンサで読み取るのが難しいのかな?とか思ってます。

修論が終わったら、PMW3320DB-TYDUで早く自作キーボードの設計がしたいです...
Corne Cherryの右手親指部分に今回のボールが来るようなのを作りたいと思ってます

最後に本記事はCorne Cherry+IMK Corne Caseで執筆されました。 f:id:nanabyo:20191224020105j:plain