د لینوس تورالډز تقلید کول: له چیرې څخه خپل عملیاتي سیسټم رامینځته کړئ (VIII)

موږ د لارښوونو لړۍ ته بیرته راستون شو چې څنګه زموږ خپل عملیاتي سیسټم رامینځته کړو. زه ګومان کوم چې تاسو به دا فصل ډیر خوښ کړئ ځکه چې موږ کولی شو په پای کې زموږ له عامل سیسټم سره اړیکه ونیسو. نن ورځ موږ به د کیبورډ ان پټ ولولئ. د دې لپاره ، سکیم د ټیمر سره ورته دی. موږ باید په هرصورت IRQs وکاروو نو موږ به د ټایمر سره ورته پیل وکړو.

ND_IRQ_InstallHandler (1 ، & ND_Keyboard_Handler)؛

زموږ د کی بورډ هینډلر ، په هرصورت ، خورا پیچلي دي ځکه چې موږ کليونه لوستلو او په بفر کې یې زیرمو ته سپارلو.

extern "C" باطل ND_Keyboard_Handler (د سټراټیټ ریګز * r) {نه لاسلیک شوی چار سکینکوډ = ND :: کی بورډ :: getChar ()؛ که (سکین کوډ! = 255) {ND :: سکرین :: PutChar (سکین کوډ)؛ سټرینګفر [stringPos] = سکین کوډ؛ سټراینګ ++؛ }}

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

موږ کولی شو چیک کړو چې موږ د ND :: کیبورډ :: getChar په نوم یو فنکشن څنګه وایو. هلته موږ کرکټر ترلاسه کوو او بیا که دا خالي کرکټر نه وي (دلته ما 255 کارولی دی ، موږ باید غوره سیستم وکاروو) موږ کرکټر پرده کېښودو او دا یې د ساده ساده چارچر کې ساتو (دا هم دی د پرمختګ په حالت کې ، اوسنی سیستم ممکن جریان ولري).

nsigned char ND :: کی بورډ :: GetChar () igned لاسلیک شوی چار سکینکوډ؛ سکینکوډ = (نه لاسليک شوی چارټ) ND :: بندرګی :: InputB (0x60)؛ که (سکین کوډ او ND_KEYBOARD_KEY_RELEASE) {بیرته راستنیدنه 255؛ } بل {راستنول en_US [سکین کوډ]؛ }} چار * ND :: کی بورډ :: GetString () {پداسې حال کې (سټرینګ بفر [stringPos-1]! = '\ n') {} سلسله پووس = 0؛ سټرنگبفر }

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

دلته موږ لیدلی شو چې څنګه کلید چې فشار شوی دی ترلاسه کیږي. په 0x60 کې به تل وروستۍ کیلي فشار وي. په حقیقت کې دا د IRQ کارولو پرته مستقیم لوستل کیدی شي ، مګر بیا به موږ نه پوهیږو چې څنګه پیژندل شو کله چې بدلون پیښ شوی. هلته موږ د AND او عملیاتو سره ګورو چې موږ ترلاسه کړی کوډ د یوې کیلي سره مطابقت لري چې د فشار سره مخه نیول شوې ده.

پدې حالت کې موږ 255 بیرته راګرځوي (ځکه چې بیا به موږ ترې سترګې پټې کړو) او نه نو کلیدي فشار راغلی. پدغه حالت کې موږ د صف په ب returnه راستنیدو چې د en_US نومیږي. پدې سرلیک کې کوم معلومات شامل دي؟ دا صف هغه څه دي چې موږ به یې کلیمه نقشه یا د کرکټر نقشه وایو. لکه څنګه چې تاسو پوهیږئ ، مختلف ژبې مختلف کی بورډونه لري او ملاتړ یې نلري ځکه چې دا کلي ت overwۍ لیکي. نو en_US به موږ ته د هرې کوډ پورې اړوند کلیدي راکړي او دا به په امریکایی کی بورډ کار وکړي.

