Skip to content

사용 방법

Joonho Hwang edited this page Jan 12, 2024 · 10 revisions

ko en

사용 방법

개요

설치 시 시작 프로그램 폴더에 Typoon 바로가기가 생깁니다. (이 폴더의 정확한 경로는 윈도우의 경우 %programdata%/Microsoft/Windows/Start Menu/Programs/StartUp입니다)

프로그램 시작 시 시스템 트레이 아이콘이 생깁니다 (윈도우의 경우 오른쪽 아래에 뜨는 아이콘들). 이 아이콘을 클릭하면 Turn On/Off, Open Config, Open Match, Exit이 있는 메뉴가 열립니다. 'Open *' 항목들은 각각 컨피그 파일과 매치 파일을 기본 프로그램으로 엽니다.

기본적으로 Ctrl-Alt-Shift-S로 프로그램을 껐다 켤 수 있습니다. 단축키를 바꾸려면 컨피그를 참고하세요.

어떤 텍스트가 어떤 텍스트로 변할지는 매치 파일에서 지정해 줍니다. 매치 파일은 기본적으로 트리거와 대치 텍스트 쌍의 리스트입니다. 이 파일은 JSON5 포맷을 사용합니다. 구체적인 설명을 원하시면 매치 항목을 참고하세요.

뭔가 설정을 바꾸고 싶으시다면 컨피그 파일을 확인하시면 됩니다. 이 또한 JSON5 포맷을 사용합니다. 시스템 알림이 거슬린다거나, 끄고 켜기 단축키가 충돌한다거나 하면 여기에서 바꾸실 수 있습니다. 바꿀 수 있는 모든 설정과 그에 대한 설명을 확인하시려면 컨피그 항목을 참고하세요.

현재 활성화된 프로그램이 무엇인지에 따라 타이푼을 자동으로 끄고 켠다거나 다른 매치 파일을 사용하는 것이 가능합니다. 이에 대해 알아보려면 컨피그의 이 항목를 참고하세요.

매치

매치는 이 프로그램의 핵심입니다. 어떤 텍스트가 어떤 텍스트로 변할지를 지정해 줍니다.

매치는 1개 이상의 트리거, 대치 텍스트, 0개 이상의 옵션으로 구성됩니다.

기본 매치 파일은 윈도우의 경우 %appdata%/Typoon/match에 위치해 있습니다. 혹은 시스템 트레이 아이콘을 클릭해 Open Match를 선택하면 기본 프로그램으로 매치 파일을 열 수 있습니다.

매치 파일은 어디에 위치하든 상관없습니다. 컨피그에서 경로를 지정해 주기만 하면 됩니다.

예시를 먼저 보는 타입이시라면 여기로 가세요.

트리거

트리거는 감지되어 대체될 텍스트입니다. 매치당 1개 이상 있어야 합니다. 1개만 있는 경우, trigger 필드로 지정해줄 수 있습니다. 1개 이상의 경우는 triggers 필드에 리스트로 넣어주세요.

대치 텍스트

대치 텍스트는 트리거의 자리에 대신 들어가게 될 텍스트입니다. replace 필드로 지정해 주세요. 모든 매치에는 replace, replace_image, replace_command 중 하나가 있어야 합니다.

커서 위치

대치 텍스트에서 커서 위치를 지정해줄 수 있습니다. 기본 커서 위치 마커는 |_|이지만 컨피그 파일에서 원하는 대로 변경할 수 있습니다.

대치 이미지

대치 이미지는 트리거의 자리에 대신 들어가게 될 이미지의 경로입니다. replace_image 필드로 지정해 주세요. '붙여넣기' 단축키를 통해 붙여넣는 방식입니다. 모든 매치에는 replace, replace_image, replace_command 중 하나가 있어야 합니다.

지원되는 포맷: BMP, GIF, JPEG, PNG, TIFF, Exif, WMF, EMF

대치 명령어

대치 명령어는 명령어를 실행한 후, 그 아웃풋을 트리거의 자리에 대치하게 합니다. replace_command 필드로 지정해 주세요. 모든 매치에는 replace, replace_image, replace_command 중 하나가 있어야 합니다.

옵션

모든 토글 옵션의 기본값은 false입니다.

트리거에 영향을 주는 옵션

  • case_sensitive

    true일 경우 트리거가 대소문자를 구별합니다.

  • word

    true일 경우 트리거가 단어 단위로 끊겨야 발동됩니다.

  • full_composite

    한글 전용. true일 경우 마지막 글자의 조합이 끝나야 발동됩니다.

    트리거의 마지막 글자가 한글이고 wordfalse여야만 유효합니다.

