Làm cách nào tôi có thể ánh xạ phím shift trái và phải riêng lẻ?


10

Trước hết, xin miễn cho sự thiếu hiểu biết của tôi về X và XKB; Tôi đã cố gắng hack cùng nhau một giải pháp với hy vọng có thể đạt được những gì tôi muốn mà không cần phải nắm bắt chi tiết về nó.

Tôi đang cố gắng tạo bản đồ bàn phím XKB trên Ubuntu 12.04 cho phép tôi quy định phím nào trong hai phím shift tạo thành bộ sửa đổi Level2. Cụ thể, 4khóa chỉ nên tạo một $khi dịch chuyển bên phải được giữ, không phải bên trái.

Tôi đọc cho đến nay:

Tôi đã cố gắng xác định loại tùy chỉnh và sau đó đề cập đến loại này một cách rõ ràng trong bản đồ biểu tượng:

/usr/share/X11/xkb/types/mbfisher:

default xkb_types "mbfisher" {
  type "RIGHT_SHIFT" {
    modifiers = None+Shift_R;
    map[None] = Level1;
    map[Shift_R] = Level2;
  };
}

/usr/share/X11/xkb/symbols/mbfisher:

default
partial alphanumeric_keys
xkb_symbols "basic" {

  name[Group1]= "mbfisher";

  key <AE04> {
    type= "RIGHT_SHIFT",
    symbols[Group1]= [ 4,  dollar ]
  };

};

Sau đó, tôi đang chọn bản đồ với GUI Bố cục Bàn phím Ubuntu.

Điều này rõ ràng vô hiệu hóa bàn phím chữ và số ngoài 4phím, nhưng ký hiệu đô la vẫn có thể được gõ bằng phím shift.

Tôi có ý thức viết một câu hỏi lớn với nhiều thông tin vô ích nên tôi sẽ dừng ở đây; xin vui lòng yêu cầu bất cứ điều gì tôi đã bỏ lỡ.

Có ý kiến ​​gì không?

Câu trả lời:


2

Tôi không biết đó có phải là giải pháp bạn muốn không nhưng một khả năng để vô hiệu hóa phím shift trái sẽ sử dụng xmodmap. Tạo một tệp ~/.Xmodmapcó nội dung

clear shift
add shift = Shift_R

và chạy xmodmap ~/.Xmodmap.


Xem bình luận / trò chuyện:

Bạn có thể gặp sự cố nếu có một số sửa đổi khác được thực hiện cho xkbmap của bạn bởi một số chương trình khác để đặt lại xkbmap mặc định với một cái gì đó giống như setxkbmap uscó thể cần thiết.

Nếu bạn muốn làm cho một số phím chỉ phản hồi với một phím shift, bạn có thể nhận được bố cục bàn phím hiện tại với xmodmap -pke > .Xmodmapđiều này cung cấp cho bạn .Xmodmapmột Danh sách tất cả các phím của bạn ở dạng keycode XX = functions. Trong nhiệm vụ này, mỗi mã khóa có thể có một số chức năng ở phía bên tay phải. Mỗi tương ứng với một sửa đổi khác nhau + khóa đó. Bạn có thể chèn rõ ràng + thêm từ phía trên và thêm một cái gì đó như add mod5 = Shift_L. Phím shift phải tương ứng với mod2 trong khi phím bên trái sẽ là mod5. Bạn có thể tiếp tục và di chuyển các chức năng mod2 của các phím bạn muốn gọi bằng phím shift trái sang mod5 bằng cách chỉ cần chèn NoSymbolvà khoảng trắng cho đến khi bạn đến cột bên phải ( keycode 57 = n N-> keycode 57 = n NoSymbol NoSymbol NoSymbol N).


Vui mừng được giúp đỡ. Nó có hoạt động không?
Trudbert

Xin lỗi, ngày bận rộn. Tôi vẫn có sẵn cả hai phím shift sau khi chạy xmodmap, tôi có cần phải làm gì khác để nhận thay đổi không?
mbfisher

Hãy thử xmodmap -e "xóa ca" sau đó bạn không nên có bất kỳ phím shift nào nếu hoạt động còn lại cũng hoạt động
Trudbert

Không, vẫn có phím shift. # xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
mbfisher

lạ. Không có thông báo lỗi? rõ ràng nên loại bỏ mọi thứ liên quan đến công cụ sửa đổi để không còn gì cả. Tôi sẽ bắt tay vào hệ thống linux sau một tiếng nữa và xem xét lại vấn đề này.
Trudbert

2

Đây là những gì cuối cùng đã làm việc! Tôi đã sử dụng xmodmapvà một ~/.Xmodmaptập tin chứ không phải cấu hình xkb.

~/.Xmodmap:

clear Shift

! Key Shift+Key mode_switch+Key mode_switch+Shift+Key AltGr+Key AltGr+Shift+Key
! Key Shift_L+Key Shift_R+Key Shift_R+Shift_L+Key AltGr+Key AltGr+Shift_L+Key

keycode 10 = 1 1 exclam 1
keycode 11 = 2 2 at 2
keycode 12 = 3 3 numbersign 3
keycode 13 = 4 4 dollar 4
keycode 14 = 5 5 percent 5

keysym Shift_R = Mode_switch
add Shift = Shift_L

2 dòng nhận xét (nhìn chằm chằm !) hiển thị các tiêu đề cột trước và sau khi tôi thay đổi. Điều này đã cho phép tôi chỉ định col 2 là Shift_L và col 3 là Shift_R, vì tôi đã ánh xạ shift_R là Mode_switch.

Các thay đổi được thực hiện bằng cách chạy:

 # setxkbmap us
 # xmodmap ~/.Xmodmap

setxkbmap usđặt bản đồ mặc định ở Hoa Kỳ để bạn làm việc từ một bảng rõ ràng và xmodmapthêm các thay đổi tùy chỉnh vào bản đồ đó.

Khi triển khai thực hiện !, @, #, $%nhân vật chỉ có thể được đánh máy với phím shift phải, và ^, &, *, ()chỉ có thể được đánh máy với phím shift trái.

Bây giờ tôi có thể tiếp tục bằng cách ánh xạ tất cả các phím ở phía bên trái của bàn phím để chỉ được sửa đổi bằng phím shift phải (tức là các ký tự aplh.usical và sửa đổi chữ hoa của chúng) và ngược lại; Giải pháp này có nghĩa là tôi chỉ cần ánh xạ lại phía bên trái.

Các liên kết hữu ích khác được tìm thấy trên đường đi:

Cảm ơn bạn rất nhiều đến @Trudbert vì đã giúp tôi tìm ra câu trả lời!

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.