Ag aithris ar Linus Torvalds: cruthaigh do chóras oibriúcháin féin ón tús (VIII)

Fillimid ar an tsraith ranganna teagaisc ar conas ár gcóras oibriúcháin féin a chruthú. Is dócha go dtaitneoidh an chaibidil seo go mór leat mar is féidir linn idirghníomhú lenár gcóras oibriúcháin sa deireadh. Inniu léifidh muid ionchur an mhéarchláir. Chuige seo, tá an scéim cosúil le scéim an lasc ama. Ní mór dúinn IRQanna a úsáid ar aon nós ionas go dtosóimid mar an gcéanna leis an lasc ama.

ND_IRQ_InstallHandler (1, & ND_Keyboard_Handler);

Tá ár láimhseálaí méarchláir beagán níos casta, áfach, ós rud é go bhfuil na heochracha á léamh againn agus á dtaisceadh i maolán.

neamhní seachtrach "C" ND_Keyboard_Handler (struct regs * r) {scancode char gan síniú = ND :: Méarchláir :: GetChar (); más rud é (scancode! = 255) {ND :: Scáileán :: PutChar (scancode); stringBuffer [stringPos] = scancode; stringPos ++; }}

http://gist.github.com/634afddcb3e977ea202d

Is féidir linn a sheiceáil conas a thugaimid feidhm ar a dtugtar ND :: Méarchláir :: GetChar. Faighimid an carachtar ansin agus ansin mura carachtar folamh é (anseo tá 255 in úsáid agam, bheadh ​​orainn córas níos fearr a úsáid) cuirimid an carachtar ar an scáileán agus stóráilimid é i maolán simplí de chars (is é seo freisin is féidir feabhas a chur air, féadfaidh an córas reatha cur thar maoil).

char sínithe ND :: Méarchláir :: GetChar () {scancode char gan síniú; scancode = (char gan síniú) ND :: Calafoirt :: InputB (0x60); más rud é (scancode & ND_KEYBOARD_KEY_RELEASE) {faigh ar ais 255; } eile {filleadh en_US [scancode]; }} char * ND :: Méarchláir :: GetString () {while (stringBuffer [stringPos-1]! = '\ n') {} stringPos = 0; filleadh stringBuffer; }

http://gist.github.com/2d4f13e0b1a281c66884

Anseo is féidir linn a fheiceáil conas a fhaightear an eochair atá brúite. Ag 0x60 beidh an eochair dheireanach brúite i gcónaí. Déanta na fírinne, is féidir é a léamh go díreach gan an IRQ a úsáid, ach ansin ní bheidh a fhios againn conas a aithint cathain a tharla athrú. Seiceálaimid ansin leis an oibríocht AND go bhfreagraíonn an cód a fuaireamar d’eochair a scaoileadh.

Sa chás sin cuirimid 255 ar ais (toisc go dtabharfaimid neamhaird air níos déanaí) agus ar shlí eile tá an eochair brúite. Sa chás sin cuirimid suíomh eagar ar a dtugtar en_US ar ais. Cén fhaisnéis atá san eagar seo? Is é an t-eagar seo an rud a thabharfaimis ar eochaircheap nó ar mhapa carachtar. Mar is eol duit, tá méarchláir éagsúla ag teangacha éagsúla agus ní thacaítear leo mar déanann siad na heochracha a fhorscríobh. Mar sin tabharfaidh en_US an eochair a fhreagraíonn do gach cód dúinn agus oibreoidh sé ar mhéarchlár Meiriceánach.

char gan síniú en_US [128] = {0,27, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0 ',' - ',' = ',' \ b ',' \ t ',' q ',' w ',' e ',' r ',' t ',' y ',' u ',' i ',' o ',' p ',' [','] ',' \ n ', 0, / * Ctrl * /' a ',' s ',' d ',' f ',' g ', 'h', 'j', 'k', 'l', ';', '\' ',' ``, 0, / * Shift Clé * / '\\', 'z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 0, / * Aistriú ceart * / '*', 0, / * Alt * / '', 0, / * Glasáil caipíní * / 0,0,0,0,0,0,0,0,0,0, / * eochracha F1-F10 * / 0, / * Num glas * / 0, / * Scrollaigh glas * / 0, / * Eochair bhaile * / 0, / * Saighead suas * / 0, / * Leathanach suas * / '-', 0, / * Saighead ar chlé * / 0, 0, / * Saighead cheart * / '+', 0, / * Eochair deiridh * / 0, / * Saighead anuas * / 0, / * Leathanach síos * / 0, / * Ionsáigh eochair * / 0, / * Scrios eochair * / 0,0,0, 0, 0, 11, / * Eochracha F12-F0 * / XNUMX};

