سؤال

بالنسبة لمثل هذا السؤال الأساسي، أنا مندهش لأنني لم أتمكن من العثور على أي شيء من خلال البحث ...

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

لذلك من المؤسف أن Shift يسبب لي مشكلات مرة أخرى (آخر مرة واجهت فيها مشكلات مع Shift، حصلت على شارة Tumbleweed).على الرغم من أن المشكلة هذه المرة تكمن بشكل أو بآخر في Caps Lock، الذي يفسد برنامجي تمامًا عن طريق عكس الوظائف.

كيف يمكنني اكتشاف حالة Caps Lock في بايثون باللعنات؟

يحرر:إذا كنت ستقترح استخدام وحدة منفصلة، ​​فمن المحتمل أن أذكرك بأن اللعنات - وبالتالي برنامجي - موجودة في منطقة UNIX.

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

المحلول

لقد وجدت الحل بنفسي:

نظرًا لأن الشتائم غير مدركة تمامًا لإعداد Caps Lock وفقًا لـ ΤΖΩΤΖΙΟΥ، فقد جربت حلاً بديلاً.على وجه التحديد، بحثت عن كيفية التحقق من Caps Lock في برنامج BASH النصي.ما وجدته هو هذا:

لينكس فقط.يتطلب نظام X النافذة.

$ xset q | grep LED
>  auto repeat:  on    key click percent:  0    LED mask:  00000000

آخر 0 في هذا الإخراج (الحرف 66 في السلسلة) هو علامة Caps Lock.1 إذا كان قيد التشغيل، 0 إذا كان مطفأً.

يمكن لـ Python تشغيل أوامر نظام UNIX مع نظام Linux فقط الأوامر وحدة.لا يبدو أن الأوامر تتعارض مع الشتائم.

>>> import commands
>>> # Caps Lock is off.
>>> commands.getoutput("xset q | grep LED")[65]
'0'
>>> # Setting Caps Lock on now.
>>> commands.getoutput("xset q | grep LED")[65]
'1'

هذا يفي بالغرض بالنسبة لي؛هذا نص للاستخدام الشخصي، ولا يبدو أن برنامجي لم يكن حصريًا لنظام Linux بالفعل.لكنني آمل أن يكون لدى شخص ما حل آخر أكثر توافقًا مع Windows.

سأقبل هذه الإجابة الذاتية في الوقت الحالي، ولكن إذا تمكن شخص آخر من التوصل إلى حل عملي أفضل، فأنا أود رؤيته.

نصائح أخرى

الجواب القصير:لا يمكنك.

إجابة أطول:

تم إنشاء الشتائم كمكتبة قائمة على المصطلحات لتسهيل إنشاء واجهات مستخدم قائمة على الأحرف بشكل مستقل عن المحطة المستخدمة (for terminal in 'vt220', 'wyse100', …).

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

ليس لدي علم أي محطة غبية ترسل تسلسلًا خاصًا عندما يتم الضغط على مفتاح Caps Lock، أو يقوم المضيف بالاستعلام عن حالة Caps Lock؛كان قفل الحروف الكبيرة جزءًا من وظيفة المحطة، ولم يكن المضيف بحاجة إلى أي معرفة.وهذا مشابه للسبب الذي يمنعك من تشغيل برنامج الشتائم عند الضغط على مفتاح التحكم من تلقاء نفسه.

كل شيء عن اللعنات يتعلق com.terminfo قدرات؛لا توجد أي قدرة ذات صلة بما تطلبه.

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