Tự động thay đổi bố cục bàn phím khi kết nối bàn phím ngoài


1

Gần đây tôi đã mua một bàn phím ngoài (không phải táo) được sử dụng ở nhà và thỉnh thoảng cũng kéo theo tôi và tôi đã nhận thấy một nhu cầu.

Mac của tôi bằng tiếng Anh, cũng như bàn phím vật lý của nó. Tuy nhiên, bàn phím ngoài của tôi là tiếng Na Uy.

Tôi thấy nó khá cồng kềnh khi phải hoán đổi bố cục bàn phím mỗi lần tôi trao đổi bàn phím, điều này có thể khá thường xuyên. Tôi nhận thấy rằng bố cục bàn phím có thể thay đổi theo ứng dụng đang được sử dụng, nhưng điều này không phải lúc nào cũng hoạt động.

Có thể làm cho Mac thay đổi bố cục bàn phím dựa trên bàn phím hiện tại đang được sử dụng hoặc mỗi lần tôi cắm vào rút phích cắm bàn phím ngoài không?


Một cái gì đó tôi đã thử

Tôi đã tạo ra một AppleScript để giải quyết vấn đề này, nhưng gặp phải một số vấn đề với Mojave và bảo mật của nó, và do đó tự hỏi liệu tôi có nên tiếp cận điều này khác đi không. Tôi sẽ đính kèm tập lệnh để tham khảo, chúng tôi có thể phải thay đổi tập lệnh nếu không có giải pháp tốt hơn ..

Sẽ đánh giá cao bất kỳ suy nghĩ nào cả.

Vấn đề tôi gặp phải là ứng dụng không được phép gửi tổ hợp phím thông qua các sự kiện hệ thống, mặc dù tôi đã cho phép nó trong Tùy chọn hệ thống.

--Checks connected usb devices for description, performs keypresses if condition is met
set devicePresent to false
set changeLayout to false


delay 2 --delay may not be needed. To make sure that usb device is registred before script is triggered

set currentLayout to do shell script "defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSources | egrep -w 'KeyboardLayout Name' | cut -d '=' -f2;exit "

set USB to paragraphs of (do shell script "system_profiler SPUSBDataType -detailLevel basic")
repeat with i from 1 to (count of USB)
    if item i of USB contains "Product ID: 0x0059" then set devicePresent to true
end repeat

if (devicePresent) then
    if currentLayout contains "ABC" then set changeLayout to true --changes layout to norwegian
end if
if (not devicePresent) then
    if currentLayout contains "Norwegian" then set changeLayout to true --changes layout to english
end if


if (changeLayout) then tell application "System Events"
    key code 49 using control down
    set newLayout to do shell script "defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSources | egrep -w 'KeyboardLayout Name' | cut -d '=' -f2;exit "
    display notification ("Changed layout from " & currentLayout & " to " & newLayout) with title "New Layout" sound name "Sound Name"
end tell

Chào mừng bạn đến hỏi khác nhau! :) Tôi hy vọng bạn đến để tìm thấy trang web này có rất nhiều để cung cấp! Trong trường hợp bạn chưa có, bạn nên dành thời gian để đọc tour . Tất cả tốt nhất!
Monomeeth

@Monomeeth Rất nhiều đánh giá cao! Xin lỗi vì định dạng kém ..
hpl002

Tôi nghĩ rằng ứng dụng karabiner cho phép bạn thực hiện bố cục tùy chỉnh chỉ áp dụng cho bàn phím ngoài.
Tom Gewecke

@TomGewecke Đó là sự thật, tôi có thể tạo hồ sơ trong Karabiner Elements chỉ áp dụng cho một bàn phím được chỉ định. Nhưng điều này một lần nữa có nghĩa là tôi sẽ phải ánh xạ lại toàn bộ bàn phím ngoài để phù hợp với bố cục của Na Uy. Đây là một cách tiếp cận mã hóa cứng, nhưng có lẽ sẽ hiệu quả.
hpl002

Tôi không biết ứng dụng đó hoạt động như thế nào. Có lẽ có một cách để nó nhập toàn bộ tệp xke Na Uy .keylayout?
Tom Gewecke
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.