กำหนดปุ่ม Ctrl และ Alt ใหม่ - ข้อผิดพลาด xmodmap 'BadValue'


13

ฉันพยายามตั้งค่าแป้นพิมพ์ใหม่เพื่อให้สามารถใช้งาน emacs ได้ แป้นพิมพ์ตามหลักสรีรศาสตร์ของฉันวางคีย์ควบคุมเดียวไว้ในเกาะแบบแยกได้ 4 คีย์ไปทางซ้าย

ระบบปฏิบัติการบีบ Debian

นี่คือบรรทัดที่ฉันพยายามป้อนให้xmodmapฉันวางมันลงในไฟล์ ~ / .Xmodmap:

การควบคุมที่ชัดเจน
ล้าง Mod1
! ปุ่ม Alt นั้นมีตัวเลือก 'ตัวเลือก' บนแป้นพิมพ์ของฉัน
! ใช้ xev แสดงให้พวกเขาส่ง Alt_L และ Alt_R keysym ของตามลำดับ
keysym Alt_L = Control_L
keysym Alt_R = Control_R
! ปุ่ม Super_L และ Super_R เป็นปุ่ม Windows
keysym Super_L = Alt_L
keysym Super_R = Alt_R
เพิ่มการควบคุม = Control_L Control_R
เพิ่ม Mod1 = Alt_L Alt_R

เป้าหมายของผมคือการทำให้ตัวเลือกของฉัน (aka Alt) คีย์ประพฤติเช่นปุ่มควบคุมที่จะได้รับของ Windows (อาคาซู) Altเพื่อทำตัวเหมือน

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

keycode 37 (keysym 0xffe3, Control_L)
keycode 64 (keysym 0xffe9, Alt_L)
keycode 133 (keysym 0xffeb, Super_L)
keycode 134 (keysym 0xffec, Super_R)
keycode 108 (keysym 0xffea, Alt_R)

นี่คือสิ่งที่ xev แสดงขณะที่ทำงาน xmodmap .Xmodmap

เหตุการณ์ MappingNotify, อนุกรม 34, NO สังเคราะห์, หน้าต่าง 0x0,
    ขอ MappingKeyboard, first_keycode 204, นับ 1

เหตุการณ์ MappingNotify, อนุกรม 34, NO สังเคราะห์, หน้าต่าง 0x0,
    ขอ MappingKeyboard, first_keycode 64, นับ 1

เหตุการณ์ MappingNotify, อนุกรม 34, NO สังเคราะห์, หน้าต่าง 0x0,
    ขอ MappingKeyboard, first_keycode 108, นับ 1

เหตุการณ์ MappingNotify, อนุกรม 34, NO สังเคราะห์, หน้าต่าง 0x0,
    ขอ MappingKeyboard, first_keycode 206, นับ 1

เหตุการณ์ MappingNotify, อนุกรม 34, NO สังเคราะห์, หน้าต่าง 0x0,
    ขอ MappingKeyboard, first_keycode 133, นับ 1

เหตุการณ์ MappingNotify, อนุกรม 34, NO สังเคราะห์, หน้าต่าง 0x0,
    ขอ MappingKeyboard, first_keycode 134, นับ 1

และนี่คือข้อผิดพลาดที่ส่งคืนโดยxmodmap:

X ข้อผิดพลาดของคำขอที่ล้มเหลว: BadValue (พารามิเตอร์จำนวนเต็มอยู่นอกช่วงสำหรับการดำเนินการ)
opcode หลักของคำขอที่ล้มเหลว: 118 (X_SetModifierMapping)
ค่าในคำขอที่ล้มเหลว: 0x17
หมายเลขซีเรียลของคำขอที่ล้มเหลว: 17
หมายเลขซีเรียลปัจจุบันในเอาต์พุตสตรีม: 17

ข้อเสนอแนะใด ๆ เกี่ยวกับฉันจะแก้ไขปัญหานี้ได้อย่างไร


ระบบปฏิบัติการและเวอร์ชั่นใดบ้าง? คีย์บอร์ดชนิดใด (PC / Mac / Sun / ... ) ลองรันxevในเทอร์มินัลจากนั้นxmodmapในเทอร์มินัลอื่น คุณควรเห็นบางMappingNotifyบทจากxevเพิ่มไว้ในคำถามของคุณ นอกจากนี้ในxevหน้าต่างให้กดปุ่มต่าง ๆ ที่เกี่ยวข้องและบอกเราว่า keycode และ keysym ตรงกับอะไร (ส่วน“ keycode 37 (keysym 0xffe3, Control_L)” ของ xev output)
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


6

นี้ได้รับการรายงานไปแล้วเป็นDebian ข้อผิดพลาด # 564327 , Debian ข้อผิดพลาด # 565279 , อูบุนตูข้อผิดพลาด # 524774และfreedesktop ข้อผิดพลาด 20145 มีแหล่งข้อมูลปะติดอยู่กับการอภิปรายบั๊ก FreeDesktop มีข้อเสนอการแก้ปัญหาหลายอย่างในการอภิปรายข้อผิดพลาดอูบุนตูโดยเฉพาะมีวิธีแก้ปัญหา.Xmodmap


7

ดูวิธีแก้ปัญหาที่เชื่อมโยงโดยไจล์สนี่คือสิ่งที่ใช้ได้กับฉัน:

clear Mod1
clear Mod4

keycode 204 = NoSymbol NoSymbol NoSymbol NoSymbol
keycode 206 = NoSymbol NoSymbol NoSymbol NoSymbol

keycode 64 = Control_L Control_L Control_L Control_L
keycode 133 = Alt_L Alt_L Alt_L Alt_L
keycode 134 = Alt_R Alt_R Alt_R Alt_R
keycode 108 = Control_R Control_R Control_R Control_R

add Control = Control_L Control_R
add Mod1 = Alt_L Alt_R

ปุ่มตัวเลือกของฉันตอนนี้ทำงานเหมือนกับปุ่มควบคุมและปุ่ม Windows ของฉันเช่นปุ่ม Alt


3

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

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

clear mod5
add mod5    = ISO_Level3_Shift Mode_switch

สามารถส่งผลให้

mod5        backslash (0x33),  Caps_Lock (0x42),  ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

เพราะคุณมีสิ่งที่ชอบ

keycode  66 = Caps_Lock NoSymbol ISO_Level3_Shift

ใน ~ / .Xmodmap ของคุณ (ดูรหัสปัจจุบันของการทำแผนที่ keysym ผ่านxmodmap -pke)

ซึ่งจะทำให้เกิดข้อผิดพลาด BadValue ในคำถามเมื่อคุณพยายามทำบางสิ่งเช่น

add lock    = Caps_Lock

เนื่องจาก Caps_Lock ถูกเพิ่มในโมดิฟายเออร์ mod5 แล้ว


2

นี่เป็นอีกวิธีการแก้ไขปัญหาของคุณแม้ว่าจะไม่ได้ตอบคำถามของคุณ แก้ไข xorg.conf โดยแทรกสิ่งต่อไปนี้ลงในส่วน "InputDevice":

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