/* Emacsのinput-methodみたいにマクロンやウムラウトを変換したい! 【使いかた】 0. SKKGateをインストールしておく。 1. このファイルをskkmark.jsの名前で保存する。 2. エクスプローラからダブルクリックで常駐。再度ダブルクリックで終了。 あとはAbbrevモードで To-kyo- とか変換してみよう! このプログラムはCC0 PUBLIC DOMAINです */ // 変換テーブル mark = { // マクロン 'A-': "\u0100", 'a-': "\u0101", 'E-': "\u0112", 'e-': "\u0113", 'I-': "\u012A", 'i-': "\u012B", 'O-': "\u014C", 'o-': "\u014D", 'U-': "\u016A", 'u-': "\u016B", // ウムラウト/トレマ 'A"': "\u00C4", 'E"': "\u00CB", 'I"': "\u00CF", 'O"': "\u00D6", 'U"': "\u00DC", 'a"': "\u00E4", 'e"': "\u00EB", 'i"': "\u00EF", 'o"': "\u00F6", 'u"': "\u00FC", 'y"': "\u00FF", 'Y"': "\u0178" } Gate = new ActiveXObject("SKKGate") Shell = new ActiveXObject("WScript.Shell") myself = 2 for (;;) { // 待機 id = Gate.Sync(myself) // 終了 (停止要求 -1 / 二重起動 -2) if (id < 0) { if (id == -2) { Shell.Popup("停止します") Gate.Sync(-1, myself) } break } // 変換 if (id == 0) { index = Gate.Get() result = index for (x in mark) result = result.replace(new RegExp(x, 'g'), mark[x]) if (result != index) Gate.Put(result) } }