Blame input.h

Ivan Mahonin 452870
#ifndef INPUT_H
Ivan Mahonin 452870
#define INPUT_H
Ivan Mahonin 452870
Ivan Mahonin 452870
Ivan Mahonin 452870
#include "common.h"
Ivan Mahonin 452870
Ivan Mahonin 452870
Ivan Mahonin 843e7a
#define IN_MAXKEYS 256
Ivan Mahonin 843e7a
Ivan Mahonin 843e7a
enum {
Ivan Mahonin 843e7a
  IM_SHIFT,
Ivan Mahonin 843e7a
  IM_CAPSLOCK,
Ivan Mahonin 843e7a
  IM_SHIFTLOCK,
Ivan Mahonin 843e7a
  IM_NUMLOCK,
Ivan Mahonin 843e7a
  IM_GROUP,
Ivan Mahonin 569832
  IM_SCRLOCK,
Ivan Mahonin 843e7a
  IM_COUNT };
Ivan Mahonin 843e7a
Ivan Mahonin 63daec
enum {
Ivan Mahonin 63daec
  IM_SHIFT_BIT     = 1 << IM_SHIFT,
Ivan Mahonin 63daec
  IM_CAPSLOCK_BIT  = 1 << IM_CAPSLOCK,
Ivan Mahonin 63daec
  IM_SHIFTLOCK_BIT = 1 << IM_SHIFTLOCK,
Ivan Mahonin 63daec
  IM_NUMLOCK_BIT   = 1 << IM_NUMLOCK,
Ivan Mahonin 569832
  IM_GROUP_BIT     = 1 << IM_GROUP,
Ivan Mahonin 569832
  IM_SCRLOCK_BIT   = 1 << IM_SCRLOCK };
Ivan Mahonin 63daec
Ivan Mahonin 843e7a
Ivan Mahonin 452870
typedef struct Input {
Ivan Mahonin 452870
  App *app;
Ivan Mahonin 843e7a
  int key0, key1;
Ivan Mahonin 843e7a
  unsigned int keys[IN_MAXKEYS][1 << IM_COUNT];
Ivan Mahonin 843e7a
  unsigned int masks[IM_COUNT];
Ivan Mahonin 843e7a
  
Ivan Mahonin 843e7a
  int mapKey;
Ivan Mahonin 843e7a
  int mapDown;
Ivan Mahonin 63daec
  unsigned int modifiers;
Ivan Mahonin 452870
} Input;
Ivan Mahonin 452870
Ivan Mahonin 452870
Ivan Mahonin 63daec
void inputPrepareKeysyms(unsigned int *ks0, unsigned int *ks1, int *isLetter, int *isKeypad);
Ivan Mahonin 63daec
int inputChooseKeysym(unsigned int modifiers, unsigned int ks0, unsigned int ks1, int isLetter, int isKeypad);
Ivan Mahonin 63daec
Ivan Mahonin 452870
int inputInit(Input *in, App *app);
Ivan Mahonin 452870
void inputDeinit(Input *in);
Ivan Mahonin 8864eb
void inputUpdateLayout(Input *in, int key0, int key1);
Ivan Mahonin 63daec
void inputUpdateModifiers(Input *in);
Ivan Mahonin 843e7a
int inputKeycode(Input *in, unsigned int keySym);
Ivan Mahonin 843e7a
void inputEvent(Input *in, int keycode, int press);
Ivan Mahonin 452870
Ivan Mahonin 452870
Ivan Mahonin 63daec
Ivan Mahonin 452870
#endif