Tại sao bố cục bàn phím quốc tế của Mỹ trên Debian lại khác?


11

Chỉnh sửa : Tôi nhận ra rằng "vấn đề" không chỉ ở Ubuntu mà ở bản thân Debian và Ubuntu chỉ thừa hưởng nó, vì vậy tôi đã di chuyển nó từ Ask Ubuntu


Tôi đã sử dụng Linux trong 10 năm và gần đây tôi đã dành nhiều thời gian hơn với OSX.

Nhưng, tôi vẫn nhớ rằng lúc đầu tôi chọn bố cục bàn phím quốc tế của Hoa Kỳ và nó sẽ có đầu ra chính xác giống như bố trí bàn phím Windows (và gần đây nhất là bố cục quốc tế OSX US).

Tuy nhiên, một vài năm trước khi tôi cài đặt Ubuntu, tôi nhận thấy rằng cedilla không được in nữa (ç hoặc). Đây là sự kết hợp của các phím sau: '+ c. Thay vào đó, những gì tôi nhận được là thư ć.

Khi nào thì nó bắt đầu xảy ra và tại sao lại có sự khác biệt đối với hành vi trên các HĐH khác? Điều khiến tôi băn khoăn hơn nữa là thậm chí còn có bố cục bàn phím "US International thay thế", in chính xác các phím giống nhau! Vì vậy, những gì nó thay thế cho?

Điều này đã được báo cáo là một lỗi trở lại Canonical (không thể tìm thấy liên kết ngay bây giờ), nhưng bố cục bàn phím chưa bao giờ thay đổi trở lại như những gì tôi mong đợi. Tôi biết cách giải quyết để sửa nó theo những gì tôi cần, nhưng tôi chỉ muốn biết tại sao / khi nó trở nên khác biệt.


2
Bạn có thể nhập c-cedilla bằng AltGr+ ,. Nhưng khi nào / dù / tại sao nó thay đổi, tôi không biết.
Mikel

Cảm ơn các ý kiến. Tôi đã đánh dấu câu hỏi để nó có thể được di chuyển / sáp nhập ở đây. Tôi vẫn tin rằng đây là nơi thích hợp vì hành vi dường như đã được kế thừa từ Debian.
Pablo

Câu trả lời:


17

Tóm lược

  1. Nếu bạn đang sử dụng Ubuntu, có lẽ nó đã thay đổi vào khoảng năm 2005, khi bộ ký tự mặc định thay đổi từ ISO 8859-1 thành UTF-8.
  2. US Alternative International bổ sung một số chìa khóa chết.

Cài đặt khóa chết phụ thuộc vào ngôn ngữ và bộ ký tự của bạn.

Ví dụ:

  • en_US.UTF-8 được định nghĩa trong /usr/share/X11/locale/en_US.UTF-8/Compose
  • ISO 8859-1 được định nghĩa trong /usr/share/X11/locale/iso8859-1/Compose

Nếu bạn nhìn vào chúng bằng cách sử dụng grep, bạn có thể thấy có một sự khác biệt:

$ 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

Cụ thể là:

  • Mã hóa Latin1 : ', c=ç
  • Mã hóa UTF-8 : ', c=ć

Nhật ký git (( en_US.UTF-8 ) ( iso8859-1 )) cho thấy nó đã được như vậy kể từ ít nhất là năm 2004.


Sự khác biệt giữa Quốc tế Hoa Kỳ và Quốc tế thay thế Hoa Kỳ được xác định trong /usr/share/X11/xkb/symbols/us.

Cụ thể, bố trí Quốc tế Thay thế Hoa Kỳ bổ sung các khóa chết AltGr bổ sung này:

  • dead_macron: trên AltGr-trừ
  • dead_enameve: trên AltGr-parenleft
  • dead_abondot: trên AltGr-period
  • dead_abovering: trên AltGr-0
  • dead_doubleacute: trên AltGr-bằng (như đã trích dẫn đã được sử dụng)
  • dead_caron: trên AltGr-less (AltGr-shift-comma)
  • dead_cedilla: trên AltGr-dấu phẩy
  • dead_ogonek: trên AltGr-dấu chấm phẩy
  • dead_belowdot: trên AltGr-gạch dưới (AltGr-shift-minus)
  • dead_hook: trên câu hỏi AltGr
  • dead_horn: trên AltGr-plus (AltGr-shift-bằng)
  • dead_diaeresis: trên AltGr-dấu hai chấm (Alt-shift-dấu chấm phẩy)

Ví dụ:

  • Quốc tế Hoa Kỳ: AltGr+ -=¥
  • Quốc tế thay thế Hoa Kỳ: AltGr+ -, a=ā

UTF-8 trở thành mã hóa mặc định:


Tôi ước tôi có nhiều hơn một phiếu để đưa ra câu trả lời này.
chim cánh cụt359

Điều đáng chú ý <dead_acute> <c>là được ánh xạ lại ç(thay vì ć) nếu ngôn ngữ của bạn là pt_BR. Xem:/usr/share/X11/locale/pt_BR.UTF-8/Compose
Denilson Sá Maia

