Xterm.js: لم يتم تعريف altKey.

تم إنشاؤها على ١١ أبريل ٢٠٢٠  ·  3تعليقات  ·  مصدر: xtermjs/xterm.js

2655

                const term = new xterm.default.Terminal({ cursorBlink: true });
        const fitAddon = new xtermAddonFit.FitAddon();
        term.loadAddon(fitAddon);
        term.open(document.getElementById('term'));
        term.writeln('Terminal: ');
        term.writeln('');
        term.prompt = function () {
            term.write('\r\n' + '$: ');
        };
        term.prompt();
        term.onKey(function (key, ev) {
            console.log(ev)
            var printable = (
                !ev.altKey && !ev.altGraphKey && !ev.ctrlKey && !ev.metaKey
            );

            if (ev.keyCode == 13) {
                term.prompt();
            } else if (ev.keyCode == 8) {
                // Do not delete the prompt
                if (term.x > 2) {
                    term.write('\b \b');
                }
            } else if (printable) {
                term.write(key);
            }
        });

        term.paste('paste', function (data, ev) {
            term.write(data);
        });
        const socket = new WebSocket('ws://localhost:8000/')
        term.loadAddon(attachAddon);
        const attachAddon = new attachAddon(socket)
        fitAddon.fit();

الإخراج عندما أضغط على أي زر:
Snímka obrazovky z 2020-04-11 14-12-17

لست متأكدا ، ما هي المشكلة.

typquestion

ال 3 كومينتر

onKey على كائن باعتباره المعلمة الأولى ، وليس معلمتين.

https://github.com/xtermjs/xterm.js/blob/1913e9512c048e3cf56bb5f5df51bfff6899c184/typings/xterm.d.ts#L641

افعل هذا بدلاً من ذلك:

term.onKey(function (ev) {
            console.log(ev.key);
            console.log(ev.domEvent)

تبدو وظيفة onKey الخاصة بي الآن كما يلي:

term.onKey(function (ev) {
            var printable = (
                !ev.altKey && !ev.altGraphKey && !ev.ctrlKey && !ev.metaKey
            );

            if (ev.keyCode == 13) {
                term.prompt();
            } else if (ev.keyCode == 8) {
                // Do not delete the prompt
                if (term.x > 2) {
                    term.write('\b \b');
                }
            } else if (printable) {
                term.write(ev.key);
            }
        });

ولكن عندما أكتب أمرًا واضغط على إدخال ، فإنه لا ينشئ سطرًا جديدًا في الإخراج.
حاولت إضافة term.writeln ('') ؛ إلى إذا (ev.Keycode == 13)

نفس الشيء مع مسافة للخلف (keyCode 8) ..

أشياء أخرى تعمل بشكل جيد.

إذا كنت ترغب في كتابة أشياء على المحطة ، فإن الطريقة الموصى بها للاستماع إلى onData بدلاً من ذلك والتي تمنحك سلسلة تحتوي على ضغطات مفاتيح متسلسلة. سيكون Stack Overflow مكانًا أفضل لهذه الأنواع من الأسئلة.

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