XMODMAP(1)

الاسم
xmodmap - أداة لتعديل خرائط المفاتيح وتعيينات أزرار المؤشر في X

موجز
xmodmap [-خيارات ...] [اسم_الملف]

الوصف

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

الخيارات

يمكن استخدام الخيارات التالية مع xmodmap:

-display شاشة
    يحدد هذا الخيار المضيف والشاشة المراد استخدامها.

-help
    يشير هذا الخيار إلى طباعة وصف مختصر لوسائط سطر الأوامر على قناة الخطأ المعيارية. يُفعل ذلك كلما تم إعطاء وسيطة غير معالجة لـ xmodmap.

-grammar
    يشير هذا الخيار إلى طباعة رسالة مساعدة تصف قواعد التعبير المستخدمة في الملفات ومع تعبيرات -e على الخطأ المعياري.

-version
    يشير هذا الخيار إلى أن xmodmap يجب أن يطبع معلومات إصداره ويخرج.

-verbose
    يشير هذا الخيار إلى أن xmodmap يجب أن يطبع معلومات التسجيل أثناء تحليل مدخلاته.

-quiet
    يُعطل هذا الخيار التسجيل المفصل. هذا هو الإعداد المبدئي.

-n  يشير هذا الخيار إلى أن xmodmap لا يجب أن يغير التعيينات، بل يعرض ما سيفعله، كما يفعل make(1) عند إعطائه هذا الخيار.

-e تعبير
    يحدد هذا الخيار تعبيرًا ليتم تنفيذه. يمكن تحديد أي عدد من التعبيرات من سطر الأوامر.

-pm يشير هذا الخيار إلى طباعة خريطة المعدلات الحالية على المخرجات المعيارية. هذا هو وضع التشغيل المبدئي إذا لم يتم تحديد خيارات وضع أخرى.

-pk يشير هذا الخيار إلى طباعة جدول خريطة المفاتيح الحالي على المخرجات المعيارية.

-pke
    يشير هذا الخيار إلى طباعة جدول خريطة المفاتيح الحالي على المخرجات المعيارية في شكل تعبيرات يمكن إعادتها إلى xmodmap.

-pp يشير هذا الخيار إلى طباعة خريطة المؤشر الحالية على المخرجات المعيارية.

-   تعني الشرطة المنفردة استخدام الإدخال المعياري كملف إدخال.

يحدد اسم_الملف ملفًا يحتوي على تعبيرات xmodmap ليتم تنفيذها. يُحفظ هذا الملف عادة في دليل المستخدم الرئيسي باسم مثل .xmodmaprc.

قواعد التعبير

يقرأ برنامج xmodmap قائمة من التعبيرات ويحللها جميعًا قبل محاولة تنفيذ أي منها. يتيح ذلك الإشارة إلى رموز المفاتيح التي يتم إعادة تعريفها بطريقة طبيعية دون القلق كثيرًا بشأن تضارب الأسماء.

يمكن العثور على قائمة أسماء رموز المفاتيح في ملف الرأس <X11/keysymdef.h> (بدون البادئة XK_). يمكن تحديد رموز المفاتيح المطابقة لأحرف Unicode كـ "U0020" إلى "U007E" و"U00A0" إلى "U10FFFF" لجميع أحرف Unicode الممكنة.

keycode رقم = اسم_رمز_مفتاح ...
    قائمة رموز المفاتيح تُسند إلى كود المفتاح المشار إليه (الذي يمكن تحديده بالنظام العشري أو السداسي عشري أو الثماني ويمكن تحديده بتشغيل برنامج xev). يمكن إرفاق حتى ثمانية رموز مفاتيح بمفتاح واحد، لكن آخر أربعة منها لا تُستخدم في أي تطبيق رئيسي لخادم X. يُستخدم رمز المفتاح الأول عند عدم ضغط مفتاح تعديل مع هذا المفتاح، والثاني مع Shift، والثالث عند استخدام مفتاح Mode_switch مع هذا المفتاح، والرابع عند استخدام كلا المفتاحين Mode_switch وShift.

keycode any = KEYSYMNAME ...
    إذا لم يكن أي مفتاح موجود يحمل قائمة رموز المفاتيح المحددة، يُختار مفتاح احتياطي على لوحة المفاتيح وتُسند إليه رموز المفاتيح. يمكن تحديد قائمة رموز المفاتيح بالنظام العشري أو السداسي عشري أو الثماني.

