> VZはIMEの制御のためにどのような処理をしていますでしょうか?
すみません、私は VZのFEP制御の仕組をあまり理解してないので正確には答えられません。
> 現状、MS-DOS Playerは、キーボードBIOSのINT 16h, AX=1300hと、
> ATOK割り込みのINT 6Fh, AH=00h-05h,0BhでIMEのオン・オフを制御しています。
ATOK割り込みのINT 6Fh は J3100 のみで使われているようです。
INT 16h, AX=1300h で WinIME が OFF になるのはVZマクロで確認できました。
VZは MS-KANJI API か $IAS で FEP制御しているようですが
keyibm.asm の IAS の部分は
;--- FEP control for DOS/V ---
IFDEF DOSV
fpctr ias
public ias_on
ias_on proc
;ias_on:
push ax
mov bx,1
bios_v 1Dh,0 ; mov ax,1D00h INT10h VIDEO - DOS/V - SHIFT STATUS LINE CONTROL
bios_k 14h,0 ; mov ax,1400h INT16h DOS/V - SHIFT STATUS DISPLAY CONTROL
bios_k 13h,1 ; mov ax,1301h INT16h al,01h get shift status
pop ax
mov dl,al ; Return: DX = current shift status
bios_k 13h,0 ; mov ax,1300h INT16h al,00h set shift status
ret
ias_off:
bios_k 13h,1 ; mov ax,1301h INT16h al,01h get shift status
push dx ; Return: DX = current shift status
and dl,01000000b ; ##157.152
bios_k 13h,0 ; mov ax,1300h INT16h al,00h set shift status
pop ax
ret
ias_on endp
ENDIF
このようになっていますが、全体の流れがわからないので、これで ON/OFF できるのかわからないです。
[ESC] などのプレフィックスキーを押した時に IME が OFF になって欲しいのです。
その後自動的に ON になってくれるといいのですが。
全体の流れを調べてみます。