Kuteedzera Linus Torvalds: gadzira yako yega sisitimu yekushandisa kubva pakutanga (VIII)

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.

InoteveraShellLite


Siya yako yekutaura

Your kero e havazobvumirwi ichibudiswa. Raida minda anozivikanwa ne *

*

*

  1. Inotarisira iyo data: Miguel Ángel Gatón
  2. Chinangwa cheiyo data: Kudzora SPAM, manejimendi manejimendi.
  3. Legitimation: Kubvuma kwako
  4. Kutaurirana kwedata
  5. Dhata yekuchengetedza: Dhatabhesi inobatwa neOccentus Networks (EU)
  6. Kodzero: Panguva ipi neipi iwe unogona kudzora, kupora uye kudzima ruzivo rwako

  1.   dario akadaro

    muperekedzi akanaka! ndatenda 🙂

  2.   PopArch akadaro

    Ichokwadi ndechekuti ini handina kumboteedzera dzidziso nekuti muchikamu chekutanga chakandipa kukanganisa kana ndichiedza kuumbiridza asi ini handirangariri kuti yaive mhosho ipi

  3.   Katsi yeLopez akadaro

    Ndine urombo nekusaziva kwangu ... kubva kupi macode aya akanyorwa? Kubva kumagumo ??

    1.    AdrianArroyoStreet akadaro

      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)

  4.   kady akadaro

    Iko kuvandudza kwaizove sei kuitira kuti kufashukira kusaitike?

    1.    plock akadaro

      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

  5.   Nico akadaro

    Mhoro zvinonakidza kwazvo, urikuenderera mberi neiyi «nhevedzano» yeKuteedzera Linus Torvals?
    Unogona here kukurudzira rimwe bhuku, ruzivo kuti ugone kugadzira kernel seizvi?

    Saludos !!

  6.   MhinduroVeganas.Org akadaro

    Mhoro. Kutenda dzidziso. Ndokumbirawo, unogona kukurudzira bhuku pane izvi rawagadzira iro risiri "Maitiro Ekushandisa" naTanenbaum? Ndatenda zvikuru pamberi.
    Thanks.