天高工房

キーキャップに印字して遊んだり電子工作して遊んだりしたことを書くかもしれません。

キーボードわいわい会を開催しました

ほとんど勢いでキーボードmeetup「キーボードわいわい会」を開催しました。

connpass.com

すでにshela_氏により2年ほど前に「HHKB hacking会」が開催されていたことを観測しているので愛知で開催されるキーボードイベントとしてはおそらく2回目です。

背景

NGK2018BでLTしましたけど反応がいまいちでした。twitter見る限りぼちぼちいたようなのですけれど、音楽性の違いが露骨にでるので難しいですね。

しかし、来栖川電算さまから提供いただけることになりました。思い立ったら吉日ということで初週開催です。

振り返り

どんな人が集まるかわからなかったので適当にLT(Longtime Talk)と休憩/わいわいを交互にやろう、と決めていました。

開始予定は13時15分くらいだったのですが、13時5分くらいには全員そろっていたのでちょっと早めに始めました。

私は「キーボード、普段使ってると思うけど思ったより知らないこと多いから色々構成要素見てみようぜ」みたいなスライドを作りました。規格系の配列はこんな感じでこんな違いがあるよ、そこから最近の拡張はこんなのがあるよ、みたいなのを雑に20分くらいで話しました。

次に、@shela_氏により、HHKB hacking会のスライドベースでざくっと説明がありました。過去の会では2時間くらいかかったそうで、結構流したはずなのに今回は50分くらいはかかっていたかと思います。

このあたりで14時半とかでした。

その後自分がkinesisなど見たかったので1時間くらいあれやこれやわいわいしました。

一応もうひとつ「もっとゆるくやっていこう」みたいなネタがあったので脱線しつつざっと話しました。

その後荷物をまとめつつ適当にわいわい、18時頃解散しました。

開催の様子

やらかしをしたので写真は一枚もありません。

キーボードわいわい会 に誰かあげている可能性はあります。

次回?

今回会場提供いただいた来栖川電算様から引き続き開催されるようであれば提供できます、という申し出をいただきました。 また、参加者の方からも弊社使えますとご提案いただけましたので、開催場所はなんとかなりそうです。

あくまでも勉強会などではなく集まってわいわいするmeetupとしてゆるゆるやっていきたいな、とは思いますが、だらだら目的もなく集まっても締まりがないと思うので何かしらまとまる方法がないかなーと考えています。

やるとすると、15分くらいの持ち時間で語りたいことを語る枠を最大3枠くらい用意するのがまず良いかな、と考えています。

また、これは賛否が分かれると思うのですが、当日LT指名とか、発表聞いてみたい人投票とかやってみたいなぁという気持ちもあります。

とりあえず意見ください。

無変換/変換でIMEのON/OFFを切り替える

この記事をみて「そういえば試してみるかー」と思ったら面白いことがわかったので書きます。

www.itmedia.co.jp

前書き(読み飛ばしてください)

OADG109AベースのキーボードはANSIに比べてスペースキーが短くなる代わりに「無変換」「変換」「カタカナひらがな漢字」といったキーが追加されています。

そしてIMEのON/OFFは左上のやや遠い位置にある「半角/全角」で実施すると信じられています。このトグル式の評判がよくないです。引き合いに出されるのはMacOSのキーボードです。MacOSではOADG109Aではない配列のキーボードが採用されています。そのため無変換/変換といったキーは存在しません。代わりに「英数」「かな」があります。これは書いてある通りに入力モードを切り替えるボタンです。どうも「脊髄で理解させるため」の設定だそうです。

従来の手法

WindowsでもMacOS方式を実現したいという声は少なくないです。OS/IMEの機能として持っていないわけではないのでIMEの設定を変更することで従来より実現できます。

スクリーンショットを撮影して説明しようと思いましたが、ほぼそのままのサイトがあったのでやり方はそちらを見てください。

www.onebizlife.com

公式アナウンス

冒頭で紹介した記事でデフォルト設定が従来の手法で紹介した記事の最終的な設定になることが決まったようです。

www.itmedia.co.jp

オチ

IMEの設定を見ていたら、「Shift+無変換」で英数入力に切り替わることが分かりました。 試しに英数入力状態で「変換」を押したら日本語入力に切り替わりました。

無変換単独ではカタカナ変換に使いたいのでなんかこれでもういいじゃん、となりました。

つまり、我々はなにも追加の設定をしなくても、僅かな好奇心さえあれば無変換のカタカナ変換を維持したままMacOS方式に近いIME切り替え方式を得ることがすでにできていたのです!!!!

まとめ

  • 「Shift+無変換」で英数入力
  • 「変換」で日本語入力

