Khắc phục lỗi phím tắt ⌘ + [ của Visual Studio Code trên macOS

Khắc phục lỗi phím tắt ⌘ + [ của Visual Studio Code trên macOS
Photo by Juan Gomez from Unsplash

Sử dụng MacBook với hai bàn phím khác layout sẽ gặp một số vấn đề với phím tắt trên Visual Studio Code (vscode). Tôi đã gặp trường hợp như vậy khi máy tính của tôi sử dụng layout JIS còn bàn phím ngoài lại sử dụng layout ANSI. Trong bài viết này, tôi sẽ chia sẻ cách mình khắc phục vấn đề khi làm việc với vscode.

Vấn đề

Gần đây, tôi chuyển sang sử dụng một chiếc MacBook Pro có bàn phím tiếng Nhật (layout JIS). Trong khi bàn phím rời của tôi dùng layout tiếng Anh (ANSI). Và vấn đề ngay lập tức được thể hiện khi làm việc với vscode: phím tắt ⌘ + [ trên bàn phím rời của tôi không có tác dụng. Phím tắt ⌘ + ] thì vẫn bình thường. Vấn đề này chưa từng xuất hiện trước đây, khi tôi sử dụng MacBook với bàn phím tiếng Anh.

Trong công việc, phím tắt là một phần rất quan trọng. Vậy mà giờ đây không thể sử dụng được thì thật sự rất bất tiện. Không chỉ riêng ⌘ + [, tôi phát hiện tất cả những cụm phím tắt nào có chứa tổ hợp phím này (ví dụ ⇧ + ⌘ + [) cũng đều không có tác dụng.

Tôi kiểm tra thiết lập phím tắt của vscode, thì phát hiện thêm một điều. Khi tôi nhấn ⌘ + [ thì vscode không hề nhận được tổ hợp phím này, mà chỉ nhận mà thôi. Nếu ấn riêng [ hay bất cứ tổ hợp nào không có (ví dụ ⌥ + [, v.v…) thì vẫn nhận bình thường.

key captured
Ảnh chụp màn hình

Ngoài ra, việc dùng hai bàn phím với layout khác nhau thỉnh thoảng có những xung đột. Đây không phải lỗi, mà là tính năng thông minh của vscode. Theo hướng dẫn ở đây, vscode có thể phát hiện layout của bàn phím đang sử dụng và sẽ nhận phím theo layout đó. Nhưng sẽ phải mất vài giây để quá trình này diễn ra.

Vì vậy, nếu sử dụng luân phiên hai bàn phím có layout khác nhau, thỉnh thoảng tôi gặp trường hợp bàn phím này được nhận theo layout của bàn phím kia. Ví dụ, đang dùng bàn phím tiếng Anh chuyển sang bàn phím tiếng Nhật, thì ⌘ + [ sẽ được nhận thành ⌘ + ], ⌘ + ] thì nhận thành ⌘ + \ và ngược lại. Phải mất vài giây để vscode phát hiện và chuyển sang layout mới.

Cũng theo hướng dẫn của vscode, tôi đã thay đổi thiết lập như sau:

{
    "keyboard.dispatch": "keyCode"
}

hoặc trên giao diện đồ họa thì như thế này:

keycode
Ảnh chụp màn hình

Sau đó việc hai bàn phím bị nhận nhầm layout của nhau không diễn ra nữa. Nhưng, vấn đề ⌘ + [ không có tác dụng thì vẫn còn nguyên ở đó.

Sau một hồi tìm kiếm, thì tôi thấy có người cũng gặp lỗi giống mình (issue #114075 trên GitHub). Người này có hoàn cảnh rất giống tôi và cũng đang gặp đúng vấn đề mà tôi gặp phải.

Theo như những gì trao đổi trên GitHub, lỗi này được xác định không phải do vscode. Nguyên nhân do phím tắt này xung đột với macOS hoặc một phần mềm nào khác. Do đó, ⌘ + [ không đến được với vscode. Điều quan trọng hơn là giải pháp cho vấn đề này thì không thấy ai đề cập.

Cũng theo trao đổi trên GitHub, không chỉ vscode mà một vài phần mềm khác (không rõ phần mềm gì) cũng gặp cùng vấn đề. Tôi đã kiểm tra với một số phần mềm thì lại không sao. Ngay cả với trình duyệt Edge dùng nhân Chromium giống Electron, các phím ⌘ + [ (backward) và ⌘ + ] (forward) vẫn hoạt động bình thường. Thế mới ảo 😁. Tôi đoán chỉ những phần mềm dùng Electron mới gặp lỗi này.

Tóm lại, đây có thể là vấn đề của Electron chứ không phải vấn đề của macOS hay vscode. Vấn đề xuất hiện từ macOS Big Sur đến Ventura (macOS Sonoma tôi chưa kiểm chứng) và không liên quan đến chuyện chip Intel hay Apple Silicon.

Cách khắc phục

Từ trao đổi trên GitHub, nguyên nhân lỗi này do vscode không nhận được tổ hợp phím. Có thể do phím tắt đó đã được hệ điều hành sử dụng. Trong lúc không có cách giải quyết nào (đổi phím tắt khác thì cũng phải suy nghĩ sao cho thuận tiện), tôi thử tìm kiếm trong thiết lập phím tắt của macOS.

Và thật tình cờ, đập vào mắt tôi là thiết lập phím tắt ⌘ + @ cho thao tác gọi là “次のウインドウを操作対象にする” (Move focus to next window). Trên bàn phím tiếng Nhật thì phím @ nằm bên phải phím P, giống với phím [ trên bàn phím tiếng Anh. Có lẽ do thiết lập này và vscode đã gặp vấn đề.

⌘ + @
Ảnh chụp màn hình

Nói thật, tôi chưa bao giờ dùng phím tắt này, có lẽ từ macOS Big Sur nó được thiết lập mặc định như vậy và giữ nguyên cho tới bây giờ. Giờ tôi không nhớ trên macOS dùng bàn phím tiếng Anh, tổ hợp mặc định cho thao tác này là gì. Nhưng trên máy tính đó không gặp phải vấn đề gì.

Tôi không cần đến phím tắt này, và tôi chỉ cần vô hiệu hóa nó là xong. Sau đó, khởi động lại vscode là ⌘ + [ đã hoạt động đúng như mong muốn của tôi. Một tác dụng phụ của việc này là sau đó, tổ hợp ⌘ + @ trên bàn phím của MacBook lại được nhận thành ⌘ + [ (thế là có 2 tổ hợp ⌘ + [). Điều này không thành vấn đề đối với tôi.

Một cách giải quyết khác là mua máy tính có bàn phím cùng layout với bàn phím rời, hoặc mua bàn phím rời cùng layout với máy tính. Đó là cách giải quyết triệt để với những ai được lựa chọn. Máy tính của tôi được cấp để làm việc (bàn phím luôn là tiếng Nhật, không được lựa chọn) nên tôi đành phải có gì dùng nấy 😢.

Tôi xin lỗi nếu bài viết có bất kỳ typo nào. Nếu bạn nhận thấy điều gì bất thường, xin hãy cho tôi biết.

Nếu có bất điều gì muốn nói, bạn có thể liên hệ với tôi qua các mạng xã hội, tạo discussion hoặc report issue trên Github.