KEYMAPS(5)

الاسم
keymaps - أوصاف جداول لوحة المفاتيح لـ loadkeys و dumpkeys

الوصف

تُستخدم هذه الملفات بواسطة loadkeys(1) لتعديل جداول الترجمة التي يستخدمها مشغل لوحة المفاتيح في النواة والتي يُنشئها dumpkeys(1) من تلك الجداول.

تنسيق هذه الملفات مشابه بشكل غامض للتنسيق الذي يقبله xmodmap(1). يتكون الملف من أسطر تعريف مجموعة المحارف أو المفتاح أو السلسلة متخللة بتعليقات.

تُقدم التعليقات بحرفي ! أو # وتستمر حتى نهاية السطر. يُتجاهل أي شيء يتبع أحد هذه الأحرف في ذلك السطر. لاحظ أن التعليقات لا تحتاج إلى البدء من العمود الأول كما في xmodmap(1).

بناء جملة ملفات keymap موجه نحو السطر؛ يجب أن يتسع تعريف كامل في سطر منطقي واحد. يمكن، مع ذلك، تقسيم الأسطر المنطقية إلى أسطر فيزيائية متعددة بإنهاء كل سطر فرعي بحرف الشرطة المائلة للخلف (\).

تضمين الملفات
يمكن لـ keymap تضمين keymaps أخرى باستخدام البناء

    include "اسم_المسار"

تعريفات مجموعة المحارف
سطر تعريف مجموعة المحارف يكون بالشكل:

        charset "iso-8859-x"

يحدد كيفية تفسير رموز المفاتيح التالية. على سبيل المثال، في iso-8859-1، الرمز mu (أو micro) له الكود 0265، بينما في iso-8859-7، الحرف mu له الكود 0354.

تعريفات كاملة لرموز المفاتيح
كل سطر تعريف مفتاح كامل يكون بالشكل التالي:

    keycode keynumber = keysym keysym keysym...

keynumber هو رقم التعريف الداخلي للمفتاح، وهو مكافئ تقريبًا لرمز المسح الخاص به. يمكن إعطاء keynumber بالتدوين العشري أو الثماني أو السداسي عشري. يُشار إلى الثماني بصفر بادئ والسداسي عشري بالبادئة 0x.

كل من keysyms يمثل إجراءات لوحة المفاتيح، والتي يمكن ربط ما يصل إلى 256 منها بمفتاح واحد. تتضمن الإجراءات المتاحة إخراج رموز الأحرف أو تسلسلات الأحرف، تبديل وحدات التحكم أو خرائط المفاتيح، تشغيل الجهاز، إلخ. (يمكن الحصول على القائمة الكاملة من dumpkeys(1) بقول dumpkeys -l .)

يمكن أن يسبق كل keysym بعلامة '+' (علامة زائد)، وفي هذه الحالة يُعامل هذا الرمز كـ"حرف" وبالتالي يتأثر بـ"CapsLock" بنفس طريقة "Shift" (لكي نكون دقيقين، CapsLock يعكس حالة Shift). الأحرف ASCII ('a'-'z' و 'A'-'Z') تُجعل قابلة لـCapsLock بشكل مبدئي. إذا كان Shift+CapsLock لا ينبغي أن ينتج رمزًا صغيرًا، ضع سطورًا مثل

    keycode 30 = +a  A

في ملف الخريطة.

أي من الإجراءات المرتبطة بمفتاح معين يُتخذ عند الضغط عليه يعتمد على المعدلات النشطة في تلك اللحظة. يدعم برنامج تشغيل لوحة المفاتيح 9 معدلات. تُسمى هذه المعدلات (بشكل تعسفي تمامًا) Shift، AltGr، Control، Alt، ShiftL، ShiftR، CtrlL، CtrlR و CapsShift. لكل من هذه المعدلات وزن مرتبط بقوة اثنين وفقًا للجدول التالي:

    modifier
        weight

    Shift    1
    AltGr    2
    Control    4
    Alt    8
    ShiftL    16
    ShiftR    32
    CtrlL    64
    CtrlR    128
    CapsShift    256

