[xyzzy:08944] Re: 大文字しか入れられない
- Subject: [xyzzy:08944] Re: 大文字しか入れられない
- From: takeharu_yanagiura@xxxxxxxxxxxxxxxxx
- X-mailer: Lotus Notes Release 5.0.7 March 21, 2001
お世話になります。やなぎうらです。
CAPSLOCKの制御の件 、経過を報告します。
>(require "wip/winapi")
>(c:define-dll-entry winapi:BOOL SetKeyboardState ((c:char *)) "user32")
>とかすることで、Win32 API も lisp からコールできる様になるようです。
GetKeyboardState で、状態を読み取って
SetKeyboardState で書き換えるというストーリ-を
思い描いて、チャンクとやらを使ってやってみましたが、
理解も及ばずうまく値が返ってこないようであきらめました。
もしかして、ポインタの操作のような事が必要なんでしょうか?
というわけで、下記のような代替案に落ち着きました。
(require "wip/winapi")
(c:define-dll-entry c:short GetKeyState (c:int) "user32")
(c:define-dll-entry winapi:BOOL
keybd_event (:int32 :int32 :int32 :int32) "user32")
(when (> 1 (GetKeyState 20))
(keybd_event 20 0 0 0)
出来たのは出来たのですが、すっきりしてません。
SetKeyboardState が使えれば、アプリ単位で
CAPSLOCKを制御出来て、keybd_eventでは、OSレベルで
切り替わるらしいです。
もし、なにか情報があればご教示くださいませ。