Tuesday, February 3, 2009

Mendeteksi Penekanan Tombol Arrow dan F1-F10 Pada Program C++


Seringkali, ketika membuat program, kita dihadapkan agar program kita bisa mendeteksi tombol yang ditekan oleh user pada keyboard. Untuk keperluan ini, kita bisa menggunakan fungsi getch() yang terdapat pada header conio.h
contoh programnya bisa dilihat pada gambar di bawah ini.



Jika kita lihat source code di atas, getch() berfungsi untuk menunggu penekanan tombol pada keyboard oleh user, dan dalam program tersebut, tombol yang ditekan akan disimpan sebagai nilai pada variable ‘key’ yang bertipe character. Ketika program dijalankan, kita disuruh untuk menekan tombol apa saja, dan setelah itu, program akan menampilkan karakter apa saja yang telah kita tekan. Namun ini tidak akan berlaku jika kita menekan tombol arrow (panah) dan tombol F1 sampai F10 yang terdapat pada keyboard. Coba saja kalau tidak percaya. Program akan menampilkan karakter yang tidak kita ketahui. Mengapa demikian? Karena tombol panah (arrow) dan tombol F1-F10 tidak terdapat dalam list karakter ANSII yang berjumlah 256 karakter. Lalu bagaimana cara mendeteksinya?

Kita bisa mendeteksinya dengan mengubah sedikit cara kerja program kita agar bisa menangkap tombol yang ditekan oleh user. Sebagai langkah awal, agar lebih mudah memahaminya, saya akan memberi penjelasannya. Perhatikan source code tadi, lalu lihat baris seperti ini.



Nah, sekarang ganti “(char)” menjadi “(int)”, sehingga source code nya menjadi seperti ini :



Nah, setelah kita mengganti source kodenya, mari kita jalankan. Ketika sembarang huruf ditekan pada keyboard, yang keluar bukanlah huruf, melainkan berupa angka. Inilah yang disebut dengan nilai decimal karakter ANSII. Pada program yang pertama, tipe yang akan di-cout adalah char, maka yang keluar adalah karakter ANSII nya langsung. Tetapi ketika kita mengubahnya ke tipe integer, maka yang keluar adalah berupa angka decimal ANSII nya. Sudah agak mengerti kan? Sekarang, coba tekan tombol F1-F10 dan tombol arrow. Ketika kita menekan tombol F1, maka tampilannya adalah seperti di bawah ini:



Lho, kok jadi ada 2 nilai? Padahal kan yang kita tekan cuma sekali aja? Artinya apa? Ketika kita menekan tombol F1, tombol ini akan memberi 2 buah nilai pada program, yang pertama bernilai 0, dan yang kedua bernilai 59. Kedua buah nilai inilah yang harus ditangkap oleh program agar bisa terbaca sebagai F1. Sudah mengerti kan? Sekarang coba tombol F2-F10, tombol akan memberi nilai awal sama yaitu bernilai 0 dan nilai kedua yang berbeda-beda antara tiap tombolnya. Lalu coba tekan arrow atas, bawah, kiri, dan kanan. Ketika kita menekan tombol ini, nilai awal yang diberikan bukanlah 0, tetapi bernilai -32. Misal ketika kita menekan tombol panah kiri, akan dihasilkan seperti pada gambar.



Coba juga tombol Home, End, Page Up, Page Down, Insert, Delete, F11, dan F12. Tombol-tombol ini akan memberi nilai awal berupa nilai -32.
nah, dengan demikian kita telah memperoleh nilai-nilai dari karakter-karakter tersebut. Bisa dilihat pada table di bawah ini :



Kita telah paham konsepnya, dan algortimanya pun akan mudah dimengerti. Kita mempbutuhkan 2 buah fungsi getch() untuk menangkap nilainya, fungsi getch yang pertama digunakan untuk menangkap nilai awal karakter tersebut (yaitu 0 atau -32) serta fungsi getch() yang kedua untuk menangkap nilai kedua yang diberikan oleh keyboard. Anda bisa memodifikasi programnya menggunakan fungsi #define agar memudahkan proses pengkodean. Untuk source code nya silahkan download dari sini.

Edit and print this page

No comments: