Клавиши-модификаторы обрабатываются совершенно специально, и я сомневаюсь, что Mathematica сможет переопределить систему.Вероятно, у вас есть , чтобы сделать это в слое между Mathematica и ОС.НО, возможно заставить ключ вести себя по-разному в зависимости от приложения, в котором вы находитесь. Таким образом, если немного поработать, МОЖЕТ быть возможно, чтобы ключ capslock вел себя по-разному только в Mathematica .
edit: я не видел, чтобы вы говорили, какая у вас операционная система, поэтому я добавил инструкции для Mac.
Windows
Например, если у вас Windows, выможно использовать программу под названием http://www.autohotkey.com/.В частности, он имеет функцию, с помощью которой вы можете привязать ключ к сценарию, а именно к следующему сценарию:
Как сделать горячую клавишу или горячую строку доступной для определенных программ?
Другими словами, я хочу, чтобы определенный ключ действовал как обычно, кроме случаев, когда определенное окно активно.В следующем примере NumpadEnter настроен для нормальной работы, за исключением случаев, когда активно окно с названием «CAD Editor».Обратите внимание на использование префикса $ в «$ NumpadEnter», который требуется, чтобы горячая клавиша «отправила себя»:
$NumpadEnter::
IfWinNotActive, CAD Editor
{
Send, {NumpadEnter}
return
}
; Otherwise, the desired application is active, so do a custom action:
Send, abc
return
Этот следующий пример более чистый, чем приведенный выше,но это будет работать только в том случае, если приложение «CAD Editor» предназначено для игнорирования самого ключа NumpadEnter.Префикс тильды (~) превращает NumpadEnter в не подавленную горячую клавишу, а это означает, что само нажатие клавиши NumpadEnter всегда отправляется в активное окно, единственное отличие состоит в том, что он вызывает действие горячей клавиши.Для функции ~ требуется Windows NT / 2k / XP.
~NumpadEnter::
IfWinNotActive, CAD Editor
return
; Otherwise, the desired application is active, so do a custom action:
Send, abc
return
Чтобы цитировать слова "MRCS" в этом сообщении на форуме, вы можете найти следующее полезное:
Первый из них называется CapsLockR.ahk и содержит следующий скрипт:
CapsLock UP::Run C:\Documents and Sett...[path to script]...\CapsLock.ahk
Второй называется CapsLock.ahk и имеет этот скрипт:
GetKeyState, state, CapsLock, T
if state = D
SetCapsLockState, off
else
SetCapsLockState, on
exit
Таким образом, хуже всего становится хуже, если у вас возникли проблемы с изменением сценария «Ведите себя как Foo, если Active Window = Mathematica иначе ведет себя как Bar», вы можете использовать это для ручного переключения состояния CapsLock, я думаю.Google также покажет больше результатов.
Linux
Я знаю, что в Linux вы можете использовать программу под названием xbindkeys
, чтобы связать CapsLock со скриптом, из которого вы можетев свою очередь, позвоните по номеру xdo
, если вы обнаружите, что Mathematica является одним из самых верхних окон (например, через Получение pid и подробностей для самого верхнего окна или xdotool getwindowfocus
) или «от худшего к худшему», вы можете простоу вас есть скрипт, который переключает вашу конфигурацию между CapsLock -> xdotool key Escape, xdotool type "whatever", xdotool key Escape
(«режим Mathematica») и «нормальный режим» ... хотя это может помешать вам кричать на математиков над мгновенным сообщением во время выполнения математики.Если вам не понадобится, вам может понадобиться какой-нибудь способ программно переключать CapsLock, возможно, путем создания фиктивного ключа CapsLock (хотя это экстремальный взлом, вполне вероятно, что можно найти какую-то библиотеку; возможно, Кто-нибудь знает, как включить блокировку CapsLockвкл / выкл в Python? может быть полезно).(Эту проблему можно избежать, используя помимо CapsLock ключ или не заботясь о том, что вы хотите сохранить функциональность CapsLock; вы также можете просто превратить другой ключ, который вы никогда не используете, в CapsLock.)
Mac
Mac может иметь аналогичные инструменты.Например, вы можете получить xdotool
как в Linux выше через проект MacPorts.Я слышал, что ключ CapLock обычно не может быть отскочил так же легко на Mac, поэтому, если вы можете иметь дело с другим ключом, это может быть намного проще.Но теоретически это должно быть возможно ...
Если вы хотите использовать CapsLock, вы можете использовать PCKeyboardHack http://pqrs.org/macosx/keyremap4macbook/extra.html, чтобы переназначить ключ CapLock на что-то, что скажет OS X позволить вам переназначить CapsLock.Затем вы переназначаете его, затем связываете ключ, используя Quicksilver, со скриптом, который делает вызовы xdotool
, чтобы проверить, находитесь ли вы в Mathematica, а также для выдачи :esc:...:esc:
, если вы (см. Раздел Linux этого ответа).В противном случае вы имитируете нажатие клавиши на CapsLock.Но вы переназначили CapsLock!Поэтому вам может понадобиться создать другой фиктивный ключ, который вы никогда не используете, в ключе CapsLock и вызвать нажатие на него с помощью библиотек Cocoa или простого AppleScript.Если вы хотите продолжить маршрут CapsLock, вам может пригодиться Использование Caps Lock в качестве Esc в Mac OS X .