http://gist.github.com/bf52085aec05f3070b65

Bhí feidhm shainithe ann freisin a fuair frása. Is é an aidhm atá leis ach na teaghráin a rochtain níos éasca ó na feidhmchláir a bhfuil sé de dhíth orthu, ach ceann amháin i láthair na huaire. Táim ag caint faoi NextShellLite, leagan laghdaithe den bhlaosc a d’fhéadfadh a bheith ag FutureDivel sa todhchaí. Is é cuspóir NextShellLite ach blaosc laghdaithe a sholáthar chun feidhmiúlachtaí nua a thástáil de réir a chéile. Nílim chun an cód sliogáin a chur anseo ach chuir mé san áireamh é sa chód NextDivel.

I láthair na huaire ní oibríonn sé mar chlár ar leithligh ach mar fheidhm a ghlaonn an t-eithne, go príomha toisc nach bhfuil an rogha curtha againn fós chun inrite a reáchtáil. Agus ar ndóigh, roinnt pictiúr den chaoi a n-oibríonn an bhlaosc leis na feidhmeanna nua ionchuir méarchláir.

NextShellLite


Cloíonn ábhar an ailt lenár bprionsabail eitic eagarthóireachta. Chun earráid a thuairisciú cliceáil anseo.

8 trácht, fág mise

Fág do thrácht

Ní thabharfar do sheoladh r-phoist a fhoilsiú. Réimsí riachtanacha atá marcáilte le *

*

*

  1. Freagrach as na sonraí: Miguel Ángel Gatón
  2. Cuspóir na sonraí: SPAM a rialú, bainistíocht trácht.
  3. Legitimation: Do thoiliú
  4. Na sonraí a chur in iúl: Ní chuirfear na sonraí in iúl do thríú páirtithe ach amháin trí oibleagáid dhlíthiúil.
  5. Stóráil sonraí: Bunachar sonraí arna óstáil ag Occentus Networks (EU)
  6. Cearta: Tráth ar bith is féidir leat do chuid faisnéise a theorannú, a aisghabháil agus a scriosadh.

  1.   daryo a dúirt

    teagascóir den scoth! go raibh maith agat 🙂

  2.   PopArch a dúirt

    Is í an fhírinne nár lean mé an rang teagaisc riamh toisc gur thug sé botún dom sa chéad chuid agus mé ag iarraidh a thiomsú ach ní cuimhin liom cén earráid a bhí ann

  3.   Cat an Lopez a dúirt

    Tá brón orm as mo aineolas crass ... cá bhfuil na cóid seo scríofa? Ón teirminéal ??

    1.    AdrianArroyoStreet a dúirt

      Tá na cóid mar chuid den chód foinse. Ní chuirim i gcrích é mar mura bhfuil an post uile cód agus gan aon mhíniú air. Molaim duit na ranganna teagaisc a léamh ón tús más mian leat é a leanúint. Is féidir leat an cód foinse iomlán a sheiceáil anseo freisin (http://github.com/AdrianArroyoCalle/next-divel)

  4.   Kady a dúirt

    Conas a bheadh ​​an feabhsúchán ionas nach dtarlódh ró-shreabhadh?

    1.    Cosán a dúirt

      Kady, an ndearna tú cód an stóir a sheiceáil fós? Bunaítear an t-uasmhéid, chomh maith le feidhmeanna chun é a rialú, ansin is féidir leat an t-athrú ar mhéid a dhéanamh nó bealach réasúnta a chur i bhfeidhm chun an maolán a shaoradh nuair a bheidh sé sáithithe
      Fágaim an nasc chun tú a sheiceáil https://github.com/AdrianArroyoCalle/next-divel/blob/master/src/start/ND_Keyboard.cpp

  5.   Nico a dúirt

    Dia duit an-spéisiúil, an bhfuil tú chun leanúint ar aghaidh leis an “tsraith” seo de Emulating Linus Torvals?
    An féidir leat leabhar, faisnéis a mholadh le go mbeidh tú in ann eithne a dhéanamh mar seo?

    Beannachtaí!

  6.   FreagraíVeganas.Org a dúirt

    Haigh. Go raibh maith agat as an rang teagaisc. Le do thoil, an féidir leat leabhar faoi seo a mholadh a rinne tú nach bhfuil “Córais Oibriúcháin” le Tanenbaum? Go raibh míle maith agat roimh ré.
    Beannachtaí.