Clubcos  0.0.0
Clubcos - Clubc Operating System
 모두 데이타 구조 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 매크로 페이지들
keyboard.h
이 파일의 문서화 페이지로 가기
1 // Copyright (c) 2014, 임경현 (dlarudgus20)
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //
7 // * Redistributions of source code must retain the above copyright notice, this
8 // list of conditions and the following disclaimer.
9 //
10 // * Redistributions in binary form must reproduce the above copyright notice,
11 // this list of conditions and the following disclaimer in the documentation
12 // and/or other materials provided with the distribution.
13 //
14 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
18 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 
32 #ifndef KEYBOARD_H_
33 #define KEYBOARD_H_
34 
35 #include <stddef.h>
36 #include <stdint.h>
37 #include <stdbool.h>
38 #include "port.h"
39 
40 enum
41 {
46 };
47 
48 enum
49 {
56 };
57 enum
58 {
67 };
68 
69 enum
70 {
73 
74  KEYBOARD_ACK = 0xfa
75 };
76 
81 typedef struct tagKeyStruct
82 {
83  uint8_t NormalKey;
84  uint8_t CombinedKey;
85  bool bPushedKey;
86 } KeyStruct;
87 
91 typedef struct tagKeyboardStruct
92 {
93  bool bNumLock;
94  bool bCapsLock;
95  bool bScrollLock;
96  bool bShift;
98 
108 extern KeyStruct g_KeyTable[];
109 
112 
113 #include "keytable.h"
114 
119 bool ckKeyboardInitialize(void);
124 bool ckKeyboardUpdateLED(void);
125 
129 bool ckKeyboardWaitForACK(void);
134 
138 void ckKeyboardWaitForInput(void);
139 
143 void ckKeyboardResetPC(void);
144 
149 static inline bool ckKeyboardIsInputBufferFull(void)
150 {
151  return (ckPortInByte(KEYBOARD_PORT_STATUS) & KEYBOARD_STATUS_INPB) != 0;
152 }
157 static inline bool ckKeyboardIsOutputBufferFull(void)
158 {
159  return (ckPortInByte(KEYBOARD_PORT_STATUS) & KEYBOARD_STATUS_OUTB) != 0;
160 }
161 
163 void ckKeyboardIntHandler();
164 
165 #endif /* KEYBOARD_H_ */
Definition: keyboard.h:43
Definition: keyboard.h:53
Definition: keyboard.h:71
Definition: keyboard.h:62
bool ckKeyboardUpdateLED(void)
키보드 LED를 갱신합니다.
Definition: keyboard.c:62
struct tagKeyStruct KeyStruct
키 하나를 나타내는 구조체입니다.
struct tagKeyboardStruct KeyboardStruct
키보드 자료구조입니다.
KeyboardStruct g_Keyboard
키보드 자료구조입니다.
Definition: keyboard.c:42
Definition: keyboard.h:74
bool bPushedKey
키가 눌려 있는지의 여부입니다.
Definition: keyboard.h:85
KeyStruct g_KeyTable[]
키 테이블입니다.
Definition: keytable.c:35
Definition: keyboard.h:52
Definition: keyboard.h:54
Definition: keyboard.h:55
Definition: keyboard.h:42
Definition: keyboard.h:59
Definition: keyboard.h:50
void ckKeyboardWaitForInput(void)
입력 버퍼가 비어 있을 때까지 기다립니다.
Definition: keyboard.c:131
Definition: keyboard.h:72
bool bScrollLock
ScrollLock 활성화 여부입니다.
Definition: keyboard.h:95
키보드 자료구조입니다.
Definition: keyboard.h:91
bool ckKeyboardInitialize(void)
키보드를 초기화합니다.
Definition: keyboard.c:47
bool ckKeyboardWaitForACK(void)
키보드의 ACK를 기다립니다.
Definition: keyboard.c:91
Definition: keyboard.h:63
Definition: keyboard.h:65
키 하나를 나타내는 구조체입니다.
Definition: keyboard.h:81
Definition: keyboard.h:45
uint8_t NormalKey
키가 다른 키와 조합되지 않았을 때의 cascii 코드입니다.
Definition: keyboard.h:83
Definition: keyboard.h:66
bool bNumLock
NumLock 활성화 여부입니다.
Definition: keyboard.h:93
several assembly function about port and other miscellaneous things.
bool bShift
Shift키 활성화 여부입니다.
Definition: keyboard.h:96
bool bCapsLock
CapsLock 활성화 여부입니다.
Definition: keyboard.h:94
uint8_t CombinedKey
키가 Shift, Caps Lock 혹은 NumLock과 조합될 때의 cascii 코드입니다.
Definition: keyboard.h:84
void ckKeyboardIntHandler()
키보드 인터럽트 ISR입니다.
Definition: keyboard.h:60
void ckKeyboardResetPC(void)
키보드 컨트롤러를 통해 PC를 재부팅 시킵니다.
Definition: keyboard.c:140
Definition: keyboard.h:44
bool ckKeyboardWaitForACKAndPutQueue(void)
키보드의 ACK를 기다립니다.
Definition: keyboard.c:108
Definition: keyboard.h:51
Definition: keyboard.h:61
Definition: keyboard.h:64