Tái chỉ định các phím Ctrl và Alt - lỗi xmodmap 'BadValue'


13

Tôi đang cố gắng sắp xếp lại bàn phím của mình để làm cho emacs có thể sử dụng được. Bàn phím tiện dụng của tôi đặt phím Điều khiển duy nhất của nó theo cách đảo 4 phím bị cô lập ở bên trái.

Hệ điều hành là Debian ép.

Dưới đây là các dòng tôi đang cố gắng cung cấp xmodmap, tôi đặt chúng vào một tệp ~ / .Xmodmap:

Kiểm soát rõ ràng
xóa Mod1
! Các phím Alt được dán 'Tùy chọn' trên bàn phím của tôi,
! sử dụng xev cho thấy họ gửi các phím Alt_L và Alt_R tương ứng
keyym Alt_L = Control_L
keyym Alt_R = Control_R
! Các phím Super_L và Super_R là các phím Windows
keyym Super_L = Alt_L
keyym Super_R = Alt_R
thêm Control = Control_L Control_R
thêm Mod1 = Alt_L Alt_R

Mục tiêu của tôi là làm cho Altcác phím Tùy chọn (còn gọi là ) của tôi hoạt động giống như các phím Điều khiển và để các phím Windows (còn gọi là Siêu) của tôi hoạt động như thế nào Alt.

Dưới đây là mã khóa và đầu ra phím của xev cho các phím được đề cập. Lưu ý, bàn phím của tôi (bàn phím tiện dụng Goldtouch) chỉ có một phím điều khiển.

mã khóa 37 (keyym 0xffe3, Control_L)
mã khóa 64 (keyym 0xffe9, Alt_L)
mã khóa 133 (keyym 0xffeb, Super_L)
mã khóa 134 (keyym 0xffec, Super_R)
mã khóa 108 (keyym 0xffea, Alt_R)

Đây là những gì xev hiển thị trong khi chạy xmodmap .Xmodmap

Sự kiện MappingNotify, nối tiếp 34, NO tổng hợp, cửa sổ 0x0,
    yêu cầu MappingPal, first_keycode 204, đếm 1

Sự kiện MappingNotify, nối tiếp 34, NO tổng hợp, cửa sổ 0x0,
    yêu cầu MappingPal, first_keycode 64, đếm 1

Sự kiện MappingNotify, nối tiếp 34, NO tổng hợp, cửa sổ 0x0,
    yêu cầu MappingPal, first_keycode 108, đếm 1

Sự kiện MappingNotify, nối tiếp 34, NO tổng hợp, cửa sổ 0x0,
    yêu cầu MappingPal, first_keycode 206, đếm 1

Sự kiện MappingNotify, nối tiếp 34, NO tổng hợp, cửa sổ 0x0,
    yêu cầu MappingPal, first_keycode 133, đếm 1

Sự kiện MappingNotify, nối tiếp 34, NO tổng hợp, cửa sổ 0x0,
    yêu cầu MappingPal, first_keycode 134, đếm 1

Và đây là lỗi được trả về bởi xmodmap:

X Lỗi của yêu cầu không thành công: BadValue (tham số nguyên nằm ngoài phạm vi hoạt động)
Opcode chính của yêu cầu không thành công: 118 (X_SetModifierMapping)
Giá trị trong yêu cầu không thành công: 0x17
Số sê-ri của yêu cầu không thành công: 17
Số sê-ri hiện tại trong luồng đầu ra: 17

bất kỳ đề nghị về làm thế nào tôi có thể giải quyết điều này?


Trên hệ điều hành và phiên bản nào? Loại bàn phím rộng nào (PC / Mac / Sun / ...)? Hãy thử chạy xevtrong một thiết bị đầu cuối, sau đó xmodmaptrong một thiết bị đầu cuối khác. Bạn sẽ thấy một số MappingNotifykhổ thơ từ xev, thêm chúng vào câu hỏi của bạn. Ngoài ra, trong xevcửa sổ, nhấn các phím khác nhau có liên quan và cho chúng tôi biết mã khóa và keyym tương ứng với chúng (mã khóa 37 (keyym 0xffe3, Control_L) một phần của đầu ra xev).
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:



7

Nhìn vào cách giải quyết được liên kết bởi Giles, đây là điều làm việc cho tôi:

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

Các phím Tùy chọn của tôi bây giờ hoạt động như Phím điều khiển và Phím Windows của tôi như Phím Alt.


3

Vấn đề phát sinh khi bạn cố gắng thêm một keyym vào một công cụ sửa đổi đã được thêm vào một khóa sửa đổi khác. Điều quan trọng cần biết là, nếu bạn thêm một từ khóa vào một công cụ sửa đổi thì tất cả các từ khóa khác đi kèm với các từ khóa trong trường hợp cũng được thêm vào cho công cụ sửa đổi đó.

Ví dụ:

clear mod5
add mod5    = ISO_Level3_Shift Mode_switch

có thể dẫn đến

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

bởi vì bạn có một cái gì đó như

keycode  66 = Caps_Lock NoSymbol ISO_Level3_Shift

trong ~ / .Xmodmap của bạn (Xem mã khóa hiện tại để ánh xạ keyym qua xmodmap -pke)

Điều này sẽ tạo ra lỗi BadValue trong câu hỏi khi bạn cũng cố gắng làm một cái gì đó như

add lock    = Caps_Lock

bởi vì Caps_Lock đã được thêm vào công cụ sửa đổi mod5.


2

Đây là một giải pháp khác cho vấn đề của bạn mặc dù nó không thực sự trả lời câu hỏi của bạn. Chỉnh sửa xorg.conf, chèn phần sau vào Phần "InputDevice":

 Option "XkbOptions" "ctrl:swapcaps"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.