Я придумал что-то, что вроде работает.
Сначала фальстарты ...
Сначала я подумал о создании InputManager, но кажется, что InputManager устарел по сравнению со Snow Leopard (я думаю, по уважительной причине ... это огромная дыра в безопасности), поэтому они не были опцией.
Я также рассмотрел использование Input Method Kit . Вероятно, возможно сделать то, что я хочу, используя метод ввода, но затем я застрял, используя нестандартный метод ввода, который, скорее, не то, что я хочу. Насколько я могу судить, методы ввода не совсем подходящий инструмент для этой работы.
... и затем для вещи, которая (вроде) работает.
Оказывается, система привязки клавиш в редакторе текста Какао вполне настраиваема. Я наткнулся на эту веб-страницу , которая предоставила отличное введение. Короче говоря, я поместил plist с именем DefaultKeyBinding.dict в ~ / Library / KeyBindings /, который описывает пару ярлыков. Вот файл:
<?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>@~^</key>
<array>
<string>setMark:</string>
<string>moveWordForward:</string>
<string>moveWordBackward:</string>
<string>deleteToMark:</string>
</array>
<key>@~^$</key>
<array>
<string>setMark:</string>
<string>moveWordBackward:</string>
<string>moveWordForward:</string>
<string>deleteToMark:</string>
</array>
</dict>
</plist>
Точный синтаксис / содержание комбинаций клавиш был получен из вышеупомянутой веб-страницы, но общий эффект состоит в том, что нажатие Cmd-Opt-Ctrl-Delete устанавливает метку, перемещается вперед на одно слово (включая все пробелы до слово), затем перемещается назад на одно слово (обратите внимание, что это не противоположно движению вперед на одно слово, потому что оно не возвращается назад через пробел), а затем удаляется до метки. Это эквивалент Shift-Opt-Right, Shift-Opt-Left, Delete. Другая комбинация клавиш такая же, за исключением того, что она добавляет смещение и меняет поведение.
Это не идеально, потому что оно не учитывает контекст. Если вы не пробуете пробелы, когда вызываете его, вы в конечном итоге удаляете часть слова, в котором находитесь. Тем не менее, это лучшее, что я придумал в этом году (плюс), так как я разместил этот вопрос.