# keyboard

### Funkce

Slouží pro asynchronní zpracování nadefinovaných událostí od klávesnice.

### Syntax

      keyboard keyboard_name;
        rem = string;
        timer = timer_name;
        send_same_data;
        driver_exception = driver_name;
        condition = boolean_expression;
        output = real_dataelement;
        receivers = [ identifier, ... ];
        item
        event = event_list;
          flags = flag_list;
          key = key_string;
          expression = real_expression;
          output = boolean_dataelement;
          logic = identifier;
          receivers = [ identifier, ... ];
        end_item;
        item
          ...
        end_item;
      end_keyboard;

### Specifické parametry přístroje

- condition
  Logický výraz, kterým lze podmiňovat činnost přístroje. Není-li uveden, je přístroj vždy aktivní.
- output
  Datový element, na který bude nastaven výsledek výrazu definovaného u události
- receivers
  Seznam příjemců zpráv, reagujících na každou nadefinovanou událost.
- item a end_item
  Klíčová slova uzavírající vždy všechny parametry týkající se jedné položky.
  - event
    Seznam událostí od klávesnice, na které se bude reagovat, resp. budou předány zprávy objektům uvedených u parametru receivers.
    press - reaguje se na stisk klávesy
    release - reaguje se na uvolnění klávesy
    repeat - reaguje se až na autorepeat klávesy
    state - reaguje na stisk přepínacích kláves, viz flags
  - flags
    Seznam přepínacích kláves, které je potřeba současně stisknout s klávesou nadefinovanou u parametru key.
    alt - alt
    ctrl - ctrl
    lshift - levý shift
    rshift - pravý shift
  - key
    'Horká' klávesa, např. 'a', '1', 'f1', 'home' apod...
    Klíčová slova pro speciální klávesy:
      f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12,
      esc, enter, tab,
      up, down, left, right,
      pageup, pagedown, home, end,
      delete, insert, backspace
  - expression
    Numerický výraz, který je vyhodnocován při vzniku události.
  - output
    Datový element, který bude nastaven při vzniku události podle parametru logic na hodnotu true nebo false.
  - logic
    Určuje na jakou hodnotu bude nastaven datový element uvedený u parametru output při vzniku události.
    set_true - datový element bude nastaven na hodnotu true (implicitní hodnota)
    set_false - datový element bude nastaven na hodnotu false
  - receivers Seznam příjemců zpráv, reagujících na událost.

### Příklad

Příklad nastavení přístroje

      keyboard Kbd;
        output = KbdCode;
        receivers = Pgm1;
        item
          event = press;
          key = 'f1';
          expression = 1;
          receivers = R1;
        end_item;
        item
          event = press,release;
          flags = alt,ctrl;
          key = 'a';
          expression = 2;
          receivers = R2;
        end_item;
        item
          event = state;
          flags = lshift,rshift;
          expression = 3;
          receivers = R3;
        end_item;
      end_keyboard;

## Nativní procedury přístroje

    Enable()

Aktivuje funkci přístroje

    Disable()

Deaktivuje funkci přístroje

## Událostní procedury přístroje

Přístroj může volat standardní událostní proceduru:

    OnActivate()

Podrobnější informace k této proceduře lze nalézt v kapitole Programování a procedury.

### Specifické událostní procedury přístroje

    OnOutput( &Value : real )

Procedura je volána při vzniku definované události. Parametr Value obsahuje vyčíslenou hodnotu z výrazu, definovaného u události. Tato hodnota bude nastavena na datový element u parametru output a je možné ji v této proceduře modifikovat.