Function report |
Source Code:kernel\debug\kdb\kdb_keyboard.c |
Create Date:2022-07-28 11:44:41 |
Last Modify:2020-03-17 19:12:05 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:Check if the keyboard controller has a keypress for us.* Some parts (Enter Release, LED change) are still blocking polled here,* but hopefully they are all short.
Proto:int kdb_get_kbd_char(void)
Type:int
Parameter:Nothing
43 | If KDB_FLAG(NO_I8042) || KDB_FLAG(NO_VT_CONSOLE) || inb(Status register (R) ) == 0xff && inb(Keyboard data register (R/W) ) == 0xff Then |
45 | kbd_exists = 0 |
46 | Return -1 |
48 | kbd_exists = 1 |
50 | If (inb(Status register (R) ) & Keyboard output buffer full ) == 0 Then Return -1 |
57 | scanstatus = inb(Status register (R) ) |
62 | If scanstatus & Mouse output buffer full Then Return -1 |
83 | If (scancode & 0x7f) == 0x1d Then |
94 | If (scancode & 0x80) != 0 Then |
95 | If scancode == 0x9c Then kbd_last_ret = 0 |
97 | Return -1 |
100 | scancode &= 0x7f |
106 | If scancode == 0x3a Then |
110 | shift_lock ^= 1 |
115 | Return -1 |
118 | If scancode == 0x0e Then |
122 | Return 8 |
127 | Case scancode == 0xF |
128 | Return 9 |
129 | Case scancode == 0x53 |
130 | Return 4 |
131 | Case scancode == 0x47 |
132 | Return 1 |
133 | Case scancode == 0x4F |
134 | Return 5 |
135 | Case scancode == 0x4B |
136 | Return 2 |
137 | Case scancode == 0x48 |
138 | Return 16 |
139 | Case scancode == 0x50 |
140 | Return 14 |
141 | Case scancode == 0x4D |
142 | Return 6 |
145 | If scancode == 0xe0 Then Return -1 |
158 | If Not shift_lock && Not shift_key && Not ctrl_key Then |
160 | Else if (shift_lock || shift_key) && key_maps[1] Then |
164 | Else |
165 | keychar = 0x0020 |
166 | kdb_printf("Unknown state/scancode (%d)\n", scancode) |
168 | keychar &= 0x0fff |
172 | Case KTYP(keychar) == symbol that can be acted upon by CapsLock |
173 | Case KTYP(keychar) == we depend on this being zero |
181 | Default |
182 | Return -1 |
185 | If scancode == 0x1c Then |
186 | kbd_last_ret = 1 |
187 | Return 13 |
190 | Return keychar & 0xff |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |