키,key =키,key =,key 키 key
{
키key - DB내용은 일단 저기로
키보드의 키 내용(아래), 자료구조(dictionary/associative_array/...)/cryptography(hash_function/....)/... 의 key는 나중에 어디에 어떻게 배치할지 tbw
delete_key
backspace / backspace_key
return_key / enter_key
키보드의 키 여기추가 QQQQQ
키보드의 키 여기추가 QQQQQ
키보드의 키 여기추가 QQQQQ
키보드의 키 여기추가 QQQQQ
키보드의 키 여기추가 QQQQQ
}
16-bit IBM PC의 경우.
IRQ 1 사용.
키보드
버퍼,buffer는 0040:001E ~ 0040:003C (32 bytes)
0040:001A와 0040:001C의 두 개
포인터,pointer로 환형 queue를 이룸.
0040:001A는, 프로그램이 키보드 입력을 요청할 때(getch등) 내어줄 문자를 가리킴.
0040:001C는, 다음에 키보드 입력이 있을 때 눌려진 키를 저장할 위치를 가리킴.
한 키가 2바이트씩으로 기록됨. (하나는 스캔코드, 하나는 아스키코드) // scan_code ascii_code
따라서 최대 16개의 키가 저장됨.
int 16h가 키보드 관련인듯.
키보드 버퍼에 키 코드 넣기 // keyboard_buffer
int 16h, ah=5h 사용
ch=입력할 스캔 코드
cl=입력할 아스키 코드
결과
al=0: 성공, 아니면 실패
키보드 인터럽트 벡터가 9라고? 아님 인터럽트 번호?
메모리 주소 0040:0017의 정보
bit | 정보 |
0 | right Shift pressed |
1 | left Shift pressed |
2 | either Ctrl pressed |
3 | either Alt pressed |
4 | ScrollLock active |
5 | NumLock active |
6 | CapsLock active |
7 | Insert active |
메모리 주소 0040:0018의 정보
bit | 정보 |
0 | left Ctrl pressed |
1 | left Alt pressed |
2 | SysRq pressed |
3 | Pause state active |
4 | ScrollLock pressed |
5 | NumLock pressed |
6 | CapsLock pressed |
7 | Insert pressed |
메모리 주소 0040:0096의 정보
bit | 정보 |
0 | last code read was E1h |
1 | last code read was E0h 이게 무슨 의미?? |
2 | right Ctrl pressed |
3 | right Alt pressed |
4 | enhanced keyboard installed - 뜻은? |
5 | force NumLock if read-ID and enhanced keyboard (?) |
6 | last code read was first of two ID codes (?) |
7 | read-ID in progress |
메모리 주소 0040:0097의 정보
bit | 정보 |
0 | ScrollLock LED |
1 | NumLock LED |
2 | CapsLock LED |
3 | reserved, must be zero |
4 | ACK received from keyboard |
5 | RESEND received from keyboard |
6 | LED update in progress |
7 | keyboard transmit error flag |
이런 것들을 peekb로 읽곤 한다.
Ctrl-Break의 인터럽트 번호는 23h이다.
setvect/getvect 로 인터럽트 핸들러를 변경하거나 얻어온다. // interrupt_handler
setvect(int interruptno, void interrupt (*isr)());
void interrupt(*(int interruptno))();
}