Làm cách nào để biến phím Caps Lock thành phím Shift thứ ba?


18

Làm cách nào để làm cho phím Caps Lock hoạt động giống như một phím Shift khác?

Có rất nhiều câu hỏi ở đây về việc gán lại nó, hoặc để nó khởi chạy một lệnh tùy chỉnh. Tôi chỉ muốn nó hoạt động như một phím Shift khác. Tôi không muốn bất kỳ chìa khóa nào khác thay đổi những gì họ làm, chỉ có điều đó.

Bố cục bàn phím / Caps Lock Hành vi phím sẽ không thực hiện được, tôi không hiểu cách ánh xạ lại trong CCSM.

Bây giờ tôi đang sử dụng bàn phím Vương quốc Anh nhưng tôi đã học cách gõ trên bàn phím Hoa Kỳ, phím Shift bên trái nhỏ hơn là DRIVING ME NUTS.



1
@ David-bạn của bạn OP đặc biệt nói xmodmapkhông hoạt động.
TheWanderer

1
Trong xkb, điều này dường như có liên quan đến các bản đồ tương thích, dịch các tổ hợp phím nhất định thành hành động, thay vì các ký hiệu. Điều này sẽ mất nhiều thời gian nghiên cứu và thử nghiệm hơn tôi có sẵn tại thời điểm này. Nếu tôi có cơ hội tôi sẽ nghiên cứu sâu hơn về vấn đề này, nếu không có lẽ vụn bánh mì này sẽ dẫn người khác đi đúng hướng.
Anh Cả Geek

Câu trả lời:


13

Mở rộng trên câu trả lời @ Zacharee1:

tạo một bản sao lưu với cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

sau đó chỉnh sửa với gksu gedit /usr/share/X11/xkb/symbols/pchoặc trình soạn thảo yêu thích của bạn.

Tìm dòng (22) có nội dung:

key <CAPS> { [ Caps_Lock ] };

và thay đổi nó thành

key <CAPS> { [ Shift_L ] };

và dòng (36) cho biết:

modifier_map Lock { Caps_Lock };

và thay đổi nó thành

//modifier_map Lock { Caps_Lock }; (cần bình luận về việc vô hiệu hóa khóa)

Thử nghiệm chỉ ra rằng Num Lockvẫn hoạt động như mong đợi. Thử nghiệm thêm chỉ ra rằng đèn chỉ báo bàn phím có vẻ hơi khó đọc trong 16.04 trên ngay cả một hệ thống chưa được sửa đổi. Chỉ báo Scroll Lock bật khi đăng nhập nhưng Scroll lock tắt và Num Lock tắt, nhưng Num lock bật. Nhấn Ctrlphím bên trái dường như để giải quyết hành vi này và tôi không chắc liệu nó có liên quan đến việc tôi sử dụng công tắc KVM không (có thể)

Lưu ý: Thử nghiệm thêm cho thấy đèn chỉ báo NumLock không hoạt động ngay cả khi không có công tắc KVM và phải gõ hai lần để quay lại đồng bộ với NumLock Nếu bạn luôn bật nó, bạn có thể bỏ qua đèn hoặc nếu nó làm phiền bạn, bạn có thể chạm vào nó hai lần để có được nó trở lại đồng bộ. Tại sao điều này xảy ra có khả năng là một cơ sở cho một câu hỏi mới ...

Một giải pháp đơn giản khác cho vấn đề ban đầu của bạn là chỉ cần lấy một bàn phím Mỹ rẻ tiền và sử dụng bản đồ bàn phím Hoa Kỳ.

Nguồn: @ Zacharee1 trả lời và phân tích /usr/share/X11/xkb/symbols/pcvà thử nghiệm và kiểm tra lỗi


Vì vậy, bạn đã phải vô hiệu hóa dòng 36 điều đó? Chỉ cần thay đổi Shift_Llà đủ để vô hiệu hóa hoàn toàn capslock cho tôi.
TheWanderer

@ Zacharee1 Tôi nghĩ rằng nó có thể là nguyên nhân của tác động lên Numlock mà Tom Brossman đã đề cập trong một bình luận trên bài đăng của bạn và chỉ lấy nó ra vì lý do đó.
Anh Cả Geek

