LibRAWKey


Obsah:


Uvod

LibRAWKey je takova jednoducha knihovna pro ovladani klavesnice na konzoli linuxu. Obsahuje jen nekolik zakladnich funkci. Velmi dobre se hodi pro ovladani kalvesnice v grafice pri pouziti SVGALib. Autorem knihovny je Russell Marks.

Kompilace a linkovani

Do kazdeho souboru, ktery pouziva volani funkci LibRAWkey includujte rawkey.h a unistd.h. Pro linkovani volejte kompiler s parametrem /usr/lib/librawkey.a.
Priklad:
cc testprog.c -o testpog -lvga /usr/lib/librawkey.a

Inicializace

Na zacatku programu zavolejte rawmode_init(). int rawmode_init() vraci 1 pukud se povedla inicializace.

Ukonceni

Na konci programu zavolejte rawmode_exit(), pokud na to zapomenete nepujde vam po skonceni programu klavesnice, takze se nepovede ani shutdown.

Funkce

int is_any_key_pressed() vraci 1 kdyz je stisknuta klavesa 
int is_key_pressed(int scancode) vraci 1 kdyz je stisknut Scancode.
void scan_keyboard() volat  pred pouzitim is_key_pressed atd.
int get_scancode();  vraci  Scancode nebo -1 pukud neni stisknuta klavesa.
int keymap_trans(int scancode) prevadi Scancode na ASCII.
int scancode_trans(int asc) prevadi ASCII na Scancode.
void set_switch_functions(void (*off)(void),void (*on)(void))nastaveni funkci, ktere prepinaji
  z textu do garfiky a zpet
Prikald:
...
void text()
{
vga_setmode(TEXT);
}

void graph()
{
vga_setmode(G320x200x256);
}
...
	allow_switch(1);
	set_switch_function(text,graph);
...
	allow_switch(0);
...

void allow_switch(int on) on=1 pro povoleni prepinani on=0 pro zakaz prepinani. 

Scancode

ESCAPE_KEY  
ENTER_KEY 
BACKSPACE
TAB_KEY 
LEFT_SHIFT
RIGHT_SHIFT
LEFT_CTRL
LEFT_ALT
FUNC_KEY(z)
CURSOR_LEFT 
CURSOR_RIGHT
CURSOR_UP
CURSOR_DOWN
KEYPAD_CENTER 
INSERT_KEY
DELETE_KEY
HOME_KEY
END_KEY
PAGE_UP
PAGE_DOWN
CAPS_LOCK
NUM_LOCK
SCROLL_LOCK
GRAY_PLUS
GRAY_MINUS
GRAY_MULTIPLY
GRAY_DIVIDE

Ukazkovy program:


#include<stdio.h>
#include<unistd.h>
#include<vga.h>
#include<vgagl.h>
#include<rawkey.h>
main()
{
vga_init();
vga_setmode(G640x480x256);
	if (!rawmode_init())
		{
		        printf("Couldn't init RAW mode !");
		        exit(1);
	              }
vga_setcolor(1);
do
{
	scan_keyboard();
	if (is_key_pressed(CURSOR_LEFT)) vga_drawline(100,100,200,200);
}
while(!is_key_pressed(ESCAPE_KEY));
rawmode_exit();
vga_setmode(TEXT);
} 


(c) 1997 Ondrej Kolonicny

Muzete mi mailnout na:6kolo@pol.upce.cz

Linux je nejlepsi opracni system!