Pythonだけでキーボードを作る

これはキーボード #1 Advent Calendar 2022の20日目の記事です。 昨日の記事は74thさんのコンスルーピンヘッダの代わりを探してでした。 こんにちは。hsgwです。 毎年、アドベントカレンダーの記事では役に立つtipsを投稿することにしています。 今年はkicadや3DCADを使わずにPythonだけでキーボードを設計する方法を紹介します。 TL;DR ※ 基板やケース、ファームウェアのデータは無保証です。間違いがあったら教えてください。 マイコンはXIAO RP2040 ファームウェアだけでなく、回路図(ネットリスト)や基板、ケースを全てPythonで設計する 設計の流れを主に紹介する (細かいコードについてはドキュメントとソースを読んで下さい) 設計したコードをjupyter notebook(google colaboratory)で実行できる形で解説する 主に使用するライブラリは以下の通り 目的 ライブラリ 回路図 skidl 基板 pcbflow (folkしたリポジトリ) ケース cadquery ファームウェア KMK Firmware, circuitpython なぜPythonでキーボードを作るのか Pythonはプログラミング言語のひとつです。実用的なプログラムを簡単に読みやすく書くことを重視して作られています。 もちろんそれだけでなく、ありとあらゆるライブラリによって拡張され、複雑な計算や画像認識、機械学習といったコンピュータらしい振る舞いだけでなく、ゲームでも音楽でも絵でもなんでも作れます。 AIと名がつくものには大抵使われていますし、最近巷を騒がしている画像生成AIもPythonで動いています。 例外にもれず、回路図を書くためのライブラリや基板を配線するライブラリ、3Dモデルを作るライブラリもありますし、実際にマイコンを動かすのもPythonで書かれたライブラリです。 Pythonに限らずコードを書くことで何かを設計する利点は、設計が文字ベースの情報であることです。 … Read More

【2021年12月最新版】QMK Firmwareにキーボードを追加する方法

この記事はキーボード #1 Advent Calendar 2021 18日目の記事です。昨日の記事は cyamyさんのFDM 3D プリンタとキーボード設計でした。 こんにちは。hsgwです。毎年、キーボードのアドベントカレンダーでは開発初心者に役立つ記事を書くことを心がけています。今年はQMK Firmwareにキーボードを追加して最低限の設定をしてキーボードを動かすまでを解説します。 環境の準備 QMK Firmwareをコンパイルする環境を整えます。QMK公式ドキュメントのQMK環境の構築に従ってインストールしてください。この記事ではwindows11上のQMK MSYSを使いますが、他の環境でも同じように行えると思います。 どれかひとつのキーボードがコンパイルできてバイナリファイル(hexやbin)が出来ていることまで確認してください。 QMK Firmwareを最新版にアップデートする 1から環境を整えた場合は最新のものをダウンロードしているはずですが、そうでない場合、特に理由がなければ最新版のQMK Firmwareで作業をします。以下のコマンドでgitを使って最新のものをダウンロードします。 ダウンロード後にもどれかのキーボードをコンパイルしてエラーのないことを確認してください。 もし、エラーが出たら一度以下のコマンドでファイルの状況を調べてみます。 git上のサブモジュール(lib/以下のファイル)で変更があった場合、このようなログが出力されます。以下のコマンドで更新しておきます。 新しいブランチを作る gitのお作法の話になるので詳しくは検索してください。masterから派生したブランチを作ります。ブランチの名前は追加するキーボードとあわせておきます。 この記事では、git branch new_kbdとしてnew_kbdというブランチを作成します。そのあと、以下のコマンドで新しいブランチに移動し、現在のブランチ名を確認します。 QMK CLIを使ってキーボードのテンプレートを追加する 便利なQMK CLIを使ってkeyboards/以下にキーボードの定義を追加します。テンプレートがコピーされるだけなので各種設定は書き換えないといけません。Keyboard Typeはとりあえず1でAVRを選んでおいて、あとから書き換えるのが無難です。Your real nameも本名にこだわる必要はないです。 もし、エラーが出てしまう場合、QMK CLIをアップデートする必要があるかもしれません。 これで、keyboards/内に追加したいキーボードのディレクトリが作られ、ファイルがコピーされました。 keyboards/を編集してファームウェアを作る 追加されたファイルをvscodeやお気に入りのエディタで開いて編集します。簡易的に最低限キーボードとして動くところまでを解説します。詳しくは公式ドキュメントのキーボードガイドラインや他の方が書いている記事、 … Read More

