一般的なANSI配列では私は文字が打ちにくいです。なので自分に合った打鍵しやすい自作キーボードを提案します。
前回製作したfcs42を使用してカラムスタッガードを基本として配列を模索し、アクリル積層でホットスワップなキーボードを手配線で作ります。
設計方針
一般的なキーボード配列というか、ANSI配列が打ちづらいです。私が手先不器用すぎるだけかもしれませんが。
私の場合キースイッチの端っこの方を打鍵してしまいますし、ミスタイプも多いです。タイピングの速度も異常に遅いです。指を滑らせて打鍵するというより覚えている座標を押しに行く感じです。
そもそもこれをホームポジションというの知らんですが自然に指を置くときはこのような感じとなっています。
キーボード自体をだいぶ左に寄せ、真ん中の行(asdf jkl;)ではなく指を伸ばした状態がホームポジションとなっていて、上側に寄っています(awef jiop)。ノートパソコンで変な癖がついたといえばそうですが。左右対称でないしずれてるし歪です。
そもそも手先が不器用で、タイピングのとき指は第二関節までしか動かしません。第三関節も使ってタイピングできる人と比べると可動域が狭いです。不器用なりにやりやすくやってた結果がこれというわけです。
何が言いたいかというと不器用でANSI打ちにくいという話です。
fcs42を使い、打鍵しやすい配列を模索します。
参考:手配線で配列調整できるカラムスタッガードのキーボードFCS42Sを作る 自作キーボード (tsuiha.com)
まずは一般的なカラムスタッガードで指の長さとか自然に指を置いたときを1行目に合わせ配置しました。
問題点として、この配列は中指が最も高く、外側は徐々に下がっていきますが、指を伸ばし気味で寝かせ気味なポジションなこともありBが遠く感じました。
そこでB列をやや上げ、B列への運指をV列から指を曲げるのではなく、ANSIと同様に指を伸ばして打鍵することにしました。
Zも遠い。QPは薬指で打鍵し、上にあげることにしました。結果として効率が悪く感じたので小指で打つ方がいいんじゃないかと今思ってしまっていますが。
またZ列がぴったりくっついていると小指が窮屈なので角度をつけ開かせることにします。
ANSIでは左右非対称なポジションでしたが分割し左右間に角度をつけることで左右同じレイアウトでも打鍵しやすくなります。私は片手まっすぐで片手傾けるポジションが打鍵しやすいです。
大まかな配列案が決まりました。ここから微調整します。
こんな感じになりました。小指列はやや角度をつけ、薬指列と離しました。
CapsLock部分は指先のフィット感を高め芯を打鍵できるように角度を付けました。
結果としてはチルト角をつけずに配列を作成していたため、チルト角度合いによって打鍵時のフィットするキー角度が変化してしまったという課題がありました。
Shiftの部分は小指の腹で打鍵することを想定しているためメインの列と同じ角度となっています。
寝かせ気味で伸ばし気味なポジションでちょうど上の行にっピッタリ合っています。
材料とか。
アクリルカットとか。
アクリルカットを利用し手配線で製作を行います。以前作ったホットスワップのものをベースに線を引きました。
参考:手配線でホットスワップ対応のキーボードを作る 自作キーボード (tsuiha.com)
300 mm角に収めていますが、elecrowのアクリルカットは寸法自由になりましねいいですね。収めようと頑張ってた時にフリーになって私のタイミングが悪い。
これは5 mm厚で注文したトッププレートとスイッチプレートです。
中にあるのはチルト足パーツです。3段階のチルト角をつけることができます。
これは2 mm厚で注文したものです。ミドルプレートとボトムプレートです。
こんな感じで配線します。
結果としてキースイッチのピンは接してはいるのですが甘く、ところどころ接触不良気味だったので失敗作なアクリルカットとなりました。
なので二台分のアクリルを使用し修正版も作成しました。
作り方 失敗作
kailhホットスワップソケットをボトムプレートに嵌めます。
予備はんだします。したらしたではんだ付けスムーズでなかったので器用な人と腕三本ある人は直接はんだ付けした方がよさそう。
ETFE電線を使用し配線しました。はんだ付けする部分をニッパーで皮膜に切れ目を入れはんだごてとはんだで皮膜を溶かします。
はんだ付けします。皮膜溶かしていくのめちゃくちゃめんどくさかったです。一決めて切れ込み入れてジュージュー溶かして。
これは両端でつなぐときだけ使うものな気がした。ので修正版ではスズメッキ線を使いカプトンテープぺたぺたします。
colの配線
ダイオードとrowの配線。
promicroの部分まで引っ張ってきてxhコンタクトをつけます。
三枚のプレートを乗っけてネジ止めしてみます。こんな感じ。
ネジが出っ張らないチルト足にしてみました。欠点として足にトルクがかかるとねじごと回って緩んでしまうのでもう一工夫必要改善したい
チルト足をぶっ刺す。
実装部分にOリングを挟み1 mm程度のスペーサ代わりにします。
1mm厚の樹脂板を外周に合わせカットしたら断面がきれいになります。まあ失敗版なのですが。
スペーサにネジ止めします。
promicroにxhハウジングを付けてキーボードと接続します。
完成。usb通すところちょっと狭かったのでこの後リューターで削った。
おお。
というのを想定していました。しかしところどころ接触不良で作り直しです。ソケットにはしっかりピンが刺さっている必要があります。そりゃそう。
作り方修正ばん
ソケット形状にカットしたプレートではなく丸が開いたミドルプレートを二枚使いその間にソケットとか実装します。
トップ、スイッチ、ミドル、実装、ミドル、ボトムにします。より厚くなってしまいますがやむなし。
今度は逆向きに、ミドルプレート一枚目にソケットを嵌めます。
配線
ETFE電線はめんどくさかったのでやめました。スズメッキ線を使います。
カプトンテープぺたぺた配線
配線配線
例のごとく何も考えず貼っているので汚い。
ボトムプレートとミドルプレート2を重ねます。
ボトムプレートも使ってるのは、ボトムプレートのネジ穴がφ2だからです。ミドルプレートはスペーサを通す部分だったので穴が太いです。ネジ止めする穴がなくなるからです。
径の大きいM2ワッシャーがあったらそれでよさそう。スペーサを使った方が組みやすいけど長さとかめんどくさそう
実装部分には余っていた2 mm厚2 mm穴の開いたアクリルをスペーサとして使いました。
組み立てちょっとめんどくさいけど長いネジで上下止めるだけでいいか。
スイッチはめて位置決めをしたスイッチ、スイッチプレート、ミドルプレート1、実装部分、ミドルプレート2を重ねます。
ボトムに重ねねじを通す。
ねじ止め。
ついでにコイルケーブルを作る。まあコイルされてるやつを買ってぱらこー度通してコネクタつけただけだけど。コイル部分にパラコード通すのが一番大変だった。
なんか緑でそろってていいね。余計に3mm厚くなったね
ふぁ-無ウェアーー
ファームウェア関係半年前から一切成長がない。
config.h
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0006
#define DEVICE_VER 0x0001
#define MANUFACTURER Tsuiha
#define PRODUCT andrackpt
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 6
#define MATRIX_ROW_PINS { F5, E6, D4, D0, D1, B6, B4, D7, C6 }
#define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F4 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
andrackpt.h
#pragma once
#include "quantum.h"
#define LAYOUT(\
k01,k02,k03,k04,k05,\
k10,k11,k12,k13,k14,k15, k55,k54,k53,k52,k51,k50,\
k20,k21,k22,k23,k24,k25, k65,k64,k63,k62,k61,k60,\
k30,k31,k32,k33,k34,k35, k75,k74,k73,k72,k71,k70,\
k43,k44,k45, k85,k84,k83,k82,k81,k80\
){\
{KC_NO,k01, k02, k03, k04, k05},\
{k10, k11, k12, k13, k14, k15 },\
{k20, k21, k22, k23, k24, k25 },\
{k30, k31, k32, k33, k34, k35 },\
{KC_NO,KC_NO,KC_NO,k43, k44, k45 },\
{k50, k51, k52, k53, k54, k55 },\
{k60, k61, k62, k63, k64, k65 },\
{k70, k71, k72, k73, k74, k75 },\
{k80, k81, k82, k83, k84, k85 }\
}
keymap.c
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
KC_LGUI,KC_F2,KC_F7,KC_4,KC_5,\
KC_ESC,KC_Q,KC_W,KC_E,KC_R,KC_T, KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSPC,\
KC_GRV,KC_A,KC_S,KC_D,KC_F,KC_G, KC_H,KC_J,KC_K,KC_L,KC_MINS,KC_ENT,\
KC_TAB,KC_Z,KC_X,KC_C,KC_V,KC_B, KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_DEL,\
MO(1),KC_LCTL,KC_SPC, KC_LSFT,KC_LALT,KC_LEFT,KC_UP,KC_DOWN,KC_RIGHT\
),
LAYOUT(
KC_1,KC_2,KC_3,KC_4,KC_5,\
KC_PSCR,LSFT(KC_1),LSFT(KC_2),LSFT(KC_3),LSFT(KC_4),LSFT(KC_5),LSFT(KC_6),LSFT(KC_7),LSFT(KC_8),LSFT(KC_9),LSFT(KC_JYEN),KC_EQUAL, \
KC_TAB,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_F7 , \
KC_F2 ,KC_DOWN ,KC_LEFT ,KC_UP,KC_RGHT,KC_B,KC_LBRC,KC_RBRC,KC_BSLS,KC_SCLN,KC_QUOT,KC_INT1, \
MO(1),KC_LCTL,KC_SPC, KC_LSFT,KC_LALT,KC_LEFT,KC_UP,KC_DOWN,KC_RIGHT\
)
};
反省点感想
fcs42さんは良い仕事をしました。ドライバー一本で配列コロコロ変えれるの便利ですね。ドライバー一本でする作業がめんどくさいんですが。
楽だから一体型にしたけどやっぱ分割の方が自由度高くて姿勢もポジションもいじれていいわね。一体型だとちょうどいい打鍵ポジションが一か所に限られてしまいます。
打鍵速度アップしゅぴぴぴーーーーーー
うおおおおー
神!!!
今回みたいなものだと手配線アホなのでは。適材適所ってやつ。メリットを活かせてない。配列をさらに改善したものはpcbで作りたいですね。
コメント