以前はKarabinerを使用してRight AltをRight Controlに再マップしていました(Emacsユーザーとしては、AltよりもControlをはるかに使用しています)が、Sierraに更新するとこれが壊れました。ダウングレードはオプションではありません。
Sierraでキーを手動で再マップするにはどうすればよいですか?具体的には、右Altを右コントロールに再マップしたいと思います。
以前はKarabinerを使用してRight AltをRight Controlに再マップしていました(Emacsユーザーとしては、AltよりもControlをはるかに使用しています)が、Sierraに更新するとこれが壊れました。ダウングレードはオプションではありません。
Sierraでキーを手動で再マップするにはどうすればよいですか?具体的には、右Altを右コントロールに再マップしたいと思います。
回答:
AppleのテクニカルノートTN2450では、キーを再マップする方法について説明しています。次のコマンドを実行すると、右Altが右コントロールに再マップされます。
hidutil property --set '{"UserKeyMapping":
[{"HIDKeyboardModifierMappingSrc":0x7000000e6,
"HIDKeyboardModifierMappingDst":0x7000000e4}]
}'
上記のコマンドは、右Altと右コントロールを切り替えないことに注意してください。どちらも正しいコントロールになります。MacBookをお持ちの場合、外部キーボードを接続するまでこれに気付かないでしょう。右Altと右コントロールを切り替える場合は、次のような2番目の切り替えコマンドを追加する必要があります。
hidutil property --set '{"UserKeyMapping":
[{"HIDKeyboardModifierMappingSrc":0x7000000e4,
"HIDKeyboardModifierMappingDst":0x7000000e6},
{"HIDKeyboardModifierMappingSrc":0x7000000e6,
"HIDKeyboardModifierMappingDst":0x7000000e4}]
}'
テクニカルノートの下部にある表には、各キーの16進値のリストがあります。上記の回答を一般化してキーを切り替えるにはor
、そのリストの16進値とを一緒に使用する必要があります0x700000000
。次のPythonコードは、これを行う1つの方法を示しています。
In [1]: def convert(val):
...: int_val = int(val, 16)
...: int_ref = 0x700000000
...:
...: return hex(int_ref | int_val)
...:
In [2]: r_alt = '0xE6'
In [3]: print(convert(r_alt))
0x7000000e6
Src
との両方にそのキーの値を指定してコマンドを再度実行するだけDst
です。
\
、キーボードのバックスラッシュは、ほとんど使用しないShift+Option+7
ような単純なものに置き換えたいものOption+.
です。それ、どうやったら出来るの?ご協力いただきありがとうございます。
より一般的でユーザーフレンドリーなアプローチはKarabiner-Elementsを使用することです。これはSierraで動作するKarabinerのバージョンです。
これは、Steven C. Howellの回答の補遺です。
スカンジナビア語のキーボードを備えた新しいMacBook Proを持っています。この新しいモデルにはEscキーがありません。これは私にとって大きな障害です。
以下は§キー(左上、1の左上、タブキーの上)を翻訳して、今日まで何にも使用したことはないと思いますが、Escを生成することを発見しました。
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
Appleのドキュメント(Stevenの回答からリンク)では、これは「Keyboard Non-US \ and |」とラベル付けされています。(0x64)。
「US以外の」キーのいくつかは、通常、使用しているキーボードのラベルが異なるキーを参照するため、発見が困難です。(私はまた、「墓のアクセントとチルダは」私のキーボードの上に生成し、左シフトとzの間のキーを意味していることを発見し<
、私はどのキーに対応する「非米国確立することができませんでした。#
とは~
」と私が見つけた後は、さらに実験しませんでした試してみたい場合は、必要なキーが見つかるまで端末でスクリプトを実行してみてください。
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
これはキーコードをループし、一度に1つずつ変更します。試行錯誤によって、特に役に立たないキーを見つけることができます。求められたら何かを入力してみてください- g
期待したものの代わりにを取得した場合、正しいキーコードが見つかりました。(便利な選択ではない0x70000000a
場合g
は、何か他のものに変更します。g
キーを再マップしたいのでしょうか?)入力が終わったら、Enterキーを押して次のキーに進みます。
価値があるのは、ループ内の最後のコマンドは、すべてのUserKeyMapping
設定をザップする方法です。
hidutil property --set '{"UserKeyMapping":[{}]}'
最初に実行するhidutil property --get UserKeyMapping
と、
(null)
ただし、この値をフィードバックして設定をザップすることはできません(または、この入力を受け入れますが無視します)。
(ターミナルに慣れていない場合は、プロンプトまたは同様のメッセージが表示されるfor
まで、物をコピーして貼り付けてdone
くださいbash$
。)
この関連するスタックオーバーフローの質問に従って、コマンドをホームディレクトリのスクリプトファイルに入れ、launchd
構成に追加して、この変更を永続的にすることができます。
一部の読者が自分でこれを行うことに不安がある場合、これを行う簡単なスクリプトを次に示します。繰り返しますが、ターミナルプロンプトでこれをコピー/貼り付けしてください。
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
明らか0x700000064
に、スクリプトでそれを変更する必要がある以外のキーで終わった場合、または"$HOME"/bin/userkeymapping
既に上記を実行した場合はファイルで作成されます。
LoginHook
いましたが、私にとってはうまくいきませんでした。stackoverflow.com/ a / 22872222/874188に基づいて、launchd
代わりにアプローチに切り替えました。
アップルメニューに移動して[システム環境設定]を選択し、[キーボード]設定パネルに移動して[キーボード]タブを選択します
右下隅の「修飾キー」ボタンをクリックします