// -*- coding:unix; mode:c++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
/*------------------------------------------------------------------------------
UniKey - Open-source Vietnamese Keyboard
Copyright (C) 2000-2005 Pham Kim Long
Contact:
unikey@gmail.com
http://unikey.org
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
--------------------------------------------------------------------------------*/
#ifndef __UNIKEY_H
#define __UNIKEY_H
#include "keycons.h"
/*----------------------------------------------------
Initialization steps:
1. UnikeySetup: This will initialized Unikey module,
with default options, input method = TELEX, output format = UTF-8
2. If you want a different settings:
+ Call UnikeySetInputMethod to change input method
+ Call UnikeySetOutputVIQR/UTF8 to chang output format
+ Call UnikeySetOptions to change extra options
Key event handling:
- Call UnikeyFilter when a key event occurs, examine results in
+ UnikeyBackspaces: number of backspaces that need to be sent
+ UnikeyBufChars: number of chars in buffer that need to be sent
+ UnikeyAnsiBuf: buffer containing output characters.
+ UnikeyUniBuf: not used
You should also call UnikeySetCapsState() before calling UnikeyFilter.
To make this module portable across platforms, UnikeyFilter should not
be called on special keys: Enter, Tab, movement keys, delete, backspace...
- Special events:
+ Call UnikeyResetBuf to reset the engine's state in situations such as:
focus lost, movement keys: arrow keys, pgup, pgdown....
+ If a backspace is received, call UnikeyBackspacePress,
then examine the result:
UnikeyBackspaces is the number of backspaces actually required to
remove one character.
Clean up:
- When the Engine is no longer needed, call UnikeyCleanup
------------------------------------------------------*/
#if defined(__cplusplus)
extern "C" {
#endif
extern unsigned char UnikeyBuf[];
extern int UnikeyBackspaces;
extern int UnikeyBufChars;
extern UkOutputType UnikeyOutput;
void UnikeySetup(); // always call this first
void UnikeyCleanup(); // call this when unloading unikey module
// call this to reset Unikey's state when focus, context is changed or
// some control key is pressed
void UnikeyResetBuf();
// main handler, call every time a character input is received
void UnikeyFilter(unsigned int ch);
void UnikeyPutChar(unsigned int ch); // put new char without filtering
// call this before UnikeyFilter for correctly processing some TELEX shortcuts
void UnikeySetCapsState(int shiftPressed, int CapsLockOn);
// call this when backspace is pressed
void UnikeyBackspacePress();
// call this to restore to original key strokes
void UnikeyRestoreKeyStrokes();
//set extra options
void UnikeySetOptions(UnikeyOptions *pOpt);
void CreateDefaultUnikeyOptions(UnikeyOptions *pOpt);
void UnikeyGetOptions(UnikeyOptions *pOpt);
// set input method
// im: TELEX_INPUT, VNI_INPUT, VIQR_INPUT, VIQR_STAR_INPUT
void UnikeySetInputMethod(UkInputMethod im);
// set output format
// void UnikeySetOutputVIQR();
// void UnikeySetOutputUTF8();
int UnikeySetOutputCharset(int charset);
int UnikeyLoadMacroTable(const char *fileName);
int UnikeyLoadUserKeyMap(const char *fileName);
//call this to enable typing vietnamese even in a non-vn sequence
//e.g: GD&DDT,QDDND...
//The engine will return to normal mode when a word-break occurs.
void UnikeySetSingleMode();
bool UnikeyAtWordBeginning();
#if defined(__cplusplus)
}
#endif
#endif