Làm cách nào để gán một công cụ sửa đổi khác cho phím Alt cho X11?


9

Mục đích:

Tôi muốn gán Alt cho CapsLock-key và Meta cho Alt-key. Nhưng theo cách đó, phím Alt sẽ không còn được nhận dạng là Alt và phím CapsLock sẽ không còn được nhận dạng là CapsLock.

mởSUSE 11.4

Trước đây:

openSUSE 11.1 - vì tôi là người dùng duy nhất trên máy tính của mình nên tôi "đơn giản" chỉnh sửa tệp / usr / share / X11 / xkb / keycodes / xfree86 và nó hoạt động mà không gặp vấn đề gì. Các phím được nối với biểu tượng của chúng ở mức thấp nhất.

Các vấn đề:

  1. xkb

    Tôi đã tạo một biến thể của bố cục Ba Lan (pl_ext) trong đó (để kiểm tra) bao gồm các mục như sau:

    key <CAPS> { [ Alt_L ] };
    modifier_map Mod1 { Alt_L, Alt_R };
    

    Tuy nhiên, điều này không có gì đơn giản, CapsLock-key trong xev được nhận dạng (ký hiệu) là Alt_L, nhưng khi tôi nhấn phím CapsLock, nó hoạt động giống như CapsLock (ví dụ: giả sử bạn có Menu trong menu, Alt + F sẽ mở menu này, nó không mở ).

    Câu hỏi: Làm cách nào để xác định tệp bố cục để đặt phím CapsLock là Alt và phím Alt là Meta?

    Chỉnh sửa: Một nửa thành công ở đây! Bây giờ tôi có các mục như vậy:

    key <CAPS> { [ Alt_L ] };
    modifier_map Mod1 { <CAPS> }; // this is a difference
    

    và điều này hoạt động như mong muốn. Điều này không:

    key <LALT> { [ Meta_L ] } ;
    key <RALT> { [ Meta_R ] } ;
    modifier_map Mod5 { <LALT>,<RALT> };
    

    Các phím Alt được nhận dạng là Meta by xev, nhưng tôi vẫn có thể mở các menu bằng Alt + F, chuyển đổi cửa sổ và tôi không nên. Mặt khác, tôi không thể nhập bất kỳ nhân vật quốc gia nào, và tôi nên làm vậy.

  2. xfree86

    Nhưng bây giờ điều này không hoạt động, tôi đoán bảng tệp khác được đọc thay vì xfree86.

    Câu hỏi: Làm thế nào để tìm ra tệp bảng mã khóa nào được sử dụng bởi hệ thống (X / Gnome)?

    Chỉnh sửa: Tùy chọn tốt nhất cho tôi - chỉnh sửa bảng mã khóa - đã được giải quyết bằng câu trả lời của macias !

  3. xmodmap

    Một nửa thành công ở đây. Phần này hoạt động như mong muốn:

    xóa Khóa = Caps_Lock keyym Caps_Lock = Alt_L

    Bây giờ, tôi có phím CapsLock thực sự được ánh xạ tới Alt. Nhưng điều này:

    keyym Alt_L = Meta_L

    ... làm điều kỳ lạ. xev cho thấy phím Alt được ánh xạ tới Meta, nhưng khi tôi nhấn Alt + F (điều này sẽ được ánh xạ tới Meta + F -> không làm gì cả), menu Tệp được mở. Hơn nữa, khi tôi nhấn Alt + Tab, tôi nhận được trình chuyển đổi cửa sổ (Tôi không nên - Alt là Meta ngay bây giờ).

    Câu hỏi: Làm thế nào để "xóa" hành vi cũ cho phím Alt?

    Chỉnh sửa: Phần này được giải quyết bằng câu trả lời của Gilles .

Tóm lược:

Trả lời bất kỳ câu hỏi nào (hy vọng) sẽ giải quyết vấn đề của tôi, tuy nhiên tôi thích sử dụng xkb hoàn toàn vì sau đó tôi có thể đóng gói tất cả các tệp cho xkb và thay đổi bố cục ở một nơi. Cảm ơn bạn trước sự giúp đỡ!


Nếu bạn đã tìm thấy câu trả lời, vui lòng đăng nó như vậy và cung cấp đủ thông tin cho những người khác có thể quan tâm. (Hoàn toàn ổn khi trả lời câu hỏi của chính bạn nếu bạn tìm thấy câu trả lời ở nơi khác hoặc một mình; bạn thậm chí có thể đánh dấu câu trả lời của mình là được chấp nhận nếu bạn muốn.)
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles, ok, nhưng tôi giữ câu trả lời của bạn là câu trả lời, chỉ để ngăn chặn lời buộc tội có thể tôi đã làm điều đó cho điểm. Bên cạnh đó, sự giúp đỡ của bạn rất có giá trị đối với tôi.
greenoldman

Bạn không nhận được điểm để chấp nhận câu trả lời của riêng bạn nào. (Bạn nhận được điểm cho phiếu bầu cho câu trả lời của riêng bạn, điều này là công bằng kể từ khi bạn thực hiện công việc.) Điều quan trọng nhất là phải có thông tin được trình bày rõ ràng. Hiện tại có hai câu trả lời cho câu hỏi này, một với xmodmap và một với xkb và trang sẽ đọc rõ hơn nếu cả hai đều được đăng dưới dạng câu trả lời.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


7

(Câu trả lời này chỉ nói về xmodmap. Tôi chắc chắn có thể làm điều này với XKB, tôi chỉ không biết làm thế nào.)

