タイトル | : Re^7: KS のシフトチェックの値 |
投稿日 | : 2023/03/29(水) 02:50 |
投稿者 | : konno | 番 号 | : 10732 10731 番 めざら さんへのコメント コメント数 1 |
> ksmiru.def は榊原さんのナイスな小物マクロです。そうだったのですか、2進数の表示は凄いと思いました。読めないし。(^^;> konno さんの環境は常に Numlock が立ってるのですね。> もしかして,本体連動しないテンキーとか接続していたりします?> (それか,デスクトップのフルキーボードって Numlock 立ってるのでしたっけ?)富士通の10キー付ノートPCです。Numlock が無いと使えないのです。 そうか、$20 32 は、Numlock が立っていたのですね。全然気が付きませんでした。 このマクロでの数値は STKHLP IBM版表示 VTDOS MSDOSPlayer DOSVAXJ3 +1 :R[Shift] 3 1 1 +3 :L[Shift] 3 3 3 +4 : [Ctrl] 4 4 4 +8 : [Alt] 8 8 8 +16: [ScLk] 16 +32: [NmLk] 32 32 +64: [Caps] 64 +128: [Ins] 128 DOSVAXJ3 の [Caps] は、1度押しでIME起動、2度目以降は [Caps]ON 表示のままになります。 他のエミュでは、IME に取られるのか、表示が出ないですね。 この KS の値は、AH02 INT16h BIOSコールの値とほぼ同じですが、シフトだけ違います。 ax$0200,&i($16) k=ax,&m("key= %04x %d",k,k%256) ;AH02h shift check STKHLP IBM版表示 VTDOS MSDOSPlayer DOSVAXJ3 +1 :R[Shift] 3 1 1 +3 :L[Shift] 3 2 2 これは、.vz1.5 の時の値ですね、1.6 ではvzが値を変更しているのかな。 AH12 INT16h BIOSコールは、AH02 の値とほぼ同じですが、違いもあります。 81 ^^ "keyshift?" ?. :a ; ax$0200,&i($16) k=ax,&m("key= %04x %d",k,k%256) ;AH02h shift check ax$1200,&i($16) k=ax,&m("key= %04x %d",k,k%256) ;AH12h (enh) shift check &w(10) &k (r-$1B)?>a ;ESCが押されてない? &m("") &d . * AH12h (enh) shift check では、VTDOSで +16: [ScLk] key= 1000 0 このように、ah に 10h が入りますね。微妙な違いです。(^^;> > この辺、ダメもとで 10#さんにメールしてみようかな。>> ホットキーの事例もあることだし,まずは皆さまのコメントを待ちましょうか。(笑)メールしちゃいました。(^^; やっぱり WinAPIの仕様らしいです。>Win32Consoleの仕様を理解して貰えれば話は早いのですが、>VTDOSはDOSコマンドとWin32コンソールコマンドをシームレスに扱う為に、>Win32ConsoleをUIとすることが第一要件になってます。>DOSキー入力の元はCONIN$からのキーイベントで、シフト状態もこれから生成しています。>これはキューイングされたイベントなのでリアルタイムなシフト状態という訳ではありませんが、>概ねリアルタイムな物となります。>このキーイベントの仕様としてシフトだけが何故か左右の区別がありません。>この仕様に則った場合、コンソールでの貼り付けが利用可能になります。>貼り付けをサポートするのもこの仕様を採用する理由ですが、貼り付けの仕様上、>シフト状態がリアルタイムな物である事を保証するものではありません。仕様ということで、あとは直に変数に代入することで問題なく使えると思います。
- No.10732 一括表示へ - コメント元:10731 一括表示へ - [ 返信 ] [引用無し] pre