대치 텍스트에 영향을 주는 옵션

  • propagate_case

    true일 경우 매치를 발동시킨 텍스트의 대소문자를 대치 텍스트가 따라갑니다.

    case_sensitivefalse이고 트리거 텍스트의 글자 중 최소 한 개가 대소문자 구별을 하는 글자여야 유효합니다.

  • uppercase_style

    capitalize_wordsfirst_letter 중 하나여야 합니다. capitalize_words인 경우, 대치 텍스트가 대문자화될 때 각 단어의 첫 글자가 대문자가 됩니다. first_letter인 경우, 대치 텍스트가 여러 단어로 구성돼 있어도 가장 첫 글자만 대문자화됩니다.

    propagate_casetrue여야만 유효합니다.

  • keep_composite

    한글 전용. true일 경우 대치 텍스트의 마지막 글자를 조합 중인 상태로 남겨둡니다.

    대치 텍스트의 마지막 글자가 한글이고, full_compositefalse이며, 대치 텍스트의 커서 위치가 마지막이어야만(따로 설정되지 않은 경우도 포함) 유효합니다.

그룹

매치들을 그룹화하여 옵션을 공유하게 할 수 있습니다. 다음 계층구조에 맞게 데이터를 넣어주세요. (root)

  • groups
    • (entry 1)
      • (옵션 1)
      • (옵션 2)
      • matches
    • (entry 2) ...

임포트

다른 매치 파일들을 임포트할 수 있습니다. 상대 경로인 경우 현재 매치 파일이 있는 곳을 기준으로 합니다. imports 안에 넣어주세요.

예시

{
    // 해당 경로의 매치 파일들을 임포트합니다.
    imports: ['C:/some/other/match_file.json5', '../another/match_file.json5'],

    groups: [
        {
            case_sensitive: true,
            // 아래의 모든 매치의 트리거는 대소문자를 구분하게 됩니다.
            matches: [
                {
                    trigger: 'some',
                    replace: 'words'
                },
                {
                    trigger: 'other',
                    replace: 'words',
                    word: true,  // case_sensitive + word의 효과를 지니게 됨
                }
            ]
        },
        {
            ...
        }
    ],

    matches: [
        {
            trigger: 'aaaa',
            replace: 'AAAA',
            case_sensitive: true,
            // `aaaa` -> `AAAA`.
            // `Aaaa`, `AaAa`는 발동되지 *않습니다*.
        },
        {
            triggers: ['alth', 'alh'],
            replace: 'although',
            word: true
            // `AlTh` + 알파벳/한글/숫자가 아닌 문자 -> `although` + 입력된 글자.
            // `alh` + 알파벳/한글/숫자가 아닌 문자 -> `although` + 입력된 글자.
        },
        {
            trigger: 'recieve',
            replace: 'receive',
            propagate_case: true
            // `recieve` -> `receive`.
            // `Recieve` -> `Receive`.
            // `RECIEVE` -> `RECEIVE`.
        },
        {
            trigger: ';tbh',
            replace: 'to be honest',
            word: true,
            propagate_case: true,
            uppercase_style: 'capitalize_words'
            // `;tbh` + 알파벳/한글/숫자가 아닌 문자 -> `to be honest` + 입력된 글자.
            // `;Tbh` + 알파벳/한글/숫자가 아닌 문자 -> `To Be Honest` + 입력된 글자.
            // `;TBH` + 알파벳/한글/숫자가 아닌 문자 -> `TO BE HONEST` + 입력된 글자.
        },
        {
            trigger: ';sti',
            replace: 'static_cast<int>(|_|)'
            // `;sti` -> `static_cast<int>()`, 커서는 괄호 사이에 위치할 것입니다.
        },
        {
            trigger: '스빈다',
            replace: '습니다',
            keep_composite: true
            // `스빈다` -> `습니다`, `다`는 조합 중인 상태가 됩니다. 
            // 따라서 `스빈답`를 입력하면 `습니답`이 됩니다. `keep_composite`이 없으면 `습니다ㅂ`가 될 것입니다.
        },
        {
            trigger: '가나',
            replace: 'Ghana',
            full_compisite: true
            // `가나` + 조합 완료 -> `Ghana` + 글자로 인해 조합이 완료됐다면 입력된 글자.
            //    - `가나` + 한/영 전환 -> `Ghana`
            //    - `가나다` -> `Ghana다`. (이를 원치 않으시면 `word: true` 옵션을 추가하세요)
            //      마지막 `ㅏ`를 입력해서 `나`의 조합이 끝날 때까지 변환되지 않습니다.
            //    - `가나 ` -> `Ghana ` (뒤에 스페이스가 있습니다)
            // `가난`은 발동되지 *않습니다*.
        },
        {
            trigger: '혼합mixed',
            replace: 'mixed혼합',
            keep_composite: true
            // `혼합mixed` -> `mixed혼합`. 또한 한/영이 전환돼 한글 입력 상태가 됩니다.
        },

        {
            trigger: ';pepe',
            replace_image: 'C:/path/to/pepe.jpg'
            // ;pepe 입력 시 해당 경로의 사진을 붙여넣습니다.
        },
        {
            trigger: ';datetime',
            replace_command: 'echo %date%%time%'
            // ;datetime 입력 시 `echo %date%%time%`를 실행해 나온 출력으로 트리거가 대치됩니다.
        },
    ]
}

