2009-09-19 13 views
5

पृष्ठभूमिको लागू कुंजीपटल Apple स्क्रिप्ट में मात्रा नियंत्रण बटन - पाश अंदर मात्रा की स्थापना

मैं एक MACALLY IceKey कुंजीपटल है काम नहीं करता। इस कीबोर्ड में वॉल्यूम बटन हैं जिन्हें ड्राइवर को फ़ंक्शन करने की आवश्यकता होती है। यह ड्राइवर 2006 से अपडेट नहीं किया गया है, और मुझे इसे मैक ओएस एक्स 10.6.1 के तहत अनुभव कर रहे आवर्ती कर्नेल पैनिक्स के हालिया स्पॉट के स्रोत के रूप में संदेह है। तो, यह बाहर चला जाता है; लेकिन मैं अपनी वॉल्यूम कुंजियों को वापस चाहता हूं!

अद्भुत ControllerMate का उपयोग करके, मैं इन कुंजी को कुछ भी करने के लिए प्रोग्राम कर सकता हूं, जिसमें सेबस्क्रिप्ट स्क्रिप्ट चलाया जा सकता है। तो, मैं उस कार्यक्षमता को लागू करने की कोशिश कर रहा हूं।

सेट वॉल्यूम कमांड (मानक जोड़ों का हिस्सा) आपको वॉल्यूम को 0 और 100 के बीच किसी भी मान पर सेट करने की अनुमति देता है। ऐप्पल कीबोर्ड वॉल्यूम कुंजियां कुल 17 वॉल्यूम सेटिंग्स को चुनने की अनुमति देती हैं (0 सहित)। मुझे इस व्यवहार को डुप्लिकेट करने का सबसे आसान तरीका यह है कि अनुमत वॉल्यूम सेटिंग्स की सूची रखना और उसमें से सबसे बड़ा (या सबसे छोटा) एक को पकड़ना है।

समस्या

यह काम नहीं करता। निम्न स्क्रिप्ट:

set volumesList to {0, 6, 12, 18, 25, 31, 37, 43, 50, 56, 62, 68, 75, 81, 87, 93, 100} 
set sysVolume to get volume settings 

repeat with curVolume in volumesList 
    if (curVolume > (output volume of sysVolume)) then 
     set volume output volume (contents of curVolume) 
     exit repeat 
    end if 
end repeat 

get volume settings 

... केवल तभी प्रणाली ध्वनि के स्तर को कम 43 से प्रणाली "50" के रूप में "49" की व्याख्या करने लगता है होने वाला काम करता है; यह उतना ही ऊंचा है जितना वॉल्यूम मेरी स्क्रिप्ट के साथ जाएगा। यदि वॉल्यूम 50 से अधिक प्रारंभ होता है, तो मेरी स्क्रिप्ट का कोई प्रभाव नहीं पड़ता है। किकर? यदि "निकास दोहराना" कथन हटा दिया गया है, तो सिस्टम वॉल्यूम 100 पर सेट हो जाता है - जैसा कि आप उम्मीद करेंगे।

कोई भी विचार (अच्छा दु: ख, AppleScript अजीब कभी कभी होता है।)?

बोनस अंक

यह सुपर इसे पाने के लिए के रूप में अच्छी मात्रा ओवरले प्रदर्शित करने के लिए भयानक होगा। क्या कोई जानता है कि इसे कैसे पूरा किया जाए? इसे ऐप्पलस्क्रिप्ट के माध्यम से भी होने की आवश्यकता नहीं है; मैं कमांड लाइन उपकरण में कुछ कोको कोड चिपकाने में खुश हूं अगर ऐसा होता है।

उत्तर

6

मैं पता नहीं कैसे दिखाने के लिए पारदर्शी ओवरले प्राप्त करने के लिए है, लेकिन यह कम से कम सिस्टम बीप निभाता है, जबकि मात्रा मोड़ अप:

set currentVolume to output volume of (get volume settings) 
set newVolume to (currentVolume + (100/17)) as integer 
set volume output volume newVolume 
beep 

अपने वॉल्यूम-डाउन में - साथ + बदलें स्क्रिप्ट।

set volume output स्वचालित रूप से (0, 100) सीमा के बाहर मान समायोजित प्रतीत होता है।

