เหตุใดรูปแบบแป้นพิมพ์สากลของสหรัฐอเมริกาใน Debian จึงแตกต่างกัน


11

แก้ไข : ฉันรู้ว่า "ปัญหา" ไม่เพียง แต่ใน Ubuntu แต่ใน Debian เองและ Ubuntu เพิ่งสืบทอดมันดังนั้นฉันจึงย้ายข้อมูลจาก Ask Ubuntu


ฉันใช้ Linux ในการเปิดและปิดเป็นเวลา 10 ปีและเมื่อเร็ว ๆ นี้ฉันใช้เวลากับ OSX มากขึ้น

แต่ฉันยังจำได้ว่าในตอนแรกฉันเลือกเค้าโครงแป้นพิมพ์ระหว่างประเทศของสหรัฐอเมริกาและจะมีผลลัพธ์เหมือนกับเค้าโครงแป้นพิมพ์ Windows (และล่าสุดคือเค้าโครงระหว่างประเทศ OSX US)

อย่างไรก็ตามเมื่อไม่กี่ปีที่ผ่านมาเมื่อฉันติดตั้ง Ubuntu ฉันสังเกตว่า cedilla ไม่ได้ถูกพิมพ์อีกต่อไป (çหรือÇ) นี่คือการรวมกันของปุ่มต่อไปนี้: '+ c สิ่งที่ฉันได้รับคือจดหมายć

มันเริ่มเกิดขึ้นเมื่อไหร่และทำไมความแตกต่างของพฤติกรรมในระบบปฏิบัติการอื่น ๆ ? สิ่งที่ทำให้ฉันคิดมากยิ่งขึ้นก็คือแม้จะมีรูปแบบแป้นพิมพ์ "US International Alternative" ซึ่งพิมพ์คีย์เดียวกันทั้งหมด! ดังนั้นมันคืออะไรแทน

สิ่งนี้ได้รับการรายงานว่าเป็นข้อผิดพลาดกลับไปที่ Canonical (ไม่สามารถหาลิงก์ได้ในตอนนี้) แต่รูปแบบแป้นพิมพ์ไม่เคยเปลี่ยนกลับไปเป็นสิ่งที่ฉันคาดหวัง ฉันรู้วิธีแก้ปัญหาเพื่อแก้ไขสิ่งที่ฉันต้องการ แต่ฉันแค่อยากจะรู้ว่าทำไม / เมื่อมันแตกต่างกัน


2
คุณสามารถป้อน C-cedilla ใช้+AltGr ,แต่เมื่อไหร่ / ทำไม / ทำไมมันถึงเปลี่ยนไปฉันไม่รู้
มิเคล

ขอบคุณสำหรับความคิดเห็น ฉันตั้งค่าสถานะคำถามเพื่อให้สามารถย้าย / รวมที่นี่ได้ ฉันยังเชื่อว่าที่นี่เป็นสถานที่ที่เหมาะสมเนื่องจากพฤติกรรมที่ดูเหมือนว่าจะได้รับการถ่ายทอดจาก Debian
Pablo

คำตอบ:


17

สรุป

  1. หากคุณใช้ Ubuntu มันอาจเปลี่ยนไปประมาณปี 2005 เมื่อชุดอักขระเริ่มต้นเปลี่ยนจาก ISO 8859-1 เป็น UTF-8
  2. US 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=ć

บันทึก git (( en_US.UTF-8 ) ( iso8859-1 )) แสดงว่าเป็นเช่นนี้มาตั้งแต่อย่างน้อยปี 2004


/usr/share/X11/xkb/symbols/usความแตกต่างระหว่างสหรัฐนานาชาติและสหรัฐอเมริกาทางเลือกนานาชาติที่กำหนดไว้ใน

รูปแบบทางเลือกของสหรัฐอเมริการะหว่างประเทศคือเพิ่มปุ่มกด AltGr พิเศษเหล่านี้:

  • dead_macron: บน AltGr-ลบ
  • dead_breve: บน AltGr-parenleft
  • dead_abovedot: บน AltGr-period
  • dead_abovering: บน AltGr-0
  • dead_doubleacute: บน AltGr-equal (ตามที่ยกมาใช้แล้ว)
  • dead_caron: บน AltGr-less (AltGr-shift-จุลภาค)
  • dead_cedilla: บน AltGr-comma
  • dead_ogonek: บน AltGr-semicolon
  • dead_belowdot: บน AltGr-underscore (AltGr-shift-ลบ)
  • dead_hook: บน AltGr-question
  • dead_horn: บน AltGr-plus (AltGr-shift-เท่ากับ)
  • dead_diaeresis: บน AltGr-colon (Alt-shift-semicolon)