びあっこメソッドではない撮影方法

この記事はKEEB_PD Advent Calendar 11日目の記事です。 昨日の記事はtechmechさんのキーボードに個性を出すひと手間についてでした。 こんにちは。hsgwです。keeb_pd未勝利です。よろしくお願いします。 ディスプレイを面光源として使うびあっこメソッド(びあっこさんに教えてもらったので勝手にそう読んでいます)について取り上げる予定だったのですが、その手法を応用した写真で記事を書く方が多かったので、おしゃれで凝った写真の多いKEEB_PDらしくない俯瞰で影少ない商品画像のような写真を撮るちょっとしたテクニックを紹介します。 撮影したい写真の条件 冒頭にある写真の通りですが私が撮りたいのは以下の感じ 俯瞰 影が少ない 全体にピントがあっている 歪みが少ない 色が(比較的)正しい 余計なものが写っていない 駄目そうな写真例 机の上で部屋の照明を使って適当に撮影してみました。色が照明の色に引っ張られておかしい、キーキャップやUSBコネクタが光の反射で白飛びしてしまっている、大きな影がかぶってしまっている、見せたい部品部分にピントがあっていない、レンズの影響で歪んでしまっている、俯瞰でない、などなどたくさんおかしな点があります。現像ソフトを使って補正するにも限度があるのでなるべく補正の要らないクリーンな写真を意図に沿った形で撮影しないといけません。 必要そうな機材 これらの問題を解決していきましょう。多くの場合は適切な機材を調達することで解決します。 ※ 紹介している機材は良いものなんだと思いますが買ったことも触ったこともないようなものばかりです。おすすめしているわけではないです。 カメラとレンズ 歪みが少なく正しい色で撮影できるカメラとレンズが必要です。こればっかりはどうしようもないです。スマホでも良いのですがレンズが広角である都合上歪みがどうしても出てしまいがちです。35mm換算100mm程度のレンズとカメラを用意しましょう。 ライティング(照明) 影を作らず金属や光沢部で反射の少ないライティングのための照明が必要です。写真撮影で一番難しく奥が深い部分だと感じています。もちろんたくさんの機材が必要で、大きな面光源になるライトを複数使ったり、レフ板を用意したり、撮影ボックスを使ったり費用が嵩みます。また、その設置のためにも広い大きな部屋で出来れば他の光源や余計な反射がないスタジオだとより良いかもしれません。詳しくはgoogleの”商品撮影 ライティング“にあるような記事や動画を参考にしてみてください。 背景とレイアウト カメラを固定してレイアウトを決めるために三脚やアームを使用します。正しい俯瞰で安定してカメラを設置するにはスライディングアームや専用のリグを用意します。背景はいい感じの机や背景紙、撮影ボックスがあれば良さそうです。 現像ソフト Adobeの力をかりよう。 まとめ ここまですべて揃えると100万円+スタジオを建てるのに5000万円程度かかります 私の撮影環境 カメラ カメラ本体はOM-D E-M1 Mark II、レンズは M.ZUIKO DIGITAL … Read More

Lainについて

