Mengesan Input Papan Kekunci dalam Golang
Apabila membaca input pengguna terus dari terminal, mengenal pasti kunci khas seperti Enter dan Backspace memberikan cabaran. Artikel ini menerangkan cara untuk menentukan tatasusunan bait atau perwakilan rentetan bagi kekunci ini dalam Go.
Menggunakan bendera "cbreak", input pengguna boleh dibaca aksara demi aksara. Walau bagaimanapun, kunci khas seperti Enter dan Backspace tidak mempunyai nilai bait yang jelas. Untuk menyelesaikannya, kami boleh memanfaatkan perpustakaan yang menyediakan mekanisme untuk mengesan tekanan kekunci tertentu.
Menggunakan Istilah
Satu perpustakaan popular untuk mengendalikan input terminal ialah "istilah." Dengan Term, kita boleh menentukan gelung yang mengundi untuk menekan kekunci. Setiap acara tekan kekunci mengandungi maklumat tentang kekunci yang ditekan, menjadikannya mudah untuk mengenal pasti keistimewaan.
Contoh yang disediakan menunjukkan cara menangkap pelbagai kekunci, termasuk F1, Enter dan Backspace, dengan menggunakan ev.Key dan ev. Medan Ch acara penekan kekunci. Ini membolehkan kami mengendalikan input yang berbeza secara bersyarat dalam program kami.
Menggunakan Bufio
Pendekatan lain ialah menggunakan pakej "bufio". Walaupun kaedah ini membaca satu aksara pada satu masa, kekunci khas mungkin sukar untuk dikesan. Walau bagaimanapun, nilai ascii tertentu boleh dikenal pasti untuk menunjukkan penekanan kekunci. Sebagai contoh, Enter mempunyai nilai ascii 10, manakala Backspace diwakili oleh 8.
Menggunakan pakej "bufio", kita boleh menentukan gelung untuk membaca aksara tunggal. Dengan memeriksa nilai ascii, kami boleh melaksanakan tindakan tertentu apabila mengenali kunci khas.
Pelaksanaan Tersuai
Jika kaedah di atas tidak sesuai dengan keperluan anda, adalah mungkin untuk buat pelaksanaan tersuai. Ini melibatkan mengakses antara muka terminal sistem pengendalian asas dan menyahkod data input untuk mengenal pasti kombinasi kunci unik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Kekunci Papan Kekunci Khas (Enter, Backspace, dll.) di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!