Hừm. Đó có thể là nó. Tôi đang xem liệu tôi có thể khiến Zanna thử nghiệm với VM không, vì cô ấy có một hội đồng quản trị ở Anh.
TheWanderer

@ Zacharee1 Điều đó thật tuyệt vì tôi không có phần cứng đó để thử nghiệm và thường dựa vào logic trong trường hợp không thể kiểm tra hoàn chỉnh.
Anh Cả Geek

Điều đó đã làm điều đó cuối cùng, đã thử nghiệm và làm việc (ít nhất là bây giờ). Thật kỳ lạ khi đèn Num Lock trên bàn phím của tôi bị tắt nhưng các phím số phụ được bật theo mặc định khi tôi đăng nhập và đó là những gì tôi đã theo sau. Cảm ơn!
Tom Brossman

10

Bạn có thể đến đó bằng cách điều chỉnh Làm thế nào để thay đổi phím CapsLock để tạo ra một bản nhạc hay? (ví dụ).

Gỡ bỏ công cụ Locksửa đổi (= Caps Lock) khỏi Caps Lockkhóa và tuyên bố rằng khóa này sẽ gửi Shift_Lkeyym.

remove Lock = Caps_Lock
keysym Caps_Lock = Shift_L

Ngoài ra, bạn có thể loại bỏ công cụ Locksửa đổi và thêm công cụ Shiftsửa đổi.

remove Lock = Caps_Lock
add Shift = Caps_Lock

Dù bằng cách nào, những dòng này đi vào tập tin ~/.Xmodmap. Kiểm tra bằng cách tải nó với xmodmap ~/.Xmodmap; tệp được đọc tự động khi bạn đăng nhập trong môi trường mặc định (hoặc ít nhất là trong những ngày Gnome).


2
Hoàn hảo, đã làm việc. Tôi đã tạo một tài liệu trống mới trong thư mục nhà của mình có tên '.Xmodmap' và dán ví dụ đầu tiên của bạn vào đó. Sau đó, tôi đã gõ 'xmodmap ~ / .Xmodmap' trong thiết bị đầu cuối để làm cho nó có hiệu lực ngay lập tức. Cả hai đều được giải thích trong câu trả lời liên kết. Cảm ơn bạn.
Tom Brossman

Nhóm lệnh thứ hai không hoạt động với tôi, nhưng lệnh đầu tiên hoạt động rất tốt. Nhấn Caps Lock thậm chí không bật đèn bàn phím, do đó, nó thậm chí không kích hoạt OCD tiềm ẩn của tôi.
Waldir Leoncio

Câu trả lời tốt, Gilles! Chỉ cần thêm vào câu trả lời của bạn, điều này cũng có thể được thực hiện dưới dạng một lệnh duy nhất: xmodmap -e "clear Lock" -e "keysym Caps_Lock = Shift_L" và hoàn tác setxkbmap -option , không ghi vào ~/.Xmodmaptệp, nhưng có thể được sử dụng khi cần thiết và được thêm vào Ứng dụng khởi động. Câu trả lời rất hay!
Sergiy Kolodyazhnyy

7

Bỏ qua những nỗ lực trước đây của tôi khi trả lời rằng thất bại, tôi đã tìm thấy thứ gì đó biến capslock hoàn toàn thành dịch chuyển trái. Không bật, tôi nghĩ nó bền bỉ, và nó khá đơn giản.

Trước tiên, tôi khuyên bạn nên tạo một bản sao lưu, trước khi tôi giới thiệu cách thay đổi nó.

Chạy sudo cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

Bây giờ đã có bản sao lưu, hãy chỉnh sửa.

Sử dụng trình soạn thảo văn bản yêu thích của bạn để chỉnh sửa tệp này dưới dạng root:

/usr/share/X11/xkb/symbols/pc

Tìm phân khúc giống như thế này (gần đầu, dòng 22 đối với tôi):

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return                ]   };

key <CAPS> {    [ Caps_lock             ]   };
key <NMLK> {    [ Num_Lock              ]   };

biên tập

key <CAPS>  {   [ Caps_lock             ]   };

được