なおサンプル数1(自分のみ)です。再現したら教えてください。

無変換/変換でIMEのON/OFFを切り替える

この記事をみて「そういえば試してみるかー」と思ったら面白いことがわかったので書きます。

www.itmedia.co.jp

前書き(読み飛ばしてください)

OADG109AベースのキーボードはANSIに比べてスペースキーが短くなる代わりに「無変換」「変換」「カタカナひらがな漢字」といったキーが追加されています。

そしてIMEのON/OFFは左上のやや遠い位置にある「半角/全角」で実施すると信じられています。このトグル式の評判がよくないです。引き合いに出されるのはMacOSのキーボードです。MacOSではOADG109Aではない配列のキーボードが採用されています。そのため無変換/変換といったキーは存在しません。代わりに「英数」「かな」があります。これは書いてある通りに入力モードを切り替えるボタンです。どうも「脊髄で理解させるため」の設定だそうです。

従来の手法

WindowsでもMacOS方式を実現したいという声は少なくないです。OS/IMEの機能として持っていないわけではないのでIMEの設定を変更することで従来より実現できます。

スクリーンショットを撮影して説明しようと思いましたが、ほぼそのままのサイトがあったのでやり方はそちらを見てください。

www.onebizlife.com

公式アナウンス

冒頭で紹介した記事でデフォルト設定が従来の手法で紹介した記事の最終的な設定になることが決まったようです。

www.itmedia.co.jp

オチ

IMEの設定を見ていたら、「Shift+無変換」で英数入力に切り替わることが分かりました。 試しに英数入力状態で「変換」を押したら日本語入力に切り替わりました。

無変換単独ではカタカナ変換に使いたいのでなんかこれでもういいじゃん、となりました。

つまり、我々はなにも追加の設定をしなくても、僅かな好奇心さえあれば無変換のカタカナ変換を維持したままMacOS方式に近いIME切り替え方式を得ることがすでにできていたのです!!!!

まとめ

  • 「Shift+無変換」で英数入力
  • 「変換」で日本語入力

JISキーボードって...クソだよねー!

この記事は18日目の記事です。

adventar.org

ポエムしか書く気がないので適当な題です。あ、私は普段いわゆるJISかJIS寄りのキーボードしか使ってないです。

JISキーボードって...クソだよねー!

と度々言われるし、実際キーボード設計をするときに面倒な要素がある*1ことに気づいて私も嫌いになりました。

しかし、よくよく考えるとJISでどんな感じで定義されてるのか見てませんでした。見ようと思いましたが、安くない金を支払わないと見れないようなので結局JISもANSIも見ることはしませんでした。ストリーミング的な形で読めるようなので一応読みました。

よってこの記事は断片的で不確実な情報を元に書きます。

厳密なJIS準拠はもはや存在しないっぽい

キーボードは「X6002 情報処理系けん盤配列」で定義されています。が、最新は1980のようです*2

当然Windows95がでてくるより前ですので、現在の状況とは乖離があります(復改だとかまっ消だとか)。また、MODキーなども規定されていません。記号の印字位置も現在とは異なります。規格で印字位置まで定義されていると誰かいってた気がするけどどういうことなんだ...

現在までに残っている要素は、「QWERTY」「ロジカルペアリング」「ISO Enter」くらいではないでしょうか。どちらかというとこれらはISOで定めようとしていた要素な気がします。

現在一般的な108キーボードはJIS風ではあってもJISではないことがわかりました。どちらかというとJPキーボードでしょうか。

追記分

109キーボードIBMが1990年あたりに原型となるキーボードを作成し、OADGが2003年あたりに設定したもののようです。ただしOADGは2004年に活動休止しています。

厳密にはOADG109とOADG109Aが存在し、現在日本語キーボードとして販売されているのはOADG109Aです。一部記号の配置が異なるのみで、それ以外は同様です。

PCオープン・アーキテクチャー推進協議会 - Wikipedia

JPキーボードの欠点

最も辛い欠点はEnterキーです。配置の研究をしているときに気づいてしまったのですが、JPキーボードで打鍵をしているときは右手が左右に動くというか、右に1stepずれます。この動作はなんとEnterキーを押すためのものだったのです!小指もなんとなくEnterを押す準備をしてしまっているので左手ほど小指が自由に動いてくれないように感じます。

小指の可動域は手のひらが同じ位置の時、右にはずれますが右上にはずれません。これはANSI Enterはそのまま押せるけれどもISO Enterは押せない、ということを意味します。BackSpaceも右上と遠い位置にあるのでこれを連打するときにも動きますが、これは後述の理由から無視出来ます。

