콘솔모드 한글 입력방법

터미널에서의 한글 입력은 문제 없으나

콘솔모드에서의 한글입력 및 출력이 불가한 상태입니다.

찾아보니,

/etc/default/locale
LANG=ko_KR.UTF-8

/etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
LANG="ko_KR.UTF-8"
LC_MESSAGES="POSIX"

상기 두가지 파일을 수정해줌으로써 해결을 하는것으로 판단되어 수행해 보았는데요.

locale 파일수정은 완료.

environment 파일 수정에서 저장을 하면

E212 : Can’t open file for writing

메시지가 출력됩니다.

해결방법좀 알려주시기 바랍니다.

또는 도움될만한 사이트 소개좀 부탁드립니다.

콘솔 모드에서 멀티바이트 문자셋의 입출력을 하기 위해서는 프레임버퍼라는 기능이 필요합니다.

sudo apt-get install jfbterm

을 실행하신 다음 다시 한번 테스트 해보세요. (아마 리붓해야 적용될겁니다)

답변 감사드립니다.

우선 설치후 x윈도로 넘어가지 않는 현상이 발생하였는데

좀더 연구해보겠습니다.

^^

콘솔모드에서 한글을 이용하려던 목적은 콘솔모드 사용시 출력되는 한글이 깨져 나와서입니다.

차라리 메시지가 영문으로 출력된다면 상관없을듯 한데

이미 여러방법들을 활용하여 손을 대놓아 어떻게 수정을 해야 할지 모르겠군요.

콘솔모드에서 영문으로만 출력되게 하려면 어떤 방법이 좋을까요?

locale 파일만 수정하면 되나요?

LANG=c
라고 입력하면 됩니다.
아니면 환경설정을 수정하면 되구요.

옛날 글을 읽다가…

[quote="SkyKiDS":12imgus4]LANG=c
라고 입력하면 됩니다.
아니면 환경설정을 수정하면 되구요.

옛날 글을 읽다가…[/quote:12imgus4]

감사합니다. 퇴근하고 해보도록 하겠습니다.

콘솔모드에서 다른 방법으로 영문표기하도록 하였더니,

GUI모드에서의 표기까지 바뀌더군요.(로그인시 언어설정으로 문제해결은 됩니다.)

사실 지금은 그냥 콘솔모드 안쓰고 터미널로 쓰고 있습니다.

[quote="lionzx":1834pb6w]GUI모드에서의 표기까지 바뀌더군요.(로그인시 언어설정으로 문제해결은 됩니다.)
사실 지금은 그냥 콘솔모드 안쓰고 터미널로 쓰고 있습니다.[/quote:1834pb6w]
아~ 맞네요. 저도 영문으로 GUI를 사용하고 있어요.

예전 DOS 시절에 한글 바이오스가 램을 잡아먹는 기억 때문에 꿈꾸는 가상화 호스트에는 한글 설정을 하지 않으려고 합니다.

!! 한글이 출력되게 하는 방법이야 다양하지만 zhcon, fbterm, jfbterm 등등..
!! 입력이 되게 하는 방법은 많지 않다.

!! 여러가지 찾아봤는데 zhcon, fbterm, jfbterm등등..

  1. zhcon 빠르고 중국,일본어등 입력을 지원하지만 한글은 지원하지 않는다. 패치를 하시려면 하시라..
    그러나 개발이 진행되지 않으므로, 업그레이드되는 환경을 절대 따라잡지 못할 것이므로 포기.

  2. jfbterm 설치 후 입력을 해봐도 안되더라.. 그래서 찾아본게 jfbterm-han과 jfbterm-uxp, jfbterm-nabi
    소스를 구해서 컴파일 데비안파일 까지 다 만들어 봤는데.. 의존성 문제가 있다. libhangul0의 버전떄문에..
    ibus와 충돌.. 심각하다 그리도 또 빠뜨릴 수 없는 문제.. exit하면 얼어버린다.
    X윈도우가 떠있다면 전환해서 kill할 수 있는 경우도 있지만 아예 먹통되서 리부팅 해야 하는 경우가 빈번..
    왜냐면 exit는 bash내장 명령으로 버릇처럼 항상 쓰이기 마련이므로..

  3. fbterm 설치후 ucimf, ucimf-openvanilla, openvanilla-imgeneric 를 설치한후
    fbterm -i fbterm-ucimf 이런식으로 하면 한글을 입력 할 수 있다.
    근데 ucimf 라는 입력방식이 중국어 입력 시스템에 맞춰져 있어서 입력하는게 상당히 불편하다.
    해보시면 머야 이러 실 것이다.