ตัวอย่างเช่น:

  • US International: AltGr+ -=¥
  • US Alternative International: AltGr+ -, a=ā

UTF-8 กลายเป็นการเข้ารหัสเริ่มต้น:


ฉันหวังว่าฉันจะได้รับมากกว่าหนึ่งคะแนนสำหรับคำตอบนี้
penguin359

เป็นเรื่องน่าสังเกตที่<dead_acute> <c>ถูกแมปไปที่ç(แทนที่จะć) หากสถานที่ของคุณคือ pt_BR ดู:/usr/share/X11/locale/pt_BR.UTF-8/Compose
Denilson Sá Maia

4

การตอบสนองVítor Souza

โดยใช้รูปแบบแป้นพิมพ์สหรัฐอเมริการะหว่างประเทศกับระบบปฏิบัติการภาษาในภาษาอังกฤษและมีความสวยงามcedilla

เพื่อให้มีภาษาอังกฤษกับç/Çการทำงานอย่างสวยงาม ( 'c-> cedilla) ไม่จำเป็นต้องเปลี่ยนไฟล์เขียน สิ่งที่ต้องทำคือการตั้งค่าLC_CTYPEด้วย locale ที่มีคำจำกัดความนี้:

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

ชอบ pt_BR.UTF-8 (บราซิลโปรตุเกส / โปรตุเกสของบราซิล)

แผนที่แป้นพิมพ์ 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

OP ไม่ได้ถามว่าจะแก้ไขได้อย่างไร แต่ทำไมมันเป็นแบบนั้นตั้งแต่แรก ไม่งั้นฉันจะลงคะแนนนี้
strugee

@strugge คุณพูดถูก อย่างไรก็ตามภาคต่อกำลังทำอยู่และสัมพันธ์กับ OP มิเคลตอบอย่างดี
Geyslan G. Bem

หากใครคิดว่าคำตอบนี้มีประโยชน์โปรดตั้งค่า
Geyslan G. Bem

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 / :

ปัญหากับ cedilla:

เพื่อนที่ดีบางคนตัดสินใจว่าสำเนียง c (“ ć”) มีความสำคัญมากกว่า c กับ cedilla (“ ç”) ดังนั้นพฤติกรรมเริ่มต้นสำหรับการกด '+ 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"

และเพิ่ม: en after: wa ดังนั้นจึงมีลักษณะเช่นนี้:

"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

The gtk20in the lines ตอนนี้gtk30แต่การเพิ่ม:enในตอนท้ายก็เหมือนกัน


หากต้องการแก้ไขสำหรับแอปพลิเคชันที่ไม่ใช่ GTK ให้แก้ไขเป็นรูทไฟล์/usr/share/X11/locale/en_US.UTF-8/Composeและเปลี่ยนอินสแตนซ์ทั้งหมดของćด้วยçและอินสแตนซ์ทั้งหมดของĆด้วยÇ

คุณอาจต้องทำซ้ำหนึ่งครั้งหรือทั้งสองอย่างเป็นครั้งคราวเมื่อคุณอัพเกรดระบบของคุณและใช้ไฟล์การกำหนดค่ากลับไปที่เนื้อหาดั้งเดิม


เพื่อให้ผู้จัดการแพคเกจจากก้าวในการเปลี่ยนแปลงของคุณคุณสามารถเรียกใช้ (เป็น dpkg-divert /usr/lib/gtk-2.0/2.10.0/gtk.immodulesroot) ระบบแพ็คเกจจะเขียนgtk.immodules.distribแทน หากต้องการเลิกทำสิ่งนี้ให้เพิ่มการ--removeตั้งค่าสถานะเป็นคำสั่งเดียวกันและคัดลอกไฟล์. dribrib ไปยังต้นฉบับ man dpkg-divertสำหรับข้อมูลเพิ่มเติม
Jander

ใน ubuntu 12.10 ไฟล์มีตำแหน่งอื่น: /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

0

นี้มาเป็นส่วนเติมเต็มให้กับคำตอบของVítor Souza

ใน 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

(ที่มาของฉันสำหรับสิ่งนี้ที่นี่ )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.