📄 keyboard.c
字号:
<a name=L181 href="source/kernel/chr_drv/keyboard.c?v=0.97#L181">181</a> <a href="ident?v=0.97;i=kmode">kmode</a>&=(~ALT);<a name=L182 href="source/kernel/chr_drv/keyboard.c?v=0.97#L182">182</a> if (<a href="ident?v=0.97;i=npadch">npadch</a> != 0) {<a name=L183 href="source/kernel/chr_drv/keyboard.c?v=0.97#L183">183</a> <a href="ident?v=0.97;i=put_queue">put_queue</a>(<a href="ident?v=0.97;i=npadch">npadch</a>);<a name=L184 href="source/kernel/chr_drv/keyboard.c?v=0.97#L184">184</a> <a href="ident?v=0.97;i=npadch">npadch</a>=0;<a name=L185 href="source/kernel/chr_drv/keyboard.c?v=0.97#L185">185</a> }<a name=L186 href="source/kernel/chr_drv/keyboard.c?v=0.97#L186">186</a> }<a name=L187 href="source/kernel/chr_drv/keyboard.c?v=0.97#L187">187</a> }<a name=L188 href="source/kernel/chr_drv/keyboard.c?v=0.97#L188">188</a> <a name=L189 href="source/kernel/chr_drv/keyboard.c?v=0.97#L189">189</a> static void <a href="ident?v=0.97;i=lshift">lshift</a>(int sc)<a name=L190 href="source/kernel/chr_drv/keyboard.c?v=0.97#L190">190</a> {<a name=L191 href="source/kernel/chr_drv/keyboard.c?v=0.97#L191">191</a> <a href="ident?v=0.97;i=kmode">kmode</a>|=<a href="ident?v=0.97;i=LSHIFT">LSHIFT</a>;<a name=L192 href="source/kernel/chr_drv/keyboard.c?v=0.97#L192">192</a> }<a name=L193 href="source/kernel/chr_drv/keyboard.c?v=0.97#L193">193</a> <a name=L194 href="source/kernel/chr_drv/keyboard.c?v=0.97#L194">194</a> static void <a href="ident?v=0.97;i=unlshift">unlshift</a>(int sc)<a name=L195 href="source/kernel/chr_drv/keyboard.c?v=0.97#L195">195</a> {<a name=L196 href="source/kernel/chr_drv/keyboard.c?v=0.97#L196">196</a> <a href="ident?v=0.97;i=kmode">kmode</a>&=(~LSHIFT);<a name=L197 href="source/kernel/chr_drv/keyboard.c?v=0.97#L197">197</a> }<a name=L198 href="source/kernel/chr_drv/keyboard.c?v=0.97#L198">198</a> <a name=L199 href="source/kernel/chr_drv/keyboard.c?v=0.97#L199">199</a> static void <a href="ident?v=0.97;i=rshift">rshift</a>(int sc)<a name=L200 href="source/kernel/chr_drv/keyboard.c?v=0.97#L200">200</a> {<a name=L201 href="source/kernel/chr_drv/keyboard.c?v=0.97#L201">201</a> <a href="ident?v=0.97;i=kmode">kmode</a>|=<a href="ident?v=0.97;i=RSHIFT">RSHIFT</a>;<a name=L202 href="source/kernel/chr_drv/keyboard.c?v=0.97#L202">202</a> }<a name=L203 href="source/kernel/chr_drv/keyboard.c?v=0.97#L203">203</a> <a name=L204 href="source/kernel/chr_drv/keyboard.c?v=0.97#L204">204</a> static void <a href="ident?v=0.97;i=unrshift">unrshift</a>(int sc)<a name=L205 href="source/kernel/chr_drv/keyboard.c?v=0.97#L205">205</a> {<a name=L206 href="source/kernel/chr_drv/keyboard.c?v=0.97#L206">206</a> <a href="ident?v=0.97;i=kmode">kmode</a>&=(~RSHIFT);<a name=L207 href="source/kernel/chr_drv/keyboard.c?v=0.97#L207">207</a> }<a name=L208 href="source/kernel/chr_drv/keyboard.c?v=0.97#L208">208</a> <a name=L209 href="source/kernel/chr_drv/keyboard.c?v=0.97#L209">209</a> static void <a href="ident?v=0.97;i=caps">caps</a>(int sc)<a name=L210 href="source/kernel/chr_drv/keyboard.c?v=0.97#L210">210</a> {<a name=L211 href="source/kernel/chr_drv/keyboard.c?v=0.97#L211">211</a> if (!(<a href="ident?v=0.97;i=kmode">kmode</a> & <a href="ident?v=0.97;i=CAPSDOWN">CAPSDOWN</a>)) {<a name=L212 href="source/kernel/chr_drv/keyboard.c?v=0.97#L212">212</a> <a href="ident?v=0.97;i=kleds">kleds</a> ^= <a href="ident?v=0.97;i=CAPSLED">CAPSLED</a>;<a name=L213 href="source/kernel/chr_drv/keyboard.c?v=0.97#L213">213</a> <a href="ident?v=0.97;i=kmode">kmode</a> ^= <a href="ident?v=0.97;i=CAPS">CAPS</a>;<a name=L214 href="source/kernel/chr_drv/keyboard.c?v=0.97#L214">214</a> <a href="ident?v=0.97;i=kmode">kmode</a> |= <a href="ident?v=0.97;i=CAPSDOWN">CAPSDOWN</a>;<a name=L215 href="source/kernel/chr_drv/keyboard.c?v=0.97#L215">215</a> <a href="ident?v=0.97;i=set_leds">set_leds</a>();<a name=L216 href="source/kernel/chr_drv/keyboard.c?v=0.97#L216">216</a> }<a name=L217 href="source/kernel/chr_drv/keyboard.c?v=0.97#L217">217</a> }<a name=L218 href="source/kernel/chr_drv/keyboard.c?v=0.97#L218">218</a> <a name=L219 href="source/kernel/chr_drv/keyboard.c?v=0.97#L219">219</a> void <a href="ident?v=0.97;i=set_leds">set_leds</a>(void)<a name=L220 href="source/kernel/chr_drv/keyboard.c?v=0.97#L220">220</a> {<a name=L221 href="source/kernel/chr_drv/keyboard.c?v=0.97#L221">221</a> if (<a href="ident?v=0.97;i=kleds">kleds</a> != <a href="ident?v=0.97;i=old_leds">old_leds</a>) {<a name=L222 href="source/kernel/chr_drv/keyboard.c?v=0.97#L222">222</a> <a href="ident?v=0.97;i=old_leds">old_leds</a> = <a href="ident?v=0.97;i=kleds">kleds</a>;<a name=L223 href="source/kernel/chr_drv/keyboard.c?v=0.97#L223">223</a> <a href="ident?v=0.97;i=kb_wait">kb_wait</a>();<a name=L224 href="source/kernel/chr_drv/keyboard.c?v=0.97#L224">224</a> <a href="ident?v=0.97;i=outb">outb</a>(0xed, 0x60); <b><i>/* set leds command */</i></b><a name=L225 href="source/kernel/chr_drv/keyboard.c?v=0.97#L225">225</a> <a href="ident?v=0.97;i=kb_ack">kb_ack</a>();<a name=L226 href="source/kernel/chr_drv/keyboard.c?v=0.97#L226">226</a> <a href="ident?v=0.97;i=kb_wait">kb_wait</a>();<a name=L227 href="source/kernel/chr_drv/keyboard.c?v=0.97#L227">227</a> <a href="ident?v=0.97;i=outb">outb</a>(<a href="ident?v=0.97;i=kleds">kleds</a>, 0x60);<a name=L228 href="source/kernel/chr_drv/keyboard.c?v=0.97#L228">228</a> <a href="ident?v=0.97;i=kb_ack">kb_ack</a>();<a name=L229 href="source/kernel/chr_drv/keyboard.c?v=0.97#L229">229</a> }<a name=L230 href="source/kernel/chr_drv/keyboard.c?v=0.97#L230">230</a> }<a name=L231 href="source/kernel/chr_drv/keyboard.c?v=0.97#L231">231</a> <a name=L232 href="source/kernel/chr_drv/keyboard.c?v=0.97#L232">232</a> static void <a href="ident?v=0.97;i=uncaps">uncaps</a>(int sc)<a name=L233 href="source/kernel/chr_drv/keyboard.c?v=0.97#L233">233</a> {<a name=L234 href="source/kernel/chr_drv/keyboard.c?v=0.97#L234">234</a> <a href="ident?v=0.97;i=kmode">kmode</a> &= ~CAPSDOWN;<a name=L235 href="source/kernel/chr_drv/keyboard.c?v=0.97#L235">235</a> }<a name=L236 href="source/kernel/chr_drv/keyboard.c?v=0.97#L236">236</a> <a name=L237 href="source/kernel/chr_drv/keyboard.c?v=0.97#L237">237</a> static void <a href="ident?v=0.97;i=show_ptregs">show_ptregs</a>(void)<a name=L238 href="source/kernel/chr_drv/keyboard.c?v=0.97#L238">238</a> {<a name=L239 href="source/kernel/chr_drv/keyboard.c?v=0.97#L239">239</a> <a href="ident?v=0.97;i=printk">printk</a>(<i>"\nEIP: %04x:%08x"</i>,0xffff & <a href="ident?v=0.97;i=pt_regs">pt_regs</a>->cs,<a href="ident?v=0.97;i=pt_regs">pt_regs</a>->eip);<a name=L240 href="source/kernel/chr_drv/keyboard.c?v=0.97#L240">240</a> if (<a href="ident?v=0.97;i=pt_regs">pt_regs</a>->cs & 3)<a name=L241 href="source/kernel/chr_drv/keyboard.c?v=0.97#L241">241</a> <a href="ident?v=0.97;i=printk">printk</a>(<i>" ESP: %04x:%08x"</i>,0xffff & <a href="ident?v=0.97;i=pt_regs">pt_regs</a>->cs,<a href="ident?v=0.97;i=pt_regs">pt_regs</a>->eip);<a name=L242 href="source/kernel/chr_drv/keyboard.c?v=0.97#L242">242</a> <a href="ident?v=0.97;i=printk">printk</a>(<i>" EFLAGS: %08x"</i>,<a href="ident?v=0.97;i=pt_regs">pt_regs</a>->eflags);<a name=L243 href="source/kernel/chr_drv/keyboard.c?v=0.97#L243">243</a> <a href="ident?v=0.97;i=printk">printk</a>(<i>"\nEAX: %08x EBX: %08x ECX: %08x EDX: %08x"</i>,<a name=L244 href="source/kernel/chr_drv/keyboard.c?v=0.97#L244">244</a> <a href="ident?v=0.97;i=pt_regs">pt_regs</a>->orig_eax,<a href="ident?v=0.97;i=pt_regs">pt_regs</a>->ebx,<a href="ident?v=0.97;i=pt_regs">pt_regs</a>->ecx,<a href="ident?v=0.97;i=pt_regs">pt_regs</a>->edx);<a name=L245 href="source/kernel/chr_drv/keyboard.c?v=0.97#L245">245</a> <a href="ident?v=0.97;i=printk">printk</a>(<i>"\nESI: %08x EDI: %08x EBP: %08x"</i>,<a name=L246 href="source/kernel/chr_drv/keyboard.c?v=0.97#L246">246</a> <a href="ident?v=0.97;i=pt_regs">pt_regs</a>->esi, <a href="ident?v=0.97;i=pt_regs">pt_regs</a>->edi, <a href="ident?v=0.97;i=pt_regs">pt_regs</a>->ebp);<a name=L247 href="source/kernel/chr_drv/keyboard.c?v=0.97#L247">247</a> <a href="ident?v=0.97;i=printk">printk</a>(<i>" DS: %04x ES: %04x FS: %04x GS: %04x\n"</i>,<a name=L248 href="source/kernel/chr_drv/keyboard.c?v=0.97#L248">248</a> 0xffff & <a href="ident?v=0.97;i=pt_regs">pt_regs</a>->ds,0xffff & <a href="ident?v=0.97;i=pt_regs">pt_regs</a>->es,<a name=L249 href="source/kernel/chr_drv/keyboard.c?v=0.97#L249">249</a> 0xffff & <a href="ident?v=0.97;i=pt_regs">pt_regs</a>->fs,0xffff & <a href="ident?v=0.97;i=pt_regs">pt_regs</a>->gs);<a name=L250 href="source/kernel/chr_drv/keyboard.c?v=0.97#L250">250</a> }<a name=L251 href="source/kernel/chr_drv/keyboard.c?v=0.97#L251">251</a> <a name=L252 href="source/kernel/chr_drv/keyboard.c?v=0.97#L252">252</a> static void <a href="ident?v=0.97;i=scroll">scroll</a>(int sc)<a name=L253 href="source/kernel/chr_drv/keyboard.c?v=0.97#L253">253</a> {<a name=L254 href="source/kernel/chr_drv/keyboard.c?v=0.97#L254">254</a> if (<a href="ident?v=0.97;i=kmode">kmode</a> & (<a href="ident?v=0.97;i=LSHIFT">LSHIFT</a> | <a href="ident?v=0.97;i=RSHIFT">RSHIFT</a>))<a name=L255 href="source/kernel/chr_drv/keyboard.c?v=0.97#L255">255</a> <a href="ident?v=0.97;i=show_mem">show_mem</a>();<a name=L256 href="source/kernel/chr_drv/keyboard.c?v=0.97#L256">256</a> else if (<a href="ident?v=0.97;i=kmode">kmode</a> & (<a href="ident?v=0.97;i=ALT">ALT</a> | <a href="ident?v=0.97;i=ALTGR">ALTGR</a>))<a name=L257 href="source/kernel/chr_drv/keyboard.c?v=0.97#L257">257</a> <a href="ident?v=0.97;i=show_ptregs">show_ptregs</a>();<a name=L258 href="source/kernel/chr_drv/keyboard.c?v=0.97#L258">258</a> else if (<a href="ident?v=0.97;i=kmode">kmode</a> & (<a href="ident?v=0.97;i=LCTRL">LCTRL</a> | <a href="ident?v=0.97;i=RCTRL">RCTRL</a>))<a name=L259 href="source/kernel/chr_drv/keyboard.c?v=0.97#L259">259</a> <a href="ident?v=0.97;i=show_state">show_state</a>();<a name=L260 href="source/kernel/chr_drv/keyboard.c?v=0.97#L260">260</a> <a href="ident?v=0.97;i=kleds">kleds</a> ^= <a href="ident?v=0.97;i=SCRLED">SCRLED</a>;<a name=L261 href="source/kernel/chr_drv/keyboard.c?v=0.97#L261">261</a> <a href="ident?v=0.97;i=set_leds">set_leds</a>();<a name=L262 href="source/kernel/chr_drv/keyboard.c?v=0.97#L262">262</a> }<a name=L263 href="source/kernel/chr_drv/keyboard.c?v=0.97#L263">263</a> <a name=L264 href="source/kernel/chr_drv/keyboard.c?v=0.97#L264">264</a> static void <a href="ident?v=0.97;i=num">num</a>(int sc)<a name=L265 href="source/kernel/chr_drv/keyboard.c?v=0.97#L265">265</a> {<a name=L266 href="source/kernel/chr_drv/keyboard.c?v=0.97#L266">266</a> if (<a href="ident?v=0.97;i=kapplic">kapplic</a>)<a name=L267 href="source/kernel/chr_drv/keyboard.c?v=0.97#L267">267</a> <a href="ident?v=0.97;i=applkey">applkey</a>(0x50);<a name=L268 href="source/kernel/chr_drv/keyboard.c?v=0.97#L268">268</a> else {<a name=L269 href="source/kernel/chr_drv/keyboard.c?v=0.97#L269">269</a> <a href="ident?v=0.97;i=kleds">kleds</a> ^= <a href="ident?v=0.97;i=NUMLED">NUMLED</a>;<a name=L270 href="source/kernel/chr_drv/keyboard.c?v=0.97#L270">270</a> <a href="ident?v=0.97;i=set_leds">set_leds</a>();<a name=L271 href="source/kernel/chr_drv/keyboard.c?v=0.97#L271">271</a> }<a name=L272 href="source/kernel/chr_drv/keyboard.c?v=0.97#L272">272</a> }<a name=L273 href="source/kernel/chr_drv/keyboard.c?v=0.97#L273">273</a> <a name=L274 href="source/kernel/chr_drv/keyboard.c?v=0.97#L274">274</a> static void <a href="ident?v=0.97;i=applkey">applkey</a>(int key)<a name=L275 href="source/kernel/chr_drv/keyboard.c?v=0.97#L275">275</a> {<a name=L276 href="source/kernel/chr_drv/keyboard.c?v=0.97#L276">276</a> char <a href="ident?v=0.97;i=buf">buf</a>[] = { 0x1b, 0x4f, 0x00, 0x00 };<a name=L277 href="source/kernel/chr_drv/keyboard.c?v=0.97#L277">277</a> <a name=L278 href="source/kernel/chr_drv/keyboard.c?v=0.97#L278">278</a> <a href="ident?v=0.97;i=buf">buf</a>[2] = key;<a name=L279 href="source/kernel/chr_drv/keyboard.c?v=0.97#L279">279</a> <a href="ident?v=0.97;i=puts_queue">puts_queue</a>(<a href="ident?v=0.97;i=buf">buf</a>);<a name=L280 href="source/kernel/chr_drv/keyboard.c?v=0.97#L280">280</a> }<a name=L281 href="source/kernel/chr_drv/keyboard.c?v=0.97#L281">281</a> <a name=L282 href="source/kernel/chr_drv/keyboard.c?v=0.97#L282">282</a> <a name=L283 href="source/kernel/chr_drv/keyboard.c?v=0.97#L283">283</a> #if defined KBD_FINNISH<a name=L284 href="source/kernel/chr_drv/keyboard.c?v=0.97#L284">284</a> <a name=L285 href="source/kernel/chr_drv/keyboard.c?v=0.97#L285">285</a> static unsigned char <a href="ident?v=0.97;i=key_map">key_map</a>[] = {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -