AIX / XP لعنات الحصول على مفتاح مفتاح / معدل في أزياء منصة عبر

StackOverflow https://stackoverflow.com/questions/1285313

سؤال

أنا أعمل على تطبيق وحدة التحكم البسيطة للحصول على قدمي الرطب مع لعنات مرة أخرى. أواجه مشكلة في تنقل تطبيقي من XP إلى AIX. هنا هو جزء من الرمز.

int main(void)
{
    WINDOW *_window = initscr(); 
    int _rows;
    int _cols;

    cbreak();

    /* Accept all keys */ 
    keypad(_window, true);

    /* Don't echo things that are typed */ 
    noecho();

    /* Get the screen dimensions */ 
    getmaxyx(_window, _rows, _cols);

    /* Don't display cursor */ 
    curs_set(0);

    for (;;)
    {
        printw("Press a Key ");
        refresh();
        int key = wgetch(_window);
        printw("%d \n", key);
    }

    endwin();

    return 0;
}

عندما أقوم بتشغيل هذا ضمن XP، أحصل على الإخراج التالي من Downarrow تليها CTRL-Downarrow.

Press a Key 258
Press a Key 481
Press a Key

اقترح 258 هو رمز السهم لأسفل، و 481 لسهم Ctrl لأسفل.

أداء هذا الاختبار نفسه تحت AIX.

Press a Key 1858
Press a Key 27
Press a Key 79
Press a Key 66
Press a Key

1858 هو السهم لأسفل، و 27/29/66 هو استجابة سهم CTRL لأسفل. أدرك أن 27/29/66 ربما هو واحد من تسلسل الهروب القياسي. كنت آمل أن اللعنات ستعرض لها قيمة واحدة. يحتوي الجانب XP على CTL_Down المحدد في ملف CONDESS.H. الجانب aix لا.

لذلك سؤالي هنا هو

هل لهم بعض التعويذة التي فاتنيها هنا، والتي سوف خريطة بطريقة سحرية تلك الشخصية الثلاثة في عدد صحيح فريد من نوعها؟ أو هل يجب أن أكتب فئة من نوع ما، للتعامل مع إخفاء مفاتك المفاتيح المحددة من النظام الأساسي في شيء يمكن أن يستخدمه تطبيقي الحقيقي؟

عيني هي تسديدة دم من البحث عن الاشياء ايكس اونلاين. أي مساعدة في الإشارة لي في الاتجاه الصحيح سيكون موضع تقدير.

معلومات عشوائية أخرى

أقوم بتشغيل XP Pro، مع أحدث حزم الخدمات MSVC 6، مع حزمة الخدمة 6. مكتبة اللعنات هي PDCUSSES

المحول البرمجي الآخر هو IBM XL C / C ++ EDITION EDITION V8.0 استخدامات ترجمة

XLC ++ -G App.CPP -Lcurses

أنا أستخدم pdcurses33 على جهاز الكمبيوتر والسينات الأصلية على AIX.

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

المحلول 2

إعادة: [PDCURSES] ALT + SHIFT + N (على سبيل المثال) على ويندوز

LM FRI، 12 يوليو 2002 08:13:53 -0700

في 7/7/2002 6:10:00 PM، كتب جيريمي سميث:

لقد واجهت القليل من المشكلة. يمكنني استخدام Getses Function Getch () في برنامجي، للحصول على مفاتيح مثل 'n' أو ALT + 'N' ولكن كيف يمكنني اكتشاف هذه المجموعات:

CTRL + N ALT + SHIFT + N CTRL + ALT + N CTRL + ALT + SHIFT + N