نه لاسليک شوی چار en_US [128] = {0,27،1، '2'، '3'، '4'، '5'، '6'، '7'، '8'، '9'، '0'، '0 '،' - '،' = '،' \ b '،' \ t '،' ق '،' w '،' e '،' r '،' t '،' y '،' u '،' i '،' o '،' p '،' ['،'] '،' \ n '، 0، / * Ctrl * /' a '،' s '،' d '،' f '،' g '، 'h'، 'j'، 'k'، 'l'، '؛'، '\' '،' ''، 0، / * کی Shې شفټ * / '\\'، 'z'، 'x' ، 'سي' ، 'وي' ، 'بي' ، 'این' ، 'م' ، '،' ، '.' ، '/' ، 0 ، / * ښي شفټ * / '*' ، 0 ، / * آلټ * / '' ، 0,0,0,0,0,0,0,0,0,0 ، / * کیپس لاک * / 1،10،0،0،0،0،0،0،0،0، / * F0-F0 ت *ۍ * / 0، / * نمبر لاک * / 0، / * د سکرول لاک * / 0 ، / * د کور کلي * / 0,0,0 ، / * پورته تیر * / 0 ، / * مخ پورته * / '-' ، 0 ، / * کی arrow اړخ تیر * / 11 ، 12 ، / * ښی تیر * / '+' ، 0 ، / * پای کیلي * / XNUMX ، / * ښکته تیر * / XNUMX ، / * مخ ښکته * / XNUMX ، / * داخل کیلي * / XNUMX ، / * کیلي حذف کړئ * / XNUMX،XNUMX ، XNUMX ، XNUMX ، XNUMX ، / * FXNUMX-FXNUMX کلیدي * / XNUMX}؛

http://gist.github.com/bf52085aec05f3070b65

دلته یو ټاکل شوی فعالیت هم و چې یوه جمله یې ترلاسه کړه. هدف په ساده ډول د غوښتنلیکونو څخه تارونو ته لاسرسی دی چې ورته ورته اړتیا لري ، دا مهال یوازې یو. زه د NextShellLite په اړه خبرې کوم ، د احتمالي راتلونکي شیل کم شوی نسخه چې NextDivel به ولري. د NextShellLite هدف یوازې د کم فعالیت شیل چمتو کول دي چې ورو ورو د نوي فعالیتونو ازموینې لپاره. زه نه غواړم دلته د شیل کوډ پریږدم مګر ما دا د NextDivel کوډ کې شامل کړی.

په اوس وخت کې دا د جلا برنامې په توګه کار نه کوي مګر د فنل په توګه کارنیل لخوا ویل کیږي ، اساسا ځکه چې موږ تراوسه د اعدام کولو چلولو اختیار نه دی شامل کړی. او البته ، ځینې عکسونه چې شیل د نوي کی بورډ ان پټ افعالونو سره څنګه کار کوي.

بل شیل لیټ


د مقالې مینځپانګه زموږ د اصولو سره سمون لري ایډیټیک اخلاق. د غلطۍ راپور ورکولو لپاره کلیک وکړئ دلته.

8 نظرونه ، خپل پریږدئ

خپله نظر پرېږدئ

ستاسو د بریښنا لیک پته به خپره نه شي.

*

*

  1. د معلوماتو لپاره مسؤل: میګیوانجل ګاتین
  2. د معلوماتو هدف: د سپیم کنټرول ، د نظر مدیریت.
  3. قانونیت: ستاسو رضایت
  4. د معلوماتو راټولول: معلومات به د قانوني مکلفیت پرته دریمې ډلې ته نه لیږدول کیږي.
  5. د معلوماتو ذخیره: ډیټابیس د Occentus شبکې (EU) لخوا کوربه شوی
  6. حقونه: په هر وخت کې تاسو کولی شئ خپل معلومات محدود ، له سره تنظیم او حذف کړئ.

  1.   داریو dijo

    ښه ښوونکی! مننه 🙂

  2.   پوپ آرچ dijo

    حقیقت دا دی چې ما هیڅکله لارښود تعقیب نه کړ ځکه چې په لومړي برخه کې یې ماته غلطي راکړې کله چې د تالیف کولو هڅه کوله مګر زه یې په یاد نه لرم چې کومه غلطي وه

  3.   د لوپز پیشو dijo

    زما د کراسۍ ناپوهۍ لپاره بخښنه غواړم ... دا کوډونه له کوم ځای څخه لیکل شوي دي؟ له ترمینل څخه ؟؟

    1.    اډریان اریو سټریټ dijo

      کوډونه د سرچینې کوډ برخه دي. زه یې بشپړ نه کړم ځکه چې نه نو پوسټ ټول کوډ دی او هیڅ توضیحات نلري. زه وړاندیز کوم چې تاسو له پیل څخه سبقونه ولولئ که تاسو غواړئ دا تعقیب کړئ. تاسو کولی شئ دلته د بشپړ سرچینې کوډ هم چیک کړئ (http://github.com/AdrianArroyoCalle/next-divel)

  4.   کډي dijo

    څنګه به پرمختګ وي چې د جریان واقع نه وي؟

    1.    لاک dijo

      کدی ، ایا تاسو تراوسه د ذخیرې کوډ چیک کړی؟ د اعظمي اندازې اندازه رامینځته شوې ، او د دې کنټرول کولو لپاره فعالیتونه ، هلته تاسو کولی شئ په اندازې کې بدلون رامینځته کړئ یا مناسب ب wayه پلي کړئ کله چې بفریش شی
      زه ستاسو لپاره لینک پریږدم چې دا چیک کړئ https://github.com/AdrianArroyoCalle/next-divel/blob/master/src/start/ND_Keyboard.cpp

  5.   Nico dijo

    سلام ډیر په زړه پوری ، ایا تاسو د ایمولیتس لینوس تورولز دې «لړۍ with سره ادامه ورکوئ؟
    ایا تاسو کولی شئ کوم کتاب ، معلوماتو ته وړاندیز وکړئ چې د دې په توګه د دانی جوړولو لپاره وړ وي؟

    سالډوس !!

  6.   ځوابونه ویګناس. آرګ dijo

    سلام. د ښوونې او روزنې په هیله. مهرباني وکړئ ، ایا تاسو کولی شئ پدې اړه د یو کتاب سپارښتنه وکړئ چې تاسو یې جوړ کړی وي چې د تانینبوم لخوا "عملیاتي سیسټمونه" ندي؟ له مخه ډیره مننه.
    مننه.