네.. 안녕하십니까..
흠... 아아... 다이렉트 엑스가..
나를 괴롭게 맹글어서리..
다름이 아니오라 프로젝트 진행중..
키보드를 직접 제어하는 부분에서 머리에 김이 나네여
음.. 자세히 말씀을 드리면 다이렉트 인풋을 사용하여
키보드 버퍼에 직접 원하는 키값을 넣어 주는 곳에서..
막혔습니다.. 다이렉트 엑스는 윈도우의 메세지 처리하고는
별개의 키처리를 하더군여.. 그래서 좀.. 문제가 생겨
이 글을 올립니다. 혹시.. 다이렉트 엑스의 특히
다이렉트 인풋에 고수님께서는 조언 부탁드립니다.
윈도우에서 할수 있는 방법(윈도우 핸들값을 얻어 Post Message, Send Message
KeyBoard_Event)은.. 다 써봤습니다만.. 아하.. 한계에 부딪혔습니다..
음.. 키보드를 직접제어 할수 있는 방법(키보드 버퍼에 직접 키값을 쓸수 있는 방법)좀 부탁합니다. 아니면.. 델파이에서 키보드 인터럽트 쓰는 방법이라두.. 알고 싶어용..
꼭 부탁합니당... 이거 못하면 저 짤려여... 부탁합니다..
시간이 얼마 없습니다.
그럼 즐넷 하세염!!!!!
> 네.. 안녕하십니까..
> 흠... 아아... 다이렉트 엑스가..
> 나를 괴롭게 맹글어서리..
> 다름이 아니오라 프로젝트 진행중..
> 키보드를 직접 제어하는 부분에서 머리에 김이 나네여
> 음.. 자세히 말씀을 드리면 다이렉트 인풋을 사용하여
> 키보드 버퍼에 직접 원하는 키값을 넣어 주는 곳에서..
> 막혔습니다.. 다이렉트 엑스는 윈도우의 메세지 처리하고는
> 별개의 키처리를 하더군여.. 그래서 좀.. 문제가 생겨
> 이 글을 올립니다. 혹시.. 다이렉트 엑스의 특히
> 다이렉트 인풋에 고수님께서는 조언 부탁드립니다.
> 윈도우에서 할수 있는 방법(윈도우 핸들값을 얻어 Post Message, Send Message
> KeyBoard_Event)은.. 다 써봤습니다만.. 아하.. 한계에 부딪혔습니다..
> 음.. 키보드를 직접제어 할수 있는 방법(키보드 버퍼에 직접 키값을 쓸수 있는 방법)좀 부탁합니다. 아니면.. 델파이에서 키보드 인터럽트 쓰는 방법이라두.. 알고 싶어용..
> 꼭 부탁합니당... 이거 못하면 저 짤려여... 부탁합니다..
> 시간이 얼마 없습니다.
>
> 그럼 즐넷 하세염!!!!!
정확하게 질문의 요지가 파악이 안되어서 정확한 답변은
드릴 수가 없으나 제가 쓰는 Direct Input class 의 내용은
다음과 같습니다.
public
DirectInputKeyboard : IDirectInputDevice;
procedure TDxInput.GetKeyState(var KeyState : TKeyState);
var
HR : HResult;
begin
HR := DirectInputKeyboard.GetDeviceState(SizeOf(KeyState),@KeyState);
if HR = DIERR_INPUTLOST then DirectInputKeyboard.Acquire;
end;
이런식으로 선언되어 있으며 사용할 때는
var
KeyState : TKeyState;
begin
DxInput.GetKeyState(KeyState);
if KeyState[DIK_RIGHT] and $80 > 0 then 어쩌구;
if KeyState[DIK_LEFT ] and $80 > 0 then 어쩌구;
if KeyState[DIK_UP ] and $80 > 0 then 어쩌구;
if KeyState[DIK_DOWN ] and $80 > 0 then 어쩌구;
이런 식으로 사용하고 있습니다.
( 물론 DInput 에 대한 초기화는 다 했다치고.. )
이 이상의 용법이 Direct Input 의 Keyboard device 에서는
필요하지 않다고 알고 있습니다..
마치 DOS 때의 port 60h 번의 모든 Keyboard 상태를 읽어서
배열에다가 저장하는 거랑 동일 합니다.
그리고 혹시나 DOS 때의 32 bytes 짜리 키버퍼를 생각
하셨다면 그것은 직접 구현하셔야 할 겁니다..
( Queue 방식으로요.. )
단지 특정한 Application 에 Key 입력 이벤트만 생기게
할 목적이라면 PostMessage 로 보내 주는 방식이 나을 것
같아 보입니다..