अद्यतन: आप Growl's AppleScript support इस्तेमाल कर सकते हैं ओवरले का कुछ तरह दिखाने के लिए: एक गुर्राना अधिसूचना क्राफ्टिंग के लिए

tell application "GrowlHelperApp" 

    register as application "Volume Change" ¬ 
     all notifications {"Volume Change"} ¬ 
     default notifications {"Volume Change"} ¬ 
     icon of application "Script Editor" 

    notify with name "Volume Change" ¬ 
     title "Volume Up" ¬ 
     description "Volume is now " & output volume of (get volume settings) ¬ 
     application name "Volume Change" 

end tell 
+0

में बनाया का उपयोग कर सकते यह रहा है जैसे मैं अपने दृष्टिकोण लेने के लिए की आवश्यकता होगी। यह ऐप्पल के ड्राइवर (जो सूची-के-वैध-मान दृष्टिकोण का उपयोग करने के लिए प्रतीत होता है) के व्यवहार को दोहराता नहीं है, लेकिन यह "पर्याप्त पर्याप्त" होना चाहिए। –

1
एक भुगतान बेवकूफ के सुझावों के साथ

, मुझे लगता है कि इस का एक म्यूट/अनम्यूट संस्करण बनाया प्रदर्शित करता है एक ग्रोथ अधिसूचना, लेकिन केवल एक संक्षिप्त पल के लिए।

चूंकि मुझे एक उष्णकटिबंधीय अवधि और शैली निर्दिष्ट करने का कोई तरीका नहीं मिला, इसलिए मैंने वर्तमान उगने वाले डिफ़ॉल्ट को पढ़ने के लिए सेबस्क्रिप्ट का उपयोग किया, एक साधारण ग्रोल शैली (धुआं, पर स्विच करें, क्योंकि यह ऊपरी हिस्से में बस एक छोटी सी खिड़की दिखाता है दाएं कोने, यद्यपि आप इस स्क्रिप्ट को व्यवहार के लिए बेज़ेल में अनुकूलित कर सकते हैं जो सिस्टम को पूरी तरह से मिरर करता है), विलंब को 0.3 सेकंड तक बढ़ा देता है, उगता है, फिर उगने के prefs को उलट देता है।

स्क्रिप्ट थोड़ा वर्बोज़ है, क्योंकि मैं ज्यादातर सेबस्क्रिप्ट भूल गया हूं। मुझे यकीन है कि इसे और अधिक सरल बनाने का एक तरीका है।

set _muted to (get (output muted of (get volume settings))) 
set str to "Muted" 
if _muted is false then 
    set volume with output muted 
else 
    set volume without output muted 
    set str to "" & output volume of (get volume settings) 
end if 

set oldStyle to (do shell script "defaults read com.Growl.GrowlHelperApp GrowlDisplayPluginName") 

do shell script "defaults write com.Growl.GrowlHelperApp GrowlDisplayPluginName Smoke" 

set alpha to (do shell script "defaults read com.Growl.GrowlHelperApp com.growl.SmokeNotificationView | awk '$3 ~ /Alpha/' | sed -E 's/[^0-9.]*//g'") 

set duration to (do shell script "defaults read com.Growl.GrowlHelperApp com.growl.SmokeNotificationView | awk '$3 ~ /Duration/' | sed -E 's/[^0-9.]*//g'") 

set cmd to "defaults write com.Growl.GrowlHelperApp \"com.growl.SmokeNotificationView\" -dict " 
set params to "\"Smoke - Alpha\" -float " & alpha & " \"Smoke - Duration\" -float 0.3" 

do shell script cmd & params 

tell application "GrowlHelperApp" 
    register as application ¬ 
     "Volume Change" all notifications {"Volume Change"} ¬ 
     default notifications {"Volume Change"} ¬ 
     icon of application "Script Editor" 

    notify with name ¬ 
     "Volume Change" title "Volume" description str application name ¬ 
     "Volume Change" identifier "MuteUnmute" 
end tell 

do shell script "defaults write com.Growl.GrowlHelperApp GrowlDisplayPluginName " & oldStyle 

set params to "\"Smoke - Alpha\" -float " & alpha & " \"Smoke - Duration\" -float " & duration 
do shell script cmd & params 
1

तुम भी अधिसूचना

set vol to ((output volume of (get volume settings)) + 5) 
if (vol > 100) then set vol to 100 
set volume output volume (vol) 

display notification ((vol) as string) 
संबंधित मुद्दे