Note

サイト
最近のコメント
 | 

2006-04-08

[] 窓使いの憂鬱プログラミングもしくは英語キーボードの素晴らしさを語る(読み飛ばし推奨)もしくは中薬指飛鳥

世の中は広い*1です。補助ツールに過ぎないはずのMakeでプログラミングする人もおられるぐらいです。キーカスタマイズツールに過ぎないはずの窓使いの憂鬱でプログラムが書けたっておかしくありません。

プログラミング言語に最低限必要なものは、入力と出力と計算能力です。入力はキーボードからのキー入力、出力はアプリへ渡すキー入力、あとは計算ができれば.mayuでアプリが書けちゃいます。

例えば、足し算をしてみましょう。

key D-~L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-_1 = _1 &Toggle(LOCK0, on)
key D-~L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-_2 = _2 &Toggle(LOCK1, on)
key D-~L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-_3 = _3 &Toggle(LOCK0, on) &Toggle(LOCK1, on)
...

key D-L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-_1 = _2 &Toggle(LOCK0, off) &Toggle(LOCK1, on)
key D-L0-~L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-_2 = _3 &Toggle(LOCK1, on)
...

key D-~L0-L1-~L2-~L3-~L4-~L5-~L6-~L7-~L8-~L9-_1 = _3 &Toggle(LOCK0, on)
...

key enter = &Toggle(LOCK0, off) &Toggle(LOCK1, off) &Toggle(LOCK2, off) ...
#debug
key a = &DescribeBindings

押されたキーを加算した結果を入力します。1を3回押すと3になります。Enterがリセットです。

ポイントロックキーで、本来トグルさせて使うものなのですが、窓使いの憂鬱では強制的にON/OFFさせることもできます。つまり1ビットの変数として使えます。嬉しいことにCaps LockとかScroll Lockとかとは別に、窓使いの憂鬱内部用のロックキーが0から9までありますので、窓使いの憂鬱は10ビットのレジスタを持っていると言えます。少ないですが、1023までの数ぐらいは数えられます。keymapでチェインさせられますので実際にはもっといけます。"D-"は、付けないとロックキーの動作が微妙なので付けてあります。

どちらかといえばプログラミングというより制御回路の設計に近いですが、窓使いの憂鬱を使う上での役には立ちそうです。

さて、何度か書きましたがKensingtonのそれを購入して以来私は英語キーボード使いです。

英語キーボードですと、言語設計者の想定した記号の打ち方ができるので大変良いのです。たとえばCのコメント/*...*/ですと、日本語キーボードのASCIIコードに忠実な記号配列ではひたすら右小指を酷使するのですが、英語キーボードですと右小指で/を捕らえたところで人差し指を思いっきり伸ばすとちょうど裏が*である8に届くとか。Pascalのコメント形式の一種(*...*) なんてアルペジオで打てます。普通{...}が使われますのであまり関係ないですが…。とにかく設計者の指使いが想像できてニヤニヤできます。

他にもアンダーバーが上に来るとかキーの絶対数が少ないとか使いもしないJISかなの刻印に惑わされないとか、英語キーボードは良いものです。

かくも素晴らしい英語キーボードの特徴のひとつに、変換と無変換が無いのでスペースバーが長いというのがあります。これもまたSandS使いの私には嬉しいのですが、全角/半角も無いのでIMEのON/OFFどーすんだというちょっとした問題も。私はPC-98よろしく右Altを潰して変換キー兼IMEのON/OFFに充てています。

さてさてここで飛鳥です。この配列は、親指シフト、それも、専用キーボードではなくて、変換と無変換を流用するのが前提です。

現実逃避に使いもしない定義ファイルを書くにあたって(←酷)、英語キーボードではどうしよう、と。まぁそんなわけです。Kensingtonのは左はAltとスペースバーの間に何故かバックスラッシュがあったりするのですが、それを使うにしても無変換よりは若干遠く親指が不自然に曲がります。

というわけで私はなにも考えず中指と薬指をシフトにしてみました。

元々の中指と薬指に割り当てられていた文字は…飛鳥は下手に弄れる配列ではなさそうでしたので、そのままです。つまりSandSよろしく、他のキーを押したらシフトで、なにもせず離したらそのキー自身とします。シフト面を出したい場合は反対側でシフト。連続シフト対応のため、他のシフトにも使うキーを押して元々押していたキーを離すとシフト状態が遷移するだけとします。また、その状態からキーを全て離すと、最初に押したシフトが有効な状態であとから押したキーが入力される、とします。じゃないと離す順番まで気を使わないといけなくやっとれんです。あとシフト兼用キーのリピートは殺す。あと(IMEオフではなくて)英数入力モードでは全部無効。

