Gõ bằng cách sử dụng tổ hợp phím?


12

Tôi là người dùng Ubuntu 10.04 đang tìm cách, ví dụ, làm cho máy tính của tôi gõ ký tự "+" khi tôi giữ Windowsphím (Tôi nghĩ rằng nó được gọi Supertrong thế giới Linux) và nhấn Kphím. Tôi cần điều này để làm việc trong tất cả các ứng dụng. (Tôi là người khuyết tật đánh máy và tôi cần điều chỉnh Ubuntu theo nhu cầu của mình.) Cảm ơn!

Câu trả lời:


15

Vì bạn muốn ánh xạ lại các phím cho tất cả các ứng dụng, tùy chọn tốt nhất là sử dụng xmodmap. Nó linh hoạt và rất mạnh mẽ nhưng liên quan đến việc gõ một vài lệnh vào một thiết bị đầu cuối.

Bước 0 - Cách tiếp cận

Máy chủ X quản lý bàn phím và tất cả các sự kiện chính và dịch mã đó thành mã phím cho tất cả các ứng dụng.

Cách tiếp cận sẽ là ánh xạ một phím bổ trợ (như phím Super hoặc phím Alt phải) làm phím "chuyển đổi chế độ" và báo cho máy chủ X tạo các mã khác nhau tùy thuộc vào việc phím được nhấn với phím Chế độ có được giữ hay không.

Theo mặc định, không có khóa chuyển đổi chế độ được xác định và tất cả các khóa được cấu hình để tạo cùng một mã khi chúng được nhấn có hoặc không có công tắc chế độ. Điều này là tốt vì điều này có nghĩa là ngoại trừ các khóa bạn ghi đè rõ ràng, không có khóa nào khác sẽ hoạt động khác hoặc cần cấu hình bổ sung.

Tuy nhiên, tôi muốn bạn xem xét sử dụng phím Right Alt làm công tắc chế độ, đặc biệt nếu bạn cũng đang sử dụng compiz vì một số plugin compiz ánh xạ các phím tắt siêu khóa (ví dụ: bộ chọn cửa sổ, bộ chuyển đổi, v.v.). Nếu bạn không thích điều khiển compiz qua bàn phím thì Super vẫn ổn.

Đối với xmodmap, các siêu khóa được xác định là Super_L hoặc Super_R. Bạn cần chọn một để sử dụng làm phím chuyển đổi chế độ. Ngoài ra, phím alt bên phải là Alt_R. Bạn có thể xác nhận những điều này bằng cách chạy xev và nhấn các phím cần thiết trên bàn phím của bạn. Xem bài này cho các bước.

