Mengapa tata letak keyboard internasional AS di Debian berbeda?

11

Sunting : Saya menyadari bahwa "masalah" itu tidak hanya di Ubuntu tetapi di Debian sendiri dan Ubuntu hanya mewarisinya, jadi saya memigrasikannya dari Ask Ubuntu


Saya telah menggunakan dan menonaktifkan Linux selama 10 tahun, dan baru-baru ini saya menghabiskan lebih banyak waktu dengan OSX.

Tapi, saya masih ingat bahwa pada awalnya saya akan memilih tata letak keyboard internasional AS dan akan memiliki output yang sama persis dengan tata letak keyboard Windows (dan yang paling baru, tata letak internasional AS OSX).

Namun, beberapa tahun yang lalu ketika saya menginstal Ubuntu, saya perhatikan bahwa cedilla tidak dicetak lagi (ç atau Ç). Ini adalah kombinasi dari tombol-tombol berikut: '+ c. Sebaliknya, yang saya dapatkan adalah huruf ć.

Kapan itu mulai terjadi, dan mengapa perbedaan perilaku pada OS lain? Yang lebih membingungkan saya adalah bahwa ada tata letak keyboard "Alternatif AS", yang mencetak tombol yang persis sama! Jadi, apa alternatifnya?

Ini telah dilaporkan sebagai bug kembali ke Canonical (tidak dapat menemukan tautan sekarang), tetapi tata letak keyboard tidak pernah berubah kembali ke apa yang saya harapkan. Saya tahu solusi untuk memperbaikinya sesuai dengan yang saya butuhkan, tetapi saya hanya ingin tahu mengapa / ketika itu menjadi berbeda.

Pablo
sumber
2
Anda dapat memasukkan c-cedilla menggunakan AltGr+ ,. Tetapi ketika / apakah / mengapa itu berubah, saya tidak tahu.
Mikel
Terima kasih atas komentarnya. Saya telah menandai pertanyaan itu sehingga dapat dipindahkan / digabungkan di sini. Saya masih percaya di sini adalah tempat yang tepat karena kelihatannya perilaku tersebut diwarisi dari Debian.
Pablo

Jawaban:

17

Ringkasan

  1. Jika Anda menggunakan Ubuntu, mungkin berubah sekitar tahun 2005, ketika rangkaian karakter default berubah dari ISO 8859-1 ke UTF-8.
  2. Alternatif AS Internasional menambahkan beberapa kunci mati.

Pengaturan kunci mati tergantung pada set lokal dan karakter Anda.

Sebagai contoh:

  • en_US.UTF-8 didefinisikan dalam /usr/share/X11/locale/en_US.UTF-8/Compose
  • ISO 8859-1 didefinisikan dalam /usr/share/X11/locale/iso8859-1/Compose

Jika Anda melihatnya menggunakan grep, Anda dapat melihat ada perbedaan:

$ 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

Yaitu:

  • Latin1 encoding: ', c=ç
  • UTF-8 encoding: ', c=ć

Log git (( en_US.UTF-8 ) ( iso8859-1 )) menunjukkan sudah seperti ini sejak setidaknya 2004.


Perbedaan antara US International dan US Alternative International didefinisikan dalam /usr/share/X11/xkb/symbols/us.

Yaitu, tata letak Alternatif Internasional AS menambahkan kunci-kunci mati AltGr tambahan ini:

  • dead_macron: di AltGr-minus
  • dead_breve: di AltGr-parenleft
  • dead_abovedot: pada AltGr-period
  • dead_abovering: di AltGr-0
  • dead_doubleacute: pada AltGr-sama (seperti dikutipbl sudah digunakan)
  • dead_caron: di AltGr-less (AltGr-shift-koma)
  • dead_cedilla: di AltGr-koma
  • dead_ogonek: di AltGr-titik koma
  • dead_belowdot: pada AltGr-garis bawah (AltGr-shift-minus)
  • dead_hook: di AltGr-pertanyaan
  • dead_horn: di AltGr-plus (AltGr-shift-sama)
  • dead_diaeresis: di AltGr-colon (Alt-shift-semicolon)

Sebagai contoh:

  • US International: AltGr+ -=¥
  • Alternatif Internasional AS: AltGr+ -, a=ā

UTF-8 menjadi penyandian default:

Mikel
sumber
Saya berharap saya memiliki lebih dari satu suara untuk memberikan jawaban ini.
penguin359
Perlu dicatat bahwa <dead_acute> <c>memetakan kembali ke ç(bukan ć) jika lokal Anda pt_BR. Lihat:/usr/share/X11/locale/pt_BR.UTF-8/Compose
Denilson Sá Maia
4

