Mengapa karakter acak muncul di terminal di Windows?

1

Saya sudah pemrograman pada Windows selama beberapa tahun, dan ada masalah yang menjadi semakin frustasi karena saya benar-benar mulai menggunakan berbagai terminal di Windows untuk tujuan pengembangan saya. Untuk masuk ke mesin jarak jauh, saya menggunakan Putty, dan saya baru-baru ini menemukan Cygwin, yang saya temukan sebagai shell yang sangat hebat. Saya juga punya MacBook Pro dan saya menggunakan Terminal sedikit juga.

Apa yang saya perhatikan adalah bahwa tanpa saya mengetik apa pun, 8 ~ akan mengetik sendiri ke terminal saya, dan jika saya meninggalkan komputer selama 10 atau 15 menit, saya akan secara teratur melihat sesuatu seperti:

8 ~ 8 ~ 8 ~ 8 ~ 8 ~ 8 ~ 8 ~ 8 ~ 8 ~

Selain itu, ketika saya berada di emacs, saya perhatikan bahwa angka-angka akan muncul secara acak tanpa harus mengetiknya seperti 012, atau 34, dll. Ini telah terjadi pada saya di berbagai mesin Windows yang berbeda, dan saya telah mencoba mungkin ratusan berbeda Pencarian Google untuk mencoba dan memastikan mengapa ini terjadi, dan saya sama sekali tidak beruntung dalam mencari tahu apa yang menyebabkan ini.

Saya akan sangat menghargai bantuan apa pun dalam hal ini. Saya tahu ini sebenarnya bukan pertanyaan pemrograman, tetapi saya berasumsi Stack Overflow tidak akan menghargai pertanyaan ini dan karena Anda semua adalah programmer, saya pikir salah satu dari Anda akan memiliki wawasan.

Terima kasih banyak.

EDIT : Saya awalnya memposting ini di www.programmers.stackexchange.com dan saya mendapat tiga komentar meminta saya untuk klarifikasi, jadi saya reposting pertanyaan dengan klarifikasi yang diminta.

  1. Ini hampir pasti semacam bentuk keepalive, tetapi konteksnya tidak cukup jelas. Anda menggunakan Windows, menggunakan Putty, dan terhubung ke emacs di komputer lain, dan mendapatkan karakter acak? Apa yang telah Anda coba untuk mengisolasinya? Apakah mereka muncul jika Anda hanya membuka jendela dan tidak terhubung? Jika Anda baru saja membuka jendela konsol?

Itu terjadi ketika saya hanya menggunakan emacs / Cygwin secara lokal, dan itu juga terjadi ketika saya menggunakan emacs melalui puTTy ketika masuk ke server linux sekolah saya. Saya tidak benar-benar tahu apa yang bisa saya lakukan untuk mengisolasinya, saya bahkan tidak tahu penyebabnya! Itu tidak pernah terjadi di mac, baik secara lokal atau ketika saya masuk ke server yang sama, jadi saya menganggap masalahnya harus lokal. Karena itu terjadi ketika saya masuk ke server sekolah saya baik melalui Cygwin atau dempul, serta ketika saya hanya menggunakan Cygwin dengan emacs secara lokal, pasti ada sesuatu dengan Windows.

  1. Apakah ini hanya terjadi dari Windows atau juga dari Mac? Apakah itu terjadi hanya ketika Anda masuk ke mesin tertentu, atau juga orang lain? Jika hanya untuk mesin tertentu, OS apa yang sedang dijalankan (distribusi apa, versi apa)? Apakah ini berkorelasi dengan menggerakkan mouse? Pertanyaan Anda di luar topik di sini, tetapi jika Anda menambahkan informasi yang kami minta, Anda dapat memposting ulang di Super User.

Tidak, itu tidak terjadi di Mac secara lokal atau ketika saya masuk ke server sekolah. Itu terjadi pada saya dengan Windows 8 Pro dan Windows 7 Ultimate.