4

Bổ sung câu trả lời Vítor Souza

Sử dụng bố trí bàn phím quốc tế của Hoa Kỳ với Ngôn ngữ hệ điều hành bằng tiếng Anh và có một cây tuyết tùng đẹp .

Để có Ngôn ngữ tiếng Anh hoạt ç/Çđộng tốt ( 'c-> cedilla) không cần thiết phải thay đổi các tệp soạn thảo. Điều người ta phải làm là thiết lập LC_CTYPEmột ngôn ngữ chứa định nghĩa này:

<dead_acute> <c>            : "\347"    ccedilla.

Giống như pt_BR.UTF-8 (tiếng Bồ Đào Nha Brazil / Português Brasileiro).

Bản đồ bàn phím 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

Cập nhật ngôn ngữ

# source /etc/profile

Và cho tty:

Đặt sơ đồ bàn phím, phông chữ và sơ đồ phông chữ phù hợp, vd.

# nano /etc/vconsole.conf
KEYMAP=us-acentos
FONT=ter-114n
FONT_MAP=8859-1

OP đã không hỏi làm thế nào để sửa nó nhưng tại sao nó lại như vậy ngay từ đầu. Nếu không, tôi sẽ nâng cao điều này.
strugee

@strugge, bạn nói đúng. Tuy nhiên, phần tiếp theo đang làm điều đó và liên quan đến OP, Mikel đã trả lời nó một cách độc đáo.
Geyslan G. Bem

Nếu bất cứ ai xem câu trả lời này hữu ích, xin vui lòng đặt nó.
Geyslan G. Bem

2

Từ http://disi.unitn.it/~vitorouza/linux/ubfox-linux-10-10-maverick-meerkat/http://disi.unitn.it/~vitorouza/linux/ubfox-linux-10- 04-lucid-lynx / :

Vấn đề với tuyết tùng:

Một số đồng nghiệp tốt bụng đã quyết định rằng một c có dấu ((ć ć)) có ý nghĩa quan trọng hơn so với c với một cedilla (dành cho người khác), do đó, hành vi mặc định để nhấn '+ c trong bàn phím quốc tế với các phím chết giờ là hiện tại. Vì tôi là người Brazil chứ không phải người Rumani hay đại loại vậy, điều đó chắc chắn làm phiền tôi. '+ c được sử dụng để xuất ra “khắc một lần.

Để khắc phục, hãy chỉnh sửa bằng tập tin gốc /usr/lib/gtk-2.0/2.10.0/gtk.immodules , tìm dòng này:

"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa"

Và thêm: en after: wa, vì vậy nó trông như thế này:

"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa:en"

Chỉnh sửa cho Ubuntu 12.10 ( nguồn ):

tệp gtk.immodules cần chỉnh sửa được đặt tại:

/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules hoặc là /usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/gtk.immodules


Chỉnh sửa cho Debian Wheezy (và có thể là các nội dung gtk 3 khác)

Tập tin cần chỉnh sửa bây giờ

/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache

Các gtk20dòng trong bây giờ gtk30nhưng thêm :encuối cùng là giống nhau.


Để sửa nó cũng cho các ứng dụng không phải GTK, hãy chỉnh sửa root tệp /usr/share/X11/locale/en_US.UTF-8/Compose và thay đổi tất cả các phiên bản của ć với ç và tất cả các phiên bản của Ć với.

Thỉnh thoảng bạn có thể cần lặp lại một hoặc cả hai thao tác, khi bạn nâng cấp hệ thống của mình và nó sẽ đưa các tệp cấu hình trở lại nội dung ban đầu của chúng.


Để giữ cho trình quản lý gói không thay đổi các thay đổi của bạn, bạn có thể chạy (với quyền root) dpkg-divert /usr/lib/gtk-2.0/2.10.0/gtk.immodules. Hệ thống gói sau đó sẽ ghi vào gtk.immodules.distribthay thế. Để hoàn tác điều này, hãy thêm --removecờ vào cùng một lệnh và sao chép tệp .distrib so với bản gốc. Để biết thêm thông tin , man dpkg-divert.
Jander

trong ubfox 12.10, tệp có vị trí khác: /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules hoặc /usr/lib/i386-linux-gnu/gtk-2.0/ 2.10.0 / gtk.immodules

0

Đây là một bổ sung cho câu trả lời của Vítor Souza .

Trong Xfce Quantal (Xubfox 12.10, Mint 14 Xfce) không thể giải quyết điều này bằng các phương pháp đã được đề cập (xem bên dưới). Những gì đã làm việc là cài đặt ibusgói và phụ thuộc của nó.

( Nguồn - chính xác hơn ở đây .)


Giải pháp cũ hơn không hiệu quả với tôi: trong Ubuntu 12.10, tệp gtk.immodulescó một vị trí khác:

/usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules

hoặc là

/usr/lib/i386-linux-gnu/gtk-2.0/2.10.0/gtk.immodules

(Nguồn của tôi cho việc này ở đây .)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.