도스길라잡이
도스 길라잡이 카멜레온 ANSI.SYS의 넉넉한 기능들(2)
Ansi.sys로 색깔을 바꾸는 일만큼이나 재미있는 기능이 키보드를 바꿔주기다. 이 부분은 물론 색깔 바꾸기만큼 쉽지는 않다. Ansi.sys로 키보드를 바꾸려면 코드값도 알아야 한다. 지난 달에 이미 설명했지만, 앤시 작업을 하려면, 반드시 Config.sys 파일에 앤시 파일이 로드되어 있어야 한다. 이제, 키 값 바꾸기를 시작하자. 앤시 코드를 입력하면 이미 키가 가지고 있는 값에 다른 값을 부여할 수 있다. 예컨대, G키에 H를 넣어줄 수도 있다는 말이다. 다음 명령을 사용하면 가능하다.
Prompt $e[g;hp$e[h;gp
이렇게 하면 키보드의 키 값을 상황에 따라 원하는 대로 바꿔줄 수 있다. 그렇지만, <Shift>, <Ctrl>, <Alt>와 같은 변환 키들과 스크롤락과 캡스락키, 넘버락락키와 같은 토글 키와 <Pause>키 등은 바꿀 수 없다는 것도 기억해 두자. Ansi.sys로 키보드에 할당할 수 있는 것은 문자 하나만이 아니라 자주 사용하는 문자의 열, 명령, 기능키 등이 모두 가능하다. 키가 가진 값을 다시 설정하는 형식은 다음과 같다.
Prompt $e[코드;문자p
기능키들은 ‘Fuction’의 뜻을 가진 ‘에프(F)’로 시작하는 키들이다. 기능키 중에서 <F1>부터 <F6>까지는 도스가 사용하고 있으므로 새로 기능을 할당하고자 할 때는 사용하지 않는 것이 좋다. 그렇지만, <Alt>키와 함께 쓰도록 설정하면 큰 문제는 없을 것으로 보인다. <F7>키에 편집 기능을 부여하려면, ‘edit’라는 글자를 대입해 준다. 다음처럼 명령을 주면 된다.
prompt $e[0;65;editp
그런 다음, 엔터키를 입력하면 <F7>키를 누를 때마다 에디트 명령이 나타날 것이다. 아주 빈번하게 이용되는 ‘dir/p(디렉토리를 페이지 단위로 보여주는 명령)’이나 ‘cd(디렉토리를 바꿔주는 명령)’, ‘copy(파일을 복사해 주는 명령)’와 같은 도스 명령어들을 기능키에 할당해 두면 지루한 키보드 입력을 덜어낼 수 있다. <F8>키를 눌러 빨강이나 파랑 등의 색깔을 변화하고 싶다. 지금까지 배운 것에 의해 입력하라면, 이렇게 입력하기가 쉽다.
prompt $e[0;66;prompt $e31;44m$_p
그렇지만, 정답이 아니다. 컴퓨터는 인용 부호(“”)안에 들어있는 ‘prompt’를 이스케이프 시퀀스로 읽어버린다. 그렇게 되면 원하던 결과를 얻을 수 없다. 이런 문제 해결은 다음과 같이 ‘$’자를 하나 추가한다.
prompt $e[0;66;prompt $$e31;44m$_p
$자를 두개 넣음으로써 이스케이스 시퀀스 안쪽의 Prompt 명령과 순수한 $문자를 구별하게 표시해 주는 것이다. 아직도 혼란스런 사용자들은 어렵게 생각하지 말고, Prompt 명령을 두번 사용할 때는 $글자를 두번 사용한다고 기억해 두면 된다. 이런 명령을 통해 키에 준 값은 전원이 꺼지기 전까지 통용되는 임시 역할이다. 우리가 앞에서 해보았던 에디트 명령을 <F7>키에 할당했던 것을 해제하려면
prompt $e[0;65;0;65p
라고 입력하면 된다. 그렇게 하면, 잠시 주어졌던 역할은 모두 잊어버리고 원래의 임무로 복귀하게 된다.
Ansi.sys의 키보드 코드
Ansi.sys 파일로 키보드를 고쳐보고자 한다면, 키 각각이 가지고 있는 코드와 숫자값부터 익혀야 한다. 각 키들은 <Ctrl>, <Alt>, <Shift>키를 추가하거나 키 그 자체로 가지고 있는 값을 가지고 명령을 할당할 수 있다. 키보드에 재 할당할 수 있는 키보드 상의 키값을 몇개 보였다. 도스 설명서를 보면 이에 대한 더욱 자세한 내용이 수록되어 있다.
도스 길라잡이를 앤시로 시작한 것은 도스에 좀더 재미있게 다가가고자 함이었다. 이제 본격적으로 도스를 파헤쳐 보자. 다음 달의 대상은 사용자들을 가장 속상하게 하는 Config.sys이다.
예전엔 ansi.sys 를 부팅 시 별도로 띄워줘야 했는데 지금은 명령 프롬프트에 기본으로 탑재되어 화려한 UI를 구현할 수 있지…만 그걸 누가 쓰냐 다 윈도우 창 띄우지! … 하지만 난 맨날 turbo vision류 UI 만들고 있어… 터미널로도 사용 가능하거든..