---
title: "4.12. InputMethod"
---

InputMethod Automata 관련 함수들이다. 각 단말기 환경에 따라 작성된 오토마타 에서 현재 입력 키 값에 따라 문자(열)를 처리하여 InputMethod 에 넘겨주게 된다. `InputMethod` 에 전달되는 문자(열)를 현재 조합중인 문자(열)과 조합이 끝나서 완 성된 문자(열)이 존재할 경우 완성된 문자(열)을 넘겨주게 된다.

InputMethod 와 사용자 텍스트 입력 컴포넌트에서는 오토마타로부터 넘겨받은 문 자(열)을 삽입하거나 삭제, 수정하는 작업을 처리한다.

현재 오토마타에서 지원하는 입력 모드에 대한 정보는 `MH_IMAgetSurpportModeCount()`와 `MH_IMAgetSupportedModes()`, `MH_IMAgetCurrentMode`를 통해서 얻을 수 있다. 여기서 `MH_IMAgetSupportedModes()`의 경우 리턴값은 오토마타에서 지원하는 언어코드를 넘겨주게 되며, 언어코드는 ISO 639 코드를 따른다. 단, 해당 언어가 대소문자를 구분하는 경우 각 언어코드에 "/S","/L"를 추가하여 지정할 수 있다. 예를 들어 영문 소문자의 경우 "EN/S"의 언어코드를 넘겨주게 된다.

한글의 경우에는 "KO"의 언어코드를 넘겨주게 된다. 숫자의 경우 언어코드에서 정 의되어 있지 않으므로, "N123"으로 정한다. 심볼 코드는 폰에서 제공하는 코드의 형태가 다양하므로 HAL 에서 정의 하지 않고, 상위의 사용자 컴포넌트에서 공통적 으로 구현하도록 한다.

관련 자료형

```c
#define MH_IMA_NUM_MODE  "N123"  /* 숫자 입력 모드. 숫자의 경우 표준 언어 코드에서
                                    지원하지 않으므로 숫자 입력에 대한 코드를 지정한다. */

#define MH_IMA_FLUSH     (-99)   /* 사용자에 의해서 현재 조합 중인 문자를 강제로
                                    완성시켜야 할 경우 사용되는 특수 키.
                                    이 키가 MH_IMAhandleInput 으로 입력된 경우
                                    현재 조합 중인 문자를 완성하여 반환한다.
                                    키 입력을 받아서 일정 시간 후 키가 완성되는
                                    방식의 오토마타 구현 시, 이 키 값을
                                    MH_pltEvent 를 이용하여 플랫폼으로 전달하여
                                    구현할 수 있다. */
```


### MH_IMAgetSurpportModeCount

**설명**

오토마타에서 지원는 입력모드의 수를 얻어온다.

**프로토타입**

```c
_Int32 MH_IMAgetSurpportModeCount()
```

**매개 변수**

```c
없음
```

**반환 값**

입력모드의 수

**부작용**

없음

**참고 항목**

없음

### MH_IMAgetSupportedModes()

**설명**

오토마타에서 지원하는 입력모드의 언어코드를 얻어온다. 언어코드는 ISO 639 코드를
따른다. 단, 해당 언어가 대소문자를 구분하는 경우 각 언어코드에 `"/S","/L"`를 추가하여 지정할 수 있다. 예를 들어 영문 소문자의 경우 "EN/S"의 언어코드를 넘겨주게 된다. 한글의 경우에는 "KO"의 언어코드를 넘겨주게 된다.

**프로토타입**

```c
char** MH_IMAgetSupportedModes()
```

**매개 변수**

없음

**반환 값**

언어코드 (스트링 어레이 포인터)

**부작용**

없음

**참고 항목**

없음

### MH_IMAsetCurrentMode

**설명**

오토마타에서 사용할 모드를 지정한다.이 값은 `MH_IMAgetSupportedModes()`로 얻은 언어코드의 인덱스값이다.

**프로토타입**

```c
M_Int32 MH_IMAsetCurrentMode (M_Int32 mode)
```

**매개 변수**

입력모드

**반환 값**

지정한 입력모드가 바르게 적용된 경우 "1". 그렇지 않은 경우 "0".

**부작용**

없음

**참고 항목**

없음

### MH_IMAgetCurrentMode()

**설명**

오토마타의 현재 입력모드를 얻어온다. 이 값은 `MH_IMAgetSupportedModes()`로 얻은 언어코드의 인덱스값이다.

**프로토타입**

```c
M_Int32 MH_IMAgetCurrentMode()
```

**매개 변수**

없음

**반환 값**

오토마타의 현재 입력모드.

**부작용**

없음

**참고 항목**

없음

### MH_IMAhandleInput

**설명**

사용자 컴포넌트로 부터받은 키 입력을 현재 입력모드에 따라 처리하며 문자를 생성하고, 생성된 문자를 넘긴다.

(주의)`MH_IMA_FLUSH`가 키값으로 입력된 경우 현재 조합중인 문자를 완성하여 반환한다.

**프로토타입**

```c
M_Int32 MH_IMAhandleInput(char key, M_Int32 type, char *buf1, M_Int32 *size1, char *buf2, M_Int32 *size2);
```

**매개 변수**

- `key` - [in] 입력된 키값 (`MH_KeyCode`에 정의된 것, `MH_IMA_FLUSH`)
- `type` - [in] 입력된 키 타입 (`MH_Event`에 정의된 것.)
- `buf1` - [out] 완성된 문자열버퍼
- `size1` - [in] 완성된 문자열 버퍼의 크기
- `buf2` - [out] 조합중인 문자열버퍼
- `size2` - [in] 조합중인 문자열 버퍼의 크기

**반환 값**

없음

**부작용**

없음

**참고 항목**

없음
