williamr@2: /* williamr@2: * Copyright (c) 2003-2006 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Global PtiEngine definitions williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: #ifndef _PTI_DEFS_H williamr@2: #define _PTI_DEFS_H williamr@2: williamr@2: #include williamr@2: williamr@2: #ifdef RD_HINDI_PHONETIC_INPUT williamr@2: /* Indic Phonetic input */ williamr@2: williamr@2: /* williamr@2: * Defines the state of the syllable. This is used by FEP for either committing williamr@2: * the inline text or updating the inline text. williamr@2: */ williamr@2: williamr@2: enum TSyllableState williamr@2: { williamr@2: EIndicSyllableStateFirst, williamr@2: EIndicSyllableStateInsideSyllable, williamr@2: EIndicSyllableStateSyllableBroken, williamr@2: EIndicSyllableStateLast williamr@2: }; williamr@2: williamr@2: williamr@2: /* williamr@2: * This is a structure that abstracts the phonetic argument and the response williamr@2: * from the Indic phonetic core in a structure. williamr@2: */ williamr@2: williamr@2: typedef struct williamr@2: { williamr@2: TChar iChar; williamr@2: TDes *iDest; williamr@2: TSyllableState iState; williamr@2: }TPhoneticArg; williamr@2: williamr@2: #endif williamr@2: const TInt KMaxLanguageNameLength = 50; williamr@2: const TInt KMaxAutoSubstStringLength = 32; williamr@2: williamr@2: const TInt KErrPtiEngineBase = (-1000); //based on the value of leave in PtiEngine williamr@2: williamr@2: williamr@2: enum TPtiError williamr@2: { williamr@2: KErrNoActiveLanguage = KErrPtiEngineBase-1, williamr@2: KErrLanguageNotFound = KErrPtiEngineBase-2, williamr@2: KErrNoSuitableCore = KErrPtiEngineBase-3, williamr@2: KErrNotAllowed = KErrPtiEngineBase-4, williamr@2: KErrTooLongWord = KErrPtiEngineBase-5, williamr@2: KErrInvalidWord = KErrPtiEngineBase-6, williamr@2: KErrTooLongReading = KErrPtiEngineBase-7, williamr@2: KErrInvalidReading = KErrPtiEngineBase-8, williamr@2: KErrUserDic = KErrPtiEngineBase-9, williamr@2: KErrInternalCoreError = KErrPtiEngineBase-10, williamr@2: KErrLengthMismatch = KErrPtiEngineBase-11 williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * Enumerations for all the possible input modes supported by PtiEngine. williamr@2: * The modes actually available in the device depend on core object, resource williamr@2: * and keyboard configuration. williamr@2: * Here are short descriptions: williamr@2: * williamr@2: * EPtiEngineMultitapping williamr@2: * Traditional text input method for latin-like languages, where williamr@2: * a list of characters is associated to each keypad keys williamr@2: * and user cycles through associated characters by consecutive key presses. williamr@2: * williamr@2: * EPtiEnginePredictive williamr@2: * Predictive text input mode, where user presses only one key press per williamr@2: * character and the prediction engine provides a list of candidate words williamr@2: * associated top that key sequence. williamr@2: * williamr@2: * EPtiEngineWordCompletion williamr@2: * This is same as EPtiEnginePredictive, except that prediction engine williamr@2: * will include also complete words containing more characters than williamr@2: * the number of key presses in current key sequence. williamr@2: * williamr@2: * EPtiEngineNumeric williamr@2: * This is numeric input mode. All the languages suppor it, since it uses williamr@2: * static keymappings built directly into PtiEngine. It works in same way williamr@2: * as EPtiEngineMultitapping, except that keymapping data contains williamr@2: * only number mode characters. williamr@2: * williamr@2: * EPtiEngineQwerty williamr@2: * Standard qwerty-keyboard input mode for latin-like languages. williamr@2: * williamr@2: * EPtiEnginePinyin williamr@2: * Chinese PinYin input mode for ITU-T keypad. williamr@2: * williamr@2: * EPtiEngineStroke williamr@2: * Chinese Strokes input mode for ITU-T keypad. williamr@2: * williamr@2: * EPtiEngineStroke williamr@2: * Chinese ZhuYin input mode for ITU-T keypad. williamr@2: * williamr@2: * EPtiEngineHirakanaKanji williamr@2: * Japanese Hiragana/Kanji input mode. williamr@2: * williamr@2: * EPtiEngineHirakanaKanjiPredictive williamr@2: * Predictive Japanese Hiragana/Kanji input mode. williamr@2: * williamr@2: * EPtiEngineKatakana williamr@2: * Japanese Katakana input mode. williamr@2: * williamr@2: * EPtiEngineFullWitdthKatakana williamr@2: * Japanese full width Katakana input mode. williamr@2: * williamr@2: * EPtiEngineFullWitdthKatakana williamr@2: * Japanese full width numeric input mode. williamr@2: * williamr@2: * EPtiEngineFullWitdthAlphabet williamr@2: * Japanese full width alphabet input mode. williamr@2: * williamr@2: * EPtiEngineHiragana williamr@2: * Japanese Hiragana input mode. williamr@2: * williamr@2: * EPtiEnginePinyinByPhrase williamr@2: * Chinese Pinyin phrase input. This is same as EPtiEnginePinyin, execpt that williamr@2: * input string may contain pinyin words for several chinese characters. williamr@2: * williamr@2: * EPtiEngineZhuyinByPhrase williamr@2: * Chinese Zinyin phrase input. This is same as EPtiEngineZhuyin, execpt that williamr@2: * input string may contain zhuyin sequences for several chinese characters. williamr@2: * williamr@2: * EPtiEngineZhuyinQwerty williamr@2: * Chinese Zhuyin input for qwerty keyboard. williamr@2: * williamr@2: * EPtiEngineZhuyinPhraseQwerty williamr@2: * Chinese Zinyin phrase input for qwerty keyboard. This is same as EPtiEngineZhuyinQwerty, williamr@2: * execpt that input string may contain zhuyin sequences for several chinese characters. williamr@2: * williamr@2: * EPtiEnginePinyinQwerty williamr@2: * Chinese Pinyin input for qwerty keyboard. williamr@2: * williamr@2: * PtiEnginePinyinPhraseQwerty williamr@2: * Same as EPtiEnginePinyinByPhrase but for qwerty keyboard williamr@2: * williamr@2: * EPtiEngineStrokeQwerty williamr@2: * Same as EPtiEngineStroke but for qwerty keyboard williamr@2: * williamr@2: * EPtiEngineNormalCangjieQwerty williamr@2: * Normal Chinese CangJie input for qwerty keyboard williamr@2: * (CangJie is available only for qwerty). williamr@2: * williamr@2: * EPtiEngineEasyCangjieQwerty williamr@2: * Easy Chinese CangJie input for qwerty keyboard williamr@2: * (CangJie is available only for qwerty). williamr@2: * williamr@2: * EPtiEngineAdvCangjieQwerty williamr@2: * Advanced Chinese CangJie input for qwerty keyboard williamr@2: * (CangJie is available only for qwerty). williamr@2: * williamr@2: * EPtiEngineHiraganaKanjiQwerty williamr@2: * Japanese Hiragana/Kanji input for qwerty keyboard. williamr@2: * williamr@2: * EPtiEngineHiraganaKanjiPredictiveQwerty williamr@2: * Japanese predictive Hiragana/Kanji input for qwerty keyboard williamr@2: * williamr@2: * EPtiEngineKatakanaQwerty williamr@2: * Japanese Half-width Katakana input for qwerty keyboard. williamr@2: * williamr@2: * EPtiEngineFullWidthKatakanaQwerty williamr@2: * Japanese Full-width Katakana input for qwerty keyboard. williamr@2: * williamr@2: * EPtiEngineFullWidthNumericQwerty williamr@2: * Japanese Full-width Alphabet input for qwerty keyboard. williamr@2: * williamr@2: * EPtiEngineFullWidthAlphabetQwerty williamr@2: * Japanese Full-width Alphabet input for qwerty keyboard. williamr@2: * williamr@2: * EPtiEngineHiraganaQwerty williamr@2: * Japanese Hiragana input for qwerty keyboard. williamr@2: * williamr@2: * EPtiEngineStrokeByPhrase, // Stroke phrase input. williamr@2: * Chinese Stroke input for ITU-T keypad. Phrasal version. williamr@2: * williamr@2: * EPtiEngineStrokePhraseQwerty williamr@2: * Chinese Stroke input for qwerty keyboard. Phrasal version. williamr@2: * williamr@2: * EPtiEngineQwertyPredictive, // "Sloppy type" input for qwerty keyboard. williamr@2: * Intelligent qwerty input. Used for word completion and spell williamr@2: * correction features for qwerty keyboard. williamr@2: * williamr@2: * EPtiEngineHalfQwerty williamr@2: * Basic multitaping style text input for half-qwerty keyboard. The functionality williamr@2: * of half-qwerty keyboard is same as conventional itu-t phone keypad, except that williamr@2: * each key is associated with two basic characters (instead of three or four williamr@2: * as in itu-t keypad). Character mapping is also organized to follow qwerty williamr@2: * layout (instead of alphabetical order as in itu-t keypad). williamr@2: * williamr@2: * EPtiEngineHalfQwertyPredictive, williamr@2: * Predictive text input for half-qwerty keyboard. The functionality williamr@2: * of half-qwerty keyboard is same as conventional itu-t phone keypad, except that williamr@2: * each key is associated with two basic characters(instead of three or four williamr@2: * as in itu-t keypad). . Character mapping is also organized to follow qwerty williamr@2: * layout (instead of alphabetical order as in itu-t keypad). This input mode williamr@2: * is essentially same as EPtiEngineWordCompletion but uses half-qwerty keyboard. williamr@2: * williamr@2: * EPtiEngineInputModeIndicPhoneticMultitap williamr@2: * Hindi phonetic input for itu-t keypad. williamr@2: * williamr@2: * EPtiEngineInputModeIndicPhoneticQwerty williamr@2: * Hindi phonetic input for qwerty keyboard. williamr@2: * williamr@2: * EPtiEngineInputModeZhuyinMiniQwertyFind williamr@2: * Zhuyin multitap input method for mini qwerty symbol find. williamr@2: * williamr@2: */ williamr@2: enum TPtiEngineInputMode williamr@2: { williamr@2: EPtiEngineInputModeNone = 0, williamr@2: EPtiEngineMultitapping, // Basic multitapping input for latin languages. williamr@2: EPtiEnginePredictive, // Predictive input for latin languages. williamr@2: EPtiEngineWordCompletion, // Predictive input with word completion for latin languages. williamr@2: EPtiEngineNumeric, // Latin numeric input mode. williamr@2: EPtiEngineQwerty, // Basic qwerty input mode. williamr@2: EPtiEnginePinyin, // Chinese pinyin mode. williamr@2: EPtiEngineStroke, // Chinese stroke mode. williamr@2: EPtiEngineZhuyin, // Chinese zhuyin mode. williamr@2: EPtiEngineHiraganaKanji, // Hiragana/Kanji mode. williamr@2: EPtiEngineHiraganaKanjiPredictive, // Predictive Hiragana/Kanji mode. williamr@2: EPtiEngineKatakana, // Half-width Katakana mode. williamr@2: EPtiEngineFullWidthKatakana, // Full-width Katakana mode. williamr@2: EPtiEngineFullWidthNumeric, // Full-width Alphabet mode (for Japanese input). williamr@2: EPtiEngineFullWidthAlphabet, // Full-width Alphabet mode (for Japanese input). williamr@2: EPtiEngineHiragana, // Hiragana only mode. williamr@2: EPtiEnginePinyinByPhrase, // Pinyin phrase input. williamr@2: EPtiEngineZhuyinByPhrase, // Zhuyin phrase input. williamr@2: EPtiEngineZhuyinQwerty, // Zhuyin qwerty input. williamr@2: EPtiEngineZhuyinPhraseQwerty, // Zhuyin phrase qwerty input. williamr@2: EPtiEnginePinyinQwerty, // Pinyin qwerty input. williamr@2: EPtiEnginePinyinPhraseQwerty, // Pinyin phrase qwerty input. williamr@2: EPtiEngineStrokeQwerty, // Stroke qwerty input. williamr@2: EPtiEngineNormalCangjieQwerty, // Normal Cangjie qwerty input williamr@2: EPtiEngineEasyCangjieQwerty, // Easy Cangjie qwerty input williamr@2: EPtiEngineAdvCangjieQwerty, // Advanced Cangjie qwerty input williamr@2: EPtiEngineHiraganaKanjiQwerty, // Hiragana/Kanji qwerty input mode. williamr@2: EPtiEngineHiraganaKanjiPredictiveQwerty, // Predictive Hiragana/Kanji qwerty input mode. williamr@2: EPtiEngineKatakanaQwerty, // Half-width Katakana qwerty input mode. williamr@2: EPtiEngineFullWidthKatakanaQwerty, // Full-width Katakana qwerty input mode. williamr@2: EPtiEngineFullWidthNumericQwerty, // Full-width Alphabet qwerty input mode (for Japanese input). williamr@2: EPtiEngineFullWidthAlphabetQwerty, // Full-width Alphabet qwerty input mode (for Japanese input). williamr@2: EPtiEngineHiraganaQwerty, // Hiragana only qwerty input mode. williamr@2: EPtiEnginePinyinVkb, // Chinese pinyin mode. williamr@2: EPtiEngineStrokeVkb, // Chinese stroke mode. williamr@2: EPtiEngineZhuyinVkb, // Chinese zhuyin mode. williamr@2: EPtiEngineStrokeByPhrase, // Stroke phrase input. williamr@2: EPtiEngineStrokePhraseQwerty, // Stroke phrase qwerty input. williamr@2: EPtiEngineHiraganaKanjiVkb, // Hiragana/Kanji mode for VKB. williamr@2: EPtiEngineHiraganaKanjiPredictiveVkb, // Predictive Hiragana/Kanji mode for VKB. williamr@2: EPtiEngineHiraganaKanjiHwr, // Hiragana/Kanji mode for HWR. williamr@2: EPtiEngineHiraganaKanjiPredictiveHwr, // Predictive Hiragana/Kanji mode for HWR. williamr@2: EPtiEngineKatakanaVkb, // Half-width Katakana mode for VKB. williamr@2: EPtiEngineFullWidthKatakanaVkb, // Full-width Katakana mode for VKB. williamr@2: EPtiEngineHiraganaVkb, // Hiragana only qwerty input mode for VKB. williamr@2: EPtiEngineNormalCangjieVkb, williamr@2: EPtiEngineEasyCangjieVkb, williamr@2: EPtiEngineAdvCangjieVkb, williamr@2: EPtiEngineInputModeIndicPhoneticMultitap, williamr@2: EPtiEngineInputModeIndicPhoneticQwerty, williamr@2: EPtiEngineHiraganaKanjiVkbRomaji, // Hiragana/Kanji mode for VKB/FSQ Romaji input. williamr@2: EPtiEngineHiraganaKanjiPredictiveVkbRomaji, // Predictive Hiragana/Kanji mode for VKB/FSQ Romaji input. williamr@2: EPtiEngineQwertyPredictive, // "Sloppy type" input for qwerty keyboard. williamr@2: EPtiEngineHalfQwerty, williamr@2: EPtiEngineHalfQwertyPredictive, williamr@2: EPtiEngineInputModeQwertyPredictive , williamr@2: EPtiEngineInputModeZhuyinMiniQwertyFind, williamr@2: EPtiEnginePinyinPhraseHalfQwerty, williamr@2: EPtiEngineStrokePhraseHalfQwerty, williamr@2: EPtiEngineZhuyinPhraseHalfQwerty, williamr@2: EPtiEngineMultitappingKorean, // Basic multitapping input for korean language. williamr@2: EPtiEngineMaxInputModes = EPtiEngineMultitappingKorean williamr@2: }; williamr@2: williamr@2: williamr@2: /* williamr@2: * Predictive qwerty error correction levels. williamr@2: */ williamr@2: enum TPtiErrorCorrectionLevel williamr@2: { williamr@2: EPtiErrorCorrectionLevelOff = 0, williamr@2: EPtiErrorCorrectionLevelLow = 1, williamr@2: EPtiErrorCorrectionLevelHigh = 2 williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * Key enumerations for conventional (ITU-T) and qwerty keyboards. williamr@2: * Constant names for qwerty keypad keys are named after scan code williamr@2: * values of a device using English language keymappings. The williamr@2: * actual character that will be inserted into editor buffer depends on williamr@2: * keymappings of currently selected input language and may be something else williamr@2: * than what enum name suggests. For example williamr@2: * non-shifted EPtiKeyQwertyHash produces '#'-character if input language is williamr@2: * English, but will produce '+'-character if williamr@2: * input language is Danish, Norwegian, Swedish or Finnish. williamr@2: * The key coordinates on standard 4x12 qwerty keypad are given in williamr@2: * comments. williamr@2: */ williamr@2: enum TPtiKey williamr@2: { williamr@2: EPtiKeyNone = 0, williamr@2: williamr@2: EPtiKey1 = '1', williamr@2: EPtiKey2 = '2', williamr@2: EPtiKey3 = '3', williamr@2: EPtiKey4 = '4', williamr@2: EPtiKey5 = '5', williamr@2: EPtiKey6 = '6', williamr@2: EPtiKey7 = '7', williamr@2: EPtiKey8 = '8', williamr@2: EPtiKey9 = '9', williamr@2: EPtiKeyStar = '*', williamr@2: EPtiKey0 = '0', williamr@2: EPtiKeyHash = '#', williamr@2: williamr@2: // alternate names williamr@2: EPtiKeyPunct = EPtiKey1, williamr@2: EPtiKeyABC = EPtiKey2, williamr@2: EPtiKeyDEF = EPtiKey3, williamr@2: EPtiKeyGHI = EPtiKey4, williamr@2: EPtiKeyJKL = EPtiKey5, williamr@2: EPtiKeyMNO = EPtiKey6, williamr@2: EPtiKeyPQRS = EPtiKey7, williamr@2: EPtiKeyTUV = EPtiKey8, williamr@2: EPtiKeyWXYZ = EPtiKey9, williamr@2: williamr@2: // qwerty keys williamr@2: EPtiKeyQwerty1 = 0x31, williamr@2: EPtiKeyQwerty2 = 0x32, williamr@2: EPtiKeyQwerty3 = 0x33, williamr@2: EPtiKeyQwerty4 = 0x34, williamr@2: EPtiKeyQwerty5 = 0x35, williamr@2: EPtiKeyQwerty6 = 0x36, williamr@2: EPtiKeyQwerty7 = 0x37, williamr@2: EPtiKeyQwerty8 = 0x38, williamr@2: EPtiKeyQwerty9 = 0x39, williamr@2: EPtiKeyQwerty0 = 0x30, williamr@2: williamr@2: EPtiKeyQwertyPlus = 0x2b, williamr@2: EPtiKeyQwertyMinus = EStdKeyMinus, williamr@2: EPtiKeyQwertyComma = EStdKeyComma, williamr@2: EPtiKeyQwertySemicolon = EStdKeySemiColon, williamr@2: EPtiKeyQwertyFullstop = EStdKeyFullStop, williamr@2: EPtiKeyQwertyHash = EStdKeyHash, williamr@2: EPtiKeyQwertySlash = EStdKeyForwardSlash, williamr@2: EPtiKeyQwertyApostrophe = EStdKeySingleQuote, williamr@2: EPtiKeyQwertySpace = EStdKeySpace, williamr@2: EPtiKeyQwertyAtCharacter = EStdKeySquareBracketRight, williamr@2: EPtiKeyQwertyLeftShift = EStdKeyLeftShift, // Needed only for special cases. williamr@2: williamr@2: EPtiKeyQwertyA = 0x41, williamr@2: EPtiKeyQwertyB = 0x42, williamr@2: EPtiKeyQwertyC = 0x43, williamr@2: EPtiKeyQwertyD = 0x44, williamr@2: EPtiKeyQwertyE = 0x45, williamr@2: EPtiKeyQwertyF = 0x46, williamr@2: EPtiKeyQwertyG = 0x47, williamr@2: EPtiKeyQwertyH = 0x48, williamr@2: EPtiKeyQwertyI = 0x49, williamr@2: EPtiKeyQwertyJ = 0x4a, williamr@2: EPtiKeyQwertyK = 0x4b, williamr@2: EPtiKeyQwertyL = 0x4c, williamr@2: EPtiKeyQwertyM = 0x4d, williamr@2: EPtiKeyQwertyN = 0x4e, williamr@2: EPtiKeyQwertyO = 0x4f, williamr@2: EPtiKeyQwertyP = 0x50, williamr@2: EPtiKeyQwertyQ = 0x51, williamr@2: EPtiKeyQwertyR = 0x52, williamr@2: EPtiKeyQwertyS = 0x53, williamr@2: EPtiKeyQwertyT = 0x54, williamr@2: EPtiKeyQwertyU = 0x55, williamr@2: EPtiKeyQwertyV = 0x56, williamr@2: EPtiKeyQwertyW = 0x57, williamr@2: EPtiKeyQwertyX = 0x58, williamr@2: EPtiKeyQwertyY = 0x59, williamr@2: EPtiKeyQwertyZ = 0x5a williamr@2: williamr@2: // ----> Half Qwerty williamr@2: , EPtiKeyQwertyChr = EStdKeyLeftFunc // key (4, 4) williamr@2: // Half Qwerty <---- williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: * Enumerations for PtiCore capabilities. These can be queries through williamr@2: * MPtiCoreInfo::CapsBits(). williamr@2: * Here are descriptions: williamr@2: * williamr@2: * EWordCompletion williamr@2: * The core object supports word completion -feature. williamr@2: * williamr@2: * EReordering williamr@2: * The core object supports user dictionary reordering. This feature means that williamr@2: * most commonly used words are moved up in prediction candidate williamr@2: * list. williamr@2: * williamr@2: * ENextWordPrediction williamr@2: * The core supports next word prediction feature. When this feature is williamr@2: * enabled, prediction engine tries to guess next word based on previous word(s). williamr@2: * williamr@2: * ESupportUserDictionaries williamr@2: * The core supports supports user dictionaries. williamr@2: * williamr@2: * ESupportSCTToneMarks williamr@2: * williamr@2: * ESupportCangjieInput williamr@2: * The core object supports Chinese CangJie input. williamr@2: * williamr@2: * ESupportDualLanguage williamr@2: * The core object supports dual language preditcion. williamr@2: * williamr@2: * ESupportAutoSubstitution williamr@2: * The core object supports auto-substitution feature. This feature williamr@2: * automatically expands predefined string to longer string. williamr@2: * ie. "l8r" -> "later" williamr@2: */ williamr@2: enum TPtiEngineCapsBits williamr@2: { williamr@2: EWordCompletion = 0x01, williamr@2: EReordering = 0x02, williamr@2: ENextWordPrediction = 0x04, williamr@2: ESupportUserDictionaries = 0x08, williamr@2: ESupportSCTToneMarks = 0x10, williamr@2: ESupportCangjieInput = 0x20, williamr@2: EPreferedSpelling = 0x40, williamr@2: ESupportDualLanguage = 0x80, williamr@2: ESupportAutoSubstitution = 0x100 williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * Text case defintions. williamr@2: */ williamr@2: enum TPtiTextCase williamr@2: { williamr@2: EPtiCaseLower = 0, // Normal lower case input williamr@2: EPtiCaseUpper, // Normal upper case input. williamr@2: EPtiCaseChrLower, // Qwerty chr-key lower case input. williamr@2: EPtiCaseChrUpper, // Qwerty chr-key upper case input. williamr@2: EPtiCaseFnLower, // Qwerty fn-key lower case input. williamr@2: EPtiCaseFnUpper, // Qwerty fn-key upper case input. williamr@2: EPtiCaseMax williamr@2: }; williamr@2: williamr@2: williamr@2: enum TPtiCharConversion williamr@2: { williamr@2: EPtiSimplifiedToComplex = 0x01, // Chinese simplified to Chinese complex williamr@2: EPtiUcs2ToUtf8 = 0x02, // Unicode to utf8 williamr@2: EPtiUcs2ToBig5 = 0x04, // Unicode to big5 williamr@2: EPtiUcs2ToGB = 0x08, // Unicode to Guo-Biao williamr@2: EPtiUtf8ToUcs2 = 0x10, // Utf8 to Unicode williamr@2: EPtiKo2ToWc = 0x20, // KSC5601 to Hangul Syllable williamr@2: EPtiWcToKo2 = 0x30, // Hangul Syllable to KSC5601 williamr@2: EPtiBig5ToUcs2 = 0x40, // Big5 to Unicode williamr@2: EPtiComplexToSimplified = 0x80 // Chinese complex to Chinese simplified williamr@2: }; williamr@2: williamr@2: /** williamr@2: * Enumerates supported spelling types for CPtiEngine::GetSpelling method. williamr@2: */ williamr@2: enum TPtiSpelling williamr@2: { williamr@2: EPtiStrokes = 0x01, williamr@2: EPtiPinyin = 0x02, williamr@2: EPtiBopomofo = 0x04, williamr@2: EPtiZhuyin = 0x08, williamr@2: EPtiCangJie = 0x10, williamr@2: EPtiEasyCangjie = 0x20, williamr@2: EPtiAdvCangjie = 0x40 williamr@2: }; williamr@2: williamr@2: /** williamr@2: * Enumerates different Chinese variants. williamr@2: */ williamr@2: enum TPtiChineseVariant williamr@2: { williamr@2: EPtiChineseVariantPrc = 0, williamr@2: EPtiChineseVariantHk, williamr@2: EPtiChineseVariantTw williamr@2: }; williamr@2: williamr@2: /** williamr@2: * Command definitions for CPtiEngine::HandleCommandL api methods. Many of these williamr@2: * are for internal communication between PtiEngine framework and a specific williamr@2: * core object and there for not documented. williamr@2: */ williamr@2: enum TPtiEngineCommand williamr@2: { williamr@2: EPtiCommandNone, williamr@2: EPtiCommandUserActionLeft, williamr@2: EPtiCommandUserActionRight, williamr@2: EPtiCommandUserActionConvert, williamr@2: EPtiCommandUserActionPrevious, williamr@2: EPtiCommandUserActionLengthen, williamr@2: EPtiCommandUserActionShorten, williamr@2: EPtiCommandUserActionCancel, williamr@2: EPtiCommandUserActionComplete, williamr@2: EPtiCommandUserActionAllComplete, williamr@2: EPtiCommandUserActionGetCurrentIndexOfCandidates, williamr@2: EPtiCommandUserActionCompleteCandidate, williamr@2: EPtiCommandUserActionCompleteFull0, williamr@2: EPtiCommandUserActionCompleteFull1, williamr@2: EPtiCommandUserActionCompleteFull2, williamr@2: EPtiCommandUserActionCompleteFull3, williamr@2: EPtiCommandUserActionCompleteFull4, williamr@2: EPtiCommandUserActionCompleteFull5, williamr@2: EPtiCommandUserActionCompleteFull6, williamr@2: EPtiCommandUserActionCompleteFull7, williamr@2: EPtiCommandUserActionCompleteFull8, williamr@2: EPtiCommandUserActionCompleteFull9, williamr@2: EPtiCommandUserActionCompleteHalf0, williamr@2: EPtiCommandUserActionCompleteHalf1, williamr@2: EPtiCommandUserActionCompleteHalf2, williamr@2: EPtiCommandUserActionCompleteHalf3, williamr@2: EPtiCommandUserActionCompleteHalf4, williamr@2: EPtiCommandUserActionCompleteHalf5, williamr@2: EPtiCommandUserActionCompleteHalf6, williamr@2: EPtiCommandUserActionCompleteHalf7, williamr@2: EPtiCommandUserActionCompleteHalf8, williamr@2: EPtiCommandUserActionCompleteHalf9, williamr@2: EPtiCommandEnableToneMarks, williamr@2: EPtiCommandDisableToneMarks, williamr@2: EPtiCommandResetToneMark, williamr@2: EPtiCommandIncrementToneMark, williamr@2: EPtiCommandIncrementToneMarkOverrideInvalid, williamr@2: EPtiCommandReloadLearningInfo, williamr@2: EPtiCommandUserDictionaryDelaySaving, williamr@2: EPtiCommandUserDictionarySaveNow, williamr@2: EPtiCommandUserActionSetCurrentIndexOfCandidates, williamr@2: EPtiCommandUseLatinDefaultKeyMap, williamr@2: EPtiCommandUseLatinCaseUpperOnlyKeyMap, williamr@2: EPtiCommandUseLatinCaseLowerOnlyKeyMap, williamr@2: EPtiCommandResetLearningInfo, williamr@2: EPtiCommandPollQwertyDeadKeyRootFlag, // Indicates that dead key root char was added to buffer. williamr@2: EPtiCommandGetAndClearDeadKeyRootChar, williamr@2: EPtiCommandDeadKeyWaiting, williamr@2: EPtiCommandQueryAndClearGetAllFlag, williamr@2: EPtiCommandGetAndClearVowelSequence, williamr@2: EPtiCommandSetMultitapTimer, // Set multitap timer for japanese varint only williamr@2: EPtiCommandVowelSeqFlag, williamr@2: EPtiCommandClearVowelSeq, williamr@2: EPtiCommandSetJapaneseQwertyFlags, // Set Japanese Qwerty flags for japanese varint only williamr@2: EPtiCommandGetAndClearLastVietnameseChar, williamr@2: EPtiCommandSetVietnameseLastChar, williamr@2: EPtiCommandQueryReplacePrevious, williamr@2: EPtiCommandSetLastKeyForVietnamese, williamr@2: EPtiCommandResetVietnameseVowelSeqAndToneMark, williamr@2: EPtiCommandGetVietnameseLastKey, williamr@2: EPtiCommandDoubleWideEntry, williamr@2: EPtiCommandSetClearFunction, // Set the behavior of clear key for japanese varint only williamr@2: EPtiCommandUserActionRetroActiveCandidateHalf, williamr@2: EPtiCommandUserActionRetroActiveCandidateFull, williamr@2: EPtiCommandUserActionRetroActiveClear, williamr@2: EPtiCommandUserActionRetroActiveCommit, williamr@2: EPtiCommandAppendCharacter, // Append a character for Japanese varint only williamr@2: EPtiCommandBackSpaceByForce, // BackSpace by force for Japanese varint only williamr@2: EPtiCommandGetPhoneticText, williamr@2: EPtiCommandClearPhoneticBuffer, williamr@2: EPtiCommandBreakSyllable, williamr@2: EPtiCommandAllowPictographCandidate, // Allow the candidates with pictograph cahracter for Japanese variant only williamr@2: EPtiCommandLoopback, // Loop back input character (Loop back: c->b->a) williamr@2: EPtiCommandSetAutoSubstitution, williamr@2: EPtiCommandAddAutoSubstEntry, // TPtiAutoSubstBinding passed in aParams. williamr@2: EPtiCommandDeleteAutoSubstEntry, // TPtiAutoSubstBinding passed in aParams. williamr@2: EPtiCommandNumberOfAutoSubstEntries, williamr@2: EPtiCommandGetAutoSubstEntry, // TPtiAutoSubstBinding passed in aParams. williamr@2: EPtiCommandFindAutoSubstEntry, // TPtiAutoSubstBinding* passed in aParams. williamr@2: EPtiCommandUncommitWord, williamr@2: EPtiCommandEnableAutoCompletion, williamr@2: EPtiCommandDisableAutoCompletion, williamr@2: EPtiCommandSetCorrectionLevel, // TErrorCorrectionLevel* passed in aParams. williamr@2: EPtiCommandGetAutoCompletionTailLength, // TInt* passed in aParams for output. williamr@2: EPtiCommandLockCurrentCandidate, williamr@2: EPtiCommandSetProactiveCorrection, // TBool passed in aParams williamr@2: EPtiCommandIsExactKnownWord, williamr@2: EPtiCommandSetAutoCompletion, williamr@2: EPtiCommandSetNumberCandidateStatus, // williamr@2: EPtiCommandSetAutoCompletionMaxLength, // Param is integer. Sets maximum lenght of ato completed word. Zero == no limit. williamr@2: EPtiCommandMarkAutoCapitalized, // No parameters. williamr@2: EPtiCommandUserActionGetIndexOfSecondaryCandidate, // index of secondary candidate, TInt* passed in param williamr@2: EPtiCommandAddPhrase, // Add new phrase for next word prediction. const TDesC* passed in param. williamr@2: EPtiCommandSetSecondaryInputLanguage, williamr@2: EPtiCommandSetFlagToUpdateCandidates, williamr@2: EPtiCommandSetCursorCrossedMaxLength, // sets when cursor crosses max words length in editor williamr@2: EPtiCommandResetCursorCrossedMaxLength, williamr@2: EPtiCommandUserActionSetIndexOfActiveCandidate, williamr@2: EPtiCommandAddWordToUDBWithoutPunctMark williamr@2: }; williamr@2: williamr@2: /** williamr@2: * A convinience class for auto substitution related EPtiCommands. Needed williamr@2: * only in core object and framework code. williamr@2: */ williamr@2: class TPtiAutoSubstBinding williamr@2: { williamr@2: public: williamr@2: TInt iIndex; williamr@2: TBuf iShortcut; williamr@2: TBuf iSubstitution; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * A structure for binding language name and language code. williamr@2: * only in core object and framework code. williamr@2: */ williamr@2: class TPtiLangName williamr@2: { williamr@2: public: williamr@2: TInt iLanguageCode; williamr@2: TBuf iName; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * This is language code for 'numeric' language. williamr@2: * It is langugae object which is always available and williamr@2: * has only numeric input mode. williamr@2: */ williamr@2: #define ELangNumeric 0x5000 williamr@2: williamr@2: /** williamr@2: * An interface class for accessing core info attributes. williamr@2: */ williamr@2: class MPtiCoreInfo williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Returns a boolean value indicating whether the word completion williamr@2: * feature is supported by the core object in question williamr@2: * williamr@2: * @since S60 V2.6 williamr@2: * @return ETrue if core object supports word completion feature. williamr@2: * EFalse otherwise. williamr@2: */ williamr@2: virtual TBool WordCompletion() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns a boolean value indicating whether the user dictionary williamr@2: * re-ordering feature is supported by the core object in question. williamr@2: * williamr@2: * @since S60 V2.6 williamr@2: * @return ETrue if core object supports re-ordering feature. williamr@2: * EFalse otherwise. williamr@2: */ williamr@2: virtual TBool Reordering() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns maximum length of single word this core object is able to produce. williamr@2: * williamr@2: * @since S60 V2.6 williamr@2: * @return The maximum word length. williamr@2: */ williamr@2: virtual TInt MaximumWordLength() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns the maximum number of prediction candidates the core object williamr@2: * is able to produce for any input sequence. Doesn't apply for williamr@2: * Chinese and Japanese modes. williamr@2: * williamr@2: * @since S60 V2.6 williamr@2: * @return The maximum number of candidates. williamr@2: */ williamr@2: virtual TInt MaximumNumberOfCandidates() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns a boolean value indicating whether the next word prediction feature williamr@2: * supported by the core object in question. williamr@2: * williamr@2: * @since S60 V2.6 williamr@2: * @return ETrue if next wrod prediction is supported. williamr@2: * EFalse otherwise. williamr@2: */ williamr@2: virtual TBool NextWordPrediction() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns core object vendor specific id string. williamr@2: * williamr@2: * @since S60 V2.6 williamr@2: * @return Vendor specific id string. williamr@2: */ williamr@2: virtual TPtrC VendorString() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns a bit vector containing flags for various core object features. williamr@2: * See TPtiEngineCapsBits for list of specified bits. williamr@2: * williamr@2: * @since S60 V2.6 williamr@2: * @return A bit vector containing flags for various core object features. williamr@2: */ williamr@2: virtual TUint32 CapsBits() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns uid value for core object. williamr@2: * williamr@2: * @since S60 V2.6 williamr@2: * @return Core object uid as an integer value. williamr@2: */ williamr@2: virtual TInt32 Uid() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns a bitvector containing flags for available character conversion williamr@2: * methods. See TPtiCharConversion for list of specified bits. williamr@2: * williamr@2: * @since S60 V2.6 williamr@2: * @return A bit vector containing flags for available character conversions. williamr@2: */ williamr@2: virtual TUint32 CharConversions() const = 0; williamr@2: williamr@2: /** williamr@2: * Returns a bitvector containing flags for available spelling conversion williamr@2: * methods. See TPtiSpelling for list of specified bits. williamr@2: * williamr@2: * @since S60 V2.6 williamr@2: * @return A bit vector containing flags for available spelling conversions. williamr@2: */ williamr@2: virtual TUint32 Spellings() const = 0; williamr@2: }; williamr@2: williamr@2: williamr@2: class TPtiCoreInfo : public MPtiCoreInfo williamr@2: { williamr@2: public: williamr@2: inline TBool WordCompletion() const; williamr@2: inline TBool Reordering() const; williamr@2: inline TInt MaximumWordLength() const; williamr@2: inline TInt MaximumNumberOfCandidates() const; williamr@2: inline TBool NextWordPrediction() const; williamr@2: inline TPtrC VendorString() const; williamr@2: inline TInt32 Uid() const; williamr@2: inline TUint32 CharConversions() const; williamr@2: inline TUint32 Spellings() const; williamr@2: williamr@2: inline TUint32 CapsBits() const; williamr@2: inline void SetCapsBits(TUint32 aBits); williamr@2: inline void SetVendorString(const TDesC& aStr); williamr@2: inline void SetMaxWordLength(TInt aMaxLen); williamr@2: inline void SetUid(TInt32 aUid); williamr@2: inline void SetSpellings(TUint32 aSpellings); williamr@2: inline void SetMaxNumberOfCandidates(TInt aMax); williamr@2: inline void SetCharConversions(TUint32 aConvs); williamr@2: williamr@2: private: williamr@2: TUint32 iCapsBits; williamr@2: TPtrC iVendorIdStr; williamr@2: TInt iMaxWordLength; williamr@2: TInt iMaxNumberOfCandidates; williamr@2: TInt32 iUid; williamr@2: TUint32 iCharConversions; williamr@2: TUint32 iSpellings; williamr@2: }; williamr@2: williamr@2: williamr@2: #define KPtiEngineChineseSeparator 0x0027 williamr@2: williamr@2: // Tone marks for pinyin input williamr@2: enum williamr@2: { williamr@2: KPtiPinyinTone0 = 0x02C9, williamr@2: KPtiPinyinTone1 = 0x02CA, williamr@2: KPtiPinyinTone2 = 0x02C7, williamr@2: KPtiPinyinTone3 = 0x02CB, williamr@2: KPtiPinyinTone4 = 0x02D9 williamr@2: }; williamr@2: williamr@2: // Tone marks for zhuyin input williamr@2: enum williamr@2: { williamr@2: KPtiZhuyinTone0 = 0x0020, williamr@2: KPtiZhuyinTone1 = 0x02CA, williamr@2: KPtiZhuyinTone2 = 0x02C7, williamr@2: KPtiZhuyinTone3 = 0x02CB, williamr@2: KPtiZhuyinTone4 = 0x02D9 williamr@2: }; williamr@2: williamr@2: williamr@2: class TPtiNumericKeyBinding williamr@2: { williamr@2: public: williamr@2: TUint16 iChar; williamr@2: TPtiKey iKey; williamr@2: TPtiTextCase iCase; williamr@2: }; williamr@2: williamr@2: williamr@2: // type definition for HWR williamr@2: typedef struct TRecognitionRangeTag williamr@2: { williamr@2: TLanguage iLanguage; williamr@2: TUint iSubRange; williamr@2: } TRecognitionRange; williamr@2: williamr@2: williamr@2: enum TRecognitionSubRanges williamr@2: { williamr@2: EPtiRangePRCChinese, williamr@2: EPtiRangeHKChinese, williamr@2: EPtiRangeTWChinese, williamr@2: EPtiRangeLatin, williamr@2: EPtiRangeSymbol, williamr@2: EPtiRangeNumber, williamr@2: EPtiRangeNative, // native text of a language, EPtiRangeLatin also belong to it williamr@2: EPtiRangeHiraganaKanji, williamr@2: EPtiRangeKatakana, williamr@2: EPtiRangeFullWidthKatakana, williamr@2: EPtiRangeFullWidthEnglish, williamr@2: EPtiRangeFullWidthNumeric, williamr@2: EPtiRangeHiraganaOnly, williamr@2: EPtiRangeNativeNumber, williamr@2: EPtiRangeNone williamr@2: }; williamr@2: williamr@2: williamr@2: enum TLatinLetterOrder williamr@2: { williamr@2: EUpperFirst, williamr@2: ELowerFirst williamr@2: }; williamr@2: williamr@2: /* williamr@2: * List of supported keyboard types. Each of these keyboard types williamr@2: * may have own data block in keyboard data file. williamr@2: */ williamr@2: enum TPtiKeyboardType williamr@2: { williamr@2: EPtiKeyboardNone, williamr@2: williamr@2: /** williamr@2: * Conventional 12 phone keypad williamr@2: */ williamr@2: EPtiKeyboard12Key, williamr@2: williamr@2: /** williamr@2: * 4x12 Qwerty keyboard. williamr@2: */ williamr@2: EPtiKeyboardQwerty4x12, williamr@2: williamr@2: /** williamr@2: * 4x10 Qwerty keyboard. williamr@2: */ williamr@2: EPtiKeyboardQwerty4x10, williamr@2: williamr@2: /** williamr@2: * 3x11 Qwerty keyboard. williamr@2: */ williamr@2: EPtiKeyboardQwerty3x11, williamr@2: williamr@2: /** williamr@2: * Half qwerty. williamr@2: */ williamr@2: EPtiKeyboardHalfQwerty, williamr@2: williamr@2: /** williamr@2: * Custom qwerty keyboard. williamr@2: * Bound to [KEYBOARD BLOCK QWERTY CUSTOM] in keymapping williamr@2: * definition files. williamr@2: */ williamr@2: EPtiKeyboardCustomQwerty, williamr@2: williamr@2: EPtiKeyboardMaxLayout williamr@2: }; williamr@2: williamr@2: #include "PtiDefs.inl" williamr@2: williamr@2: #endif // _PTI_DEFS_H williamr@2: williamr@2: // End od file