JPキーボードの利点

スペースキーが短いことです。これまた配置の研究をしているときに気づいたのですが、スペースキーを押す場所はかなり狭く固定されると思います。掌が動かないほうが良い以上、親指が叩く位置も一定だからです。私なんて常に左手で左端でした。1uあれば足りちゃいました。ANSIみたいに6uとか必要ないです。

厳密には、スペースキーが短いことではなく、スペースキーが短いことによるキーの追加がうれしい点です。他の記事でも述べていますが、親指にはもっと多くの役割が与えられるべきです。具体的にはBackSpaceやEscなど押しにくい上隅に追いやられているキーや、IME切り替えキー、Enterキーなどです。

アメリカなどの国でも、親指の役割を増やすということを気にしている人たちがいるようで、スペースキーが二つに分割されたキーボードも出てきています。

JPキーボードだとすでに無変換と変換がありますので3キー相当です。さらにスペースキーを半分にすると4キーになります。すべてを1uにすると6キー分の空間が確保できます。現在私が使っているXD75はすべて1uのキーボードなので親指担当キーは6キーあります。すでに運用をしていますが6キーまでなら十分打ち分けることがが可能です。それ以上は可動域の関係で厳しいのではないかと思います。

提案

以下のような感じのするといい感じになるのではないでしょうか。

  • A行より上をANSI系のキーサイズ
  • Z行以下をJP/OADG系のキーサイズ
  • BackSpaceは1u
  • 何なら最下列はすべて1.5uや1.25u

参考までに、RealforceのJPモデルの最下列はほとんど1.5uです(スペース、Win、Appのみことなる)。

各々が各々の考える"正義"を貫いていこうな!!!

私はロジカルペアリングに慣れきってしまっているからこのままいくよ!!!

参考資料

日本工業標準調査会:データベース検索-JIS検索

X6002で検索

アニメ『ポプテピピック』第2話・パロディ元ネタ解説 - 特になし

キー配列 - Wikipedia

JISキーボード - Wikipedia

http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/publications/ISCIE2004.pdf

http://www.sanosemi.com/biztech/document/keyboard-picture2009-2.pdf

https://ia801604.us.archive.org/21/items/OADG1991/%EF%BC%AF%EF%BC%A1%EF%BC%A4%EF%BC%A7%E3%83%86%E3%82%AF%E3%83%8B%E3%82%AB%E3%83%AB%E3%83%BB%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9%20%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E7%B7%A8%201991%E5%B9%B4.pdf

*1:ほとんどのキーは配列を使って配置の自動化ができるが、ISO Enterキーだけ例外処理をしないといけない

*2:削除された新JISを除く

新世代キーボードの永字八法

この記事はAdvent Calendar 2018 自作キーボード#3の1日目の記事です。

adventar.org

「自作キーボード」という名前で国内のキーボードキットが盛り上がって1年ほどになるでしょうか。市場規模がまだまだとても小さいので、今日も先行者たちが銀の弾丸ことendgameを求めて突っ走っています。

今回は、トップダウン的ではありますが現状のキーボードキット/小ロットキーボードのもつ要素について書きます。

新世代キーボードの永字八法

現在までキーボードはタイプライターに起源を持つANSI/ISO/JISかつQWERTYが全盛であります。しかしながらこれらはすべて歴史的経緯による不合理の塊で、規格品で量産されているから入手性がよく、これさえ使えればどこでも同じことができるようになってしまったが故に使われているにすぎません。

そんな不自由なキーボードを滅する銀の弾丸のように登場したのがErgodoxです。このErgodoxは非常に革新的なキーボードであり、現在国内外で制作されている左右分割キーボードの多くはErgodoxの血脈です。Ergodoxはより効率的な入力を実現するための要素がふんだんに盛り込まれているため、新世代キーボードの永字八法といって差し支えないでしょう。

Ergodoxの持つ要素をそれぞれ見ていきたいと思います。

分割

Ergodoxをみた人々がとりあえず口にするのは「割れている」ということです。見ただけではっきりわかる違いです。

左右の手は独立して入力をするので1枚である必要はなく、左右の手が独立して自由な位置で入力できることで姿勢の改善が見込まれる、ということで話題になりました。現在でも国内のキーボードキットを買い求める人は分割を求めていることが多く、おそらく肩こりや首の痛みの特効薬だと考えているように思います。

閑話

