سؤال

أنا أكتب تطبيق لعنات في بيثون تحت يونيكس. أرغب في تمكين المستخدم من استخدام CY للانبعاث من حلقة Kill A La Emacs.

المشكلة هي ، بطبيعة الحال ، أن يتم القبض على CY بواسطة قشرة بلدي الذي يرسل بعد ذلك sigtstp إلى عملي. بالإضافة إلى ذلك ، يؤدي CZ أيضًا إلى إرسال SIGTSTP ، لذا فإن التقاط الإشارة يعني أن CY و CZ لا يمكن تمييزهما (على الرغم من أنه حتى بدون هذا ، فإن الحلول الوحيدة التي يمكنني التفكير فيها هي مخترقة للغاية).

أعلم أن ما أطلبه ممكن (في C إن لم يكن في بيثون) ، لأن Emacs يفعل ذلك. كيف يمكنني تعطيل معالجة Shell الخاصة مع بعض أحرف التحكم المرسلة من لوحة المفاتيح وظهر الأحرف المعنية في عملية Stdin؟

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

المحلول

انظر termios الوحدة النمطية و termios(3) صفحة الرجل.

نصائح أخرى

للوظائف الأساسية ، استخدم tty. على سبيل المثال ، الاتصال tty.setraw(sys.stdin) سوف تضع محطة الإدخال القياسية في الوضع الخام.

للحالة الأكثر عمومية ، يأتي بيثون مع أ مكتبة Termios, ، لكن ربما تحتاج إلى بعض الخبرة مع TermiOS لمعرفة كيفية استخدامه.

بدلاً من ذلك ، هناك طريقة رخيصة هي التخلص من stty, ، وهي واجهة سطر الأوامر إلى termios.

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