한글 터미널을 만드려고 합니다. 도움 부탁드립니다.

keedi의 이미지

안녕하세요.
리눅스 콘솔 모드에서 한글 입출력을 가능한 프로그램을 만들어보려고 합니다.
모르는 부분이 너무 많아서 자료만 두달째 찾고 있지만 가면 갈수록 미궁속으로
빠져버리는 듯한 느낌입니다.

유닉스상의 한글 출력
http://wiki.kldp.org/wiki.php/LinuxdocSgml/HangulOnUnixGuide-KLDP

위의 문서를 참고하면, 콘솔모드에서 한글 입출력을 가능하게 하려면 터미널이
한글의 입출력을 지원하게 만들어져야 한다고 나와 있는데요. 그래서 2바이트
문자인 한글의 입출력을 가능하게 해줄 터미널부터 만들어 보려고 합니다.

그런데 터미널(tty)가 무엇인지, 정확하게 어떻게 동작하는지도 아직 잘 감이
오지 않습니다. unicon, zhcon, jfbcon 등의 유사 프로그램들의 소스를 보고
있지만, 통 감이 안오네요.

일단 위의 목표에 부합하는 터미널을 만들려고 하는데 어떤식으로 만들어야
하는지, 어떤 기능이 있어야 하는지, 터미널 로써 다른 프로그램과 연계가
되려면 어떤식으로 구성되어야 하는지... 등등 조언 부탁드립니다.

nskystars의 이미지

일단 리눅스/유닉스 시스템 프로그래밍 관련 책들(Advanced Programming in the Unix Environment 등등)을 보면 tty이니 콘솔등등에 대해 나와 있습니다. 개인적으로 'Michael K. Johnson, Erik W. Troan'의
'Linux Application Development' 라는 책이 도움이 많이 되었습니다. 다른 시스템 프로그래밍 책들보다 콘솔 관련 부분에 많은 내용이 할애되어 있습니다.

콘솔 관련 부분에 대해서는 요즘에 GUI를 강조하는 추세라 그런지 인터넷에는 자료가 그다지 없더군요. 콘솔에 충실한 시스템 프로그래밍 책 하나 하고 소스/맨페이지를 참고하는게 한가지 방법일 듯 싶네요.

nskystars의 이미지

http://www.danlj.org/lad/src/index.html
여기에 나오는
ptypair.c
ptypair.h
ptytest.c
가상 콘솔을 열어서 거기다가 쉘을 실행하는 코드인데, 리눅스 가상 콘솔의 가장 핵심이 아닐까 싶네요. 여기다가 외부 출력을 stdout으로 하지 않고 프레임버퍼로 그려주면 프레임버퍼 콘솔이 되겠죠.

jfbterm을 예로 들어본다면, jfbterm 소스의 term.c에서 tterm_start 함수를 보면 위의 ptypair 소스와 상당히 유사합니다. 다른 프레임버퍼 콘솔들도 비슷하구요. 거기서 입력을 가로채서 한글 처리를 해주면 한글 입력도 가능할꺼구요. (http://hangul-jfbterm.kldp.net)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.