keysym KEYSYMNAME = KEYSYMNAME ...
    KEYSYMNAME على الجانب الأيسر يُترجم إلى أكواد مفاتيح مطابقة تُستخدم لتنفيذ مجموعة تعبيرات keycode المقابلة. لاحظ أنه إذا كان نفس رمز المفتاح مرتبطًا بمفاتيح متعددة، يُنفذ التعبير لكل كود مفتاح مطابق.

clear MODIFIERNAME
    هذا يزيل جميع الإدخالات في خريطة التعديل للمُعدل المعطى، حيث الأسماء الصالحة هي: Shift، Lock، Control، Mod1، Mod2، Mod3، Mod4، وMod5 (حالة الأحرف لا تهم في أسماء المُعدلات، رغم أنها تهم لجميع الأسماء الأخرى). على سبيل المثال، “clear Lock” سيزيل أي مفاتيح كانت مرتبطة بمُعدل قفل التحويل.

add MODIFIERNAME = KEYSYMNAME ...
    هذا يضيف جميع المفاتيح التي تحتوي على رموز المفاتيح المعطاة إلى خريطة التعديل المشار إليها. تُقيّم أسماء رموز المفاتيح بعد قراءة جميع تعبيرات الإدخال لتسهيل كتابة تعبيرات لتبديل المفاتيح (انظر قسم الأمثلة).

remove MODIFIERNAME = KEYSYMNAME ...
    هذا يزيل جميع المفاتيح التي تحتوي على رموز المفاتيح المعطاة من خريطة التعديل المشار إليها. على عكس add, تُقيّم أسماء رموز المفاتيح أثناء قراءة السطر. هذا يسمح لك بإزالة مفاتيح من مُعدل دون القلق بشأن ما إذا كانت قد أُعيد تعيينها أم لا.

pointer = default
    هذا يعيد خريطة المؤشر إلى إعداداتها المبدئية (الزر 1 يُولد كود 1، الزر 2 يُولد 2، إلخ).

pointer = NUMBER ...
    هذا يضبط خريطة المؤشر لتحتوي على أكواد الأزرار المشار إليها. القائمة تبدأ دائمًا بالزر الفعلي الأول. ضبط كود زر على 0 يُعطل الأحداث من ذلك الزر.

الأسطر التي تبدأ بعلامة تعجب (!) تُعتبر تعليقات.

إذا أردت تغيير ربط مفتاح تعديل، يجب أيضًا إزالته من خريطة التعديل المناسبة.

أمثلة

العديد من المؤشرات مصممة بحيث يُضغط الزر الأول باستخدام إصبع السبابة لليد اليمنى. الأشخاص الذين يستخدمون اليد اليسرى غالبًا ما يجدون أنه من الأكثر راحة عكس أكواد الأزرار المُولدة بحيث يُضغط الزر الأساسي باستخدام إصبع السبابة لليد اليسرى. يمكن فعل ذلك على مؤشر بثلاثة أزرار كما يلي:
    %  xmodmap -e "pointer = 3 2 1"

العديد من التطبيقات تدعم مفهوم مفاتيح Meta (مشابهة لمفاتيح Control باستثناء أن Meta يُضغط بدلاً من Control). لكن بعض الخوادم لا تحتوي على رمز مفتاح Meta في جدول خريطة المفاتيح المبدئي، لذا يجب إضافته يدويًا. الأمر التالي سيربط Meta بمفتاح متعدد اللغات (يُسمى أحيانًا Compose Character). كما يستفيد من حقيقة أن التطبيقات التي تحتاج مفتاح Meta تحتاج فقط إلى الحصول على كود المفتاح ولا تتطلب أن يكون رمز المفتاح في العمود الأول من جدول خريطة المفاتيح. هذا يعني أن التطبيقات التي تبحث عن Multi_key (بما في ذلك خريطة التعديل المبدئية) لن تلاحظ أي تغيير.
    %  xmodmap -e "keysym Multi_key = Multi_key Meta_L"

بالمثل، بعض لوحات المفاتيح تحتوي على مفتاح Alt ولكن لا تحتوي على مفتاح Meta. في هذه الحالة، قد يكون التالي مفيدًا:
    %  xmodmap -e "keysym Alt_L = Meta_L Alt_L"

