blechmusikの日記

キー・カスタマイズ・ソフトウェア "DvorakJ" の覚え書きをはじめとして様々なことを書いています。

mobitanさんのキーボードのカスタマイズ Phase16b について

仕様をざっとみたところ、AutoHotkeyを使用すれば、ほぼ実装できますね。AutoHotkeyVista の環境でも動きます。
IME.ahkを使用すれば、「IME側の設定変更」は不要でしょう。とはいえ IME.ahk には Internet Explorer や Microsoft Word では正常に動作しないという欠点があります。この点に注意する必要があります。
問題は CapsLock の Ctrl への書き換えの部分です。こればかりは現行の AutoHotkey では対処できません。


追記:それっぽいものを作ってみました。

  • ひらがなキー+文字キーを押し下げた後の挙動がおかしくなってしまいます。解決方法が解りません。
  • ウィンドウの最大化のトグルを実装していません。ここではただ最大化のみしています。

実装できる、と言ってもこれじゃあ、ねぇ。


さらに追記:mobitanさんの指摘を反映しました。コメント欄をご覧ください。

Process, Priority, , High

SendMode Input
#NoEnv
#SingleInstance FORCE
#WinActivateForce
#UseHook
#persistent

SetBatchLines, -1
SetWinDelay, 0
SetKeyDelay, 0
SetControlDelay, 0 



; AutoHotokeyを流行らせるアップローダ
; http://lukewarm.s101.xrea.com/up/
; 089.zip	Shift&Space + IME.ahk

#Include %A_ScriptDir%
#Include .\IME.ahk


sc029::Esc
sc07B::BS
sc079::
	Send,{Enter}
	IME_SET(0)
	return

sc070::
	Send,{Del}
	return

~Shift::
	IME_SET(0)
	return



sc00C::Send,{[}
sc00D::Send,{]}
sc07D::Send,~

+sc003::Send,@
+sc007::Send,{^}
+sc008::Send,&
+sc009::Send,*
+sc00A::Send,(
+sc00B::Send,)
+sc00C::Send,{{}
+sc00D::Send,{}}
+sc07D::Send,``

sc01A::Send,=
sc01B::Send,"
+sc01A::Send,{+}
+sc01B::Send,'


sc028::Send,-
sc02B::Send,\
+sc027::Send,:
+sc028::Send,_
+sc02B::Send,|

sc073::Shift


Space::Send,{Space}


Space & sc002::Send,{F1}
Space & sc003::Send,{F2}
Space & sc004::Send,{F3}
Space & sc005::Send,{F4}
Space & sc006::Send,{F5}
Space & sc007::Send,{F6}
Space & sc008::Send,{F7}
Space & sc009::Send,{F8}
Space & sc00A::Send,{F9}
Space & sc00B::Send,{F10}
Space & sc00C::Send,{F11}
Space & sc00D::Send,{F12}
Space & sc07D::Send,{vkF4sc029} ; 全角


Space & sc010::Send,{vk1Csc079} ; 再変換
Space & sc011::Send,!{Left}
Space & sc012::Send,{Space}
Space & sc013::Send,!{Right}

;;; toggle: WinRestore
;;; WinRestore
;;; http://www.autohotkey.com/docs/commands/WinRestore.htm
Space & sc014::WinMaximize ; Mod1+[ T ] = ウィンドウ最大化トグル

Space & sc015::Send,^{Home}
Space & sc016::Send,^{Left}
Space & sc017::Send,{Up}
Space & sc018::Send,^{Right}
Space & sc019::Send,^{v}

; Mod1+[ = ] = クリップボード履歴 (常駐ソフトのキー設定に合わせる)
; Space & sc01A:: 

Space & sc01B::Send,{PgUp}


Space & sc01E::Send,{Esc}
Space & sc01F::Send,{BS}
Space & sc020::Send,{Enter}
Space & sc021::Send,{Del}
Space & sc022::Send,!{F4}
Space & sc023::Send,{Home}
Space & sc024::Send,{Left}
Space & sc025::Send,{Down}
Space & sc026::Send,{Right}
Space & sc027::Send,{End}
Space & sc028::Send,{AppsKey}
Space & sc02B::Send,{PgDn}


Space & sc02C::Send,{Undo}
Space & sc02D::Send,^+{Tab}
Space & sc02E::Send,^{Tab}
Space & sc02F::Send,^{F4}
Space & sc030::WinMinimize
Space & sc031::Send,^{x}
Space & sc032::Send,^{c}
Space & sc033::Send,!{Tab}
Space & sc034::Send,{Tab}
Space & sc035::Send,^{End}
; Space & sc073::Send,{}



sc079 & sc002::
sc079 & sc003::
sc079 & sc004::
sc079 & sc005::
sc079 & sc006::
sc079 & sc007::
sc079 & sc008::
sc079 & sc009::
sc079 & sc00A::
sc079 & sc00B::
sc079 & sc00C::
sc079 & sc00D::
sc079 & sc07D::
sc079 & sc010::
sc079 & sc011::
sc079 & sc012::
sc079 & sc013::
sc079 & sc014::
sc079 & sc015::
sc079 & sc016::
sc079 & sc017::
sc079 & sc018::
sc079 & sc019::
sc079 & sc01A::
sc079 & sc01B::
sc079 & sc01E::
sc079 & sc01F::
sc079 & sc020::
sc079 & sc021::
sc079 & sc022::
sc079 & sc023::
sc079 & sc024::
sc079 & sc025::
sc079 & sc026::
sc079 & sc027::
sc079 & sc028::
sc079 & sc02B::
sc079 & sc02C::
sc079 & sc02D::
sc079 & sc02E::
sc079 & sc02F::
sc079 & sc030::
sc079 & sc031::
sc079 & sc032::
sc079 & sc033::
sc079 & sc034::
sc079 & sc035::
sc079 & sc073::
	IME_SET(1)
	IME_SetConvMode(25)
	StringRight, OutputVar, A_ThisHotkey, 5
	Send,{%OutputVar%}
	return


sc070 & sc002::
sc070 & sc003::
sc070 & sc004::
sc070 & sc005::
sc070 & sc006::
sc070 & sc007::
sc070 & sc008::
sc070 & sc009::
sc070 & sc00A::
sc070 & sc00B::
sc070 & sc00C::
sc070 & sc00D::
sc070 & sc07D::
sc070 & sc010::
sc070 & sc011::
sc070 & sc012::
sc070 & sc013::
sc070 & sc014::
sc070 & sc015::
sc070 & sc016::
sc070 & sc017::
sc070 & sc018::
sc070 & sc019::
sc070 & sc01A::
sc070 & sc01B::
sc070 & sc01E::
sc070 & sc01F::
sc070 & sc020::
sc070 & sc021::
sc070 & sc022::
sc070 & sc023::
sc070 & sc024::
sc070 & sc025::
sc070 & sc026::
sc070 & sc027::
sc070 & sc028::
sc070 & sc02B::
sc070 & sc02C::
sc070 & sc02D::
sc070 & sc02E::
sc070 & sc02F::
sc070 & sc030::
sc070 & sc031::
sc070 & sc032::
sc070 & sc033::
sc070 & sc034::
sc070 & sc035::
sc070 & sc073::
	IME_SET(1)
	IME_SetConvMode(16)
	StringRight, OutputVar, A_ThisHotkey, 5
	Send,{%OutputVar%}
	
	return