Isu tinodzokera kune akateedzana ezvidzidzo zvekugadzira yedu yekushandisa system. Ini ndinofungidzira iwe uchafarira chitsauko ichi zvakanyanya nekuti tinogona kuzopedzisira taonana neyedu yekushandisa system Nhasi tichaverenga iyo yekuisa keyboard. Kune izvi, chirongwa ichi chakafanana neicho chenguva. Tinofanira kushandisa IRQs zvakadaro kuti isu titange zvakafanana neiyo nguva.
ND_IRQ_InstallHandler (1, & ND_Keyboard_Handler);
Yedu keyboard inobata, zvisinei, yakati rebei sezvo isu tiri kuverenga makiyi uye tichiaisa mune buffer.
extern "C" isina ND_Keyboard_Handler (struct regs * r) {unsigned char scancode = ND :: Keyboard :: GetChar (); kana (scancode! = 255) {ND :: Screen :: PutChar (scancode); tamboBuffer [tamboPos] = scancode; tamboPos ++; }}
http://gist.github.com/634afddcb3e977ea202d
Tinogona kutarisa kudana kwatinoita basa rakanzi ND :: Keyboard :: GetChar. Ikoko tinowana hunhu uyezve kana chisiri chinhu chisina chinhu (pano ndashandisa 255, isu tichafanirwa kushandisa irinani system) isu tinoisa hunhu pachiratidziri ndokuchichengeta mune yakapfava buffer yemakara (izvi zvakare inobatwa nekuvandudzwa, iyo yazvino system inogona kufashukira).
nsigned char ND :: Khibhodi :: GetChar () {unsigned char scancode; scancode = (isina kusainwa char) ND :: Ports :: InputB (0x60); kana (scancode & ND_KEYBOARD_KEY_RELEASE) {dzoka 255; } zvimwe {dzoka en_US [scancode]; }} char * ND :: Keyboard :: GetString () {apo (stringBuffer [stringPos-1]! = '\ n') {} stringPos = 0; dzosera tamboBuffer; }
http://gist.github.com/2d4f13e0b1a281c66884
Pano tinogona kuona kuti kiyi yakadzvinyirirwa inowanikwa sei. Pa0x60 panogara paine kiyi yekupedzisira yakadzvanywa. Muchokwadi, inogona kuverengerwa yakanangana pasina kushandisa IRQ, asi ipapo hatizomboziva maitiro ekuziva kana shanduko yaitika. Ikoko tinotarisa neIYO mashandiro ayo kodhi yatakawana inoenderana nekiyi yakaburitswa.
Muchiitiko ichocho tinodzoka makumi maviri neshanu (nekuti tinozozvisiya mushure) uye zvikasadaro kiyi yakadzvanywa. Panguva iyoyo tinodzosera chinzvimbo cheakarongeka anonzi en_US. Ndeapi ruzivo irwo runyorwa rune? Iyi nongedzo ndiyo yataizodaidza kuti mepu kana mepu yehunhu. Sezvaunoziva, mitauro yakasiyana siyana ine makibhobhodi akasiyana uye haitsigirwe pavanonyora makiyi. Saka en_US ichatipa iyo kiyi inoenderana nekodhi yega yega uye ichashanda pane American keyboard.
isina kuiswa char en_US [128] = {0,27, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0 ',' - ',' = ',' b ',' \ t ',' q ',' w ',' e ',' r ',' t ',' y ',' u ',' ini ',' o ',' p ',' [','] ',' \ n ', 0, / * Ctrl * /' a ',' s ',' d ',' f ',' g ', 'h', 'j', 'k', 'l', ';', '\' ',' '', 0, / * Kuruboshwe Shift * / '\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', ',', '/', 0, / * Kurudyi kusuduruka * / '*', 0, / * Alt * / '', 0, / * Caps kukiya * / 0,0,0,0,0,0,0,0,0,0, / * F1-F10 makiyi * / 0, / * Num kukiya * / 0, / * Mupumburu wekukiya * / 0, / * Kiyi yekumba * / 0, / * Kumusoro museve * / 0, / * Peji kumusoro * / '-', 0, / * Museve wekuruboshwe * / 0, 0, / * Museve wekurudyi * / '+', 0, / * End kiyi * / 0, / * Pasi museve * / 0, / * Peji pasi * / 0, / * Isa kiyi * / 0, / * Bvisa kiyi * / 0,0,0, 0, 0, 11, / * F12-F0 Makiyi * / XNUMX};
http://gist.github.com/bf52085aec05f3070b65
Paive zvakare nebasa rakatsanangurwa rakawana chirevo. Icho chinangwa ndechekungove nyore kuwana tambo kubva kune iwo maapplication anoida iyo, panguva imwechete chete. Ndiri kutaura nezve NextShellLite, yakadzikiswa vhezheni yezvingaitika ramangwana goko iro raizotevera NextDivel. Chinangwa cheNextShellLite ndechekungopa yakaderedzwa Shell kuti zvishoma nezvishoma uedze zvitsva zvinoshanda. Ini handisi kuzoisa iyo shell kodhi pano asi ini ndaiisanganisira mukati meNextDivel kodhi
Panguva ino haishande sechirongwa chakasiyana asi sebasa rakadaidzwa nekernel, kunyanya nekuti hatisati tawedzera sarudzo yekumhanyisa zvinoitwa Uye zvechokwadi, mimwe mifananidzo yekuti shell inoshanda sei neiyo nyowani keyboard yekuisa mabasa.
muperekedzi akanaka! ndatenda 🙂
Ichokwadi ndechekuti ini handina kumboteedzera dzidziso nekuti muchikamu chekutanga chakandipa kukanganisa kana ndichiedza kuumbiridza asi ini handirangariri kuti yaive mhosho ipi
Ndine urombo nekusaziva kwangu ... kubva kupi macode aya akanyorwa? Kubva kumagumo ??
Iwo macode ari chikamu chekodhi kodhi. Ini handizviise zvakakwana nekuti zvikasadaro posvo ndeye kodhi uye hapana tsananguro. Ini ndinokurudzira kuti iwe uverenge iwo ezvidzidzo kubva pakutanga kana iwe uchida kuutevedzera. Iwe unogona zvakare kutarisa izere kodhi kodhi pano (http://github.com/AdrianArroyoCalle/next-divel)
Iko kuvandudza kwaizove sei kuitira kuti kufashukira kusaitike?
Kady, watarisa kodhi yekuchengetedza izvozvi? Ikoko saizi yepamusoro inosimbiswa, pamwe nemabasa ekuzvidzora, ipapo iwe unogona kuita shanduko muhukuru kana kushandisa nzira ine musoro yekusunungura iyo buffer kana yaguta.
Ini ndinokusiya iyi link kuti utarise https://github.com/AdrianArroyoCalle/next-divel/blob/master/src/start/ND_Keyboard.cpp
Mhoro zvinonakidza kwazvo, urikuenderera mberi neiyi «nhevedzano» yeKuteedzera Linus Torvals?
Unogona here kukurudzira rimwe bhuku, ruzivo kuti ugone kugadzira kernel seizvi?
Saludos !!
Mhoro. Kutenda dzidziso. Ndokumbirawo, unogona kukurudzira bhuku pane izvi rawagadzira iro risiri "Maitiro Ekushandisa" naTanenbaum? Ndatenda zvikuru pamberi.
Thanks.