Công cụ sửa đổi và keyyms được gán độc lập. Nhưng bạn sẽ nhận được các hiệu ứng lạ nếu bạn không đặt chúng một cách nhất quán. Tôi nghĩ rằng tất cả những gì bạn thiếu là addlệnh gán một bộ sửa đổi Meta_L, mặc dù bạn cũng có thể cần phải xóa và gán lại các phím bổ trợ. Bạn có thể thay thế Mod1Mod2bằng Mod3, Mod4Mod5: chúng có thể thay thế cho nhau, chỉ cần đảm bảo rằng bạn không sử dụng một cho hai mục đích khác nhau.

clear Mod1
clear Mod2
remove Lock = Caps_Lock
keysym Caps_Lock = Alt_L
keysym Alt_L = Meta_L
add Mod1 = Alt_L Alt_R
add Mod2 = Meta_L Meta_R

Cảm ơn nhiều. Vì vậy, thực sự, tôi đã sử dụng Mod5 thay vì Mod2 cho Meta và bây giờ tôi có thể viết như mong đợi (tôi sử dụng khóa meta + cho nhiều ký tự quốc gia). Nhưng thật kỳ lạ, bây giờ tôi lại gặp vấn đề với CapsLock-key - nó được liên kết với ... Meta. Tôi đoán tại sao, bởi vì một khi có ràng buộc với Alt, nhưng sau đó Alt được xác định lại. Vậy làm thế nào để tạo sự khác biệt và một lần nhấn mạnh vào mã, và lần thứ hai vào biểu tượng? Tôi muốn không sử dụng mã phím thô vì chúng có thể thay đổi từ bàn phím sang bàn phím. Tôi không thể trao đổi thứ tự các từ khóa, bởi vì trong dòng cuối cùng tôi sẽ gặp lỗi.
greenoldman

Vấn đề với keysym Caps_Lock = Alt_Llà nếu bạn chạy nó hai lần, nó sẽ đưa hệ thống trở lại trạng thái không mong muốn. Đó là lý do tại sao tôi sử dụng mã khóa ; chúng khác nhau giữa các hệ điều hành và kiến ​​trúc (không phải giữa các bàn phím), nhưng không thường xuyên.
Gilles 'SO- ngừng trở nên xấu xa'

Cảm ơn bạn đã giải thích, tôi đoán ngay sau đó :-). Nếu bạn không phiền tôi sẽ giữ nó lâu hơn một chút như một câu hỏi chưa được trả lời, có lẽ ai đó có thể giải quyết vấn đề của tôi ở cấp độ xkb, sẽ linh hoạt hơn (chuyển đổi bố cục giết chết xmodmaps).
greenoldman

Cảm ơn rất nhiều, tiếp tục chiến đấu với các biểu tượng / pc không có thành công.
Cody Craven

8

Chỉnh sửa cách tiếp cận mã khóa

Tôi tìm thấy câu trả lời trên diễn đàn Ubuntu Ba Lan. Bây giờ người ta không chỉnh sửa tệp "xfree86" mà là tệp "evdev". Bằng cách này bạn có thể thực hiện các thay đổi vĩnh viễn phù hợp với tất cả các bố cục.

Ví dụ (trên yêu cầu Gilles) - đăng nhập với quyền root, đi đến

/usr/share/X11/xkb/keycodes

tạo một bản sao lưu của tập tin "evdev", sau đó chỉnh sửa nó. Thay đổi mã theo ý thích của bạn, ví dụ trong trường hợp của tôi:

<LALT> = 66; // when I press CapsLock (66 code) system will report pressing LeftAlt
<LMTA> = 64; // I will get LeftMeta when pressing LeftAlt (64 code)

Bạn có thể tìm thấy những gì các mã bằng cách thực hiện lệnh "xev", nhưng bạn có thể chỉ cần xem tệp "evdev" ban đầu.

Đăng xuất, đăng nhập, thưởng thức bàn phím mới của bạn :-).


đây có lẽ là cách đúng đắn để đi với XKB. Tôi đang chạy Linux Mint và gặp sự cố trong đó các Keyboard Preferencestùy chọn Capslockghi đè XKBcấu hình tùy chỉnh tôi viết. Vì đó là nút radio, nên không có cách nào tôi có thể thấy để ngăn một trong các quy tắc từ GUI được áp dụng.
dcunited001

Bạn có thể bảo vệ hành vi của LALT? Đó là, không thay đổi nó thành LMTA? Tôi đã thử nhưng dường như bạn không thể có hai bài tập có dạng <LALT> = ...
Daniel

4

thử cái này:

    key <CAPS>  { [ Alt_L, Alt_L ] };
    key <LALT> { [ Meta_L, Meta_L ] };
    modifier_map Mod1 { Alt_L, Alt_R };
    modifier_map Mod5 { Meta_L, Meta_R };

lưu ý hai định nghĩa cấp độ. Đó là bởi vì mặc định cho LALT là [Alt_L, Meta_L]; nếu bạn không xác định lại cái thứ hai, nó sẽ vẫn là Meta_L.

Xem câu trả lời này trên xkb để biết cách xác định lại một số khóa mà không cần chỉnh sửa các tệp mặc định chính (do đó, không cần phải root). Trong trường hợp như vậy, bạn sẽ cần trong các biểu tượng cục bộ một phần nhỏ như:

partial modifier_keys
xkb_symbols "capsasalt_altasmeta" {
        replace key <CAPS>  { [ Alt_L, Alt_L ] };
        replace key <LALT> { [ Meta_L, Meta_L ] };
        modifier_map Mod1 { Alt_L, Alt_R };
        modifier_map Mod5 { Meta_L, Meta_R };
};
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.