Ini merupakan tambahan untuk jawaban Steven C. Howell.
Saya memiliki MacBook Pro baru dengan keyboard Skandinavia. Model baru ini tidak lagi memiliki kunci Esc, yang merupakan cacat signifikan bagi saya.
Saya menemukan bahwa yang berikut ini akan menerjemahkan kunci § (kiri atas, kiri 1 dan tombol tab di atas) - yang saya pikir saya belum pernah gunakan untuk apa pun sebelum hari ini - untuk menghasilkan Esc.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
Dalam dokumentasi Apple (ditautkan dari jawaban Steven) ini dilabeli sebagai "Keyboard Non-US \ dan |" (0x64).
Beberapa tombol "non-AS" sulit ditemukan karena biasanya merujuk pada tombol yang memiliki label berbeda pada keyboard yang Anda gunakan. (Saya juga menemukan bahwa "Aksen dan tilde Grave" mengacu pada tombol antara shift kiri dan z, yang diproduksi keyboard saya <
. Saya tidak dapat menetapkan kunci mana yang sesuai dengan "Non-AS #
dan ~
" dan tidak bereksperimen lebih jauh setelah saya menemukan kunci saya.) Jika Anda ingin bereksperimen, coba jalankan skrip di terminal sampai Anda menemukan kunci yang Anda butuhkan:
for ((i=1;i<=128;++i)); do
printf '0x7000000%0x\n' "$i"
printf '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000%0x,"HIDKeyboardModifierMappingDst":0x70000000a}]}' "$i" |
xargs -0 hidutil property --set >/dev/null
read -p "Type some stuff: "
hidutil property --set '{"UserKeyMapping":[{}]}' >/dev/null
done
Ini loop atas kode kunci dan perubahan satu per satu, dengan harapan bahwa Anda dapat menemukan melalui trial and error kunci yang tidak terlalu berguna bagi Anda. Coba ketikkan sesuatu saat diminta - jika Anda mendapatkan g
alih - alih apa yang Anda harapkan, Anda telah menemukan kode kunci yang tepat. (Ubah 0x70000000a
ke hal lain jika g
bukan pilihan yang nyaman untuk Anda. Mungkin Anda ingin memetakan ulang g
kunci?) Saat Anda selesai mengetik, cukup tekan Enter untuk melanjutkan ke tombol berikutnya.
Untuk apa nilainya, perintah terakhir di dalam loop adalah bagaimana Anda mengubah semua UserKeyMapping
pengaturan:
hidutil property --set '{"UserKeyMapping":[{}]}'
Ketika Anda awalnya menjalankannya hidutil property --get UserKeyMapping
menghasilkan
(null)
tetapi tampaknya Anda tidak dapat mengumpan balik nilai ini untuk mengubah pengaturan (atau lebih tepatnya, menerima tetapi mengabaikan input ini).
(Jika Anda tidak terbiasa dengan Terminal, hanya copy / paste hal dari for
sampai done
di Anda bash$
cepat atau serupa.)
Sesuai pertanyaan Stack Overflow terkait ini, Anda dapat menempatkan perintah dalam file skrip di direktori home Anda dan menambahkannya ke launchd
konfigurasi Anda untuk membuat perubahan ini terus-menerus.
Jika beberapa pembaca tidak nyaman melakukan ini sendiri, berikut ini skrip cepat yang melakukan ini untuk Anda. Sekali lagi, cukup salin / tempel ini di Terminal prompt.
mkdir -p "$HOME"/bin
printf '%s\n' '#!/bin/sh' \
'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'"'" \
>"$HOME"/bin/userkeymapping
chmod 755 "$HOME"/bin/userkeymapping
cat<<: >"$HOME"/Library/LaunchAgents/userkeymapping.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>userkeymapping</string>
<key>ProgramArguments</key>
<array>
<string>$HOME/bin/userkeymapping</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
:
launchctl load "$HOME"/Library/LaunchAgents/userkeymapping.plist
Tentunya jika Anda berakhir dengan beberapa kunci selain 0x700000064
Anda perlu mengubahnya dalam skrip, atau dalam file "$HOME"/bin/userkeymapping
itu akhirnya membuat jika Anda sudah menjalankan di atas.