em1keypc用のoyayubiwm編集メモ。
(2007年10月31日0:40:21追記)
いまから、141Fさんの記事「em1keypc の設定は難しい。」にトラックバックさせていただきます。
さきにコメント&トラバできなかった原因は、サーバ側の問題ではなくて、うちの宅内ルータがパケット詰まりを起こしていたことが原因っぽいです……orz。
141Fさんのところにコメントを書こうと思ったものの、なぜかサーバが重いらしく応答が鈍くて……途中であきらめてしまいましたorz。
#トラックバックURLも表示できなかったので、ひとまずトラックバックせずに書いています。
とりあえず、ここにチラッと「新しく文字を定義するためのポイント」を書いておきます。
小梅ではシフト方法がNICOLA(親指シフト)と同じなので、ポイントさえつかめば、オリジナルのoyayubiwmから編集するほうがよいかもしれません。
#asukawmを編集しても同じことはできるのですが、飛鳥でしか使わない文字をいくつか定義してしまっているので、自由度が減ってしまうのは微妙かも……。
基本的に、em1keyスクリプトで打ちたい文字を定義するには、「func関数(キーコードに縛られない関数)のうち、使いたい番号の関数に適当な名前をdefineする」→「defineしたfunc関数に対して、実際にやるべきことをfunc TABLE_FUNCで書き込む」の2操作が必要です。
(オリジナルを改造して作成した)asukawmを例にとって説明します。
http://www.eurus.dti.ne.jp/~yfi/nazodl.html#asukawm
要所に「飛鳥カナ配列」という文字がついているので、テキストエディタの検索機能で追いかけると楽かもです。
まずははじめの定義……449行目〜473行目。
define _kana_BS 0xee # [BS] define _kana_ESC 0xef # [ESC] define _kana_NOP 0xf0 # 何もしない define _kana_ORG 0xf1 # 元のキーのコードを発行する define _kana_SHORG 0xf2 # 元のキーのコードを SHIFT 付きで発行する #------------------------------------------------------------------------------ # 飛鳥カナ配列のために新しく定義する必要がある関数群 #------------------------------------------------------------------------------ define _kana_PERC 0xf3 # % ★未定義 f3 define _kana_AMPER 0xf4 # & ★未定義 f4 define _kana_STAR 0xf5 # * ★未定義 f5 define _kana_EXCLA 0xf6 # ! ★未定義 f6 define _kana_DOT 0xf7 # ・ ★未定義 f7 define _kana_PLUS 0xf8 # + ★未定義 f8 define _kana_LMBRA 0xf9 # } ★未定義 f9 define _kana_RMBRA 0xfa # { ★未定義 fa define _kana_LTBRA 0xfb # < ★未定義 fb define _kana_RTBRA 0xfc # > ★未定義 fc define _kana_MINUS 0xfd # ─ ★未定義 fd #------------------------------------------------------------------------------ # 飛鳥カナ配列のために新しく定義する必要がある関数群 #------------------------------------------------------------------------------
オリジナルには【define _kana_SHORG 0xf2】までが定義されていて、それ以降は空いています。
ほかのfunc関数はどれが使われているのかはよくわからないのでいじっていませんが、少なくとも0xf3〜0xffまでは使えるはずです。
飛鳥のこの定義では、いろいろと配列をはしょった上で0xf3〜0xfdを(それぞれ使いやすそうな名前を付けて)予約しています。
次は、実際の挙動を書いています……1904行目〜2077行目。
#------------------------------------------------------------------------------ func TABLE_FUNC _kana_NOP RETURN 0 endfunc func TABLE_FUNC _kana_SHORG SETMODIFIER MOD_SHIFT SENDVAR _KB_KEYCODE # ifsw CSW_COUNT # CALL _subCount1 # endif RETURN 0 endfunc func TABLE_FUNC _kana_ORG SENDVAR _KB_KEYCODE # ifsw CSW_COUNT # CALL _subCount1 # endif RETURN 0 endfunc #------------------------------------------------------------------------------ # 飛鳥カナ配列のために新しく定義する必要がある関数群 ここから #------------------------------------------------------------------------------ ##define _kana_PERC 0xf3 # % ★未定義 f3 func TABLE_FUNC _kana_PERC #-------- SETMODIFIER MOD_SHIFT SENDKEY '5' # % ★未定義 f3 #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc ##define _kana_AMPER 0xf4 # & ★未定義 f4 func TABLE_FUNC _kana_AMPER #-------- SETMODIFIER MOD_SHIFT SENDKEY '6' # & ★未定義 f4 #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc ##define _kana_STAR 0xf5 # * ★未定義 f5 func TABLE_FUNC _kana_STAR #-------- SETMODIFIER MOD_SHIFT SENDKEY VK_APOSTROPHE # * ★未定義 f5 #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc ##define _kana_EXCLA 0xf6 # ! ★未定義 f6 func TABLE_FUNC _kana_EXCLA #-------- SETMODIFIER MOD_SHIFT SENDKEY '1' # ! ★未定義 f6 #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc ##define _kana_DOT 0xf7 # ・ ★未定義 f7 func TABLE_FUNC _kana_DOT #-------- SETMODIFIER MOD_SHIFT SENDKEY VK_SLASH # ・ ★未定義 f7 #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc ##define _kana_PLUS 0xf8 # + ★未定義 f8 func TABLE_FUNC _kana_PLUS #-------- SETMODIFIER MOD_SHIFT SENDKEY VK_SEMICOLON # + ★未定義 f8 #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc ##define _kana_LMBRA 0xf9 # } ★未定義 f9 func TABLE_FUNC _kana_LMBRA #-------- SETMODIFIER MOD_SHIFT SENDKEY VK_RBRACKET # } ★未定義 f9 #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc ##define _kana_RMBRA 0xfa # { ★未定義 fa func TABLE_FUNC _kana_RMBRA #-------- SETMODIFIER MOD_SHIFT SENDKEY VK_LBRACKET # { ★未定義 fa #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc ##define _kana_LTBRA 0xfb # < ★未定義 fb func TABLE_FUNC _kana_LTBRA #-------- SETMODIFIER MOD_SHIFT SENDKEY VK_COMMA # < ★未定義 fc #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc ##define _kana_RTBRA 0xfc # > ★未定義 fc func TABLE_FUNC _kana_RTBRA #-------- SETMODIFIER MOD_SHIFT SENDKEY VK_PERIOD # > ★未定義 fc #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc ##define _kana_MINUS 0xfd # ─ ★未定義 fd func TABLE_FUNC _kana_MINUS #-------- ### SETMODIFIER MOD_SHIFT SENDKEY VK_HYPHEN # ─ ★未定義 fd #-------- ifsw CSW_COUNT CALL _subCount1 endif RETURN 0 endfunc #------------------------------------------------------------------------------ # 飛鳥カナ配列のために新しく定義する必要がある関数群 ここまで #------------------------------------------------------------------------------
【func TABLE_FUNC _kana_ORG】で始まる関数定義までがオリジナルで、それ以降が飛鳥用に追加確保した関数に対する「実際の挙動の記述」となっています。
それぞれの関数内容定義のうち、【#--------】で括ったところがメインアクションを記述するところで、その上は関数定義用の宣言です。
また、【#--------】の下にある【ifsw CSW_COUNT】〜【endif】は「お得カウント」というoyayubiwm独自の機能のための記述となっています。記号類を打つ関数の場合は、間に挟む命令は【CALL _subCount1】にしておいてください*1。
こうやって挙動を記述したら、後はほかの文字と同じように呼んでやれば、そのとおりに動く……はずです。
#最近いじっていないもので、どこか抜けているところがあるかもしれません^^;。
*1:カナを置いている関数の場合は、ローマ字で1打になる「あいうえおゃゅょん」については【CALL _subCount1】として、ローマ字で2打になる文字は【CALL _subCount2】にする……と、そういうことをするためにあります。