거의 몇 년은 포기했다보다..

그러다 구글링에서 찾아낸것 uim-fep 입력이 가능하단다.
찾아서 설치해봤으나 아무런 변화도 없고.. 흑흑..
그러다 다시 구글링에서 해법을 찾아냈으나, 안타깝게도 원본 주소를 잊어버려서..

http://www.yongbok.net/blog/?p=109

를 참조하시면 설정 jfbterm 설정 스크립트를 찾아볼 수 있다.

viewtopic.php?p=3556

를 참조하시면 자동실행에 대한 방법이 나와있지만 이를 조금 수정하였다.


본론으로 들어가서 콘솔입력의 최상의 방법인 jfbterm + uim-fep을 구현해보자.

sudo apt-get install jfbterm uim uim-fep uim-byeoru uim-xim uim-applet-gnome uim-qt uim-gtk2.0

** X윈도우에서도 uim를 사용하자 **
#uim-qt (머냐 이건.. 큭큭 opera의 qt 환경에서 한글 입력)
im-switch로 uim선택
sudo update-alternatives --config xinput-ko_KR
그런후 uim을 선택
언어설정에서 한국어 설치를 눌러서 ibus–>uim으로 변경

++ ~/.bashrc 설정 ++
##여기서 부터 ------------------------------------------
IM=ibus
IM=uim

XIM=$IM
GTK_IM_MODULE=$IM
QT_IM_MODULE=$IM

##------------ 대단히 중요함 ----------------

요게 없으면 곧 죽어도 ibus와 붙으려고 함

XMODIFIERS=@im=$IM

export GTK_IM_MODULE QT_IM_MODULE XIM XMODIFIERS
##여기까지 ------------------------------------------

바꾼 후 에 맨위의 판넬에 Input method Indicator 를 추가 하고, 기본입력기를 벼루로 설정
벼루 키설정에서 한글키와 Ctrl+Space(반드시 넣어야 됨) Shift+Space 등을 추가.
로그아웃해서 세션을 다시 시작해야 ibus->uim으로 바뀜

벼루 키설정 파일은 ~/.uim.d/customs/custom-byeoru-keys1.scm에 저장됨 참고하시라.

** 콘솔에서 입력가능 하게 만들기 **
uim-fep를 실행한 후에 보면 밑에
byeoru[B A]라고 나옴.. exit라고 치면 입력기를 빠져나옴
입력기 전환은 Ctrl+Space로 Shift+Space나 한글키 안먹더라구요 아마도 키보드 설정 때문이겟지만..
바꾸기도 머하고 그냥 Ctrl+Space를 쓰기로 함
여기까진 X 터미널에서 해본것이고.

jfbterm나 fbterm 을 실행하려면 framebuffer를 설정 해야 되야겟지요.
grub.cfg는 변경하면 안된다고 머라머라하니 (update-grub으로 자동 생성)

++ /etc/default/grub파일에서 ++
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vga=788"
#로 프레임버퍼 드라이버를 로드하게 한다.
++여기 까지++

그리고 리부팅하고
jfbterm
uim-fep
한글 입력이 가능하다 (물론 gdm이나 X가 떠있지 않아도 된다)
exit를 입력하면 얼어버린다.

