1

Для игры (WoW) я хочу поменять местами cmd и alt, потому что я хочу связать их как модификатор горячих клавиш. Проблема в том, что вы не можете связать командную клавишу, поэтому мне приходится менять местами ключи в настройках каждый раз, когда я хочу играть, и менять местами после этого.

Есть ли способ сделать это в командной строке, чтобы я мог создать сценарий?

3 ответа3

3

На самом деле вы можете сделать это из терминала. Это в основном безумие, хотя.

#!/bin/bash
# Remap capslock to control. Really.
#
# list of keyboards plugged in to this computer
keyboard_ids=$(ioreg -n IOHIDKeyboard -r | grep -E 'VendorID"|ProductID' | awk '{ print $4 }' | paste -s -d'-\n' -)
# check if the keyboards are already remapped
echo $keyboard_ids | xargs -I{} sh -c 'defaults -currentHost read -g "com.apple.keyboard.modifiermapping.{}-0" | grep "Dst = 2" > /dev/null'
if [[ $? -ne 0 ]]; then
  # remap the keyboards
  echo $keyboard_ids | xargs -I{} defaults -currentHost write -g "com.apple.keyboard.modifiermapping.{}-0" -array "<dict><key>HIDKeyboardModifierMappingDst</key><integer>2</integer><key>HIDKeyboardModifierMappingSrc</key><integer>0</integer></dict>"
fi

Это меняет ~/Library/Preferences/ByHost/.GlobalPreferences.<machine_identifier>.plist , а затем вы можете выйти из системы и снова войти в нее или открыть предварительную панель клавиатуры, чтобы применить настройку.

1

Я не уверен, что вы можете сделать это через Терминал, но хорошим решением было бы создать скрипт Automator, который сделает это за вас быстро. Самый простой способ - это блок «смотри, как я», хотя они не выглядят блестяще.

Более сложным способом было бы использование appleScript, либо отдельно, либо с помощью скрипта Automator. Тем не менее, я не уверен, как именно вы будете использовать яблочный скрипт, но я уверен, что вы могли бы понять это.

0

Вы можете использовать KeyRemap4MacBook:

k=/Applications/KeyRemap4MacBook.app/Contents/Applications/KeyRemap4MacBook_cli.app/Contents/MacOS/KeyRemap4MacBook_cli
$k changed | grep -q ^remap.commandL2optionL= && mode=disable || mode=enable
$k $mode remap.commandL2optionL
$k $mode remap.commandR2optionR
$k $mode remap.optionL2commandL
$k $mode remap.optionrcommandr

Вы можете сделать нажатие на команду и параметр shift-F1 swap, используя private.xml, например так:

<?xml version="1.0"?>
<root>
  <item>
    <name>toggleoptcmd</name>
    <identifier>toggleoptcmd</identifier>
    <autogen>__KeyToKey__ KeyCode::F1, VK_SHIFT | ModifierFlag::NONE,
    KeyCode::VK_CONFIG_TOGGLE_swapoptcmd</autogen>
  </item>
  <item>
    <name>swapoptcmd</name>
    <identifier vk_config="true">swapoptcmd</identifier>
    <autogen>__KeyToKey__ KeyCode::OPTION_L, KeyCode::COMMAND_L</autogen>
    <autogen>__KeyToKey__ KeyCode::OPTION_R, KeyCode::COMMAND_R</autogen>
    <autogen>__KeyToKey__ KeyCode::COMMAND_L, KeyCode::OPTION_L</autogen>
    <autogen>__KeyToKey__ KeyCode::COMMAND_R, KeyCode::OPTION_R</autogen>
  </item>
</root>    

Это поменяет опцию и команду только тогда, когда TextEdit будет первым:

<?xml version="1.0"?>
<root>
<appdef>
  <appname>TEXTEDIT</appname>
  <equal>com.apple.TextEdit</equal>
</appdef>
  <item>
    <name>swapoptcmdtextedit</name>
    <identifier>swapoptcmdtextedit</identifier>
    <only>TEXTEDIT</only>
    <autogen>__KeyToKey__ KeyCode::OPTION_L, KeyCode::COMMAND_L</autogen>
    <autogen>__KeyToKey__ KeyCode::OPTION_R, KeyCode::COMMAND_R</autogen>
    <autogen>__KeyToKey__ KeyCode::COMMAND_L, KeyCode::OPTION_L</autogen>
    <autogen>__KeyToKey__ KeyCode::COMMAND_R, KeyCode::OPTION_R</autogen>
  </item>
</root>    

Другой вариант - использовать AppleScript:

tell application "System Preferences"
    reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell    
tell application "System Events" to tell window 1 of process "System Preferences"
    click button "Modifier Keys…" of tab group 1
    tell sheet 1
        --tell pop up button 5
        --click
        --click menu item "Apple Wireless Keyboard" of menu 1
        --end tell
        if value of pop up button 1 is "⌘ Command" then
            tell pop up button 1
                click
                click menu item "⌥ Option" of menu 1
            end tell
            tell pop up button 2
                click
                click menu item "⌘ Command" of menu 1
            end tell
        else
            tell pop up button 1
                click
                click menu item "⌘ Command" of menu 1
            end tell
            tell pop up button 2
                click
                click menu item "⌥ Option" of menu 1
            end tell
        end if
        click button "OK"
    end tell
end tell    
quit application "System Preferences"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .