2017-08-16 51 views
2

我認爲這張張貼到Ask Different,但我認爲它屬於這裏主要是因爲主要關注代碼。由於操作系統升級,模擬鍵盤命令不工作

我在我的mac上創建了一個用於切換空間的宏,並且自從升級到Sierra後,下面的AppleScript不再有效。有誰知道是否有變化?

tell application "System Events" to key code 124 using control down 

tell application "System Events" to key code 123 using control down 

這是輸出端子運行(注意^[[1;5D)時:

14:16 [email protected] ~ $ osascript -e 'tell application "System Events" to key code 123 using control down' 
^[[1;5D14:18 [email protected] ~ $ ;5D 

,並通過AppleScript的編輯器中運行時,沒有任何反應。

回答

2

是的,這是一個錯誤。

爲了模擬與控制鍵一些全局快捷鍵,命令需要FN鍵(一種解決方法塞拉利昂)。

這是不可能使用與AppleScript的的key code命令FN鍵,但它可能與Core Graphics框架在的Python腳本的方法。


這裏的腳本來模擬這個快捷鍵 - >(右箭頭+控制),可以運行在的終端腳本(在sh,bash或任何類似殼)

/usr/bin/python -c 'import time; import Quartz.CoreGraphics as QCG; e = QCG.CGEventCreateKeyboardEvent(None, 124, True); QCG.CGEventSetFlags(e, (QCG.kCGEventFlagMaskControl | QCG.kCGEventFlagMaskSecondaryFn)); QCG.CGEventPost(QCG.kCGHIDEventTap, e); time.sleep(0.1); QCG.CGEventSetType(e, QCG.kCGEventKeyUp); QCG.CGEventPost(QCG.kCGHIDEventTap, e)' 

這裏是一個AppleScript在 「腳本編輯器」 測試應用程序:

-- For switching spaces, 124 = the Right Arrow key, use 123 for the Left Arrow key 
do shell script "/usr/bin/python -c 'import time; import Quartz.CoreGraphics as QCG; e = QCG.CGEventCreateKeyboardEvent(None, 124, True); QCG.CGEventSetFlags(e, (QCG.kCGEventFlagMaskControl | QCG.kCGEventFlagMaskSecondaryFn)); QCG.CGEventPost(QCG.kCGHIDEventTap, e); time.sleep(0.1); QCG.CGEventSetType(e, QCG.kCGEventKeyUp); QCG.CGEventPost(QCG.kCGHIDEventTap, e)'" 
+0

你的傳說......我以爲有東西出現了 – Isaac

2

確保您的鍵碼與系統偏好設置中的鍵盤快捷鍵匹配。以下是系統偏好設置中的鍵盤快捷鍵,它們與我的AppleScript命令正確配合。

enter image description here

tell application "System Events" 
    key code 18 using (control down) -- Desktop 1 
end tell 

tell application "System Events" 
    key code 19 using (control down) -- Desktop 2 
end tell 

tell application "System Events" 
    key code 20 using (control down) -- Desktop 3 
end tell 

tell application "System Events" 
    key code 21 using (control down) -- Desktop 4 
end tell 

在塞拉利昂的最新版本,這些功能正常對我來說。

+0

這很奇怪,這些鍵似乎工作...通過不按Ctrl +左或CTRL +右命令 – Isaac