Glfw: إدخال محرر أسلوب الإدخال (IME)

تم إنشاؤها على ١٣ يونيو ٢٠١٣  ·  4تعليقات  ·  مصدر: glfw/glfw

Wayland Windows X11 enhancement macOS

التعليق الأكثر فائدة

لمعلوماتك ، قمت بتنفيذ دعم IME عبر IBUS على X11 / wayland في مفترق glfw الخاص بي.

ال 4 كومينتر

تم تحريره عدة مرات

لمعلوماتك اعتبارًا من GLFW الحالي ، باستخدام Microsoft IME للإدخال على سبيل المثال اليابانية ، يبدو أن المفتاح الذي يتم الضغط عليه أثناء إدخالات IME يصل إلى التطبيق مباشرةً عبر رسائل WM_KEYDOWN العادية.

لا أعرف حتى سبب هذا ، في تطبيق اختبار Win32 البسيط الخاص بي مع حلقة رسالة تافهة ، يقوم محرر أسلوب الإدخال (IME) باعتراض هذه المفاتيح بشكل صحيح. أتلقى WM_KEYDOWN مع VK_PROCESSKEY (229) و WM_KEYUP عادي بدون فليت.

في GLFW أحصل على قيم مفتاح غير مصفاة لكل من الضغط عليه وتحريره.
أقوم الآن بالتحقيق في سبب الاختلاف لمعرفة ما إذا كان بإمكاني اقتراح إصلاح لـ GLFW.

حسنًا ، ما يحدث هو ، في تطبيقي ، أستخدم wParam الذي يحتوي على رمز مفتاح افتراضي ويمكن تصفيته بواسطة محرر أسلوب الإدخال. GLFW في translateKey () يستخدم HIWORD (lParam) & 0x1FF وهو scancode ولا يتم تصفيته أبدًا.

لذلك عندما تضغط وتحرر مفتاح حرف تم اعتراضه بواسطة محرر أسلوب الإدخال ، يكون التسلسل مثل:

WM_KEYDOWN 229
13.36 Key 49 pressed
WM_KEYUP 78
13.43 Key 49 released

لذلك لمحاكاة شيء مشابه من وجهة نظر مستخدم GLFW ، قد يكون من الكافي إضافة هذا لترجمة المفتاح ():

if (wParam == VK_PROCESSKEY)
    return _GLFW_KEY_INVALID;

والتي سوف تولد أيا من الضغط ولا الأحداث الصادرة.

تكمن المشكلة الآن في أن هناك العديد من الطرق الممكنة لتفسير البيانات منخفضة المستوى ولكني أعتقد ، وعلى الرغم من حقيقة أن محرر أسلوب الإدخال (IME) أكثر من ذلك بكثير وأن هذه ليست الصورة الكاملة ، فإن هذا السلوك سيكون مرغوب فيه الافتراضي ومفيد جدا. لا ترغب الغالبية العظمى من التطبيقات في الرد على ضغطات المفاتيح عند عرض نافذة محرر أسلوب الإدخال ، مما يسمح على الأقل بإدخال النص المستند إلى محرر أسلوب الإدخال في التطبيق.

التطبيق الذي يسعى إلى أن يكون على دراية بنسبة 100٪ بمحرر أسلوب الإدخال (وصولاً إلى تنفيذ عرض محرر أسلوب الإدخال الخاص به) ، والذي يعد نادرًا للغاية ، سيتعين عليه التعامل مع العديد من الرسائل بتفاصيل رائعة ، والتي لن تكون على الأرجح نطاق GLFW (ولكن يمكن للمرء أن يتخيل ذلك قد يوفر GLFW في المستقبل خطافات WM_ * للسماح للمستخدمين المهتمين بالتعامل معهم بأنفسهم ، ومرة ​​أخرى لا فائدة من القيام بهذا العمل ما لم يكن هناك سبب وجيه لذلك).

لمعلوماتك ، قمت بتنفيذ دعم IME عبر IBUS على X11 / wayland في مفترق glfw الخاص بي.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

malytomas picture malytomas  ·  3تعليقات

matiTechno picture matiTechno  ·  4تعليقات

~
snbharath picture snbharath  ·  3تعليقات

voxelv picture voxelv  ·  4تعليقات

voidburn picture voidburn  ·  4تعليقات