こんばんは。lainを開発したhsgwです。初回試作時から2年ほどお待たせしてしまい申し訳ない限りですが、やっとグループバイ(GB)を開始することが出来ました。待っていてくれた方々、サポートしてくださった皆様に大変感謝しています。 GBをはじめるにあたって、lainが初めての自作キーボードな方への説明も含めて解説してみようと思います。 Lainって? Lainはいわゆる自作キーボードのためのキットです。ばらばらの状態で届き、スイッチをはめ込んで組み立ててUSBキーボードを作ります。スイッチとキーキャップは付属していないので、こだわりのスイッチと最高のキーキャップを選んで下さい。 そして、#lainttlにのっとってライセンスされたserial experiments lainの二次創作ハードウェアです。(ハードウェアなのでどこかの会社かと勘違いされることが多いですが、個人開発です)世界観に沿ったエッジのあるデザインが出来たと自負しています。職場や人目のある場所でも使いやすいように 普段見る上面からのデザインは控えめにしてあります。こだわりポイントは右端にある玲音のおさげです! 試作バージョンを何度か販売しており、それを購入してくださった方がレビューや写真を公開してくれていますのでご参考にどうぞ。自作キーボード作ってみた Lain編 | Lain : Custom Mechanical Keyboard Build (daihuku keyboardさん)https://www.youtube.com/watch?v=KStpT0OopyQTwitterにあがっている写真などhttps://twitter.com/search?q=lain%20%23keeb_pd&src=typed_query&f=image キーレイアウトについて キーの物理的な配置、キーレイアウトについてお話します。Lainは、aliceレイアウトのエルゴノミック40%キーボードです、とは言ってもわかりにくいので順番に説明します。 aliceレイアウトとは、TGR Aliceというキーボードが広めた60%キーボードを真ん中で折ったレイアウトです。特徴的な見た目が目を引くレイアウトですが、見た目よりもずっと普段のキーボードと似たような使用感で打鍵出来ます。真ん中の部分が傾いていることで手首の負担を減らしていますが、その反面、”6″や”Y”といった人によって打鍵する手が違うキーを押しづらく慣れるまでストレスになりがちです。また、キーボード上のスペース効率を考えた場合、横に長いキーを多用するのは損です。 似たようなレイアウトの市販品として、microsoft ergonomic keyboardがあり、このキーボードの古いモデルがPS版のlainに登場しています。(参考) 40%キーボードは、普通のフルキーボードからテンキー・矢印キー周り・ファンクションキー・数字キーをなくしたレイアウトです。存在しないキーはレイヤーキー(Fnキーとも呼ばれます)との同時押しで入力することになります。滅多に使用しないPauseキーなどのクラスタやテンキーを物理的に削除することでコンパクトにしています。打鍵時に指を伸ばさないと入力できないキーをなくし、ホームポジションから近いキーとレイヤーキーの同時押しにすることで疲労を軽減しますが、一般的な長さのスペースバーを持つキーボードだとレイヤーキーが小指での打鍵になり、小指を酷使することになりかねません。キーマップの書き換えに制限のあるキーボードだとよく使うキーが良い場所になくストレスになります。 画像のレイアウトの例だと、Meta+Qで’1’、Meta+Wで’2’、Fn+Qで’F1’、Fn+BSで’Delete’あたりがよく使われるキーマップです。 Lainはこの2つを組み合わせることで、とことんコンパクトで打鍵時の疲労が少ないキーレイアウトを実現しています。 くわえて、中央のキーと親指のキーを増やすことで、より押しやすい場所にレイヤーキーを配置したり、左右どちらの手で打鍵するか曖昧なキーに対応しています。長いキーを減らしてキーが増えたことで、大きさはそのままでよく使うショートカットや記号を良い場所に配置出来ます。 キーマップについて キーの論理的な配置、キーマップについて解説します。 lainではキーマップは全て書き換えが可能です。全てのキーを思ったところに配置できますし、使わないキーは削除できます。もちろん、”ctrl+z”をマクロとして登録しておくことも出来ます。書き換えにはウェブブラウザ上からキーマップを書き込めるRemapを使用させてもらおうと準備しています。 私が普段使っているキーマップの一部を抜粋した画像です。日本語配列キーボードとして使用します。変換・無変換キーやcaps lockを使わないので削除していたり、BackSpaceが親指のホームポジションにあったり、数字入力は”/Num”キーと最上段のキーの同時押し、カーソルは”/Func”と”HJKL”の同時押しにバインドしています。“/Num”キーとの同時押し時にホームポジションがShift+数字の記号類になっているのもこだわりです。 買って組み立ててremapで自分のキーマップに書き換えればすぐに使えるよう、ファームウェアはQMK FirmwareのVIA対応のものを書き込んで出荷の予定です。 キットの他に必要なもの Lainでは部品全てがはんだづけしてある基板とトップ/ボトムプレートとアクリルのミドルパーツがセットになっています。メイン基板のスイッチ部分にはkailh ホットスワップソケットが実装されていますので、スイッチを差し込むだけではんだづけすることなく組み立てが出来ます。 … Read More