أتصور أنه يجب أن يكون هناك نوع من العلم للعودة إلى SHIFT + ALT + 2 كخيال فعلي (يختلف عن التحول أو Alt أو 2)، لكنني لا أعرف كيف. :-(

راجعت رأس الملف الخاص بالملف لعنات "h ويبدو أن سرد جميع رموز المسح الضوئية القياسية التي يمكنك العودة إليها من لوحة مفاتيح، بما في ذلك بعض مجموعات البديل وعدد قليل من مجموعات التحكم.

ثم راجعت تطبيق Windows للحصول على حرف. في PDCKBD.C يدعو الروتين Win32_kbhit إلى قراءة القراءة. يتم إرجاع التحول، ALT، التحكم ومفاتيح الحالة الأخرى من هذه الوظيفة في DWControlkeystate. تقارير PDC_GET_BIOS_KEY: يتم الضغط على المفتاح باستخدام طاولتين KPTAP (KPTAB و Ext_kptab)، لذلك إذا لم يكن الجمع في الجدول، فمن المحتمل أنك لا ترى ذلك. قد تتمكن من إضافة بعض التعريفات إلى الجداول إذا كان هناك شيء مفقود. هناك أيضا بعض التعليمات البرمجية في نفس الروتين الذي يحدد الولايات (Button_Shift، button_control، button_alt)، ولكن يبدو أن هذا هو إدخال الماوس. حتى تتمكن من التحقق من هذه المفاتيح في بنية Mouse_Status. هذا يتعلق فقط بتنفيذ Windows. كل منصة لديها طريقة فريدة من نوعها لمعرفة المفاتيح التي يتم الضغط عليها.

في 16 بت DOS، اعتدت تغيير حالة التحول وقبعات القبعات وقفل الأسطوانات عن طريق تغيير الإعدادات في عنوان HEX 417. هذا يعمل فقط لبرامج الوضع الحقيقي. لا يسمح لك العديد من محطات Windows الجديدة حتى بالوصول إلى BIOS أو ذاكرة مباشرة مع الوظائف بعد الآن. يشير موقع 16 بت في Hex 417 و Hex 418 إلى أن التحول الصحيح قد تم الضغط عليه عن طريق تحديد أعلى بت في عنوان 417، والتحول الأيسر، عن طريق تعيين ثاني أعلى بت في البايت، مفتاح CTRL من خلال إعداد أعلى الأقصى ومفتاح ALT من قبل الأعلى التالي بعد ذلك. يحمل عنوان 418 حالة ما إذا كانت مفاتيح ALT والتحكم اليمنى أو اليسرى تم الضغط عليها.

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

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

أطيب التمنيات.

لورا مايكلزhttp://www.distasis.com.

يبدو أنني بحاجة إلى القيام برمز لوحة المفاتيح الخاصة بي.

نصائح أخرى

يمكنك محاولة استخدام مكتبات "NCURSES" مفتوحة المصدر بدلا من مكتبة AIX المزودة التي تم توفيرها بشكل كبير إلى مكتبات الأجهزة والبرامج الخاصة ب IBM.

لا أستطيع أن أتذكر بالضبط إذا كان هناك إصدار متوافق مع XLC، لذلك قد تضطر إلى إنشاء المكتبة من المصدر أو التبديل إلى "دول مجلس التعاون الخليجي". Ther هي أيضا إصدار من NCURSES لنظام Windows حتى تتمكن من التراجع عن التغييرات الخاصة بك إلى الإصدار الأصلي من التعليمات البرمجية الخاصة بك.

لدي ذاكرة VAUGE NCURSURE تدعم الأسماء المنطقية مثل UP_Arrow وما إلى ذلك بدلا من الأرقام لمفاتيح التحكم. مشكلة Depenfing على النظام الأساسي ومحطة الطرفية وإعدادات NLS وما إلى ذلك يمكن أن تعود سهم سهل الاستخدام "UP_Arrow" و "ESC_UP" و "cntrl_k".

أتذكر تعيين العديد من السكتات الدماغية الرئيسية إلى "نية" منطقية واحدة مثل "Meant_Up" في المرة الأخيرة التي اضطررت إلى ميناء تطبيق لعنات إلى منصة أخرى (وهذا كان AIX سهل النسب إلى منفذ Solaris).

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