Pada kode program
contoh11.cpp fungsi getKey adalah fungsi yang digunakan untuk
input satu karakter.
Fungsi getKey tidak memerlukan parameter dan mengembalikan nilai
bertipe unsigned character
(didefinisikan dalam file screen.cpp sebagi UCHAR). Nilai yang
dikembalikan oleh fungsi
ini adalah karakter yang diketikan pada tombol keyboard. Fungsi ini
sama dengan fungsi standar
getch.
Setelah mempelajari cara
memasukan satu karakter, maka langkah berikutnya adalah
mempelajari cara
mendeteksi penekanan tombol-tombol extended. Project contoh12.ide berikut
ini memberikan contoh cara
mendeteksi penekanan tombol F1, F2, F3, dan F4. Simpan kode
program contoh12.cpp berikut ini pada direktori yang sama dengan
file screen.cpp.
CONTOH SCREEN CPP.12
#include
<stdlib.h>
#include
"screen.cpp"
#define
KEY_INT 0x16 /* Nomor interupsi keyboard
*/
#define
KEY_F1 0x3b /* Kode scan tombol F1 */
#define
KEY_F2 0x3C /* Kode scan tombol F2 */
#define
KEY_F3 0x3d /* Kode scan tombol F3 */
#define KEY_F4 0x3e
/* Kode scan tombol F4 */
#define
TRUE 1
UCHAR
getSpecialKey(void);
int
main(void)
{
Screen
*layar = new Screen();
UCHAR
tombol;
layar->setMode(0x03);
layar->setCursorPos(5,
9);
layar->setAttribute(0xc7);//huruf
warna putih latar merah
layar->writeString("Tekan
F1, F2, F3");
layar->setAttribute(0x9);//huruf
warna light blue
layar->setCursorPos(6,
9);
layar->writeString("Tekan
F4 untuk berhenti");
layar->setCursorPos(8,
9);
while (TRUE)
{
tombol =
getSpecialKey(); // Periksa tombol yang
ditekan
layar->setCursorPos(8,
9);
switch
(tombol)
{
case KEY_F1
:
layar->setAttribute(0xe5);//huruf
ungu latar kuning
layar->writeString("Tombol
F1 ditekan");
break;
case KEY_F2
:
layar->writeString("Tombol
F2 ditekan");
layar->setAttribute(0xe5);//huruf
ungu latar kuning
break;
case KEY_F3
:
layar->writeString("Tombol
F3 ditekan");
layar->setAttribute(0xe5);//huruf
ungu latar kuning
break;
case KEY_F4
:
delete
layar;
return
EXIT_SUCCESS;
default :
layar->writeString("Tombol
lain ");
break;
}
}
}
UCHAR
getSpecialKey(void)
{
UCHAR key;
asm mov ah,
0x00; /* Register AH = 0 */
asm int
KEY_INT; /* Lakukan interupsi 16
heksadesimal */
asm mov key,
ah; /* Salin nilai di AH ke variabel
key */
return key;
}
Pada kode program
contoh12.cpp fungsi getSpecialKey adalah fungsi yang
digunakan untuk mendeteksi
penekanan tombol-tombol khusus.
Perhatikanlah pada baris
kelima sampai baris
kedelapan, karena setiap tombol khusus memiliki kode tersendiri maka
pada baris kelima sampai
kedelapan dideklarasikan konstanta untuk tombol F1 sampai F4.
Kode scan untuk tombol F1
adalah 3b heksadesimal, F2 adalah 3c heksadesimal, dan
seterusnya. Bandingkanlah
kode program contoh11.cpp dengan kode program contoh12.cpp
pada fungsi getKey dan
getSpecialKey. Pada fungsi getKey nilai yang dijadikan sebagai nilai
kembali fungsi (return
value) adalah nilai yang tersimpan di register AL, sedangkan pada fungsi
getSpecialKey nilai yang dikembalikan adalah nilai yang tersimpan
di register AL.




0 komentar:
Posting Komentar