يُعثر على الإجراء الفعال لمفتاح بجمع أوزان جميع المعدلات النشطة. بشكل مبدئي، لا توجد معدلات نشطة، لذا يُتخذ الإجراء رقم صفر، أي الإجراء في العمود الأول في سطر تعريف المفتاح، عند الضغط على المفتاح أو تحريره. عندما تكون المعدلات مثل Shift و Alt نشطة، يكون الإجراء رقم تسعة (من العمود العاشر) هو الفعال.

يمكن تحقيق تغيير حالة المعدلات النشطة بربط إجراءات المفاتيح المناسبة بالمفاتيح المرغوبة. على سبيل المثال، ربط الرمز Shift بمفتاح يضع المعدل Shift نشطًا عند ضغط ذلك المفتاح ويلغي تأثير ذلك المعدل عند تحرير المفتاح. ربط AltGr_Lock بمفتاح يضع AltGr نشطًا عند ضغط المفتاح ويلغي التأثير عند ضغط المفتاح مرة أخرى. (بشكل مبدئي، Shift، AltGr، Control و Alt مرتبطة بالمفاتيح التي تحمل تسمية مماثلة؛ قد يشير AltGr إلى مفتاح Alt الأيمن.)

لاحظ أنه يجب أن تكون حذرًا جدًا عند ربط مفاتيح المعدلات، وإلا قد ينتهي بك الأمر بتعيين لوحة مفاتيح غير قابل للاستخدام. إذا قمت مثلاً بتعريف مفتاح ليكون له Control في عموده الأول وتركت بقية الأعمدة لتكون VoidSymbols، فأنت في مشكلة. هذا لأن ضغط المفتاح يضع المعدل Control نشطًا ويتم البحث عن الإجراءات التالية من العمود الخامس (انظر الجدول أعلاه). لذا، عند تحرير المفتاح، يُتخذ الإجراء من العمود الخامس. يحتوي على VoidSymbol فيه، لذا لا يحدث شيء. هذا يعني أن المعدل Control لا يزال نشطًا، على الرغم من أنك حررت المفتاح. إعادة الضغط والتحرير للمفتاح ليس له تأثير. لتجنب هذا، يجب دائمًا تعريف جميع الأعمدة ليكون لها نفس رمز المعدل. هناك تدوين مختصر مفيد لهذا، انظر أدناه.

يمكن إعطاء keysyms بالتدوين العشري أو الثماني أو السداسي عشري أو اليونيكود أو الرمزي. تستخدم التدوينات الرقمية نفس التنسيق كما في keynumber. تدوين اليونيكود هو "U+" متبوعًا بأربعة أرقام سداسية عشرية. التدوين الرمزي يشبه ذلك المستخدم بواسطة xmodmap(1). الاختلافات الملحوظة هي رموز الأرقام. يتم استبدال الرموز الرقمية '0', ..., '9' من xmodmap(1) بالكلمات المقابلة 'zero', 'one', ... 'nine' لتجنب الخلط مع التدوين الرقمي.

يجب ملاحظة أن استخدام التدوين الرقمي لـ keysyms غير قابل للنقل بشكل كبير لأن أرقام إجراءات المفاتيح قد تختلف من إصدار نواة إلى آخر، وبالتالي يُثبط استخدام التدوينات الرقمية بشدة. يُقصد استخدامها فقط عندما تعلم أن هناك إجراء لوحة مفاتيح مدعومًا في نواتك ليس لإصدارك الحالي من loadkeys(1) اسم رمزي له.

هناك عدد من التدوينات المختصرة لإضافة قابلية القراءة وتقليل عمل الكتابة واحتمالية أخطاء الكتابة.

أولاً، يمكنك إعطاء سطر مواصفات خريطة، بالشكل

        keymaps 0-2,4-5,8,12

للإشارة إلى أن سطور خريطة المفاتيح لن تحدد جميع الأعمدة الـ 256، بل فقط المشار إليها. (في المثال: فقط الخرائط العادية، Shift، AltGr، Control، Control+Shift، Alt و Control+Alt، أي 7 أعمدة بدلاً من 256.) عندما لا يُعطى مثل هذا السطر، سيتم تعريف خرائط المفاتيح 0-M، حيث M+1 هو الحد الأقصى لعدد الإدخالات الموجودة في أي سطر تعريف.