Arthur Collé
sumber
Shell memakan bagian dari urutan dan hanya menampilkan setengahnya. Bisakah Anda menjalankan catdi terminal, menunggu sampah muncul, lalu salin di sini? (Akan terlihat seperti ^[8~ atau ^[[8~mirip.) Saya pikir akan mudah untuk menjawab apa arti karakter, bahkan jika saya tidak tahu mengapa mereka dikirim.
grawity
Iya!!!! ^ [[2 ~ dan ^ [[8 ~ keduanya telah muncul sebelumnya. Apa itu?? Saya akan menjalankan apa yang Anda minta. omg
Arthur Collé

Jawaban:

3

Dalam kasus saya, output berkala dari urutan 8 ~ karakter adalah karena proses latar belakang ditambah dengan jendela cygwin shell saya (64-bit Windows7) menjadi jendela aktif. Untuk menonaktifkan mode screen-saver agar tidak dimasukkan setiap x menit dan mengunci komputer kerja saya, saya menginstal sebuah program bernama caffeine.exe, yang, di latar belakang, mensimulasikan aktivitas input berkala (keyboard atau mouse; Saya tidak 100% yakin benar sekarang). Saya melihat output string 8 ~ karakter periodik yang sama tentang setiap menit, yang mungkin ketika input simulasi dihasilkan. Singkatnya, jika jendela cygwin saya bukan jendela aktif, atau jika jendela cygwin saya adalah jendela aktif tetapi saya menonaktifkan kafein, tidak ada 8 ~ karakter yang muncul; kalau tidak, saya melihat 8 ~.

Salam, Greg

Greg Hopkins
sumber
Menariknya, saya tidak melihat 8 ~ karakter yang sama pada desktop WindowsXP 32-bit saya, yang juga menjalankan kafein dan cygwin. Jadi, ada beberapa variabel lain yang bekerja di sini yang menyebabkan masalah ini hanya pada laptop Windows7 saya.
Greg Hopkins
2

Terkadang, karakter "acak" yang tampak dapat muncul di terminal atau beberapa program Linux di Cygwin / SSH karena Anda mengetikkan tombol keyboard yang tidak dipetakan pada mesin. Penyebab utama dari hal ini adalah tombol makro atau multimedia pada keyboard yang diperluas, atau (dalam keadaan yang lebih jarang) jika Anda memiliki Fnkunci pada keyboard Anda yang perlu Anda gunakan untuk penekanan tombol tertentu. Tombol-tombol ini mungkin tidak dipetakan oleh OS yang Anda kendalikan dan mungkin muncul di terminal atau tempat lain di mana teks dapat diketik sebagai kode / karakter keyboard mentah yang dikirimkan keyboard ke OS untuk ditafsirkan. Itu alasan yang sama mengapa Conrol+ Cakan muncul di terminal seperti ^C, misalnya.

Apa yang mungkin terjadi adalah Anda menekan kombinasi tombol atau menekan tombol pada keyboard Anda yang tidak dipetakan oleh Linux pada mesin tertentu, dan akhirnya diketik ke terminal atau editor teks Anda. Atau, mungkin ada acara reguler yang diatur di komputer yang memicu penekanan tombol secara otomatis dan menyebabkannya muncul.

Anda tidak menentukan apakah itu terjadi ketika Anda mengetik sesuatu atau bahkan jika Anda tidak. Tetapi dalam pengalaman saya, inilah mengapa Anda mungkin melihat ini terjadi.

MEMPERBARUI:

Melalui beberapa percobaan dan kesalahan bermain-main dengan Cygwin, saya menemukan apa yang 8~terkait dengannya.

Itu muncul ketika Anda mengetik kombinasi tombol Ctrl+ Alt+ Shift+ Del. Saya tidak tahu mengapa itu muncul begitu sering, tetapi sesuatu di komputer Anda tampaknya memicu input itu. Bisa jadi beberapa perangkat lunak berjalan di latar belakang atau mungkin keyboard yang rusak.

Anda dapat mencoba memverifikasi ini sendiri. Pertama-tama saya akan mencoba keyboard yang berbeda dan, jika itu tidak membantu, mulailah melalui proses yang sedang berjalan dan gunakan proses eliminasi untuk mencoba dan mengisolasi yang mana itu.

Ben Richards
sumber
Ini terjadi baik saat saya mengetik (yang paling menjengkelkan karena saya hanya akan menangkapnya jika saya mengetik perintah di terminal, atau ketika saya sedang mengkompilasi -_-) dan ketika saya tidak mengetik.
Arthur Collé
@ Windows Saya memperbarui jawabannya dengan info lebih lanjut.
Ben Richards
0

Pada sistem operasi mirip Unix, program menggunakan berbagai fitur terminal (warna, pergerakan kursor, dll.) Dengan mengirimkan urutan pelarian ke terminal. Terminal itu sendiri mengirimkan urutan melarikan diri ke program ketika Anda menekan berbagai tombol khusus, atau (jika program telah mengaktifkannya) menggunakan mouse di dalam jendela terminal, atau sebagai tanggapan terhadap pertanyaan tertentu.

Urutan ini selalu mulai dengan ESCbyte, yang di berbagai tempat dapat muncul sebagai ^[(yang sebenarnya berarti Ctrl [, tapi itu byte yang sama karena bagaimana ASCII bekerja), jadi ^[[2~sebenarnya ESC, [, 2, ~.

( Shell bash berjalan dalam mode "mentah" dan menginterpretasikan beberapa urutan penekanan tombol, seperti tombol panah. Ketika tidak mengenali urutan yang dimasukkan, ia membuang bagian yang dilihatnya, dan terus menafsirkan bagian yang tersisa sebagai penekanan tombol biasa - itulah sebabnya setengah dari urutan, seperti ~, akhirnya dimasukkan dalam baris perintah. Di sisi lain, ketika Anda menjalankan catatau mengkompilasi sesuatu, semua yang Anda input ditampilkan secara penuh oleh terminal itu sendiri, sehingga Anda dapat melihat penuh " urutan "tidak rusak. Itu sebabnya saya meminta Anda untuk menjalankan cat.)

Seringkali, urutan yang mewakili penekanan tombol diakhiri dengan a ~. Dari dua yang Anda sebutkan dalam komentar Anda ESC [ 2 ~,, berkorespondensi dengan Insertkunci. Yang lain ( ESC [ 8 ~) saya tidak dapat menemukan bahkan dalam kode sumber Putty [belum]. Jadi saya tidak yakin apakah Anda mengingat kode dengan benar.

grawity
sumber
"8 ~" dengan sendirinya muncul secara harfiah setiap 5 menit. Saya membiarkan terminal terbuka dengan kucing masuk selama 10 menit dan sejauh ini tidak ada yang muncul
Arthur Collé
Maaf jika tautan di atas melanggar TOS dengan informasi pribadi saya, tetapi saya benar-benar tidak peduli jika orang tahu nama depan saya. Saya hanya ingin Anda melihat contoh. Untuk beberapa alasan saya tidak mendapatkan input (tidak) "acak" ketika saya mengetikkan cat, saya telah meninggalkan shell selama 17 menit sekarang dan saya tidak mendapatkan apa
Arthur Collé