프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 널리 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
이전 오토핫키 버전과는 많은 부분에서 호환이 되지 않으니, 만약 현시점에서 대중적인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시길 바랍니다.

8. 이스케이프 시퀀스


이번 강에서는 이스케이프 시퀀스(Escape Sequence)를 배우고 사용해 볼 것입니다.

이스케이프란?

프로그래밍에서 이스케이프(Escape)란 표현할 수 없는 문자나 기능을 표현하도록 하는 조치 혹은 행위를 의미합니다.

오토핫키에선 상황에 따라 표현할 수 없는 문자가 존재합니다. 예를 들어서, 앞서 배운 MsgBox를 사용할 때, 만약 문구에 따옴표가 들어가있으면 어떻게 해야할까요?

1MsgBox("철수가 영희에게 "야! 나 너 좋아한다"라고 말했습니다.")
문자열 안에 따옴표를 사용할 경우 (오류)

스크립트는 오류가 나며 실행되지 않습니다. 왜냐하면 따옴표는 작성한 코드가 문자열임을 나타내주는 하나의 기호인데, 문자열 중간에 따옴표가 들어간다면 이 따옴표로 인해 문자열 표시가 끝나기 때문이죠.

강좌를 아주 꼼꼼히 읽은 분들은 알고 계실지 모르겠지만, 제가 6강에서 스쳐지나가듯이 "따옴표는 큰 따옴표(")와 작은 따옴표(') 모두를 사용할 수 있다" 라고 언급한 적이 있습니다. 그렇다면 문자열을 작은 따옴표(')로 감싸준 후, 철수의 대사 부분을 큰 따옴표(")로 적어주는 방법이 있겠습니다. 아래와 같이 말이죠.

1MsgBox('철수가 영희에게 "야! 나 너 좋아한다"라고 말했습니다.')
문자열을 감싸는 따옴표를 작은 따옴표로 사용 철수가 영희에게 "나 너 좋아한다"라고 말했습니다 라고 적힌 알림 상자 사진 1. 실행 결과

정상적으로 큰 따옴표를 문자열로서 표현할 수 있네요. 그렇지만 여전히 문제는 있습니다. 만약 한 문장 내에 작은 따옴표와 큰 따옴표를 둘 다 사용하려면 어떡할까요? 지금처럼 문자열을 감싸는 따옴표를 바꾸는 것 만으로는 해결되지 않을 것입니다. 이럴 때 필요한 것이 이스케이프 처리입니다.

이스케이프 문자의 사용

이스케이프 처리를 하면 따옴표를 따옴표 그대로 표현할 수 있습니다. 또한, 어떠한 표현 불가능한 문자도 표현하게 해주죠. 이러한 이스케이프 처리는 이스케이프 문자이스케이프 할 문자 앞에 붙여줌으로써 가능하게 합니다.

오토핫키에서 이스케이프 문자는 `입니다. 영미권에서 백틱(Backtick)이라고 불리는 이 기호는 대부분 키보드의 ESC키 아래에 있습니다. ~를 입력할 때 Shift키를 떼고 입력하면 바로 `가 입력되죠. 여러분 중 대부분은 처음 입력해본 문자일수도 있겠습니다만, 오토핫키에선 이스케이프 문자로 자주 쓰입니다.

이러한 이스케이프 문자를, 이스케이프할 문자 앞에 붙여주면 끝입니다. 앞선 예제에선 따옴표 앞에 붙여주면 되겠죠. 아래와 같이 말입니다.

1MsgBox("철수가 영희에게 `"야! 나 너 좋아한다`"라고 말했습니다.")
따옴표를 이스케이프 처리 철수가 영희에게 "나 너 좋아한다"라고 말했습니다 라고 적힌 알림 상자 사진 2. 실행 결과

과연 이스케이프 처리를 하니 따옴표를 표현할 수 있습니다! 이렇게 이스케이프 처리를 하면 표현할 수 없는 문자를 표현할 수 있습니다. (" 또는 ' 처럼)문법적으로 사용되는 문자를 문자 그대로의 의미로 사용할 수 있게 해주죠.

이스케이프 시퀀스

그렇다면 강좌 제목인 이스케이프 시퀀스는 무엇일까요? 바로 이스케이프 문자 + 이스케이프할 문자로 이루어진 문자열을 의미합니다. 앞선 예제의 `" 같은 것이지요.

오토핫키에선 `"를 포함해 몇 가지 이스케이프 시퀀스가 있습니다. 대표적으로 알아보자면 표와 같습니다.

이스케이프 시퀀스설명
`" 또는 `'각각 큰 따옴표(")와 작은 따옴표(')를 표현합니다.
`n줄바꿈을 표현합니다.
`t수평 탭을 표현합니다.

Tip: 이스케이프 시퀀스는 더 많습니다.

사실 소개드린 네 가지 외에도 이스케이프 시퀀스는 많습니다. 그러나 외울 필요는 없습니다. 그저 여러분들이 '어? 이 상황에 이 문자를 쓰면 오류가 나는데?' 싶을 때, 그 문자를 이스케이프 처리를 해주면 됩니다. 그 밖에 `n 정도는 외우면 좋습니다.

실습

1. 따옴표와 줄바꿈 표시

1MsgBox("`"닭 잡는 데 어찌 소 잡는 칼을 쓰려 하십니까?`"`n- 화웅")
예제 1. 따옴표와 줄바꿈을 표현하는 이스케이프 시퀀스 사용 "닭 잡는데 어찌 소 잡는 칼을 사용하십니까?"라는 문장의 한 줄 밑에서 - 화웅 이라고 적힌 알림 상자 사진 3. 실행 결과

`"로 따옴표를 표현해주었고, `n으로 줄 바꿈을 표현해주었습니다.