컨피그

컨피그 파일은 윈도우에서는 %appdata%/Typoon에 있습니다. 시스템 트레이 아이콘에서 Open Config를 선택해 기본 프로그램으로 열 수도 있습니다.

match_file_path

매치 파일 경로. 절대 경로와 상대 경로 모두 가능합니다. 상대 경로인 경우, 컨피그 파일이 있는 곳에서부터 찾습니다. (윈도우에서는 %appdata%/Typoon)

기본값: match/matches.json5.

max_backspace_count

백스페이스 허용치.

예를 들어, abc라는 트리거가 있고 이 값이 5라면, abddddd를 입력하고 d를 모두 지운 후 c를 입력해도 트리거가 감지됩니다. 하지만 d를 하나라도 더 입력했다면, 트리거가 감지되지 않습니다.

기본값: 5.

cursor_placeholder

대치 텍스트에서 커서의 위치를 나타내는 데 쓰일 텍스트.

기본값: |_|.

notify_config_load

컨피그 파일이 (리)로드됐을 때 시스템 알림을 띄울지 여부.

기본값: true.

notify_match_load

매치 파일이 (리)로드됐을 때 시스템 알림을 띄울지 여부.

기본값: true.

notify_on_off

Typoon이 꺼졌을 때/켜졌을 때 시스템 알림을 띄울지 여부.

기본값: false.

hotkey_toggle_on_off

Typoon을 껐다 켜는 단축키. 아예 없애고 싶으시다면, 이 필드 자체를 제거하세요 (사실 key 필드를 제거하는 것만으로 충분하긴 합니다).

기본값: ctrl-alt-shift-s.

  • ctrl - 컨트롤 키가 눌려야 하는지 여부.
  • alt - 알트 키가 눌려야 하는지 여부.
  • shift - 시프트 키가 눌려야 하는지 여부.
  • win - 윈도우 전용. 윈도우 키가 눌려야 하는지 여부. 참고로 윈도우 키를 누르는 모든 단축키는 예약돼 있기 때문에 권장되지 않습니다.
  • cmd - 맥 전용. 커맨드 키가 눌려야 하는지 여부. *현재 맥은 지원되지 않습니다.*
  • key - 키. 대소문자는 구별하지 않습니다. 키 목록을 참고하세요.

hotkey_get_program_name

현재 포커스된 창의 이름을 클립보드에 복사하는 단축키. 아래의 프로그램별 설정에 사용할 수 있습니다. 나머지 설명은 위와 동일.

기본값: ctrl-alt-shift-d.

program_overrides

현재 활성화된 프로그램별로 오버라이드할 설정들. 리스트이며, 각 compound를 구성하는 요소는 다음과 같습니다:

  • programs: 설정을 적용할 프로그램 목록. 해당 이름은 위의 단축키를 사용해 얻을 수 있습니다.
  • disable: true인 경우 해당 프로그램들 사용 중 Typoon이 비활성화됩니다.
  • match_file_path: 존재하는 경우 기본 매치 파일 대신 이 경로의 매치 파일을 사용합니다.
  • includes: 사용되는 매치 파일에 추가로 합쳐서 사용할 매치 파일 경로 목록.
  • excludes: 사용되는 매치 파일들이 이 목록에 있는 매치 파일들을 import하지 못하게 합니다.

예시

{
  match_file_path: "c:/some/path/to/custom/match/file.json5",
  max_backspace_count: 2,
  cursor_placeholder: "$|$",  // espanso 스타일
  notify_config_load: false,
  notify_match_load: true,
  notify_on_off: true,
  hotkey_toggle_on_off: {
    ctrl: true,
    alt: true,
    shift: true,
    key: "O"
  },  // 껐다 켜는 단축키는 이제 ctrl-alt-shift-o가 됩니다.
  hotkey_get_program_name: {
    ctrl: true,
    alt: true,
    key: "p"
  },  // 현재 프로그램 이름을 복사하는 단축키는 이제 ctrl-alt-p가 됩니다.
  program_overrides: [
    {
      programs: [
        "Discord",
        "Microsoft Visual Studio 2022"
      ],
      includes: [
        'match/discord.json5',
      ]
    },  // 디스코드와 비주얼 스튜디오 사용 중에는 기존 매치 파일에 추가로 match/discord.json5를 합쳐서 사용합니다.
    {
      programs: [
        "KakaoTalk",
      ],
      disable: true
    },  // 카카오톡 사용 중에는 Typoon을 비활성화합니다.
    {
      programs: [
        "Chrome",
      ],
      excludes: [
        'match/images.json5',
      ]
    },  // 크롬 사용 중에는 사용 중인 매치 파일에서 match/images.json5를 임포트시키지 않고 사용합니다.
    {
      programs: [
        "메모장",
      ],
      match_file_path: "match/discord.json5",
    },  // 메모장 사용 중에는 기본 매치 파일 대신 match/discord.json5를 사용합니다.
  ]
}