Bước 1 - Thiết lập bản đồ sửa đổi

  1. Mở terminal ( Applications -> Accesories -> Terminal) và chạy lệnh sau để tạo tệp với các phím bấm hiện tại . Chúng tôi sẽ sử dụng điều này như là điểm khởi đầu.

    xmodmap -pke > curkeys.map
    xmodmap -pm >> curkeys.map
    
  2. Mở cái này trong trình soạn thảo văn bản yêu thích của bạn. gedit curkeys.map &mở nó trong gedit. Đến cuối tập tin, bạn sẽ thấy một số dòng như thế này:

    keycode 253 =
    keycode 254 =
    keycode 255 =
    xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):
    
    shift       Shift_L (0x32),  Shift_R (0x3e)
    lock        Caps_Lock (0x42)
    control     Control_L (0x25),  Control_R (0x69)
    mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
    mod2        Num_Lock (0x4d)
    mod3      
    mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
    mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)
    
  3. Xóa dòng bắt đầu bằng "xmodmap: tối đa 4 ..."

  4. Chỉnh sửa bản đồ sửa đổi để nó trông như thế này. Đặt từ "thêm" vào đầu mỗi dòng và chèn "=" vào sau tên bổ nghĩa. Sau đó xóa mã trong ngoặc đơn và dấu phẩy. Cũng lưu ý rằng tôi đã chuyển Mode_switchtừ mod5dòng này sang mod3dòng khác vì nó trống. Bảng đã sửa đổi sẽ trông như thế này - nội dung thực tế sẽ thay đổi đôi chút trong trường hợp của bạn so với bên dưới (tùy thuộc vào bố cục bàn phím của bạn).

    add shift =      Shift_L  Shift_R
    add lock  =      Caps_Lock
    add control =    Control_L  Control_R
    add mod1    =    Alt_L Meta_L Alt_R 
    add mod2    =    Num_Lock
    add mod3    =    Mode_switch
    add mod4    =    Super_L Super_R Super_L Hyper_L 
    add mod5    =    ISO_Level3_Shift
    
  5. Remap phím chuyển đổi chế độ vật lý. Thêm một dòng như thế này ở cuối (Thay thế Super_L bằng Super_R hoặc Alt_R nếu được yêu cầu).

    keysym Super_L = Mode_switch
    
  6. Xóa tên khóa (Super_L) khỏi bất kỳ định nghĩa sửa đổi. Đối với Super_L, điều này có nghĩa là xóa nó khỏi dòng mod4.

    add mod4    =    Super_R Hyper_L 
    

    Bây giờ phím "Super" bên phải vẫn sẽ hoạt động như một siêu khóa thông thường trong khi phím bên trái sẽ có các thuộc tính đặc biệt.

  7. Bây giờ chúng ta cần ánh xạ lại các phím để tạo ra các mã khác nhau cho dù chúng có được nhấn trong khi giữ Super_L hay không. Mỗi dòng trong tệp của chúng tôi bắt đầu bằng keycodechỉ định 4 phím cho mỗi phím được tạo dựa trên việc Mod1 (phím shift) và phím chuyển đổi Chế độ có được nhấn hay không. ( Liên kết )

    !...........................................................................
    !        Key            Base              Shift           Mode    Mode+Shift
    !---------------------------------------------------------------------------
    keycode  13             = 4               dollar          4       quotedbl
    keycode  14             = 5               percent         5       colon
    keycode  15             = 6               asciicircum     6       comma
    keycode  16             = 7               ampersand       7       period
    ...
    keycode  45             = k               K               k       K
    

    Nếu chúng ta muốn nhấn phím Super_L + k để tạo khóa "+" thì chúng ta cần sửa đổi nó để đọc

    keycode  45 = k K plus plus
    

    Điểm cộng cuối cùng cũng ánh xạ Shift + Super_L + k thành dấu cộng, nhưng điều này có thể được ánh xạ sang thứ khác. Đối với mỗi khóa có chính xác 1 dòng để sửa đổi. Chỉnh sửa nhiều dòng hơn để ánh xạ lại nhiều phím hơn - giữ nguyên 2 mục nhập đầu tiên để giữ hành vi nhấn phím bình thường.

  8. Lưu tệp và thoát khỏi trình chỉnh sửa.

  9. Cài đặt sơ đồ bàn phím bằng cách chạy các lệnh sau trong một thiết bị đầu cuối. Cái đầu tiên thiết lập nó cho phiên này, cái thứ hai làm cho nó vĩnh viễn cho các phiên trong tương lai.

    xmodmap curkeys.map
    cp curkeys.map ~/.Xmodmap
    
  10. Bạn có thể kiểm tra ngay điều này bằng cách nhấn các phím đã sửa đổi (ví dụ Super_L + k).

Bước 3 - Thêm / chỉnh sửa bản đồ

Khi bản đồ được sửa đổi được cài đặt, thật dễ dàng để thêm các khóa mới.

  1. Sử dụng xev để tìm mã khóa và keyyms

  2. kiểm tra nó bằng cách chạy lệnh này để ánh xạ khóa:

    xmodmap -e "keycode <code> = <base> <shift> <new-mapping> <new-shift-mapping>"
    

    Thay thế các mục trong dấu ngoặc nhọn (như <code> <base>vv) bằng các giá trị phù hợp.

  3. Sao lưu curkeys.maptập tin.

  4. Mở curkeys.mapvà chỉnh sửa dòng cho mã khóa tương ứng.
  5. Áp dụng lại với các lệnh dưới đây (lệnh đầu tiên là không cần thiết nếu bạn đã làm bước 2)

    xmodmap curkeys.map
    cp curkeys.map ~/.Xmodmap
    

Lưu ý: 1 : Các sửa đổi được thực hiện trong Phím tắt (thông qua ví dụ System -> Preferences -> Keyboard Shortcuts:) ảnh hưởng đến bản đồ sửa đổi và thường sẽ bị mất trong lần đăng nhập tiếp theo. Vì vậy, xin vui lòng tránh điều đó.

Lưu ý: 2 : Đôi khi tôi nhận được thông báo lỗi như thế này trong khi sử dụng phương pháp này. Tôi không biết điều này có nghĩa là gì, tuy nhiên, những thứ này thường vô hại.

X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  118 (X_SetModifierMapping)
Value in failed request:  0x17
Serial number of failed request:  263
Current serial number in output stream:  263

Trợ giúp chi tiết cho xmodmap có sẵn ở đây .


Bất kỳ may mắn với điều này? Nếu điều này không giúp ích hoặc bằng bất kỳ cách nào không rõ ràng xin vui lòng bình luận, tôi sẽ sửa đổi và làm cho nó hữu ích hơn.
koushik

1
Hãy lưu ý, rằng trong Linux Mint 17 Xfce (hoặc ít nhất đó), nó phải được ~/.Xmodmap, ~/.xmodmapbị bỏ qua.
zbr

2
Đừng quên clearcác khóa đang được đặt lại theo unix.stackexchange.com/a/4526/2512
Andy
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.