;冒頭の設定。Auto-executeセクション SetKeyDelay, 20 return ;エディターの設定。好きなエディターを選んでください。(コードを無効にするには、この行の先頭の記号をコードの頭に付けてください。有効にするには取り除いてください。) ;#IfWinActive ahk_class EmEditorMainFrame3 #IfWinActive ahk_class Notepad ;#IfWinActive ahk_class EmEditorMainFrame ;EmEditorのウィンドウがアクティブの時のみ割り当てを行わせる ;ここから、メインコントロール部です。 ;ここから、単独で働くキーです。コード上一回記されています。 ;ミュートのオンオフを切り替えます。 q:: If(numdodo = 10){ Send, {Volume_Mute} numdodo = 15 clipboard = clipboard = 消音をやめました } else { numdodo = 10 clipboard = clipboard = 消音になります ;当然ながら消音にすると上記の音も消えちゃうので、ここで1500ミリ秒処理を眠らせます。眠らせる時間は下記の数字で加減してください。 Sleep, 1500 Send, {Volume_Mute} } return ;サスペンド状態のオンオフを切り替えます。 LWin:: Suspend If(numdada = 10){ numdada = 15 clipboard = clipboard = サスペンド解除 } else { numdada = 10 clipboard = clipboard = サスペンドモード } return ;上書き保存します。 vk1C:: clipboard = clipboard = うわがき保存しました Send, ^s return ;補助キーの指定 NumpadEnd::1 NumpadDown::2 NumpadPgDn::3 NumpadLeft::4 NumpadClear::5 NumpadRight::6 NumpadHome::7 NumpadUp::8 NumpadPgUp::9 NumpadIns::0 NumpadDel::. z::F7 g::Tab ;WIN10IME専用 NumpadAdd:: Send, {Enter} keikokusuu = 0 ts = return Numpad8::PgUp Numpad2::PgDn Numpad7::Home Numpad9::End Numpad0::Right Left:: Send, {Left} ts = return ;ここまで、単独で働くキーでした。コード上一回記されています。 ;ここから、ThisHotkeyと連動して働くキーです。コード上二回以上記されています。 ;補助キーの続き Numpad1:: Numpad3:: vk1D:: c:: ;メインテンキーの指定 a:: s:: d:: f:: Space:: Right:: Numpad4:: Numpad5:: Numpad6:: NumpadEnter:: ;ここまで、ThisHotkeyと連動して働くキーでした。 ;押されたキー。 x = %A_ThisHotkey% ;補助キーの振る舞い If(x ="Numpad1"){ Send, {Del} keikokusuu-=1 } If(x ="vk1D"){ Send, {Space} keikokusuu = 0 ts = } If(x ="c"){ Send, {BS} keikokusuu-=1 StringTrimRight, ts, ts, 1 } ;左手キーの振る舞い ;共通処理です If(x ="Space" or x ="f" or x ="d" or x ="s" or x ="a"){ If(ts ="x"){ Send, {BS} } If(ts ="xx"){ Send, {BS}{BS} } If(ts ="xxx"){ Send, {BS}{BS}{BS} } } ;『あ』列の処理 If(x ="Space"){ If(ts <>"x" and ts <>"xx" and ts <>"xxx" and ts <>"c"){ Send, a ts69 = a ts9 = %ts%a ts99 = %ts9% ts999:=hotstrclpa(ts99) } If(ts ="x"){ Send, nn ts9 = nn ts99 = nn ts999:=hotstrclp(ts99) } If(ts ="xx"){ Send, , ts99 = ten ts999:=hotstrclp(ts99) ts9 = ? } If(ts ="xxx"){ Send, {`!} ts99 = ottamage ts999:=hotstrclp(ts99) ts9 = ? } If(ts ="c"){ Send, {BS}she ts99 = cca ts999:=hotstrclp(ts99) ts9 = ?? } } ;『い』列の処理 If(x ="f"){ If(ts <>"x" and ts <>"xx" and ts <>"xxx" and ts <>"c"){ Send, i ts69 = i ts9 = %ts%i ts99 = %ts9% ts999:=hotstrclpi(ts99) } If(ts ="x"){ Send, - ts9 = u ts99 = ppppp } If(ts ="xx"){ Send, . ts99 = maru ts999:=hotstrclp(ts99) ts9 = ? } If(ts ="xxx"){ Send, ? ts99 = questo ts999:=hotstrclp(ts99) ts9 = ? } If(ts ="c"){ Send, {BS}dhi ts99 = cci ts999:=hotstrclp(ts99) ts9 = ?? } } ;『う』列の処理 If(x ="d"){ If(ts <>"x" and ts <>"xx" and ts <>"xxx" and ts <>"c"){ Send, u ts69 = u ts9 = %ts%u ts99 = %ts9% ts999:=hotstrclpu(ts99) } If(ts ="x"){ Send, / ts99 = nakatenn ts999:=hotstrclp(ts99) ts9 = ? } If(ts ="xx"){ Send, {`^}{Space}{Space}{Up} ;WIN10IME用 ;Send, {`^}{Space}{Space} ;XPIME用 ts9 = ts99 = hennkannkouho ts999:=hotstrclp(ts99) keikokusuu = 0 } If(ts ="xxx"){ ts9 = ts99 = } If(ts ="c"){ Send, {BS}thi ts99 = ccu ts999:=hotstrclp(ts99) ts9 = ?? } } ;『え』列の処理 If(x ="s"){ If(ts <>"x" and ts <>"xx" and ts <>"xxx" and ts <>"c"){ Send, e ts69 = e ts9 = %ts%e ts99 = %ts9% ts999:=hotstrclpe(ts99) } If(ts ="x"){ Send, l ts9 = ts99 = lllll ts999:=hotstrclp(ts99) } If(ts ="xx"){ Send, (){Left} ts99 = kakko ts999:=hotstrclp(ts99) ts9 = ?? } If(ts ="xxx"){ ts99 = } If(ts ="c"){ Send, {BS}je ts99 = cce ts999:=hotstrclp(ts99) ts9 = ?? } } ;『お』列の処理 If(x ="a"){ If(ts <>"x" and ts <>"xx" and ts <>"xxx" and ts <>"c"){ Send, o ts69 = o ts9 = %ts%o ts99 = %ts9% ts999:=hotstrclpo(ts99) } If(ts ="x"){ Send, tta{BS} ts99 = tststs ts999:=hotstrclp(ts99) ts9 = ? } If(ts ="xx"){ Send, []{Left} ts99 = kagikakko ts999:=hotstrclp(ts99) ts9 = ?? } If(ts ="xxx"){ Send, ""{Left} ts99 = tyonnkakko ts999:=hotstrclp(ts99) ts9 = ?? } If(ts ="c"){ Send, {BS}tye ts99 = cco ts999:=hotstrclp(ts99) ts9 = ?? } } ;これも共通処理です If(x ="Space" or x ="f" or x ="d" or x ="s" or x ="a"){ ;棒読みちゃん用です。不用の時は無効にすることを推奨します。(コードを無効にするには、この行の先頭の記号をコードの頭に付けてください。) If(ts999 = clipboard){ ts999 = %ts999%"." } clipboard = clipboard = %ts999% ts999 = keikokusuu:= keikoku(ts9,keikokusuu) ts = } ;右手キーの振る舞い If(x ="Right"){ Send, x ts = %ts%x ts:=hotstrx(ts) } If(x ="Numpad4"){ Send, k ts = %ts%k ts:=hotstrk(ts) } If(x ="Numpad5"){ Send, s ts = %ts%s ts:=hotstrs(ts) } If(x ="Numpad6"){ Send, h ts = %ts%h ts:=hotstrh(ts) } If(x ="NumpadEnter"){ Send, t ts = %ts%t ts:=hotstrt(ts) } If(x ="Numpad3"){ Send, y ts = %ts%y ts:=hotstry(ts) } ;ここまで、メインコントロール部でした。 ;ここから、子音変換の関数です。 ;共通処理関数です hotstrlen(w2){ StringLen, tlen, w2 Loop, %tlen% { Send, {BS} } } ;『x』列の処理関数 hotstrx(w){ wr = x If(w ="x"){ wr = x } If(w ="xx"){ wr = xx } If(w ="xxx"){ wr = xxx } If(w ="xxxx"){ wr = } If(w ="kx"){ wr = g } If(w ="sx"){ wr = z } If(w ="hx"){ wr = b } If(w ="tx"){ wr = d } If(w="gx"){ wr = gy } If(w="zx"){ wr = zy } If(w="bx"){ wr = by } If(w="dx"){ wr = dy } If(w="gyx"){ wr = gy } If(w="zyx"){ wr = zy } If(w="byx"){ wr = by } If(w="dyx"){ wr = dy } hotstrlen(w) Send, %wr% return wr } ;『k』列の処理関数 hotstrk(w){ wr = k If(w ="k"){ wr = k } If(w ="xk"){ wr = n } If(w="kk"){ wr = ky } If(w ="sk"){ wr = w } If(w ="xxk"){ wr = c } If(w="nk"){ wr = ny } If(w="kyk"){ wr = ky } If(w="xxxk"){ wr = q } If(w="nyk"){ wr = ny } If(w="qk"){ wr = qy } If(w="qyk"){ wr = qy } hotstrlen(w) Send, %wr% return wr } ;『s』列の処理関数 hotstrs(w){ wr = s If(w ="s"){ wr = s } If(w ="xs"){ wr = r } If(w ="ks"){ wr = y } If(w="ss"){ wr = sy } If(w ="xxs"){ wr = f } If(w="rs"){ wr = ry } If(w="sys"){ wr = sy } If(w="xxxs"){ wr = } If(w="fs"){ wr = fy } If(w="rys"){ wr = ry } If(w="fys"){ wr = fy } hotstrlen(w) Send, %wr% return wr } ;『h』列の処理関数 hotstrh(w){ wr = h If(w ="h"){ wr = h } If(w ="xh"){ wr = p } If(w="hh"){ wr = hy } If(w ="xxh"){ wr = v } If(w="ph"){ wr = py } If(w="hyh"){ wr = hy } If(w="xxxh"){ wr = } If(w="vh"){ wr = vy } If(w="pyh"){ wr = py } If(w="vyh"){ wr = vy } hotstrlen(w) Send, %wr% return wr } ;『t』列の処理関数 hotstrt(w){ wr = t If(w ="t"){ wr = t } If(w ="xt"){ wr = m } If(w="tt"){ wr = ty } If(w ="xxt"){ wr = j } If(w="mt"){ wr = my } If(w="tyt"){ wr = ty } If(w="xxxt"){ wr = } If(w="jt"){ wr = jy } If(w="myt"){ wr = my } If(w="jyt"){ wr = jy } hotstrlen(w) Send, %wr% return wr } ;『y』列の処理関数 hotstry(w){ wr = y StringLen, tylen, w StringTrimRight, ts51, w, 1 If(tylen= 2){ wr = %w% } If(tylen= 3){ wr = %ts51% } If(w="xy" or w="xxy" or w="yy" or w="wy" or w="cy"){ wr = y } hotstrlen(w) Send, %wr% return wr } ;ここまで、子音変換の関数でした。 ;ここから、音声変換の関数です。 ;『あ』列の処理関数 hotstrclpa(w9){ w8 = If(w9 ="a"){ w8 = あ } If(w9 ="ka"){ w8 = か } If(w9 ="sa"){ w8 = さ } If(w9 ="ta"){ w8 = た } If(w9 ="na"){ w8 = な } If (w8 <> "") return w8 If(w9 ="ha"){ w8 = は } If(w9 ="ma"){ w8 = ま } If(w9 ="ya"){ w8 = や } If(w9 ="ra"){ w8 = ら } If(w9 ="wa"){ w8 = わ } If (w8 <> "") return w8 If(w9 ="ga"){ w8 = が } If(w9 ="za"){ w8 = ざ } If(w9 ="da"){ w8 = だ } If(w9 ="ba"){ w8 = ば } If(w9 ="pa"){ w8 = ぱ } If (w8 <> "") return w8 If(w9 ="kya"){ w8 = きゃ } If(w9 ="sya"){ w8 = しゃ } If(w9 ="tya"){ w8 = ちゃ } If(w9 ="hya"){ w8 = ひゃ } If(w9 ="nya"){ w8 = にゃ } If(w9 ="rya"){ w8 = りゃ } If(w9 ="mya"){ w8 = みゃ } If(w9 ="pya"){ w8 = ぴゃ } If(w9 ="gya"){ w8 = ぎゃ } If(w9 ="zya"){ w8 = じゃ } If(w9 ="dya"){ w8 = ぢゃ } If(w9 ="bya"){ w8 = びゃ } If (w8 <> "") return w8 If(w9 ="fa"){ w8 = ふぁ } If(w9 ="va"){ w8 = ヴぁ } If(w9 ="qa"){ w8 = くぁ } If(w9 ="ja"){ w8 = じゃ } If(w9 ="fya"){ w8 = ふゃ } If(w9 ="vya"){ w8 = ヴゃ } If(w9 ="jya"){ w8 = じゃ } If(w9 ="qya"){ w8 = くゃ } return w8 } ;『い』列の処理関数 hotstrclpi(w9){ w8 = If(w9 ="i"){ w8 = い } If(w9 ="ki"){ w8 = き } If(w9 ="si"){ w8 = し } If(w9 ="ti"){ w8 = ち } If (w8 <> "") return w8 If(w9 ="ni"){ w8 = に } If(w9 ="hi"){ w8 = ひ } If(w9 ="mi"){ w8 = み } If(w9 ="ri"){ w8 = り } If (w8 <> "") return w8 If(w9 ="gi"){ w8 = ぎ } If(w9 ="zi"){ w8 = じ } If(w9 ="di"){ w8 = ぢ } If(w9 ="bi"){ w8 = び } If(w9 ="pi"){ w8 = ぴ } If (w8 <> "") return w8 If(w9 ="yi"){ w8 = い } If(w9 ="kyi"){ w8 = きぃ } If(w9 ="syi"){ w8 = しぃ } If(w9 ="tyi"){ w8 = ちぃ } If(w9 ="hyi"){ w8 = ひぃ } If(w9 ="nyi"){ w8 = にぃ } If(w9 ="ryi"){ w8 = りぃ } If(w9 ="myi"){ w8 = みぃ } If(w9 ="pyi"){ w8 = ぴぃ } If(w9 ="gyi"){ w8 = ぎぃ } If(w9 ="zyi"){ w8 = じぃ } If(w9 ="dyi"){ w8 = ぢぃ } If(w9 ="byi"){ w8 = びぃ } If(w9 ="fi"){ w8 = ふぃ } If(w9 ="vi"){ w8 = ヴぃ } If(w9 ="qi"){ w8 = くぃ } If(w9 ="ji"){ w8 = じ } If(w9 ="fyi"){ w8 = ふぃ } If(w9 ="vyi"){ w8 = ヴぃ } If(w9 ="jyi"){ w8 = じぃ } If(w9 ="qyi"){ w8 = くぃ } return w8 } ;『う』列の処理関数 hotstrclpu(w9){ w8 = If(w9 ="u"){ w8 = う } If(w9 ="ku"){ w8 = く } If(w9 ="su"){ w8 = す } If(w9 ="tu"){ w8 = つ } If(w9 ="nu"){ w8 = ぬ } If (w8 <> "") return w8 If(w9 ="hu"){ w8 = ふ } If(w9 ="mu"){ w8 = む } If(w9 ="yu"){ w8 = ゆ } If(w9 ="ru"){ w8 = る } If (w8 <> "") return w8 If(w9 ="gu"){ w8 = ぐ } If(w9 ="zu"){ w8 = ず } If(w9 ="du"){ w8 = づ } If(w9 ="bu"){ w8 = ぶ } If(w9 ="pu"){ w8 = ぷ } If (w8 <> "") return w8 If(w9 ="kyu"){ w8 = きゅ } If(w9 ="syu"){ w8 = しゅ } If(w9 ="tyu"){ w8 = ちゅ } If(w9 ="hyu"){ w8 = ひゅ } If(w9 ="nyu"){ w8 = にゅ } If(w9 ="ryu"){ w8 = りゅ } If(w9 ="myu"){ w8 = みゅ } If(w9 ="pyu"){ w8 = ぴゅ } If(w9 ="gyu"){ w8 = ぎゅ } If(w9 ="zyu"){ w8 = じゅ } If(w9 ="dyu"){ w8 = ぢゅ } If(w9 ="byu"){ w8 = びゅ } If (w8 <> "") return w8 If(w9 ="fu"){ w8 = ふ } If(w9 ="vu"){ w8 = ヴ } If(w9 ="qu"){ w8 = く } If(w9 ="ju"){ w8 = じゅ } If(w9 ="fyu"){ w8 = ふゅ } If(w9 ="vyu"){ w8 = ヴゅ } If(w9 ="jyu"){ w8 = じゅ } If(w9 ="qyu"){ w8 = くゅ } return w8 } ;『え』列の処理関数 hotstrclpe(w9){ w8 = If(w9 ="e"){ w8 = え } If(w9 ="ke"){ w8 = け } If(w9 ="se"){ w8 = せ } If(w9 ="te"){ w8 = て } If (w8 <> "") return w8 If(w9 ="ne"){ w8 = ね } If(w9 ="he"){ w8 = へ } If(w9 ="me"){ w8 = め } If(w9 ="re"){ w8 = れ } If (w8 <> "") return w8 If(w9 ="ge"){ w8 = げ } If(w9 ="ze"){ w8 = ぜ } If(w9 ="de"){ w8 = で } If(w9 ="be"){ w8 = べ } If(w9 ="pe"){ w8 = ぺ } If (w8 <> "") return w8 If(w9 ="ye"){ w8 = いぇ } If(w9 ="kye"){ w8 = きぇ } If(w9 ="sye"){ w8 = しぇ } If(w9 ="tye"){ w8 = ちぇ } If(w9 ="hye"){ w8 = ひぇ } If(w9 ="nye"){ w8 = にぇ } If(w9 ="rye"){ w8 = りぇ } If(w9 ="mye"){ w8 = みぇ } If(w9 ="pye"){ w8 = ぴぇ } If(w9 ="gye"){ w8 = ぎぇ } If(w9 ="zye"){ w8 = じぇ } If(w9 ="dye"){ w8 = ぢぇ } If(w9 ="bye"){ w8 = びぇ } If(w9 ="fe"){ w8 = ふぇ } If(w9 ="ve"){ w8 = ヴぇ } If(w9 ="qe"){ w8 = くぇ } If(w9 ="je"){ w8 = じぇ } If(w9 ="fye"){ w8 = ふぇ } If(w9 ="vye"){ w8 = ヴぇ } If(w9 ="jye"){ w8 = じぇ } If(w9 ="qye"){ w8 = くぇ } return w8 } ;『お』列の処理関数 hotstrclpo(w9){ w8 = If(w9 ="o"){ w8 = お } If(w9 ="ko"){ w8 = こ } If(w9 ="so"){ w8 = そ } If(w9 ="to"){ w8 = と } If(w9 ="no"){ w8 = の } If (w8 <> "") return w8 If(w9 ="ho"){ w8 = ほ } If(w9 ="mo"){ w8 = も } If(w9 ="yo"){ w8 = よ } If(w9 ="ro"){ w8 = ろ } If(w9 ="wo"){ w8 = を } If (w8 <> "") return w8 If(w9 ="go"){ w8 = ご } If(w9 ="zo"){ w8 = ぞ } If(w9 ="do"){ w8 = ど } If(w9 ="bo"){ w8 = ぼ } If(w9 ="po"){ w8 = ぽ } If (w8 <> "") return w8 If(w9 ="kyo"){ w8 = きょ } If(w9 ="syo"){ w8 = しょ } If(w9 ="tyo"){ w8 = ちょ } If(w9 ="hyo"){ w8 = ひょ } If(w9 ="nyo"){ w8 = にょ } If(w9 ="ryo"){ w8 = りょ } If(w9 ="myo"){ w8 = みょ } If(w9 ="pyo"){ w8 = ぴょ } If(w9 ="gyo"){ w8 = ぎょ } If(w9 ="zyo"){ w8 = じょ } If(w9 ="dyo"){ w8 = ぢょ } If(w9 ="byo"){ w8 = びょ } If (w8 <> "") return w8 If(w9 ="fo"){ w8 = ふぉ } If(w9 ="vo"){ w8 = ヴぉ } If(w9 ="qo"){ w8 = くぉ } If(w9 ="jo"){ w8 = じょ } If(w9 ="fyo"){ w8 = ふょ } If(w9 ="vyo"){ w8 = ヴょ } If(w9 ="jyo"){ w8 = じょ } If(w9 ="qyo"){ w8 = くょ } return w8 } ;その他の処理関数 hotstrclp(w9){ w8 = If(w9 ="cca"){ w8 = しぇ } If(w9 ="cci"){ w8 = でぃ } If(w9 ="ccu"){ w8 = てぃ } If(w9 ="cce"){ w8 = じぇ } If(w9 ="cco"){ w8 = ちぇ } If(w9 ="lllll"){ w8 = える } If(w9 ="tststs"){ w8 = つ } If(w9 ="nn"){ w8 = ん } If(w9 ="kakko"){ w8 = かっこ } If(w9 ="ten"){ w8 = てん } If(w9 ="maru"){ w8 = まる } If(w9 ="questo"){ w8 = くえすちょん } If(w9 ="ottamage"){ w8 = おったまげーしょん } If(w9 ="hennkannkouho"){ w8 = へんかんこうほ } If(w9 ="nakatenn"){ w8 = なかてん } If(w9 ="kagikakko"){ w8 = かぎかっこ } If(w9 ="tyonnkakko"){ w8 = ちょんかっこ } return w8 } ;ここまで、音声変換の関数でした。 ;カタカナの長音だけ、別扱いです。 If(ts99 ="ppppp"){ If(ts69 ="a"){ wts69 = ぁ } If(ts69 ="i"){ wts69 = ぃ } If(ts69 ="u"){ wts69 = ぅ } If(ts69 ="e"){ wts69 = ぇ } If(ts69 ="o"){ wts69 = ぉ } ts99 = clipboard = clipboard = %wts69% } ;変換限界を警告する関数です。親切設計です。 keikoku(w19,w17){ If(w19 ="?"){ w18 = 1 } If(w19 ="??"){ w18 = 2 } If(w19 <>"??" and w19 <>"?"){ StringLen, tlen2, w19 If(tlen2 < 1){ w18 = 0 } If(tlen2 = 1 or tlen2 = 2){ w18 = 1 } If(tlen2 = 3){ w18 = 2 } If(tlen2 > 3){ w18 = 3 } } w17+=w18 If(w17 > 60){ clipboard = clipboard = 変換限界が迫っています w17 = 50 } return w17 } ;登録ワード入力部 ;:*:gg::jyouhou ;XPIME専用 :*:bb::borupeko :*:vv::boruhesu :*:rr::anndoroido :*:tt::avisennnahakase :*:ee::abata-/ :*:yy:: Send, delisupure- clipboard = ディスプレー Return ;音声を出したい時は、このように書いてください。 :*:11::boruhesu :*:12::borupeko :*:13::jyouhou :*:14::jinnkakujyouhou :*:15::buenosuairesu :*:16::verugiriusu :*:17::konnpyu-ta- :*:18::innta-netto :*:19::simyure-syonn :*:21::[kaerenakunattaotoko] :*:23::to-ru/ki-sinngu :*:24::yositune :*:25::[arehu] :*:26::beatori-tye :*:27::ki-sinngu :*:31:: Send, suwe-dennborugu clipboard = スウェーデンボルグ Return ;音声を出したい時は、このように書いてください。 :*:32::tennsinotorannpetto/purojekuto :*:34::sigosisutemu :*:35::homunnkurusu :*:36::niruva-na :*:37::demiurugosu :*:41::isuramu :*:42::runessannsu :*:43::isuramu/runessannsu :*:44::averoesu :*:45::avisennna :*:55::ulitogennsyutainn :*:54::yakobusonnhakase :*:56::kanousekaikaisyakuha :*:53::natinoboureiotoko :*:57::[tinnmokunodaisannteikoku] :*:52::parasiosuhakase :*:58::[seferu/iletulira-(souzounosyo)] :*:66::sokuratesu :*:67::tolu-ra :*:65::ketularukoatoru return #IfWinActive ;ウィンドウの限定を解除