أحد الاستخدامات البسيطة والمريحة لـ xmodmap هو ضبط مفتاح "rubout" في لوحة المفاتيح لتوليد رمز مفتاح بديل. هذا غالبًا يتضمن تبادل Backspace مع Delete ليكون أكثر راحة للمستخدم. إذا تم ضبط مورد ttyModes في xterm أيضًا، فستستخدم جميع نوافذ محاكي الطرفية نفس المفتاح لمسح الأحرف:
    %  xmodmap -e "keysym BackSpace = Delete"
    %  echo "XTerm*ttyModes:  erase ^?" | xrdb -merge

بعض لوحات المفاتيح لا تُولد آليًا أحرف أقل من وأكبر من عند ضغط مفاتيح الفاصلة والنقطة مع Shift. يمكن علاج ذلك باستخدام xmodmap بإعادة تعيين روابط الفاصلة والنقطة بالنصوص التالية:
    !
    ! make shift-, be < and shift-. be >
    !
    keysym comma = comma less
    keysym period = period greater

أحد الاختلافات المزعجة بين لوحات المفاتيح هو موقع مفتاحي Control وCapsLock. استخدام شائع لـ xmodmap هو تبديل هذين المفتاحين كما يلي:
    !
    ! Swap Caps_Lock and Control_L
    !
    remove Lock = Caps_Lock
    remove Control = Control_L
    keysym Control_L = Caps_Lock
    keysym Caps_Lock = Control_L
    add Lock = Caps_Lock
    add Control = Control_L

يمكن تشغيل هذا المثال مرة أخرى لتبديل المفاتيح إلى تعييناتها السابقة.

أمر keycode مفيد لتعيين نفس رمز المفتاح (keysym) إلى رموز مفاتيح (keycodes) متعددة. على الرغم من عدم قابليته للنقل، إلا أنه يجعل من الممكن كتابة نصوص برمجية يمكنها إعادة تعيين لوحة المفاتيح إلى حالة معروفة. النص البرمجي التالي يضبط مفتاح المسح الخلفي (Backspace) لتوليد مفتاح الحذف (Delete) (كما هو موضح أعلاه)، ويمسح جميع روابط قفل الأحرف الكبيرة (caps lock) الموجودة، ويجعل مفتاح CapsLock مفتاح تحكم (control key)، ويجعل F5 يولد مفتاح الهروب (Escape)، ويجعل Break/Reset مفتاح قفل التحويل (shift lock).
    !
    ! On the HP, the following keycodes have key caps as listed:
    !
    !     101  Backspace
    !      55  Caps
    !      14  Ctrl
    !      15  Break/Reset
    !      86  Stop
    !      89  F5
    !
    keycode 101 = Delete
    keycode 55 = Control_R
    clear Lock
    add Control = Control_R
    keycode 89 = Escape
    keycode 15 = Caps_Lock
    add Lock = Caps_Lock

البيئة

DISPLAY
    للحصول على المضيف المبدئي ورقم الشاشة.

انظر أيضًا
X(7), xev(1), setxkbmap(1), XStringToKeysym(3), وثائق Xlib حول أحداث المفاتيح والمؤشر

العلل

في كل مرة يتم فيها تقييم تعبير keycode، يولد الخادم حدث MappingNotify على كل عميل. يمكن أن يسبب هذا بعض التباطؤ. يجب تجميع جميع التغييرات معًا وتنفيذها دفعة واحدة. العملاء الذين يتلقون إدخال لوحة المفاتيح ويتجاهلون أحداث MappingNotify لن يلاحظوا أي تغييرات تُجرى على تخطيطات لوحة المفاتيح.

يجب على Xmodmap توليد تعبيرات "إضافة" و"إزالة" آليًا كلما تم تغيير رمز مفتاح مرتبط بالفعل بمعدل (modifier).

يجب أن تكون هناك طريقة لجعل تعبير remove يقبل رموز المفاتيح (keycodes) بالإضافة إلى رموز المفاتيح (keysyms) لتلك الأوقات التي تفسد فيها تخطيطاتك حقًا.

المؤلف
جيم فولتون، كونسورتيوم MIT X، أعيدت كتابته من نسخة سابقة بواسطة ديفيد روزنتال من شركة صن ميكروسيستمز.

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

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

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