Releases: rubidus-api/jamotong_ime
Release list
v0.17.0
Jamotong 0.17.0
Added
- TSF compartments (RFC-0012 Phase 1): the hangul/english state is published to
GUID_COMPARTMENT_KEYBOARD_OPENCLOSEand the conversion mode toGUID_COMPARTMENT_KEYBOARD_INPUTMODE_CONVERSION. The Windows input indicator (한/A) now follows Jamotong, and changes made from outside (indicator, applications) switch the layout. Per-contextGUID_COMPARTMENT_KEYBOARD_DISABLEDis honoured. Kill switch:UseCompartments=0in%APPDATA%\Jamotong\config.ini. examples/tsf-conformance-lab/: a thin test TIP, a host-side contract probe andtsfdoctor(per-user input-profile diagnosis; enable Jamotong only / disable foreign profiles).
Fixed
- Clicking the tray 한/A chip (Jamotong's language-bar button) or choosing 다음 자판 from its menu while a syllable was composing left the preedit on screen and appended following keys to it (since 0.16.2). The composing syllable is now committed first.
Changed
- Hanja lookup no longer keeps a 512 KB first-character table in every host process.
- Shortcut key state is resolved once per key event; the unread
HKCU\Software\Jamotong\CurrentAbbrev/CurrentNamewrites are gone. install.batdiagnoses itself (refuses to run from a TEMP folder = zip not extracted, writesinstall-log.txtnext to itself, shows the exact regsvr32 error on failure).
⚠ If you ran a test package dated 2026-08-22 ~ 2026-08-23
The 3-tools\2-fix-enable.bat in those test packages (tsfdoctor --enable-all) enabled every Windows input method for your account, so Win+Space shows Japanese/Chinese/Hindi/… IMEs you never installed. Released Jamotong versions are not affected. Download jamotong-ime-list-repair-*.zip below and follow its README (3-disable-foreign.bat → sign out/in). It only changes this account's enable flags; nothing is uninstalled.
설치 / Install
Extract to a permanent folder (e.g. C:\Jamotong), run install.bat as administrator, then pick Jamotong IME with Win+Space. If it is not in the list, sign out and in (or run the repair tool's 6-enable-jamotong.bat, no admin). Never move or delete the folder while registered — run uninstall.bat first.
Jamotong IME v0.16.2
v0.16.2 (2026-07-25) — 버그 수정
수정
- 터미널(PuTTY 등)에서 조합 중 한자 변환 시 "가家"처럼 원 음절 뒤에 한자가 덧붙던 문제: '먼저 커밋 후 교체' 방식은 교체가 실제로 되는 호스트(일반 에디터·메모장류)에서만 안전한데, 터미널은 이미 보낸 글자를 고칠 수 없어 중복이 생겼습니다. 이제 터미널에서는 조합을 커밋하지 않고 유지한 채 후보창을 띄우고, 한자를 선택하면 한자만 전송됩니다(원 음절은 아예 전송 안 됨). 취소하면 조합이 그대로 이어집니다.
- 일반 앱(메모장·AkelPad·카톡 등)의 한자 변환 동작은 기존과 동일합니다.
업그레이드
uninstall.bat → 새 zip을 같은 폴더에 풀기 → install.bat. 로그아웃 불필요 — 한자 변환을 쓸 앱(PuTTY 포함)만 재시작하면 됩니다.
Jamotong IME v0.16.1
v0.16.1 (2026-07-24) — 버그 수정
수정
- 한자 후보창이 화면 가장자리에서 잘리던 문제: 창을 모니터 작업영역 안으로 클램프하고, 아래로 넘치면 캐럿 줄 위로 뒤집어 표시합니다. 페이지 이동으로 폭이 변해도 다시 클램프됩니다.
- PuTTY에서 한자 후보창 키보드 탐색 불가(마우스만 동작): 일부 터미널은 후보창이 뜬 동안 키를 입력기로 넘기지 않습니다 — 후보창 표시 중에만 저수준 키보드 훅으로 탐색 키(숫자·방향키·Enter·Esc·Space·PgUp/PgDn)를 직접 처리하도록 했습니다. 창을 닫으면 즉시 해제되고, 일반 앱의 기존 동작에는 영향이 없습니다.
업그레이드
uninstall.bat → 새 zip을 같은 폴더에 풀기 → install.bat. 로그아웃 불필요 — 이번 판은 후보창 동작만 바뀌므로 한자 변환을 쓸 앱만 재시작하면 됩니다.
Jamotong IME v0.16.0
v0.16.0 (2026-07-24)
새 기능 — 한자 후보창 글꼴·크기 설정
- 설정 → IME Options에 "Hanja candidate font" / "size" 항목 추가(12~72px, 기본 맑은 고딕 24px — 종전 18px 고정보다 큼).
- 후보·한자 뜻(훈음)·독음·하단 페이지 표시([현재/전체])까지 모든 요소가 같은 글꼴·같은 크기 하나로 렌더되며, 행 높이·창 크기·마우스 클릭 판정이 글꼴 크기에 맞춰 함께 변합니다.
- 단일 한자 후보에 유니코드 코드포인트 병기:
1. 家 집 가 U+5BB6형식. 여러 글자 한자 단어에는 붙지 않습니다.
수정
- 설정창 IME Options 체크박스 글자 뒤로 회색 배경이 살짝 비치던 문제 수정(창 배경색과 동일한 불투명 브러시로 교체).
문서
- README(한/영) 서두에 이 입력기의 장점 요약("장점"/"Why this IME") 추가 — 무의존 단일 DLL, 호스트별 입력 경로 자동 선택, 무간섭 모드, 데이터 자판, 오프라인 한자 데이터, 로그아웃 없는 설치.
업그레이드
uninstall.bat → 새 zip을 같은 폴더에 풀기 → install.bat. 로그아웃 불필요, 타이핑할 앱만 재시작.
Jamotong IME v0.15.0
v0.15.0 (2026-07-24)
새 기능 — 무간섭(직접 입력) 모드 (실기 검증됨)
원격 데스크톱(구글 원격 데스크톱 등)에서 로컬 IME가 자모키·한/영 키를 가로채 원격 한글 입력이 막히는 구조적 충돌의 해법입니다.
- 켜는 법: 트레이 자판 아이콘 우클릭 → "Pass-through (direct input) mode" (체크 표시). 원하면 Settings → Shortcuts에서 전용 단축키 지정(기본 없음).
- 동작: 켜져 있는 동안 자모통이 모든 키를 앱에 그대로 통과 — 한/영 키까지 원격으로 전달되어 원격 PC의 IME로 한글을 입력합니다. 로컬 영어 타이핑은 평소대로 됩니다.
- 표시: 트레이/언어바 아이콘이
--로 바뀌며, 상태는 모든 앱에서 일관됩니다(레지스트리 공유).
업그레이드
v0.14.0부터는 로그아웃이 필요 없습니다: uninstall.bat → 새 zip을 같은 폴더에 풀기 → install.bat. 타이핑할 앱만 재시작하면 됩니다.
전체 변경 이력은 CHANGELOG.md, 구현 배경은 IME 구현 매뉴얼 §9.5 참조.
Jamotong IME v0.14.0
v0.14.0 (2026-07-24)
새 기능
- 문서 인라인 표준 composition (RFC-0010): 한글 조합이 메모장 같은 표준 TSF 호스트에서는 이제 문서 안에 밑줄 preedit로 표시됩니다(MS IME와 같은 방식, 실기 검증). CUAS 단명 호스트(AkelPad·터미널류)는 검증된 기존 커밋 전용+오버레이 방식을 자동 유지 — 분기는 앱 이름이 아니라
ITfContext::GetStatus의TS_SS_TRANSITORY플래그로 하며, 이상 동작 시 컨텍스트별 자동 강등과InlineComposition=0설정 스위치가 있습니다.
수정
- 터미널 밑줄 커서 위 조합 미리보기 극소 렌더 수정: PuTTY류에서 캐럿이 밑줄(몇 px)로 보고될 때 칩 크기를 터미널 셀 폭 기반으로 근사하고 커서 '위'에 표시합니다.
변경
- 아이콘 전면 개편: 자판 모드 아이콘(EN/QW·EN/DV·KO/2B·KO/3B)과 프로필 아이콘(JM/TO)이 비트맵 글꼴 Spleen 5x8(BSD-2)로 그려집니다 — 투명 배경 + 흰 외곽선 + 어두운 보라 글자.
- 설치/제거에 로그아웃 불필요: 잠긴 DLL을 rename-aside로 치우고 다음 실행에서 자동 청소. 아이콘 갱신용 탐색기 재시작 선택 프롬프트(권한 강등 실행) 추가.
구현 매뉴얼
winapi-c-ime-manual.md(EN)/winapi-c-ime-manual.ko.md(KO)에 이번 사이클의 실기 판정 전 과정이 기록되어 있습니다: AkelPad R1~R4 실험과 Reading metadata 가설 기각(§12.7.8), TS_SS_TRANSITORY 재분류와 제품 분기(§13.0), 터미널 밑줄 커서 함정(§12.1).
설치: zip을 영구 폴더에 풀고 관리자 권한으로 install.bat 실행. 업그레이드는 uninstall.bat → 새 파일 풀기 → install.bat (로그아웃 불필요).
v0.13.1 — 최소 동작 예제 + 매뉴얼 처음부터 따라하기·참고 자료
문서·예제 릴리스입니다. IME 동작 변경은 없습니다.
처음 IME를 만드는 사람이 시작할 수 있게 하는 데 초점을 맞췄습니다.
새로 추가
examples/minimal-tip/ — 동작하는 최소 TSF IME
minimal.c 약 200줄 + minimal.def 6줄. Windows 언어 목록에 뜨고 a 키를 먹어 ㄱ을 넣는 것이 전부입니다. x64·x86 모두 빌드를 확인했습니다.
IME는 "키를 받아 글자를 넣는 프로그램"이 아니라 OS가 로드하는 COM 서버입니다. 그래서 글자를 넣기 전에 관문이 셋입니다.
① COM 서버가 되어야 → DllGetClassObject 로 객체를 내줄 수 있어야
② IME로 등록되어야 → 언어 목록에 떠야 고를 수 있음
③ 키를 받아야 → 키 싱크를 붙여야 키가 옴
④ 그제서야 글자를 넣음 → 편집 세션 안에서만
하나라도 빠지면 오류 메시지 없이 아무 일도 안 일어납니다. 그 침묵이 처음 하는 사람을 가장 괴롭히므로, 최소 예제로 세 관문을 먼저 통과시키게 했습니다.
매뉴얼 §0.5 「처음부터 따라하기」
빌드 → 등록 → 확인 → 입력 → 제거를 단계별로 안내하고, 단계마다 실패 증상표를 붙였습니다.
| 증상 | 원인 |
|---|---|
| "모듈을 로드할 수 없습니다" | 비트수 불일치 |
| "진입점을 찾을 수 없습니다" | .def 누락 |
| 성공했는데 목록에 안 뜸 | 카테고리 등록 누락 |
최소 예제가 조합 미리보기를 일부러 안 하는 이유(§8 CUAS의 벽)도 밝혀, §8을 먼저 읽도록 유도합니다.
매뉴얼 부록 B 「참고 자료」
공식 문서 39개 링크를 제목과 함께 정리했습니다. TSF 전반 · 인터페이스 21종 · 개념 · COM · IMM32 · 한글 유니코드 코드표 · 도구.
인터페이스마다 "어디에 쓰는지 + 몇 절"을 달아 본문과 이었고, ITfComposition은 CUAS에서 죽는다거나 ITfCompositionSink가 NULL이면 실패한다는 식으로 실기에서 얻은 주의를 링크 옆에 붙였습니다. 전 링크 접속(HTTP 200)을 확인했습니다.
검증
- 본체 x64·x86 빌드 무경고
- 예제 x64·x86 빌드 무경고
- 릴리스 DLL에 진단 로그 문자열 0건
- 매뉴얼 링크 39/39 접속 확인
문서
v0.13.0
v0.13.0
보안
- 설정 Import 경로 조작 취약점 차단: 신뢰할 수 없는 config.ini를 Import할 때 자판 폴더
밖(예: 시작프로그램 폴더)에 임의 파일을 심을 수 있던 문제를 막았다. 예약 장치명 거부,
버퍼 경계(OOB) 방어, 파일명 이스케이프(percent-encoding)까지 하드닝.
추가
- 한자 훈음 표 1,784 → 6,832자: 인명용·벽자 한자에 전통 대표 훈음을 추가해 후보창에서
뜻을 함께 볼 수 있다(예:珉 옥돌 민,埈 높을 준). - 인명용 한자 +1,060(인명용 표준 100% 커버), 복합 한자어 331 → 약 2,200.
- 코드포인트 팝업 문자명 표시, 훈음 없는 한자의 음 표시.
jamotong.exe가 트레이 상주 → 일반 관리 앱(.jmt 편집/검증/입력 테스트)..jmt파서 진단(줄 번호·사유), 설정 Export 이식성(자판 본문 동봉).
전체 변경 내역: CHANGELOG.md
jamotong-260715.zip SHA-256:
afe5d7fe78f8bd7a66d599a0cac5f4c92ce7ddc676c12b6fe32d66ef04d7589f
v0.12.0
Feature release: fully configurable multi-shortcut system, .jmt array syntax, bundled full manual, and a batch of robustness fixes from a full source review (RFC-0004).
Added
- Per-function multiple shortcuts (up to 8 each, Settings > Shortcuts): layout switch (Kor/Eng), Hanja conversion, Unicode codepoint input (was fixed Ctrl+Alt+U), and the settings window key (was fixed Ctrl+Alt+K) are all rebindable now. Legacy
config.inifiles migrate automatically. .jmtarray (multi-key) assignment:Map qwertyuiop = ',.pyfgcrl(static),Key khj = C0 C2 C11(hangul),Key jkl; = 0(chord, consecutive bits). Single-key form unchanged.- Full manual bundled:
README.md/README.ko.md(install, defaults, settings file location, complete.jmtreference incl. layers, tap-hold and mouse actions) plusLICENSEare now in the zip. - User layouts added in Settings persist in
%APPDATA%\Jamotong\layouts(survive sign-out; auto-loaded at start).
Fixed
- Composing + app shortcut (e.g. Ctrl+S) now commits the syllable first, then lets the app handle the key natively.
- Composing + Enter no longer loses the last syllable in legacy (CUAS) apps — boundary-key resend is delayed ~30ms.
- Composition preview chip: adapts to mixed font sizes right after showing, without the size flicker; settings labels no longer clip; the size combo shows "Auto" correctly.
- Invalid
.jmtfiles (out-of-range jamo indices, undeclared chord keys, unknown key/mod names) are rejected at load instead of silently misbehaving. - IME registration failures are no longer hidden from the installer; deactivation cleans up an open candidate window.
- Hanja dictionaries load lazily on first use (less I/O in every process).
Install
- Extract
jamotong-0.12.0.zipto a permanent folder of your choice (e.g.C:\Program Files\Jamotong). - Run
install.batas administrator, sign out and back in, then pick "Jamotong IME" via Win+Space.
Upgrade
- Run the old folder's
uninstall.batas administrator, sign out and back in. - Extract the new zip and run
install.batas administrator. Settings (%APPDATA%\Jamotong\config.ini) are kept and migrated.
Checksum
SHA-256 (jamotong-0.12.0.zip) = 0ce591fdbc1224e3fb969ade7e291047dda110fdfe3067a2f41f1bfede60f350
v0.11.2
Settings-window patch release. IME behavior is identical to v0.11.0/v0.11.1.
Fixed
- IME Options tab layout: the Preview font / Preview size labels were clipped by the narrow label column. Each label now takes a full row, with its control (font name + Set button, size combo) on the row below.
- Preview size combo showed blank instead of "Auto": tab switching enumerated child windows recursively and accidentally hid the combo box's internal edit control. The combo now correctly displays "Auto" (and typed/selected sizes).
Install
- Download and extract
jamotong-0.11.2.zip. - Run
install.batas administrator. - Add the keyboard: Settings > Time & language > Language & region > Korean > Keyboard options.
Upgrade from an earlier version
- Run
uninstall.batas administrator, then sign out and back in (the DLL stays mapped in running processes). - Extract the new zip over the old folder and run
install.batas administrator.
Checksum
SHA-256 (jamotong-0.11.2.zip) = 493a0a4fca1fd4ec52d7646e570fac29d53177e6cd83399e9d82f9502a856c69