بعد ذلك، يمكنك حذف أي إدخالات VoidSymbol زائدة من سطر تعريف المفتاح. VoidSymbol يشير إلى إجراء لوحة مفاتيح لا ينتج أي مخرجات وليس له أي تأثيرات أخرى أيضًا. على سبيل المثال، لتعريف المفتاح رقم 30 لإخراج 'a' بدون Shift، و'A' عند الضغط مع Shift، وعدم فعل شيء عند الضغط مع AltGr أو معدلات أخرى، يمكنك كتابة

    keycode  30 = a	A

بدلاً من الأكثر إسهابًا

    keycode  30 = a	A	VoidSymbol	VoidSymbol \
    		VoidSymbol VoidSymbol VoidSymbol ...

لتوفير راحة إضافية، يمكنك عادةً الاستغناء بتعاريف أكثر اختصارًا. إذا أدخلت سطر تعريف مفتاح يحتوي على رمز إجراء واحد فقط بعد علامة المساواة، فله معنى خاص. إذا كان الرمز (رقميًا أو رمزيًا) ليس حرفًا ASCII، فهذا يعني أن الرمز يُكرر ضمنيًا عبر جميع الأعمدة المُعرَّفة. من ناحية أخرى، إذا كان رمز الإجراء حرفًا ASCII في النطاق 'a'، ...، 'z' أو 'A'، ...، 'Z' في تسلسل ASCII، تُصنع التعاريف التالية لمجموعات المُعدِّل المختلفة، بشرط أن تكون هذه المجموعات مُعرَّفة فعليًا. (يسرد الجدول الحالتين المحتملتين: إما أن يكون رمز الإجراء الفردي حرفًا صغيرًا، يُرمز له بـ 'x'، أو حرفًا كبيرًا، يُرمز له بـ 'Y'.)

    modifier
        symbol

    none
        x    Y
    Shift
        X    y
    AltGr
        x    Y
    Shift+AltGr
        X    y
    Control
        Control_x    Control_y
    Shift+Control
        Control_x    Control_y
    AltGr+Control
        Control_x    Control_y
    Shift+AltGr+Control
        Control_x    Control_y
    Alt
        Meta_x    Meta_Y
    Shift+Alt
        Meta_X    Meta_y
    AltGr+Alt
        Meta_x    Meta_Y
    Shift+AltGr+Alt
        Meta_X    Meta_y
    Control+Alt
        Meta_Control_x    Meta_Control_y
    Shift+Control+Alt
        Meta_Control_x    Meta_Control_y
    AltGr+Control+Alt
        Meta_Control_x    Meta_Control_y
    Shift+AltGr+Control+Alt
        Meta_Control_x    Meta_Control_y

تَعَارِيفُ المُعَدِّلِ المُفْرَدِ
جميع الأشكال السابقة لأسطر تعريف المفاتيح تُعرِّف دائمًا جميع تركيبات المُعدِّل M+1 المُحتملة المُعرَّفة، سواء كان السطر يحتوي بالفعل على هذا العدد من رموز الإجراء أم لا. ومع ذلك، يوجد تنويع في صيغة التعريف لتعريف إجراءات فردية فقط لتركيبة مُعدِّل معينة لمفتاح. هذا مفيد بشكل خاص إذا حمَّلت خريطة مفاتيح لا تتطابق مع احتياجاتك في بعض تركيبات المُعدِّل فقط، مثل AltGr + مفاتيح الوظائف. يمكنك بعد ذلك إنشاء ملف محلي صغير يُعيد تعريف تركيبات المُعدِّل هذه فقط وتحميله بعد الملف الرئيسي. صيغة هذا الشكل هي:

{ عادي | <تسلسل المُعدِّل> } keycode رقم_المفتاح = رمز_المفتاح

على سبيل المثال،
        plain keycode 14 = BackSpace
        control alt keycode 83 = Boot
        alt keycode 105 = Decr_Console
        alt keycode 106 = Incr_Console