Melengkapi jawaban Vítor Souza

Menggunakan tata letak keyboard internasional AS dengan Bahasa OS dalam Bahasa Inggris dan memiliki cedilla yang indah .

Agar Bahasa Inggris ç/Çberfungsi dengan baik ( 'c-> cedilla) tidak perlu mengubah file penulisan. Yang harus dilakukan adalah menyetel LC_CTYPEdengan locale yang berisi definisi ini:

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

Seperti pt_BR.UTF-8 (Bahasa Portugis Brasil / Português Brasileiro).

Peta keyboard 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

Perbarui lokal

# source /etc/profile

Dan untuk tty:

Atur keymap yang tepat, font dan peta font, mis.

# nano /etc/vconsole.conf
KEYMAP=us-acentos
FONT=ter-114n
FONT_MAP=8859-1
Geyslan G. Bem
sumber
OP tidak bertanya bagaimana cara memperbaikinya tetapi mengapa memang begitu. Kalau tidak, saya akan membatalkan ini.
strugee
@ Strugge, kamu benar. Namun sekuel melakukannya dan relatif terhadap OP, Mikel menjawabnya dengan baik.
Geyslan G. Bem
Jika ada yang menganggap jawaban ini bermanfaat, silakan atur.
Geyslan G. Bem
2

Dari http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10-10-maverick-meerkat/ dan http://disi.unitn.it/~vitorsouza/linux/ubuntu-linux-10- 04-lucid-lynx / :

Masalah dengan cedilla:

Beberapa orang baik memutuskan bahwa aksen c ("ć") lebih penting daripada c dengan cedilla ("ç"), jadi perilaku default untuk menekan '+ c di keyboard internasional dengan tombol kunci sekarang adalah "ć". Karena saya orang Brasil dan bukan orang Rumania atau semacamnya, itu jelas mengganggu saya. '+ c digunakan untuk menampilkan "ç" pada suatu waktu.

Untuk memperbaikinya, edit sebagai root file /usr/lib/gtk-2.0/2.10.0/gtk.immodules , temukan baris ini:

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

Dan tambahkan: id setelah: wa, sehingga terlihat seperti ini:

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

Edit untuk Ubuntu 12.10 ( sumber ):

file gtk.immodules yang akan diedit terletak di:

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


Sunting untuk Debian Wheezy (dan mungkin barang gtk 3 lainnya)

File yang perlu diedit sekarang

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

Di gtk20dalam baris sekarang gtk30tetapi menambahkan :enpada akhirnya sama saja.


Untuk memperbaikinya juga untuk aplikasi non-GTK, edit sebagai root file /usr/share/X11/locale/en_US.UTF-8/Compose dan ubah semua instance dari ć dengan ç, dan semua instance Ć dengan Ç.

Anda mungkin perlu mengulangi satu atau kedua operasi dari waktu ke waktu, ketika Anda meningkatkan sistem Anda dan itu mengambil file konfigurasi kembali ke konten aslinya.

Komunitas
sumber
Agar manajer paket tidak menginjak perubahan Anda, Anda dapat menjalankan (sebagai root) dpkg-divert /usr/lib/gtk-2.0/2.10.0/gtk.immodules. Sistem paket akan menulis gtk.immodules.distribsebagai gantinya. Untuk membatalkan ini, tambahkan --removebendera ke perintah yang sama dan salin file .distribusikan di atas yang asli. Untuk info lebih lanjut man dpkg-divert,.
Jander
di ubuntu 12.10, file memiliki lokasi berbeda: /usr/lib/x86_64-linux-gnu/gtk-2.0/2.10.0/gtk.immodules, atau /usr/lib/i386-linux-gnu/gtk-2.0/ 2.10.0 / gtk.immodules
0

Ini datang sebagai pelengkap jawaban Vítor Souza .

Dalam Xfce Quantal (Xubuntu 12.10, Mint 14 Xfce) tidak dapat menyelesaikan ini dengan metode yang telah disebutkan (lihat di bawah). Apa yang berhasil adalah menginstal ibuspaket dan dependensinya.

( Sumber - lebih tepatnya di sini .)


Solusi yang lebih lama tidak berhasil untuk saya: di Ubuntu 12.10, file tersebut gtk.immodulesmemiliki lokasi yang berbeda:

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

atau

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

(Sumber saya untuk ini di sini .)

Komunitas
sumber