** 편하게 사용하기 **
터미널에서 로그인시 자동으로 jfbterm를 실행해 보자.
.bashrc에서 jfbterm이 실행되어 있으면 uim-fep를 실행되게끔 해보았으나 실패했다
mmap(mmio)에러가 난다. 그래서 .profile에 추가
jfbterm -q -e 명령으로 사용 해결..(-q는 조용히 하란 뜻임)
alias를 넣어보았으나 실패했다.

++ ~/.profile에 다음을 추가 ++
##여기서 부터 ------------------------------------------
tty_tmp=tty | sed -e "s/\/dev\/\([ty]*\)\([0-9]*\).*/\1 \2/"
ttytype=${tty_tmp%% *}

#콘솔에서 로그인 한경우
if [ "$ttytype" == "tty" ]; then
echo "You are in Console."
ttyno=${tty_tmp##* }
# 원하는 tty 번호를 입력하자 예시는 (3-6번 tty)까지를 사용하게 하고 있다.
for available in 3 4 5 6; do [ $ttyno -eq $available ] && {
echo "Intialize JFBTERM .."

    #로그인쉘의 PID를 기억함
    export JFBTERM_PID=$$
    #alias exit='[ "eval echo \$$" != "$JFBTERM_PID" ] && kill -9 $$ ]'
    #jfbterm실행하면서 입력기 로드..
    exec /usr/bin/jfbterm -q -e /usr/bin/uim-fep
#fi
}; done

#터미널에서 로그인 한 경우
else
echo "Maybe you are in X-Window."
fi
##여기 까지 ---------------------------------------------------

** exit시 얼어버리는 문제 임시방편 **

++ ~/.bash_aliases에 다음을 추가 ++
##여기서 부터 ------------------------------------------
#.profile에서 저장한 PID와 자신의 PID를 비교 같으면 아무짓도 안하고..

다르면(로그인쉘이 아니라면) 자신을 죽인다

어떻게 죽이느냐 exit는 alias하므로 exit명령을 사용할 수는 없을 것 이므로

kill -9 $$로 자신을 죽이라고 신호 보낸후 exit코드를 리턴하게 한다

echo|sed "d;q $!" 라는 코드는 sed가 죽으면서 $!(alias의 인수)를 exit코드로 반환하게 한다.

exit 1과 같은 명령의 처리법임.

alias exit=‘[ "eval echo \$$" != "$JFBTERM_PID" ] && ( kill -9 $$ ; echo|sed "d;q $!" )’
##여기 까지 -----------------------------------------------

여기 까지 하면 거의 문제 없이 한글 을 사용할 수 가 있다.
긴글을 읽어내느라 고생들 하셨겠지만…
제가 고생한것에 비하면 그건 아무것 도 아니니 이해 해 주시리라 믿는다.
uim-fep는 어떤 콘솔프로그램에서도 키보드문제등만 없다면 한글을 훌륭히 처리해준다.

!!! UIM 만세 UIM-FEP 만세 !!!

** 콘솔에서 영어로 보자구??? **
#하지만 한글입출력이 콘솔에서도 된다면.. 그럴필요가 없을껄?
##여기서 부터 ----------------------------------------
#위의 스크립트중
#콘솔에서 로그인 한경우
if [ "$ttytype" == "tty" ]; then
#밑에 다음을 넣으면 man페이지가 영어로 나옴
#export LANGUAGE=en_US.UTF-8;en;ko_KR.UTF-8;ko
#export LC_ALL="C" 혹은 export LC_ALL="en_US.UTF-8"로
#설정하면 기본 로케일을 미국영어로 인식함
##여기 까지 -------------------------------------------

** 추가 팁: gdm 띠우지 않기 **
++ /etc/init/gdm.conf 파일의 수정 ++
##여기서 부터 ------------------------------------------
start on ((filesystem
and (runlevel [!036]
#요기 밑에
#and runlevel 3
#을 추가 거부조건과 일치조건이 같아서 절대로 실행이 안 됨
##여기 까지----------------------------------------------