Linux ขาดโซลูชันการแมปคีย์ที่ดี เพื่อให้ได้ผลลัพธ์ที่น่าพอใจ จำเป็นต้องใช้เครื่องมือผสม (เช่น xcape, xmodmap) โดยที่ผลลัพธ์สุดท้ายมักจะถูกโยงเข้ากับสภาพแวดล้อมที่ระบุ (X11) พยายามใช้คีย์ในการแก้ปัญหานี้โดยจัดเตรียม daemon ทั่วทั้งระบบที่ยืดหยุ่น ซึ่งจะทำการแมปคีย์ใหม่โดยใช้อินพุตดั้งเดิมระดับเคอร์เนล (evdev, uinput)
รูปแบบการกำหนดค่ามีการทำซ้ำหลายครั้งนับตั้งแต่เปิดตัวครั้งแรก สำหรับผู้ที่ย้ายการกำหนดค่าจาก v1 วิธีที่ดีที่สุดคืออ่าน man page อีกครั้ง
ดูเพิ่มเติมที่: บันทึกการเปลี่ยนแปลง
keyd มีคุณสมบัติพิเศษหลายประการ ซึ่งส่วนใหญ่มักพบเฉพาะในเฟิร์มแวร์คีย์บอร์ดแบบกำหนดเอง เช่น QMK เท่านั้น รวมถึงคุณสมบัติบางอย่างที่มีลักษณะเฉพาะสำหรับการคีย์ด้วย
สิ่งที่น่าสนใจเพิ่มเติม ได้แก่ :
C-1
ใหม่โดยไม่ทำให้ซีแมนทิกส์ของตัวปรับแต่งเสียหายหมายเหตุ: master ทำหน้าที่เป็นสาขาการพัฒนา สิ่งต่าง ๆ อาจแตกหักในบางครั้งระหว่างการเปิดตัว มีการติดแท็กการเผยแพร่ และควรถือว่ามีเสถียรภาพ
git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable keyd && sudo systemctl start keyd
ติดตั้งและเริ่มคีย์ (เช่น sudo systemctl enable keyd
)
ใส่สิ่งต่อไปนี้ใน /etc/keyd/default.conf
:
[ids]
*
[main]
# Maps capslock to escape when pressed and control when held.
capslock = overload(control, esc)
# Remaps the escape key to capslock
esc = capslock
สามารถรับชื่อคีย์ได้โดยใช้คำสั่ง keyd monitor
โปรดทราบว่าในขณะที่ keyd กำลังทำงานอยู่ เอาต์พุตของคำสั่งนี้จะสอดคล้องกับเอาต์พุตของ keyd สามารถดูเหตุการณ์อินพุตดั้งเดิมได้โดยการหยุดคีย์ก่อนแล้วจึงรันคำสั่ง ดูหน้าคนสำหรับรายละเอียดเพิ่มเติม
เรียกใช้ sudo keyd reload
เพื่อโหลดชุดการกำหนดค่าอีกครั้ง
ดูหน้า man ( man keyd
) สำหรับคำอธิบายที่ครอบคลุมมากขึ้น
ข้อผิดพลาดในการกำหนดค่าจะปรากฏในเอาต์พุตบันทึกและสามารถเข้าถึงได้ตามปกติโดยใช้ตัวจัดการบริการของระบบของคุณ (เช่น sudo journalctl -eu keyd
)
หมายเหตุ : เป็นไปได้ที่จะทำให้เครื่องของคุณใช้งานไม่ได้ด้วยไฟล์ปรับแต่งที่ไม่ถูกต้อง หากคุณพบว่าตัวเองอยู่ในตำแหน่งนี้ ลำดับคีย์พิเศษ backspace+escape+enter
ควรจะทำให้คีย์ยุติลง
เมาส์บางตัว (เช่น Logitech MX Master) สามารถปล่อยปุ่มได้ และด้วยเหตุนี้จึงจับคู่ด้วยรหัสตัวแทน อาจจำเป็นต้องขึ้นบัญชีดำอย่างชัดเจน
เพิ่มตัวคุณเองในกลุ่มคีย์:
usermod -aG keyd <user>
เติม ~/.config/keyd/app.conf
:
เช่น
[alacritty]
alt.] = macro(C-g n)
alt.[ = macro(C-g p)
[chromium]
alt.[ = C-S-tab
alt.] = macro(C-tab)
วิ่ง:
keyd-application-mapper
คุณอาจต้องการใส่ keyd-application-mapper -d
ที่ไหนสักแห่งในตรรกะการเริ่มต้นเซิร์ฟเวอร์ดิสเพลย์ของคุณ (เช่น ~/.xinitrc) เว้นแต่ว่าคุณกำลังเรียกใช้ Gnome
ดูหน้าคนสำหรับรายละเอียดเพิ่มเติม
เพิ่มการสนับสนุนการทดลองสำหรับคอมพิวเตอร์บอร์ดเดี่ยว (SBC) ผ่าน usb-gadget โดย Giorgi Chavchanidze
ดู usb-gadget.md สำหรับรายละเอียด
แพ็คเกจของบุคคลที่สามสำหรับการแจกแจงบางอย่างก็มีอยู่เช่นกัน หากคุณต้องการเพิ่มของคุณลงในรายการกรุณายื่น PR สิ่งเหล่านี้ได้รับการดูแลอย่างดีจากสมาชิกในชุมชน ไม่มีการรับผิดชอบต่อพวกเขาเป็นการส่วนตัว
แพ็คเกจคีย์ดูแลโดย @jirutka
แพ็คเกจ Arch Linux ดูแลโดยผู้ทำแพ็คเกจ Arch
แพ็คเกจ keyd
และ keyd-application-mapper
รุ่นทดลองสามารถพบได้ใน CI build artifact ของที่เก็บแพ็คเกจ Debian ที่กำลังดำเนินการอยู่:
นักพัฒนา Debian ใดๆ ที่ยินดีตรวจสอบความพยายามในการดีเบียนและสนับสนุนการอัปโหลดนั้น ขอแนะนำให้ติดต่อ @rhansen (โปรดดูจุดบกพร่องของ Debian ITP)
แพ็คเกจ COPR ดูแลโดย @alternateved
แพ็คเกจ opensuse ดูแลโดย @bubbleguuum
ติดตั้งง่ายด้วย sudo zypper in keyd
.
แพ็คเกจ keyd
และ keyd-application-mapper
รุ่นทดลองสามารถพบได้ในไฟล์เก็บถาวร ppa:keyd-team/ppa
หากคุณต้องการที่จะช่วยรักษา PPA นี้ โปรดติดต่อ @rhansen
[ids]
*
[main]
leftshift = oneshot(shift)
capslock = overload(symbols, esc)
[symbols]
d = ~
f = /
...
ผู้ใช้จำนวนมากอาจไม่สนใจที่จะใช้ประโยชน์จากคีย์อย่างเต็มที่ สำหรับผู้ที่แสวงหาการปรับปรุงคุณภาพชีวิตที่เรียบง่าย ฉันขอแนะนำการกำหนดค่าต่อไปนี้:
[ids]
*
[main]
shift = oneshot(shift)
meta = oneshot(meta)
control = oneshot(control)
leftalt = oneshot(alt)
rightalt = oneshot(altgr)
capslock = overload(control, esc)
insert = S-insert
สิ่งนี้จะทำให้ปุ่ม capslock โอเวอร์โหลดเพื่อให้ทำงานเป็นทั้ง Escape (เมื่อแตะ) และการควบคุม (เมื่อกดค้างไว้) และทำการแมปตัวแก้ไขทั้งหมดใหม่เป็นปุ่ม 'oneshot' ดังนั้นในการสร้างตัวอักษร A คุณสามารถแตะ shift แล้วกด a แทนที่จะต้องกดค้างไว้ ในที่สุดก็ทำการแมปการแทรกใหม่ไปที่ S-insert (วางบน X11)
xmodmap และเพื่อนๆ เป็นเครื่องมือระดับเซิร์ฟเวอร์ดิสเพลย์ที่มีฟังก์ชันการทำงานที่จำกัด keyd เป็นโซลูชันระดับระบบที่ใช้คุณลักษณะขั้นสูง เช่น การแบ่งเลเยอร์และตัวแก้ไข oneshot แม้ว่าเครื่องมือ X บางตัวจะมีฟังก์ชันการทำงานที่คล้ายกัน แต่ฉันไม่ทราบว่ามีสิ่งใดที่ยืดหยุ่นได้เท่ากับการคีย์
keyd เขียนขึ้นเมื่อหลายปีก่อนเพื่อให้ฉันทดลองรูปแบบต่างๆ ในคอลเลกชั่นคีย์บอร์ดที่กำลังเติบโตของฉันได้อย่างง่ายดาย ในขณะนั้นยังไม่มี kmonad และเฟิร์มแวร์คีย์บอร์ดแบบกำหนดเอง เช่น QMK (ซึ่งได้รับแรงบันดาลใจมาจากการคีย์) เป็นวิธีเดียวที่จะได้รับคุณสมบัติที่เทียบเคียงได้ ฉันเริ่มรู้จัก kmonad หลังจากที่เผยแพร่คีย์แล้ว แม้ว่า kmonad จะเป็นโครงการที่ดีโดยมีเป้าหมายคล้ายกัน แต่ก็ใช้แนวทางที่แตกต่างและมีปรัชญาการออกแบบที่แตกต่างกัน
คีย์ที่โดดเด่นนั้นเขียนด้วยภาษา C ทั้งหมดโดยคำนึงถึงประสิทธิภาพและคำนึงถึงความเรียบง่ายและไม่น่าจะกำหนดค่าได้เท่ากับ kmonad (ซึ่งสามารถขยายได้ใน Haskell) ต้องบอกว่ามันให้คุณสมบัติที่มีค่ามากที่สุด (ในความเห็นของผู้เขียน) ด้วยภาษา C น้อยกว่า 2,000 บรรทัดในขณะเดียวกันก็มีรูปแบบการกำหนดค่าที่ไม่เชื่อเรื่องพระเจ้าด้วยภาษาที่เรียบง่าย
หากคุณรู้สึกว่ามีบางอย่างขาดหายไปหรือพบข้อบกพร่อง คุณสามารถแจ้งปัญหาบน GitHub ได้ keyd มีปรัชญาการออกแบบที่เรียบง่าย (แต่มีเหตุผล) ซึ่งจงใจละเว้นคุณสมบัติบางอย่าง (เช่น การเรียกใช้ไฟล์ปฏิบัติการโดยพลการในฐานะรูท) สิ่งที่มีอยู่แล้วในเฟิร์มแวร์คีย์บอร์ดแบบกำหนดเอง เช่น QMK เป็นตัวเลือกที่ดีในการรวมไว้
ดูการมีส่วนร่วม IRC Channel: #keyd on oftc