편집하다: 이 "문제"가 우분투뿐만 아니라 데비안 자체에도 존재하고 우분투가 이를 상속받았다는 것을 깨달았기 때문에 이 문제를 Ask Ubuntu에서 마이그레이션했습니다.
저는 10년 동안 Linux를 사용했다가 사용하지 않고 사용해 왔으며 최근에는 OSX에 더 많은 시간을 보내고 있습니다.
그러나 처음에는 Windows 키보드 레이아웃(그리고 최근에는 OSX 미국 국제 레이아웃)과 정확히 동일하게 출력되는 미국 국제 키보드 레이아웃을 선택했다는 것을 아직도 기억합니다.
그런데 몇 년 전 우분투를 설치했을 때 움라우트(ç 또는 Ç)가 더 이상 인쇄되지 않는 것을 발견했습니다. 다음은 키 조합입니다: ' + c. 대신 ć 문자를 받습니다.
언제 발생하기 시작했으며 다른 운영 체제와 다르게 동작하는 이유는 무엇입니까? 나를 더욱 혼란스럽게 만드는 것은 정확히 동일한 키를 인쇄하는 "US International Alternative" 키보드 레이아웃이 있다는 것입니다! 그렇다면 무엇을 대체할 수 있을까요?
이는 Canonical에 버그로 보고되었지만(현재 링크를 찾을 수 없음) 키보드 레이아웃은 내가 기대한 대로 다시 변경되지 않습니다. 이 문제를 해결하기 위한 해결 방법이 나에게 필요한 것임을 알고 있지만 왜/언제 달라지는지 알고 싶습니다.
답변1
일반화하다
- Ubuntu를 사용하고 있다면 기본 문자 집합이 ISO 8859-1에서 UTF-8로 변경된 2005년경에 변경되었을 것입니다.
- American Alternative International은 일부 데드 키를 추가했습니다.
데드 키 설정은 로케일 및 문자 집합에 따라 다릅니다.
예를 들어:
en_US.UTF-8
에 정의됨/usr/share/X11/locale/en_US.UTF-8/Compose
ISO 8859-1
에 정의됨/usr/share/X11/locale/iso8859-1/Compose
다음을 사용하여 보는 경우 grep
:
$ grep '<dead_acute> <c>' /usr/share/X11/locale/en_US.UTF-8/Compose
<dead_acute> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE
$ grep '<dead_acute> <c>' /usr/share/X11/locale/iso8859-1/Compose
<dead_acute> <c> : "\347" ccedilla
지금 바로:
- Latin1 인코딩: ', c=
ç
- UTF-8 인코딩: ', c=
ć
자식 로그((en_US.UTF-8) (ISO8859-1)) 이는 적어도 2004년 이후부터 그랬음을 시사합니다.
American International과 American Alternative International의 차이점은 에 정의되어 있습니다 /usr/share/X11/xkb/symbols/us
.
즉, US Alternative International 레이아웃은 AltGr 데드 키를 추가합니다.
- dead_macron: AltGr 빼기 기호
- dead_breve: AltGr-parenleft에서
- dead_abovedo: AltGr 주기에서
- dead_overing: AltGr-0에서
- dead_doubleacute: AltGr-equal(quotedbl이 이미 사용되었으므로)
- dead_caron: AltGr 없음(AltGr-shift-쉼표)
- dead_cedilla: AltGr 쉼표에
- dead_ogonek: AltGr 세미콜론 위에
- dead_belowdot: AltGr에 밑줄(AltGr 시프트 빼기 기호)
- dead_hook: AltGr 문제 정보
- dead_horn: AltGr-plus (AltGr-shift-equal)
- dead_diaeresis: AltGr 콜론(Alt-shift-세미콜론)
예를 들어:
- 미국 국제: AltGr+ -=
¥
- 미국 대안 국제: AltGr+ -, a=
ā
UTF-8이 기본 인코딩이 됩니다.
답변2
Vítor Souza의 답변에 추가
사용미국 국제 키보드 레이아웃운영 체제 언어는영어그리고 아름다운발음 구별 부호.
영어가 완벽하게 작동하려면 ç/Ç
( 'c-> cedilla ) 작성 파일을 변경할 필요가 없습니다. 당신이 해야 할 일은 LC_CTYPE
다음 정의를 포함하는 로케일로 설정하는 것뿐입니다:
<dead_acute> <c> : "\347" ccedilla.
예를 들어 pt_BR.UTF-8(Português Brasileiro)입니다.
X 키보드 다이어그램:
# setxkbmap -layout us -variant intl
/etc/locale.conf
# nano /etc/locale.conf
LANG=en_US.UTF-8
LANGUAGE="en_US"
LC_CTYPE=pt_BR.UTF-8
로케일 업데이트
# source /etc/profile
tty의 경우:
올바른 키맵, 글꼴 및 글꼴 매핑을 설정하십시오.
# nano /etc/vconsole.conf
KEYMAP=us-acentos
FONT=ter-114n
FONT_MAP=8859-1
답변3
~에서http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10-10-maverick-meerkat/그리고http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10-04-lucid-lynx/:
발음 구별 부호 문제:
일부 선의의 사람들은 발음 구별 기호("ç")가 있는 c보다 악센트가 있는 c("ć")가 더 중요하다고 결정했기 때문에 데드 키가 있는 국제 키보드에서 '+c를 누르는 기본 동작은 이제 "ć"입니다. ". 나는 브라질 사람이고 루마니아 사람도 아니기 때문에 이것이 확실히 나를 괴롭힌다. ' + c는 "ç"를 출력하는 데 사용됩니다.
이 문제를 해결하려면 파일을 루트로 편집하세요./usr/lib/gtk-2.0/2.10.0/gtk.immodules, 다음 줄을 찾으세요.
"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa"
그리고 :wa 뒤에 :en을 추가하면 다음과 같습니다.
"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa:en"
Ubuntu 12.10용으로 편집됨(원천):
편집할 gtk.immodules 파일은 다음 위치에 있습니다.
/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules
또는/usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/gtk.immodules
Debian Wheezy 편집(그리고 아마도 다른 gtk 3 항목도 포함)
지금 편집해야 할 파일은 다음과 같습니다.
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache
gtk20
이제 줄에 있지만 끝에 gtk30
추가하는 것은 :en
동일합니다.
GTK가 아닌 애플리케이션 관련 문제를 해결하려면 이 파일을 루트로 편집하세요./usr/share/X11/locale/en_US.UTF-8/Compose그리고 ć의 모든 인스턴스를 ç로 변경하고 Ć의 모든 인스턴스를 Ç로 변경합니다.
시스템을 업그레이드하고 구성 파일을 원래 내용으로 복원할 때 때때로 작업 중 하나 또는 둘 다를 반복해야 할 수도 있습니다.
답변4
이것이 바로 보완이다비토 소사의 답변.
Xfce Quantal(Xubuntu 12.10, Mint 14 Xfce)에서는 이미 언급한 방법(아래 참조)으로는 이 문제를 해결할 수 없습니다. 작동하는 것은 설치 ibus
패키지와 해당 종속성입니다.
이전 솔루션은 저에게 효과가 없었습니다. Ubuntu 12.10에서는 파일 gtk.immodules
위치가 다릅니다.
/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules
또는
/usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/gtk.immodules
(내 출처여기.)