1. 문제 증상
갤럭시(One UI) 환경에서 Termux나 Termux 내
PRoot(Ubuntu 등)를 사용할 때 다음과 같은
현상이 발생합니다.
• 삼성 키보드에서 한/영 전환을 눌러 한글을
타이핑해도 화면에 아무 글자도 나타나지 않음
• 스페이스바나 엔터를 쳐야 글자가 뒤늦게
나타나거나, 초성/중성/종성 조합이 깨짐
• 영어나 기호는 잘 쳐지는데 한글만 씹히는
현상
──────
2. 왜 이런 문제가 생길까? (원인 분석)
원인은 크게 3가지가 복합적으로 작용하기
때문입니다.
- 삼성 키보드의 문자 조합(IME) 버퍼 방식:
삼성 키보드는 단어 예측 및 자모음 조합
버퍼를 사용합니다. 일반 앱에서는 정상
작동하지만, 터미널 에뮬레이터에서는 이 버퍼
데이터가 터미널로 즉시 전달되지 못합니다. - Ubuntu PRoot의 기본 로케일(Locale) 누락:
기본 설치된 리눅스 콘솔 로케일이 POSIX(기본
영문)로 되어 있으면 쉘이 한글 같은
멀티바이트 UTF-8 문자를 지원하지 못합니다. - Readline(쉘 입력기)의 메타 키 필터링:
bash 터미널의 입력 처리 라이브러리가 8비트
문자 데이터를 제어 코드로 오인하여 차단할
수 있습니다.
──────
3. 해결 방법 (3단계 적용)
1단계: Termux 문자 단위 입력 모드
활성화 (가장 중요!)
Termux 앱 자체의 설정에서 삼성 키보드 호환
옵션을 켜줍니다.
# Termux 홈 기준 설정 파일 수정
nano ~/.termux/termux.properties파일 내용 중 아래 줄을 찾습니다:
# enforce-char-based-input = true 앞의 # 주석을 제거하여 다음과 같이
변경합니다:
enforce-char-based-input = true저장 후 설정을 즉시 다시 불러옵니다:
termux-reload-settings──────
2단계: Ubuntu 환경 한국어
로케일(ko_KR.UTF-8) 생성
Ubuntu(PRoot) 내부로 들어와 한국어 UTF-8
로케일을 생성하고 기본값으로 지정합니다.
# 1. 한국어 UTF-8 로케일 생성
locale-gen ko_KR.UTF-8
# 2. 시스템 기본 로케일로 지정
update-locale LANG=ko_KR.UTF-8LC_ALL=ko_KR.UTF-8
# 3. 사용자 .bashrc 파일에 로케일 환경변수 추가
cat << 'EOF' >> ~/.bashrc
# Korean UTF-8 Locale
export LANG=ko_KR.UTF-8
export LC_ALL=ko_KR.UTF-8
EOF
# 4. 즉시 적용
source ~/.bashrc──────
3단계: 터미널 쉘(Readline) 8비트 한글
입력 허용
터미널 입력기가 한글 바이트를 그대로
통과시키도록 ~/.inputrc 파일을 만듭니다.
cat << 'EOF' > ~/.inputrc
set input-meta on
set output-meta on
set convert-meta off
EOF──────
4. 추가 팁
- 블루투스/물리 키보드를 사용할 때 한/영
전환이 안 될 경우:
• 갤럭시 안드로이드 **[설정] > [일반] >
[하드웨어 키보드]**로 이동합니다.
• 레이아웃을 **'한국어 키보드
(101/104키)'**로 변경합니다. (전환:
Shift + Space 또는 우측 Alt) - 화면 가상 키보드 대체 추천:
• 여전히 삼성 키보드가 버벅거린다면,
터미널 환경에 최적화된 Unexpected
Keyboard 또는 Gboard를 추천합니다.
1 댓글
그래도 씹힘이 남긴합니다. ???같은 것들이 오류네요
답글삭제