Pada keyboard ada tombol-tombol yang memiliki dua keadaan (on atau off) seperti Caps Lock, Num Lock, Scroll Lock, serta tombol yang memiliki status tekan (pressed/ditekan atau release/dilepas) seperti Alt, Ctrl, Ins, dan Shift. BIOS pada PC menyediakan interupsi 16 heksadesimal servis 2 untuk mengetahui status tombol-tombol tersebut. Berikut ini adalah prosedur untuk menjalankan interupsi 16 heksadesimal servis 2.
Register AH harus bernilai 2 heksadesimal.
Jalankan interupsi 16 heksadesimal.
Setelah interupsi dijalankan, register AL akan berisi nilai BIOS keyboard flag dengan
ketentuan sebagai berikut:
Jika bit 0 bernilai 1 berarti tombol Shift kanan dilepas.
Jika bit 1 bernilai 1 berarti tombol Shift kiri dilepas.
Jika bit 2 bernilai 1 berarti tombol Ctrl dilepas.
Jika bit 3 bernilai 1 berarti tombol Alt dilepas.
Jika bit 4 bernilai 1 berarti tombol Scroll Lock on.
Jika bit 5 bernilai 1 berarti tombol Num Lock On.
Jika bit 6 bernilai 1 berarti tombol Caps Lock on.
Jika bit 7 bernilai 1 berarti tombol Ins aktif.
Berikut ini adalah contoh program untuk mengetahui cara menggunakan interupsi 16 heksadesimal servis 2. Simpan project ini dengan nama contoh15.ide pada direktori yang sama dengan file screen.cpp.

Pada program contoh15.cpp, fungsi getKeyState adalah fungsi yang digunakan untuk mengetahui status tombol. Perhatikanlah baris 7 sampai baris 14! Pada baris ketujuh sampai keempat belas dideklarasikan konstanta STATE_RSHIFT dan STATE_INS. Konstanta-konstanta ini digunakan untuk mengetahui status penekanan tombol Shift kanan sampai tombol Ins. Konstanta-konstanta inilah yang dikirimkan sebagai parameter pada fungsi getKeyState. Pada baris 114, setelah interupsi dijalankan nilai register AL di-AND-kan dengan nilai yang dikirimkan parameter fungsi getKeyState. Sebagai contoh, untuk mengetahui status tombol Shift kanan sedang ditekan atau dilepas, ditentukan dari nilai bit pertama pada register AL. Untuk mengetahui apakah nilai bit pertama 1 atau 0, maka nilai pada register AL harus di-AND-kan dengan nilai 0x01 atau 00000001 binari atau nilai konstanta STATE_RSHIFT. Kemudian nilai register AL yang telah di-AND-kan dijadikan nilai kembali fungsi getKeyState.
Title :
Pertemuan XI : Mengetahui Status Tombol On/Off
Description : Pada keyboard ada tombol-tombol yang memiliki dua keadaan (on atau off) seperti Caps Lock, Num Lock, Scroll Lock, serta tombol yang memilik...
Rating :
5