残念ながら、キーボードを分割にしたところで首の痛みは治りません。キーボードを買い換える前にまず机と椅子、それとディスプレイの位置を見直すべきです。私は普段首の痛みなんて発生しませんが、とある場所で働いていた時だけ酷く痛み、日常生活にも支障がでました。調査したところ、問題だらけでした。

  • 机が一般的なもの(H:700mm)より100mm低かった
  • 机が一般的なもの(D:700mm)より100mm奥行きが短かった
  • 椅子を後ろに移動する十分な空間がなかった
  • ディスプレイの支給がなくノートPCでの勤務を強いられていた

基本的に、背中を曲げると首や背中、肩を痛めます。逆に背中を曲げなければたいてい問題ありません。 上記環境は、背中を曲げなければどうしようもない環境であったため、首に絶大な普段がかかっていたようです。

また、姿勢を支える筋力が低下して骨格で姿勢を支えている状況ではどうあがいても改善されません。歩いたり走ったりして姿勢を支える筋肉を用意してください。それだけで十分改善が見込めます。

銀の弾丸を手に入れても暴発する銃なら意味がないです。

左右対称

利き手があるとはいえ、人間の手は左右で対称な形をしています。にもかかわらず現在の規格キーボードは歪です。左手は最小限の数にもかかわらず、右手のカバー範囲は左手よりも3列多いです。さらにカーソルキーやテンキー、はてはマウスまで右手領域です。

左右対称形にすることで、左右の手の負担の差を減らすことが見込めます。

親指キー

規格キーボードでは何故か親指の役目が非常に少ないです。少なくとも現状は、非常に長いキーが親指のカバー範囲の大半を占めてしまっています。その悪しきキーの名は、スペースといいます。

意識して入力をしてみるとわかるのですが、大体叩く位置は決まっています。なんであんなにも長いんでしょうか?

JISだと無変換と変換がありますが、無変換はカタカナ変換、変換は再変換機能ですのでそんなに多用するキーではありません。

親指にアルファベット以外に高頻度で使うキーの役割を与えることで親指以外に文字入力に注力してもらうことができます。

人差し指キー

親指の次に強い指は人差し指です。小指に仕事を任せるなら、人差し指に任せるべきです。一番内側なので視認性もよいです。

列方向のの整列

タイプライターは鍵盤をたたくとハンマーが駆動してもじを入力する仕組みです。そのためハンマーが干渉しないように行方向に各行は異なる位置だけずれています。タイプライターの名残であって入力効率には一切関係がありません。ソフトウェアキーボードや、モバイルデバイスのハードウェアキーボードをよく見ると、規格キーボード同様に行方向にずれてるケースもありますが、列方向に整列していてZの行だけ右に一つずれているケースを見ることができます*1。しかし、それを意識せずに打鍵できる程度には入力効率に影響がないものです。

この中途半端なズレは、慣れれば全く問題ないですが、慣れるまで文字がどのキーに割り当てられているか惑わすだけの存在です*2

列方向のずれ

各指の長さは違います。中指は数字行まで届きますが、ほかの指は頑張って薬指で、小指に至ってはQ行にすら届かないでしょう。

指の長さに合わせて上下位置を調整することで手の角度や位置を動かすことなく打鍵ができるようになります。

所感

どうでしょうか。こんな感じの情報がErgodoxには収められているように私は感じています。逆に、規格キーボードから変更がある要素が多すぎるため気合がないと常用することは難しいです。私はぶん投げました。毎日のようにヤフオクにErgodoxEZが流れているのを見るに、強すぎる道具に肉体がついていかなかった人々は少なくないように思います。そこら辺の背景から私はErgodoxに移行できた人々を"適合者"と呼んでいます。

私にはErgodoxは早すぎた、と感じているのでXD75にJISっぽい配列を割り当てて、レイヤリングを格子配置でぼちぼち楽しくやっています。

*1:規格キーボードでZの行が実質一つ右にずれているため。ずれたとこには大抵シフトが入る

*2:いまとなってはもう思い出せません

【人柱諸兄向け】VirtualPower(α)の組み立て等

天キーで"力"を手に入れた諸兄向けへの記事です。

前準備

qmk_firmwaregit submodule を実行してarmのビルド環境を用意してください。

dfu-programmer を用意してください。qmk_firmware/utils/YOUR_ENVIROMENT_NAME_install.sh を実行したのであればqmk_firmware/utils/YOUR_ENVIROMENT_NAME/downloaded に入っているかもしれません。

組み立て

部品は3種類です。

  • maple mini
  • kailh PCB socket
  • diode(SOD-123規格)

最低限これだけを実装すれば動作します。

部品の向き

ダイオードのシルク向きは ROW2COL になっています。一応動作したのでファームウェアROW2COLで実装しました。主流はCOL2ROWなので今後armでキーボード制作を検討している方は逆向きで取り付けてCOL2ROWファームウェアを作成したほうが良いかもしれません。

