Làm cách nào tôi có thể ánh xạ lại khóa Caps cho cả Escape và Control?


22

Tôi thường chạy Linux. Tôi sử dụng Vim rất nhiều, vì vậy phím Escape cực kỳ quan trọng. Tôi cũng sử dụng các phím tắt khác rất nhiều, vì vậy Control cũng là "phím". Trên Linux, tôi đã giải quyết vấn đề này bằng cách sử dụng xcape để ánh xạ khóa phím Caps thành Escape nếu tự nhấn hoặc Control nếu nhấn kết hợp với một phím khác. Điều này đặt điều tốt nhất của cả hai thế giới trong tầm tay nhanh chóng của ngón tay hồng hào của tôi. Có cách nào tôi có thể làm điều này trên máy Mac không?

Câu trả lời:


19

, sử dụng Karabiner (trước đây là KeyRemap4Macbook) .

Đầu tiên, đi vào ngăn tùy chọn Bàn phím, nhấp vào "Phím sửa đổi" và thay đổi Caps Lock thành Control. Sau đó, đi vào Karabiner và tìm kiếm tùy chọn này:

Control_L đến Control_L
      (+ khi bạn chỉ gõ Control_L, gửi Escape)

Kiểm tra xem, và bạn đã hoàn tất. Với Karabiner, bạn có thể thực hiện nhiều điều thú vị hơn, như ánh xạ phím Escape (hiện tại vô dụng) của bạn sang phím Hyper với nhiều phím bấm hơn.


Có thể remap esc để khóa mũ và khóa mũ bản đồ để kiểm soát và thoát? Bởi vì đôi khi, tôi vẫn cảm thấy cần phải sử dụng khóa mũ để gõ một chuỗi chữ hoa dài.
Aaron Shen

Karibiner hiện yêu cầu bạn thay đổi Caps Lock thành "Không hành động" trong tùy chọn Bàn phím OSX (thay vì đặt nó ở chế độ Control) và sử dụng Seil, chương trình chị em của Karabiner để thực hiện ánh xạ lại. Phần cuối cùng của câu trả lời trên (+ khi bạn chỉ gõ Control_L ...) vẫn được thực hiện trong Karabiner.
ScoBe

@AaronShen chỉ cần ánh xạ lại thoát sang khóa mũ ;-).
Ven

@ScoBe tôi khuyên bạn nên chống lại làm điều đó, bạn thực sự không cần Seil,
Ven

Tôi khuyên bạn nên giảm Công cụ sửa đổi quá mức chính của Karabiner > Thông số hết thời gian từ 1000ms xuống 200ms . Nếu tôi giữ chìa khóa nhưng sau đó thay đổi ý định và giải phóng nó, tôi không muốn bắn Escape.
joeytwiddle

16

Karabiner hiện không tương thích với MacOS Sierra. Một giải pháp thân thiện với Sierra khác là với Bàn phím Maestro (nó không miễn phí). Thay đổi hành vi của phím Caps-Lock thành Điều khiển thông qua System Preferences-> Keyboard-> Modifier Keysnhư những người khác đã đề xuất.

Sau đó, trong Bàn phím Maestro, thiết lập một macro như sau:

  • Kích hoạt bởi USB Device Key Trigger
  • Nhấn phím Caps-Lock trên bàn phím của bạn
  • được gõ một lần
  • với những sửa đổi này: ^
  • (bạn sẽ cần lặp lại kích hoạt trước đó cho mỗi bàn phím USB bạn sử dụng)
  • Sau đó thêm một hành động Text->Type a keystroke
  • Nhấn Esc

1
Rõ ràng, có một dự án có tên Karabiner Elements chạy trên Sierra (là tiền thân của một phiên bản Karabiner sẽ chạy trên Sierra). Tôi đã không thử nó, vì vậy tôi không biết chức năng này có sẵn hay không.
tubedogg

5
Karabiner-Elements chưa hỗ trợ hành động trên một phím điều chỉnh, điều này sẽ được yêu cầu cho việc này.
lẩm bẩm

Tùy chọn này 'với các sửa đổi này: ^' chỉ yêu cầu ^được nhấn cùng với capslock để kích hoạt một hành động. Đó không phải là tất cả những gì được yêu cầu trong câu hỏi.
defhlt

Do lần đầu tiên chúng tôi thay đổi Caps-Lock để hoạt động như Điều khiển thông qua Tùy chọn hệ thống, nên KM sẽ thấy sự kiện USB với phím Control. Nếu bạn bỏ qua công cụ ^sửa đổi, hành động sẽ không bao giờ kích hoạt.
lẩm bẩm

Nếu bạn đi theo con đường maestro bàn phím, có cách nào để ánh xạ phím thoát sang khóa mũ để lấy lại chức năng khóa mũ không? Tôi thích có mũ khóa như cả ctrl và thoát mặc dù.
Kvass

1

Để làm điều đó với Karabiner Elements , hỗ trợ macOS 10.12 trở lên, hãy mở ~/.config/karabiner/karabiner.jsonvà thêm quy tắc sau vào rulesmảng.

{
  manipulators: [
    {
      description:
        "Change caps_lock to control when used as modifier, escape when used alone",
      from: {
        key_code: "caps_lock",
        modifiers: {
          optional: ["any"]
        }
      },
      to: [
        {
          key_code: "left_control"
        }
      ],
      to_if_alone: [
        {
          key_code: "escape",
          modifiers: {
            optional: ["any"]
          }
        }
      ],
      type: "basic"
    }
  ]
}

Bạn cũng có thể thử sử dụng ControlEscape.spoon với Hammerspoon .


Tôi không thể làm điều này hoạt động trừ khi tôi loại bỏ các sửa đổi (từ khóa và tất cả) trong to_if_alonephần. Nhưng cảm ơn vì đoạn trích. Nó là siêu hữu ích.
Michael
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.