استخدام "عادي" سيُعرِّف فقط الإدخال الأساسي لمفتاح (أي الذي لا يحتوي على مُعدِّلات نشطة) دون التأثير على روابط تركيبات المُعدِّل الأخرى لذلك المفتاح.

تَعَارِيفُ السَّلْسِلَةِ
بالإضافة إلى التعليقات وأسطر تعريف المفاتيح، يمكن أن تحتوي خريطة المفاتيح على تعريفات سلسلة. تُستخدم هذه لتعريف ما يُرسله كل رمز إجراء لمفتاح وظيفة. صيغة تعريفات السلسلة هي:

    string keysym = "text"

يمكن أن يحتوي النص على أحرف حرفية، ورموز أحرف ثمانية بتنسيق شرطة مائلة متبوعة بما يصل إلى ثلاثة أرقام ثمانية، وتسلسلات الهروب الثلاثة \n و \\ و \"، للسطر الجديد والشرطة المائلة والاقتباس، على التوالي.

تَعَارِيفُ التَّرْكِيبِ
ثم قد تكون هناك أيضًا تعريفات تركيب. لها الصيغة

    compose 'char' 'char' to 'char'
وتصف كيفية دمج وحدتي بايت لتكوين ثالثة (عند استخدام نبرة ميتة أو مفتاح تركيب). يُستخدم هذا للحصول على أحرف مُشكَّلة وما شابه ذلك على لوحة مفاتيح قياسية.

الاختصارات
يمكن استخدام اختصارات متنوعة مع kbd-0.96 والإصدارات الأحدث.

سلاسل كالمعتاد
    يُعرِّف القيم المعتادة للسلاسل (وليس المفاتيح التي ترتبط بها).

تركيب كالمعتاد لـ "iso-8859-1"
    يُعرِّف تركيبات التركيب المعتادة.

لمعرفة رموز_المفاتيح المتاحة للاستخدام في خرائط المفاتيح، استخدم الأمر

    dumpkeys --long-info

لسوء الحظ، لا يوجد حاليًا وصف لما يفعله كل رمز. يجب تخمينه من الاسم أو استنتاجه من مصادر النواة.

أمثلة
(كن حذرًا لاستخدام سطر keymaps، مثل السطر الأول من `dumpkeys`، أو "keymaps 0-15" أو ما شابه ذلك.)

الإدخال التالي يبدل مفتاح التحكم الأيسر ومفتاح قفل الأحرف الكبيرة على لوحة المفاتيح:

    keycode  58 = Control
    keycode  29 = Caps_Lock

رقم المفتاح 58 هو عادة مفتاح قفل الأحرف الكبيرة، ورقم المفتاح 29 هو عادة مفتاح التحكم.

الإدخال التالي يضبط مفتاحي Shift وCaps Lock ليتصرفا بشكل أفضل، كما في الآلات الكاتبة القديمة. أي أن الضغط على مفتاح Caps Lock مرة أو أكثر يضبط لوحة المفاتيح في حالة CapsLock والضغط على أي من مفتاحي Shift يحررها.

    keycode  42 = Uncaps_Shift
    keycode  54 = Uncaps_Shift
    keycode  58 = Caps_On

الإدخال التالي يضبط تخطيط لوحة التحرير في لوحة المفاتيح المحسنة ليكون أشبه بتخطيطها في أطراف سلسلة VT200:

    keycode 102 = Insert
    keycode 104 = Remove
    keycode 107 = Prior
    shift keycode 107 = Scroll_Backward
    keycode 110 = Find
    keycode 111 = Select
    control alt   keycode 111 = Boot
    control altgr keycode 111 = Boot

هذا مثال لربط السلسلة "du\ndf\n" بمفتاح AltGr-D. نستخدم رمز الإجراء "الاحتياطي" F100 غير المرتبط عادة بأي مفتاح.

    altgr keycode 32 = F100
    string F100 = "du\ndf\n"

المؤلفون
أندريس بروير <aeb@cwi.nl>

انظر أيضًا
loadkeys(1), dumpkeys(1), showkey(1), xmodmap(1)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.