key <CAPS> {    [ Shift_L, Caps_Lock    ]   };

thay thế. ( Caps_LockSau Shift_L,này có thể không cần thiết.)

Khởi động lại trình quản lý hiển thị của bạn (thường sudo service lightdm restart) và capslock giờ sẽ được chuyển sang trái. ( Lưu ý: Máy thử nghiệm của tôi sử dụng Gnome, vì vậy tôi phải khởi động lại gdm. Tuy nhiên, điều đó gây ra một số nhấp nháy kỳ lạ trong TTY dự phòng và gdmkhông bao giờ khởi động lại. Tôi phải khởi động lại hoàn toàn.)

Cái này tôi thực sự có thể kiểm tra, và có thể xác nhận nó hoạt động.

Chuyển thể từ xmodmap vĩnh viễn trong Ubuntu 13.04


Cảm ơn, nhưng điều này cản trở Num Lock mà tôi để lại vĩnh viễn. Trong xử lý sự cố ban đầu của tôi, việc thay đổi Caps_lock> Shift_L /usr/share/X11/xkb/symbols/capslockcũng bị can thiệp với Num Lock. Có một cái gì đó khác nhau về 16.04, ví dụ đèn Num Lock được sử dụng để duy trì khi khởi động nhưng bây giờ nó tắt khi đăng nhập LightDM. Khi tôi kiểm tra giải pháp của mình, nó sẽ thay đổi Caps Lock thành Shift, nhưng lần đầu tiên tôi nhấn Caps Lock, tắt Num Lock và tôi phải nhấn Num Lock TWICE để bật lại (chỉ lần đầu tiên). Kỳ quái. Thực sự đánh giá cao sự giúp đỡ cho đến nay mặc dù.
Tom Brossman

Có lẽ tôi cần đặt một câu hỏi mới "Làm thế nào để ngăn chặn sự can thiệp của Caps Lock với Num Lock vào ngày 16.04?" nhưng tôi muốn tìm nguyên nhân gốc rễ ở đây. Dù thế hay đã đến lúc mở bàn phím lên và thực hiện một số sửa đổi vật lý cho nó ...
Tom Brossman

Lạ nhỉ. Numlock có hoạt động trở lại nếu bạn chạy xkbset nullify lockkhông?
TheWanderer

@TomBrossman Tôi không biết điều này có thay đổi gì cho bạn không, nhưng nó có hiệu quả với tôi không. Thay vì chỉ Shift_L, đặt vào Shift_L, Caps_Lock. Hãy chắc chắn rằng dấu ngoặc thẳng hàng.
TheWanderer

1
@TomBrossman Tôi thích sử dụng sudo nếu nó không nguy hiểm, chỉ cần chắc chắn: p. Khi tôi chỉnh sửa tập tin, L cho ca là vốn và mũ cũng bị khóa. Kỳ dị. Điều NumLock cũng kỳ lạ, vì nó hoạt động tốt với tôi. Toàn bộ điều này thật kỳ lạ: p
TheWanderer

3

Cho 14.04

Một lớp lót:

xmodmap -e 'keycode 66=Shift_L'

NHƯNG , trong trường hợp không mong muốn 66không phải là mã khóa chính xác, trước tiên hãy chạy xevtrong bàn điều khiển và nhấn CapsLock. Sau đó, bạn sẽ thấy một cái gì đó như:

KeyPress event, serial 27, synthetic NO, window 0x1200001,
    root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393),
    state 0x0, keycode XX (keysym 0x0207, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

Mã khóa chính xác là mã được chỉ định trong XX.


1
Nhìn vào tin nhắn tiền thưởng : Xmodmap trick no longer works and xkb handles this now..
TheWanderer

Ôi trời! Có phải vì ngày 16.04? Nó hoạt động vào ngày 14.04 của tôi. Nhận xét Bounty dường như không chỉ định.

Tôi đã không làm tiền thưởng vì vậy tôi không thực sự biết.
TheWanderer

Xin lỗi, đây là bản cài đặt 16.04 mới. Phím shift trái hoặc phải sẽ ổn, tôi chọn trái cho câu hỏi vì nó liền kề và xevxem chúng là các phím khác nhau.
Tom Brossman
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.