236 lines
7.5 KiB
C++
236 lines
7.5 KiB
C++
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved
|
|
|
|
#pragma once
|
|
#include "Globals.h"
|
|
#include "Private.h"
|
|
#include "SampleIME.h"
|
|
|
|
class CKeyStateCategory;
|
|
|
|
class CKeyStateCategoryFactory
|
|
{
|
|
public:
|
|
static CKeyStateCategoryFactory* Instance();
|
|
CKeyStateCategory* MakeKeyStateCategory(KEYSTROKE_CATEGORY keyCategory, _In_ CSampleIME *pTextService);
|
|
void Release();
|
|
|
|
protected:
|
|
CKeyStateCategoryFactory();
|
|
|
|
private:
|
|
static CKeyStateCategoryFactory* _instance;
|
|
|
|
};
|
|
|
|
typedef struct KeyHandlerEditSessionDTO
|
|
{
|
|
KeyHandlerEditSessionDTO::KeyHandlerEditSessionDTO(TfEditCookie tFEC, _In_ ITfContext *pTfContext, UINT virualCode, WCHAR inputChar, KEYSTROKE_FUNCTION arrowKeyFunction)
|
|
{
|
|
ec = tFEC;
|
|
pContext = pTfContext;
|
|
code = virualCode;
|
|
wch = inputChar;
|
|
arrowKey = arrowKeyFunction;
|
|
}
|
|
|
|
TfEditCookie ec;
|
|
ITfContext* pContext;
|
|
UINT code;
|
|
WCHAR wch;
|
|
KEYSTROKE_FUNCTION arrowKey;
|
|
}KeyHandlerEditSessionDTO;
|
|
|
|
class CKeyStateCategory
|
|
{
|
|
public:
|
|
CKeyStateCategory(_In_ CSampleIME *pTextService);
|
|
|
|
protected:
|
|
~CKeyStateCategory(void);
|
|
|
|
public:
|
|
HRESULT KeyStateHandler(KEYSTROKE_FUNCTION function, KeyHandlerEditSessionDTO dto);
|
|
void Release(void);
|
|
|
|
protected:
|
|
// HandleKeyInput
|
|
virtual HRESULT HandleKeyInput(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyFinalizeTextStoreAndInput
|
|
virtual HRESULT HandleKeyFinalizeTextStoreAndInput(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyFinalizeTextStore
|
|
virtual HRESULT HandleKeyFinalizeTextStore(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyFinalizeCandidatelistAndInput
|
|
virtual HRESULT HandleKeyFinalizeCandidatelistAndInput(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyFinalizeCandidatelist
|
|
virtual HRESULT HandleKeyFinalizeCandidatelist(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyConvert
|
|
virtual HRESULT HandleKeyConvert(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyConvertWild
|
|
virtual HRESULT HandleKeyConvertWildCard(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyCancel
|
|
virtual HRESULT HandleKeyCancel(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyBackspace
|
|
virtual HRESULT HandleKeyBackspace(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyArrow
|
|
virtual HRESULT HandleKeyArrow(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyDoubleSingleByte
|
|
virtual HRESULT HandleKeyDoubleSingleByte(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyPunctuation
|
|
virtual HRESULT HandleKeyPunctuation(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeySelectByNumber
|
|
virtual HRESULT HandleKeySelectByNumber(KeyHandlerEditSessionDTO dto);
|
|
|
|
protected:
|
|
CSampleIME* _pTextService;
|
|
};
|
|
|
|
class CKeyStateComposing : public CKeyStateCategory
|
|
{
|
|
public:
|
|
CKeyStateComposing(_In_ CSampleIME *pTextService);
|
|
|
|
protected:
|
|
// _HandleCompositionInput
|
|
HRESULT HandleKeyInput(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyCompositionFinalizeTextStoreAndInput
|
|
HRESULT HandleKeyFinalizeTextStoreAndInput(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyFinalizeTextStore
|
|
HRESULT HandleKeyFinalizeTextStore(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyCompositionFinalizeCandidatelistAndInput
|
|
HRESULT HandleKeyFinalizeCandidatelistAndInput(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyCompositionFinalizeCandidatelist
|
|
HRESULT HandleKeyFinalizeCandidatelist(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleCompositionConvert
|
|
HRESULT HandleKeyConvert(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyCompositionConvertWildCard
|
|
HRESULT HandleKeyConvertWildCard(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleCancel
|
|
HRESULT HandleKeyCancel(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleCompositionBackspace
|
|
HRESULT HandleKeyBackspace(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleArrowKey
|
|
HRESULT HandleKeyArrow(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyDoubleSingleByte
|
|
HRESULT HandleKeyDoubleSingleByte(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyCompositionPunctuation
|
|
HRESULT HandleKeyPunctuation(KeyHandlerEditSessionDTO dto);
|
|
};
|
|
|
|
class CKeyStateCandidate : public CKeyStateCategory
|
|
{
|
|
public:
|
|
CKeyStateCandidate(_In_ CSampleIME *pTextService);
|
|
|
|
protected:
|
|
// HandleKeyFinalizeCandidatelist
|
|
HRESULT HandleKeyFinalizeCandidatelist(KeyHandlerEditSessionDTO dto);
|
|
|
|
// HandleKeyFinalizeCandidatelistAndInput
|
|
HRESULT HandleKeyFinalizeCandidatelistAndInput(KeyHandlerEditSessionDTO dto);
|
|
|
|
//_HandleCandidateConvert
|
|
HRESULT HandleKeyConvert(KeyHandlerEditSessionDTO dto);
|
|
|
|
//_HandleCancel
|
|
HRESULT HandleKeyCancel(KeyHandlerEditSessionDTO dto);
|
|
|
|
//_HandleCandidateArrowKey
|
|
HRESULT HandleKeyArrow(KeyHandlerEditSessionDTO dto);
|
|
|
|
//_HandleCandidateSelectByNumber
|
|
HRESULT HandleKeySelectByNumber(KeyHandlerEditSessionDTO dto);
|
|
};
|
|
|
|
class CKeyStatePhrase : public CKeyStateCategory
|
|
{
|
|
public:
|
|
CKeyStatePhrase(_In_ CSampleIME *pTextService);
|
|
|
|
protected:
|
|
//_HandleCancel
|
|
HRESULT HandleKeyFinalizeCandidatelist(KeyHandlerEditSessionDTO dto);
|
|
|
|
//_HandleCancel
|
|
HRESULT HandleKeyCancel(KeyHandlerEditSessionDTO dto);
|
|
|
|
//_HandlePhraseArrowKey
|
|
HRESULT HandleKeyArrow(KeyHandlerEditSessionDTO dto);
|
|
|
|
//_HandlePhraseSelectByNumber
|
|
HRESULT HandleKeySelectByNumber(KeyHandlerEditSessionDTO dto);
|
|
};
|
|
|
|
//degeneration class
|
|
class CKeyStateNull : public CKeyStateCategory
|
|
{
|
|
public:
|
|
CKeyStateNull(_In_ CSampleIME *pTextService) : CKeyStateCategory(pTextService) {};
|
|
|
|
protected:
|
|
// _HandleNullInput
|
|
HRESULT HandleKeyInput(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyInput(dto); };
|
|
|
|
// HandleKeyNullFinalizeTextStoreAndInput
|
|
HRESULT HandleKeyFinalizeTextStoreAndInput(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyFinalizeTextStoreAndInput(dto); };
|
|
|
|
// HandleKeyFinalizeTextStore
|
|
HRESULT HandleKeyFinalizeTextStore(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyFinalizeTextStore(dto); };
|
|
|
|
// HandleKeyNullFinalizeCandidatelistAndInput
|
|
HRESULT HandleKeyFinalizeCandidatelistAndInput(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyFinalizeCandidatelistAndInput(dto); };
|
|
|
|
// HandleKeyNullFinalizeCandidatelist
|
|
HRESULT HandleKeyFinalizeCandidatelist(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyFinalizeCandidatelist(dto); };
|
|
|
|
//_HandleNullConvert
|
|
HRESULT HandleKeyConvert(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyConvert(dto); };
|
|
|
|
//_HandleNullCancel
|
|
HRESULT HandleKeyCancel(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyCancel(dto); };
|
|
|
|
// HandleKeyNullConvertWild
|
|
HRESULT HandleKeyConvertWildCard(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyConvertWildCard(dto); };
|
|
|
|
//_HandleNullBackspace
|
|
HRESULT HandleKeyBackspace(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyBackspace(dto); };
|
|
|
|
//_HandleNullArrowKey
|
|
HRESULT HandleKeyArrow(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyArrow(dto); };
|
|
|
|
// HandleKeyDoubleSingleByte
|
|
HRESULT HandleKeyDoubleSingleByte(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyDoubleSingleByte(dto); };
|
|
|
|
// HandleKeyPunctuation
|
|
HRESULT HandleKeyPunctuation(KeyHandlerEditSessionDTO dto) { return __super::HandleKeyPunctuation(dto); };
|
|
|
|
//_HandleNullCandidateSelectByNumber
|
|
HRESULT HandleKeySelectByNumber(KeyHandlerEditSessionDTO dto) { return __super::HandleKeySelectByNumber(dto); };
|
|
}; |