سؤال

أريد أن أكون قادرًا على ترجمة سلسلة إلى رمز المفاتيح لكتابتها باستخدام XLIB (لمحاكاة إجراء المستخدم على Linux). رمز المفاتيح ليس هو ASCII ولكن الرمز الذي تحصل عليه عند استخدام XEV ON

linuxKeyPress event, serial 33, synthetic NO, window 0x6400001,
    root 0x13c, subw 0x0, time 51212100, (259,9), root:(262,81),
    state 0x0, keycode 24 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (61) "a"
    XmbLookupString gives 1 bytes: (61) "a"
    XFilterEvent returns: False

بالنسبة إلى exemple رمز المفاتيح لـ "A" هو 24

يمكنني اكتشاف ما إذا كان الحرف upercase ثم جعل مجموعة صغيرة من ALT+(رسالة) لكنني لا أعرف كيفية الحصول على رمز المفاتيح.

يتمثل أحد الحلول في أن تكون قائمة كل مجموعة (A = 24 ، B = 56 ، C = 54 ، ...) ولكن سيكون أفضل إذا كانت هناك وظيفة.

أنا أستخدم لوحة مفاتيح Azerty. هل رمز المفاتيح لنفس الحرف مختلف على لوحة مفاتيح QWERTY؟

شكرا

هل كانت مفيدة؟

المحلول

لقد وجدت هذا الرمز الذي يفعل بالضبط ما أردت.

يستخدم الوظيفة display.keysym_to_keycode(Xlib.XK.string_to_keysym(char))

نصائح أخرى

لا تعتمد رموز المفاتيح ليس فقط على أجهزة لوحة المفاتيح ، ولكن أيضًا على تفضيل المستخدم لتخطيط لوحة المفاتيح - يجوز للمستخدم استخدام تخطيط DVorak على لوحة مفاتيح QWERTY ، على سبيل المثال.

من المحتمل أن يكون الحل الأفضل هو استخدام Python-Xlib لمعرفة المعلومات حسب تفضيلات لوحة مفاتيح المستخدم. لا أعرف التفاصيل حول كيفية القيام بذلك.

سيكون الحل الخام هو الركض xmodmap -pke وتحليل الناتج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top