จะกำหนด Compose Key ในเทอร์มินัลได้อย่างไร (ไม่มีสภาพแวดล้อมบนเดสก์ท็อป)


17

ฉันต้องการกำหนดcomposeคีย์ในระบบของฉัน (Debian Sid "Wheezy") ฉันไม่มี Xorg (และไม่ต้องการสภาพแวดล้อมเดสก์ทอปใด ๆ ) เฉพาะในเทอร์มินัล

ฉันต้องการตั้งค่าAlt-Grกุญแจของฉัน(ขวาAlt) ฉันลองมาระยะหนึ่งแล้ว แต่ไม่สามารถหาวิธีตั้งค่าได้

ฉันกำลังตรวจสอบและพบคำแนะนำ:

  • $ showkeyให้รหัสAlt-Grกุญแจของกุญแจแก่ฉัน(# 100)

  • $ dumpkeysและ$ dumpkeys --compose-onlyเอาท์พุท "เนื้อหาปัจจุบันของไดรเวอร์ของแป้นพิมพ์" ในรูปแบบที่ระบุโดยkeymapsตามmanหน้า

  • $ loadkeys โหลดตารางแปลคีย์บอร์ด

ฉันแน่ใจว่ามันไม่ใช่เรื่องยาก แต่ฉันพลาดวิธีจัดการกับ ...


หืมฉันไม่ได้ติดตาม 100% คุณต้องการให้ Alt-Gr ทำอะไรเมื่อคุณกดมัน
Emanuel Berg

ผมอยากให้เป็นเขียนที่สำคัญ ที่จริงแล้วฉันแค่ต้องการกำหนดคีย์เขียนที่ใดที่หนึ่งและเนื่องจากฉันเคยมีไว้ใน Alt-Gr ของฉันฉันต้องการกำหนดไว้ที่นั่น มันง่ายมากที่จะตั้งค่าด้วย GUIแต่ฉันควรจะสามารถกำหนดได้ในโหมดคอนโซลบริสุทธิ์เนื่องจากฉันไม่ได้ติดตั้งระบบ X (ไม่ใช่ตัวเลือก) ฉันไม่สามารถหาวิธีได้
cedbeu

คำตอบ:


10

ในระบบ Debian และ Ubuntu ที่ใหม่กว่าการตั้งค่าแป้นพิมพ์ของคุณจะถูกติดตั้ง/etc/default/keyboardและใช้งานร่วมกันระหว่าง X และคอนโซล เพียงแค่วิ่ง

sudo dpkg-reconfigure keyboard-configuration

และเลือกCompose key: Right Alt (AltGr)บนหน้าจอที่เหมาะสม

นอกจากนี้คุณยังสามารถใส่XKBOPTIONS=compose:raltใน/etc/default/keyboardและเรียกใช้

sudo dpkg-reconfigure console-setup

ระบบที่เก่ากว่ามีคีย์เขียนบนคอนโซลโดยค่าเริ่มต้น ในusเค้าโครงการกดทั้งสอง Altปุ่มร่วมกันทำหน้าที่เหมือนComposeกัน 1

ตัวอย่างเช่น: Alt+ AltGr, ", A=> Ä

หากคุณต้องการเป็นAltGrเพียงComposeคุณต้องเปลี่ยน

alt keycode 100 = Compose

ในแผนที่แป้นพิมพ์ที่ใช้งานของคุณเพื่อ

keycode 100 = Compose

/lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.incวิธีที่ง่ายที่สุดในการทำเช่นนี้จะทำให้เกิดการเปลี่ยนแปลงข้างต้น

วิธีที่ดีกว่าคือการสร้างไฟล์ใหม่ที่/lib/kbd/keymaps/i386/include/altgr-is-compose.incมีบรรทัดด้านบนสร้าง keymap ใหม่ที่รวมไว้และตั้งเป็น keymap เริ่มต้นของคุณ

  1. PrtScnยังทำหน้าที่เป็นComposeค่าเริ่มต้น

ฉันไม่ได้รับสิ่งนี้ให้ทำงาน dpkg-reconfigureตัวช่วยสร้างแน่นอนถามเกี่ยวกับคีย์เขียน แต่มันบอกว่ามันไม่ทำงานในโหมด "Unicode" (?) นอกจากนี้เมื่อไม่ได้อยู่ในโหมดนั้นมันบอกว่า Control + period ทำงานเป็นคีย์เขียน แต่ฉันก็ไม่ได้ทำงานแบบนั้นเช่นกัน
Emanuel Berg

unicode_startผมคิดว่าข้อความเตือนหมายถึง สำหรับฉันมันยังใช้งานได้ถ้าฉันวิ่งsetupconตามที่dpkg-reconfigureพูดไว้
Mikel

เมื่อฉันทำงานsetupconใน X terminal ของฉัน ( urxvt) จะมีข้อความระบุว่า "เราไม่ได้อยู่บนคอนโซลคอนโซลดังกล่าวจะถูกยกเลิกการกำหนดค่า" นอกจากนี้ยังshowkeyบ่นว่า "ไม่สามารถรับไฟล์ descriptor ไปยังคอนโซล" ในttyทั้งสองสิ่งนั้นทำงาน แต่showkeyบอกว่า (สิ่งแรก) ที่ "โหมด kb คือ UNICODE" ดังนั้นบางทีนั่นอาจเป็นเหตุผลว่าทำไมมันถึงไม่ทำงาน แต่ช่วงเวลา Control + ทำงานttyได้ ตกลงมันสมเหตุสมผลแล้ว
Emanuel Berg

คำถามของคุณบอกว่าคุณไม่มีX? คุณต้องรันsetupconบนคอนโซลเสมือน Linux เช่น Ctrl + Alt + F1
มิเคล

1
ดูเหมือนว่าconsole-setupไม่สนับสนุนการเขียนเรียงลำดับมากโดยค่าเริ่มต้น คุณสามารถวิ่งdumpkeys --compose-onlyเพื่อดูว่าอันไหน คุณควรจะสามารถที่จะปรับเปลี่ยนconsole-setupสคริปต์ init loadkeysเพื่อเพิ่มกฎการเขียนเพิ่มเติมที่มันวิ่ง
มิเคล

2

"เรียบเรียง" บนคอนโซลอนุญาตให้พิมพ์อักขระสองตัว แต่ส่งออกอักขระที่สาม

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

เพื่อให้ทำงานใน UTF-8 ซึ่งเป็นมัลติไบต์ (1 ถึง 4 ไบต์อย่างน้อย) จะต้องมีการเปลี่ยนแปลงอย่างมากในวิธีการจัดการอินพุตคอนโซลและแทนที่อาร์เรย์ char แบบธรรมดาที่ปัจจุบันใช้โดยบางสิ่งที่ซับซ้อนกว่า ดูเหมือนว่าไม่มีแผนจะทำเช่นนั้น (ความเห็นร่วมกันระหว่างเคอร์เนล devlopers คือคอนโซลควรยังคงเป็นคอนโซลซึ่งเป็นสิ่งที่เรียบง่ายใช้สำหรับการส่งข้อความครั้งสุดท้ายเท่านั้นหากคุณต้องการยูนิโค้ดจริง ๆ แล้วคุณอาจต้องใช้ bidi มันจะดีกว่าที่จะเรียกใช้กราฟิก terminal (xterm แบบเต็มหน้าจอบน X11; แต่มีความเป็นไปได้อื่น ๆ )

ดังนั้นมันจึงใช้งานไม่ได้และใช้งานไม่ได้กับตัวอักษรหลายไบต์บนคอนโซล แต่ก็ยังใช้งานได้ถ้าคุณจำกัดความหมายของการเขียนเป็น ASCII ธรรมดา

และฉันยังพบว่ามันยังใช้งานได้หากเอาต์พุตอยู่ใน iso-8859-1 (ที่สอดคล้องกับค่า Unicode สูงถึง 0x00ff); สำหรับสิ่งที่คุณสามารถใส่ในบรรทัดเริ่มต้นสคริปต์:

    loadkeys / somepath / somefile

และใส่คำจำกัดความการเขียนที่คุณต้องการในไฟล์นั้น (โปรดใช้ความระมัดระวังในการบันทึกไฟล์ในการเข้ารหัส ISO-8859-1 และใช้ตัวอักษรที่มีขนาดใหญ่กว่า 0x7f เป็นเอาต์พุตเท่านั้น) ไวยากรณ์ของไฟล์ดังกล่าวนั้นง่ายมาก

    เขียน 'somechar' 'somotherchar' เป็น 'Preferredoutput'

เช่น:

    เขียน 'a' 'a' เป็น 'å'
    เขียน 'a' 'e' เป็น 'æ'

อะพอสโทรฟีต้องหลบหนี

ผลของคีย์กำกับจะถูกกำหนดไว้ในไฟล์นั้นด้วย; สำหรับ dead_acute + a คุณกำหนดบรรทัดเช่น:

    เขียน '\' '' a 'เป็น' á '

dead_grave ใช้ backtick (`), dead_diaeresis ใช้ doublequote ("), dead_circumflex ใช้ circumflex (^) และ dead_tilde ใช้ tilde (~)


ขอบคุณขอให้มันใช้งานได้ เท่านั้นฉันต้องเปลี่ยนcompose 'a' 'a' to 'å'เป็นcompose 'o' 'a' to U+00E5อย่างอื่นloadkeysบ่นเกี่ยวกับข้อผิดพลาดทางไวยากรณ์
Emanuel Berg

เมื่อคุณใช้ 'å' คุณเขียนไฟล์ใน iso-8859-1 (ไม่ใช่ utf-8) หรือไม่?
Pablo Saratxaga

ฉันไม่รู้ ฉันจะตรวจสอบสิ่งนั้นได้อย่างไร
Emanuel Berg

เพื่อทดสอบว่าไฟล์อยู่ใน utf-8 iconv -f utf-8 -t utf-8 filename หรือไม่: หากไม่มีข้อผิดพลาดไฟล์จะอยู่ใน utf-8
Pablo Saratxaga

ที่ดูเหมือนจะแมวไฟล์ แต่ไม่มีไม่มีข้อผิดพลาดในอย่างน้อยและส่งออกไปยังไม่มีecho $? stderrนอกจากนี้fileบอกฉันว่ามันเป็น UTF-8 ดังนั้นจึงสมเหตุสมผล
Emanuel Berg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.