で、こんなややこしい条件も、窓使いの憂鬱は実装できちゃうのです。ロックキー全部使ってます。

http://panathenaia.halfmoon.jp/key/mmasuka.mayu

配列自体は記号の位置と、やっぱりBとTではBのほうが辛いので「へ」だけBからTへ移動してます。Pと/を入れ替えてもいいぐらいですのでTとBも入れ替えてもいいのでは…と弱気に。

…飛鳥自体は…とりあえず「あ」と「す」と「か」だけ覚えた。

どうでもいいですが、実はこれ作ってる間に飛鳥自体が329から330になって書き直す羽目になったのですが、今見たら331になってるし…。微妙に悔しい。

追記

使わない以上どうでもいいとわかっているにも拘らず、悔しいという理由だけで331対応しました。あとファイル名、mm(middleとmedicinal^^;)とか付けるよりyayoiのほうがファイル名並びで一番下に来て都合がいいという勝手な理由で、jisx6004さんの命名勝手に使わせていただきます。

http://panathenaia.halfmoon.jp/key/yayoi.mayu

参考URL:http://aumtyper.hp.infoseek.co.jp/asuka_ma.html

今日の飛鳥(←単なる動作テスト)

"あすか"は配列名だけあって中指と薬指だけで打てるみたいですね。動作確認に丁度いいです。…何か間違ってる予感が。

[] あとで読む

http://assam.cims.hokudai.ac.jp/ai/
http://assam.cims.hokudai.ac.jp/~k_mit/

ざっと見て…PrologはNFAシミュレータ(暴言)として、ETはなんなのだろう。イメージがさっぱり。

メモ。

GHCはGuarded Horn ClausesであってHaskellコンパイラではない、あとDルールが時々D言語表記されるがもちろんdmdではない。表記されてるように思えるが本当にdmdの場合もあるので要注意…。

あろはあろは 2006/04/08 18:08 本当にもうしわけありませんでした… m(_ _)m

ただ,あの記事は,けして侮辱ではなく,尊敬の念を込めて書いたものです… 私もマイナな言語 (ET) で日々コードを書いているもので,(処理系が不十分,ライブラリが無い,など) ある種の共感もありました.

h_sakuraih_sakurai 2006/04/08 18:57 なんか、ADAとか、でかい言語仕様といえば、YTさんな感じですもんねぇ。

ytqwertyytqwerty 2006/04/08 19:20 うわああああろはさんごめんなさいつい拗ねてみたくなったのです。でもAdaは海外では全然マイナーじゃないし(どこかで見たレートだと凄い上位だった)処理系もライブラリも充実してると思うのでやはり拗ねてやります。お恨み申しあげます。しくしく。
それは別にしてETはETで面白そうですねぇ…。

ytqwertyytqwerty 2006/04/08 19:27 >でかい言語仕様といえば
私はミニマリストなんですその証拠にCygwinではなくMinGW使ってます、なんて戯言はさておき、この謂れ無き誤解もいつか払拭したいですううううう。

あろはあろは 2006/04/08 22:03 >> それは別にしてETはETで面白そうですねぇ…。

紹介文を書いてみました.眠くてぐだぐだになってしまいましたが… もしご迷惑でなければ,読んで見てください (;^ω^)

あろはあろは 2006/04/09 16:40 >> # その分,抽象度が高い,ということもできますが… A という概念で全部説明できるから,他の概念は不必要,というのは,何か違う気がします.よく整理された,特殊構文は,概念の明確化という点で重要だと思います.一概念一構文というのは,D 言語の開発ポリシーだったような気がします.

ここの部分だけは,dmd の方の D 言語のつもりでした.

jisx6004jisx6004 2006/04/10 00:06 もう四月なので卯月ですね。

ytqwertyytqwerty 2006/04/10 00:13 jisx6004さんこんばんは。命名勝手にお借りしました。
それでえっと…もしかして弥生というのは月の名前でしたか。http://jisx6004.blog8.fc2.com/blog-entry-10.html自体が去年の4月の記事でしたこともあり、弥生時代の弥生とばかり…。

jisx6004jisx6004 2006/04/10 14:52 あはは、すみません。両方の意味を掛けてます。「飛鳥」と、「月」で連想したのが「弥生」でした。我ながら小洒落た命名だと思っていたので使っていただけて光栄です!

 | 
カレンダー
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 |