もしCOL2ROWで作成する場合は、config.hのdiode directionを書き換えれば動作します。キーマップ定義用のマクロは確か作りました。

ソケットはシルクの通りに置いてはんだ付けするだけです。パッドが狭いため、パッドまではんだが広がったことを確認してください。広がらないままキースイッチを取り付けると、はがれることがあります。

maple miniもシルクの通りに取り付けてください。部品面と、USB端子がそれぞれ外を向く向きです。

option

  • 6x6mmのタクトスイッチが取り付けられます。本体にもリセットスイッチは実装されているので必要な場合のみ実装してください。
  • 横出しのタクトスイッチはフットプリントにミスがあります。取り付けると起動しなくなります。
  • 秋月のUSB-Cブレイクアウトボードを取り付けられるようにしてありますが、動作しません。回路を改善しても動作しないため正式版では追加しないかもしれません。
  • LED stripが取り付けられます。動確はしていません。
  • I2C, UARTの端子を出しています。動確はしていません。
  • kailh ロープロソケットを取り付けられるようにしてありますが、現在単体で購入可能なキーキャップではサイズが合わないキーが存在します(左Shift、Tabの未確認済み)。またプレートは原則MXスイッチ用で用意しています。
  • mid-height向けにプレートを作成すればmid-heightでも動作するはずです(naemcard2x4では確認済み)

ファームウェア

test_arm_project ブランチのqmk_firmware/keyboard/test_arm_project の jisをビルドしてください。ROW2COLで実装してあります。

まだ投げっぱなしなので整理はこれからします。

git checkout test_arm_project
make test_arm_project:jis -j8

github.com

書き込みは、私の環境では以下のコマンドで書き込みをしています。

.\dfu-util-0.9-win64\dfu-util.exe -d 1eaf:0003 -a 1 -D .\test_arm_project_jis.bin

キーキャップ

原則スタンダードなJISです。最下行はRealforce準拠です。具体的には、GUIとappが1u, スペースが1.25u x2、それ以外がすべて1.5uです。

最左列のマクロ列は、1u想定ですが、1.25uまではまります。

その他

プレートが必要であればご相談ください。いい感じの色のやつを用意します🤑。

(動いてよかった...本当によかった...)

【QMK】JPキーコードでキーマップを定義する

とりあえず書いた。

三行

  • 基本のキーコードはANSI準拠で定義されている
  • キーコード自体は共通だけど、OSのキーボード設定次第で同じキーコードでも実際に入力される文字/記号が変わる(だいたい同じ位置なら同じキーコードが発行される)
  • JPでキーマップを定義したい場合は#include"keymap_jp.h"を追加することでJP_XXで定義でき、キーマップ定義と入力記号を一致させることができる

詳しく

USB HIDのキーボードのキーコードはいわゆるANSIと同じ組み合わせで定義されています。標準はANSIと同じ組み合わせです。

キーコードの解釈はOS側に任されているようで、「どの種類のキーボードが認識されているか」によってキーコードが変わります。ANSIを指してもOS側に今接続しているのはJPだと言い張ればGraveは半角全角になります。逆もまた然りです。

JPとANSIと見比べて、同じ位置にあるキーは同じキーコードを発行するようになっていますので、基本的にはANSIをそのままコピーすれば大体JPとして動いてくれます。

ただし、いくつかANSIにないキーがあります。具体的にはJPの「ろ」「_\」、「|\」と、変換、無変換、カタカナひらがなです。これらはANSIには存在しません。ISOだと存在する場合もあるようです。これらには、INT1~INT5が割り当てられています(順不同)。InternationalのINTのようなので、国別の独自追加キー用のものなのでしょう。

さらに、MacOSのかなと英数は別のキーコードが割り振られています。LANG1とLANG2です。Ergodoxが来るまではMacユーザーがあまりいなかったのか動作しなかったようですがmhidakaさんなどのご尽力により動作するようになったようです。

で、国別の変更点を吸収したいという要求は強いようで、quantum/keymaps_extra/以下にkeymap_jp.hなど、各言語用にQMKキーコードをリマップした定義が用意されています。通常KC_XXで定義するところをJP_XXで定義することができるようになります。

github.com

内容を見ればわかりますが JP->KCにリマップしているだけなので特に問題は出ません。

参考資料

JPの記号とUsage Nameとスキャンコードの対照表

USBキーボードのキーコード

この後にこの記事書いたことを忘れて別に書いたJPキーコードチートシート記事

skyhigh-works.hatenablog.com

追記

  • 一部表現を修正しました。
  • JISなんて存在しないと悟ったのでJPに表記を変更しました。