Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

カテゴリー: Bluetooth

Bluetoothに接続中のデバイス名を取得するv6

Posted on 12月 13, 2024 by Takaaki Naganoya

3年ぐらい前に書いてあった、Mac本体にペアリングして接続しているBluetoothのデバイス名を取得するAppleScriptです。

AppleScript名:Bluetoothに接続中のデバイス名を取得するv6.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2024/12/13
—
–  Copyright © 2024 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.8"
use scripting additions
use framework "Foundation"
use framework "IOBluetooth"

set pRes to getBluetoothPowerState() of me
if pRes = false then return

set dArray to current application’s IOBluetoothDevice’s pairedDevices()
set dRes to my filterRecListByLabel1(dArray, "isConnected != 0")
set dNameList to (dRes’s valueForKeyPath:"name") as list
–> {"Logicool Z600", "Takaaki Naganoya のキーボード #1", "Takaaki Naganoya のマウス"}
–> {"Logicool Z600", "AirPods Pro", "DUALSHOCK 4 Wireless Controller"}

–リストに入れたレコードを、指定の属性ラベルの値で抽出
on filterRecListByLabel1(aRecList, aPredicate as string)
  set aArray to current application’s NSArray’s arrayWithArray:aRecList
  
set aPredicate to current application’s NSPredicate’s predicateWithFormat:aPredicate
  
set filteredArray to aArray’s filteredArrayUsingPredicate:aPredicate
  
return filteredArray
end filterRecListByLabel1

–Mac本体のBluetoothのパワー状態を取得
on getBluetoothPowerState()
  set aCon to current application’s IOBluetoothHostController’s alloc()’s init()
  
set pRes to (aCon’s powerState()) as boolean
end getBluetoothPowerState

★Click Here to Open This Script 

Posted in Bluetooth System | Tagged 13.0savvy 14.0savvy 15.0savvy | Leave a comment

Bluetoothに接続中のデバイス名を取得するv4

Posted on 2月 18, 2018 by Takaaki Naganoya
AppleScript名:Bluetoothに接続中のデバイス名を取得するv4
— Created 2017-07-24 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "IOBluetooth"

set pRes to getBluetoothPowerState() of me
if pRes = false then return

set dArray to current application’s IOBluetoothDevice’s pairedDevices()
set aRes to my filterRecListByLabel1(dArray, "mIONotification != 0")
set dNames to (aRes’s mName) as list
–>  {​​​​​"Piyomaru AirPods", ​​​​​"Takaaki Naganoya のマウス"​​​}

–リストに入れたレコードを、指定の属性ラベルの値で抽出
on filterRecListByLabel1(aRecList, aPredicate as string)
  set aArray to current application’s NSArray’s arrayWithArray:aRecList
  
set aPredicate to current application’s NSPredicate’s predicateWithFormat:aPredicate
  
set filteredArray to aArray’s filteredArrayUsingPredicate:aPredicate
  
return filteredArray
end filterRecListByLabel1

–Mac本体のBluetoothのパワー状態を取得
on getBluetoothPowerState()
  set aCon to current application’s IOBluetoothHostController’s alloc()’s init()
  
set pRes to (aCon’s powerState()) as boolean
end getBluetoothPowerState

★Click Here to Open This Script 

Posted in Bluetooth System | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

Bluetoothのオン、オフ状態を取得する

Posted on 2月 18, 2018 by Takaaki Naganoya
AppleScript名:Bluetoothのオン、オフ状態を取得する
— Created 2017-07-25 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "IOBluetooth"

set pRes to getBluetoothPowerState() of me

on getBluetoothPowerState()
  set aCon to current application’s IOBluetoothHostController’s alloc()’s init()
  
set pRes to (aCon’s powerState()) as boolean
end getBluetoothPowerState

★Click Here to Open This Script 

Posted in Bluetooth System | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

Bluetoothに接続中のデバイス名を取得、AirPodsを切断する

Posted on 2月 18, 2018 by Takaaki Naganoya
AppleScript名:Bluetoothに接続中のデバイス名を取得、AirPodsを切断する
— Created 2017-08-05 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.5" –macOS 10.11 or later
use scripting additions
use framework "Foundation"
use framework "IOBluetooth"
–参照 https://github.com/lapfelix/BluetoothConnector

property IOBluetoothHostController : a reference to current application’s IOBluetoothHostController
property IOBluetoothDevice : a reference to current application’s IOBluetoothDevice

set dList to getActiveBluetoothDevices() of me
–>  {{deviceName:"Piyomaru AirPods", deviceAddress:"Xx-XX-xX-Xx-xx-xx"}, {deviceName:"Takaaki Naganoya のマウス", deviceAddress:"xx-xx-XX-xx-XX-Xx"}, {deviceName:"Takaaki Naganoya のキーボード #1", deviceAddress:"XX-XX-xX-xx-Xx-xX"}}

set dRes to filterRecListByLabel(dList, "deviceName contains ’AirPods’") of me
if dRes = {} then return false –Case: No match
set dAddr to dRes’s first item’s deviceAddress

set cnRes1 to disconnectBluetoothDeviceByAddress(dAddr) of me
–>  true (Successfully Disconnected)

delay 10

set cnRes2 to connectBluetoothDeviceByAddress(dAddr) of me
–>  true (Successfully Connected)

–指定アドレスのBluetooth Deviceを接続する
on connectBluetoothDeviceByAddress(addressStr as string)
  if getBluetoothPowerState() = false then error "Bluetooth Power is not active with your Mac"
  
set aBTList to IOBluetoothDevice’s pairedDevices() as list
  
  
repeat with i in aBTList
    set aClass to (current application’s NSStringFromClass(i’s |class|())) as string
    
if aClass is equal to "IOBluetoothDevice" then
      set anAddress to i’s addressString() as string
      
      
if anAddress = addressStr then
        i’s openConnection()
        
return true
      end if
    end if
  end repeat
  
return false
end connectBluetoothDeviceByAddress

–指定アドレスのBluetooth Deviceの接続を切る
on disconnectBluetoothDeviceByAddress(addressStr as string)
  if getBluetoothPowerState() = false then error "Bluetooth Power is not active with your Mac"
  
set aBTList to IOBluetoothDevice’s pairedDevices() as list
  
  
repeat with i in aBTList
    set aClass to (current application’s NSStringFromClass(i’s |class|())) as string
    
if aClass is equal to "IOBluetoothDevice" then
      set anAddress to i’s addressString() as string
      
      
if anAddress = addressStr then
        i’s closeConnection()
        
return true
      end if
    end if
  end repeat
  
return false
end disconnectBluetoothDeviceByAddress

–ペアリング済みのBluetooth Deviceの情報を取得
on getActiveBluetoothDevices()
  if getBluetoothPowerState() = false then error "Bluetooth Power is not active with your Mac"
  
set aBTList to IOBluetoothDevice’s pairedDevices() as list
  
set devList to {}
  
  
repeat with i in aBTList
    set aClass to (current application’s NSStringFromClass(i’s |class|())) as string
    
if aClass = "IOBluetoothDevice" then
      set aName to i’s |name|() as string
      
set anAddress to i’s addressString() as string
      
set aPaired to i’s isPaired() as boolean
      
–set aConnect to i’s isConnected() as boolean
      
if aPaired = true then
        set the end of devList to {deviceName:aName, deviceAddress:anAddress}
      end if
    end if
  end repeat
  
  
return devList
end getActiveBluetoothDevices

–Mac本体のBluetoothのパワー状態を取得
on getBluetoothPowerState()
  set aCon to IOBluetoothHostController’s alloc()’s init()
  
set pRes to (aCon’s powerState()) as boolean
end getBluetoothPowerState

–リストに入れたレコードを、指定の属性ラベルの値で抽出
on filterRecListByLabel(aRecList as list, aPredicate as string)
  set aArray to current application’s NSArray’s arrayWithArray:aRecList
  
  
set aPredicate to current application’s NSPredicate’s predicateWithFormat:aPredicate
  
set filteredArray to aArray’s filteredArrayUsingPredicate:aPredicate
  
  
set bList to filteredArray as list
  
return bList
end filterRecListByLabel

★Click Here to Open This Script 

Posted in Bluetooth System | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

Bluetoothに接続中のデバイスをメーカー名とマイナー種別で抽出

Posted on 2月 18, 2018 by Takaaki Naganoya
AppleScript名:Bluetoothに接続中のデバイスをメーカー名とマイナー種別で抽出
— Created 2017-08-06 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

property NSArray : a reference to current application’s NSArray
property NSString : a reference to current application’s NSString
property NSPredicate : a reference to current application’s NSPredicate
property NSMutableArray : a reference to current application’s NSMutableArray
property NSMutableDictionary : a reference to current application’s NSMutableDictionary
property NSPropertyListFormat : a reference to current application’s NSPropertyListFormat
property NSUTF8StringEncoding : a reference to current application’s NSUTF8StringEncoding
property NSPropertyListImmutable : a reference to current application’s NSPropertyListImmutable
property NSPropertyListSerialization : a reference to current application’s NSPropertyListSerialization

–製造者が"Apple"のBluetoothデバイスをリストアップ
set qRes to returnBTPeripheral from "Apple"
–>  {​​​​​{​​​​​​​device_supportsESCO:"attrib_Yes", ​​​​​​​device_role:"attrib_master", ​​​​​​​device_manufacturer:"Apple (0x6, 0x03)", ​​​​​​​device_services:"Handsfree, Wireless iAP, AVRCP Controller, Audio Sink, AVRCP Target, AAP Server", ​​​​​​​device_isconnected:"attrib_Yes", ​​​​​​​device_RSSI:-51, ​​​​​​​device_majorClassOfDevice_string:"Audio", ​​​​​​​device_isconfigured:"attrib_Yes", ​​​​​​​device_minorClassOfDevice_string:"Headphones", ​​​​​​​device_interval:"441.25 ms", ​​​​​​​device_addr:"XX-XX-XX-XX-XX-XX", ​​​​​​​device_ConnectionMode:"attrib_sniff_mode", ​​​​​​​device_productID:"0x2002", ​​​​​​​device_supportsSSP:"attrib_Yes", ​​​​​​​device_classOfDevice:"0x04 0x06 0x240418", ​​​​​​​device_vendorID:"0x004C", ​​​​​​​device_fw_version:"0x0372", ​​​​​​​device_ispaired:"attrib_Yes", ​​​​​​​device_supportsEDR:"attrib_Yes"​​​​​}, ​​​​​{​​​​​​​device_supportsESCO:"attrib_No", ​​​​​​​device_manufacturer:"Apple (0x3, 0x31C)", ​​​​​​​device_ispaired:"attrib_Yes", ​​​​​​​device_services:"Apple Wireless Mouse", ​​​​​​​device_isconnected:"attrib_No", ​​​​​​​device_majorClassOfDevice_string:"Peripheral", ​​​​​​​device_isNormallyConnectable:"attrib_Yes", ​​​​​​​device_isconfigured:"attrib_Yes", ​​​​​​​device_addr:"XX-XX-XX-XX-XX-XX", ​​​​​​​device_productID:"0x030D", ​​​​​​​device_supportsSSP:"attrib_No", ​​​​​​​device_vendorID:"0x05AC", ​​​​​​​device_classOfDevice:"0x05 0x20 0x2580", ​​​​​​​device_minorClassOfDevice_string:"Mouse", ​​​​​​​device_fw_version:"0x0084", ​​​​​​​device_supportsEDR:"attrib_No"​​​​​}​​​}
–Appleのデバイスでも製造者がAppleになっていないものもある。Magic Keyboard 2とか

–種類(マイナー)が "Headphones"のBluetoothデバイスをリストアップ
set qRes to returnBTPeripheral about "Headphones"
–>  {​​​​​{​​​​​​​device_supportsESCO:"attrib_Yes", ​​​​​​​device_role:"attrib_master", ​​​​​​​device_manufacturer:"Apple (0x6, 0x03)", ​​​​​​​device_services:"Handsfree, Wireless iAP, AVRCP Controller, Audio Sink, AVRCP Target, AAP Server", ​​​​​​​device_isconnected:"attrib_Yes", ​​​​​​​device_RSSI:-51, ​​​​​​​device_majorClassOfDevice_string:"Audio", ​​​​​​​device_isconfigured:"attrib_Yes", ​​​​​​​device_minorClassOfDevice_string:"Headphones", ​​​​​​​device_interval:"441.25 ms", ​​​​​​​device_addr:"XX-XX-XX-XX-XX-XX", ​​​​​​​device_ConnectionMode:"attrib_sniff_mode", ​​​​​​​device_productID:"0x2002", ​​​​​​​device_supportsSSP:"attrib_Yes", ​​​​​​​device_classOfDevice:"0x04 0x06 0x240418", ​​​​​​​device_vendorID:"0x004C", ​​​​​​​device_fw_version:"0x0372", ​​​​​​​device_ispaired:"attrib_Yes", ​​​​​​​device_supportsEDR:"attrib_Yes"​​​​​}​​​}

–製造者が"Apple"で、種類(マイナー)が "Headphones"のBluetoothデバイスをリストアップ
set qRes to returnBTPeripheral from "Apple" about "Headphones"
–> {{device_supportsESCO:"attrib_Yes", device_role:"attrib_master", device_manufacturer:"Apple (0x6, 0x03)", device_services:"Handsfree, Wireless iAP, AVRCP Controller, Audio Sink, AVRCP Target, AAP Server", device_isconnected:"attrib_Yes", device_RSSI:-52, device_majorClassOfDevice_string:"Audio", device_isconfigured:"attrib_Yes", device_minorClassOfDevice_string:"Headphones", device_interval:"441.25 ms", device_addr:"XX-XX-XX-XX-XX-XX", device_ConnectionMode:"attrib_sniff_mode", device_productID:"0x2002", device_supportsSSP:"attrib_Yes", device_classOfDevice:"0x04 0x06 0x240418", device_vendorID:"0x004C", device_fw_version:"0x0372", device_ispaired:"attrib_Yes", device_supportsEDR:"attrib_Yes"}}

on returnBTPeripheral from devMaker as string : "" about kindName as string : ""
  set sRes to do shell script "/usr/sbin/system_profiler SPBluetoothDataType -detailLevel full -xml"
  
set aSource to (readPlistFromStr(sRes) of me) as list
  
set aaList to contents of first item of aSource
  
  
set resArray to NSMutableArray’s new()
  
  
set aList to _items of aaList
  
repeat with i in aList
    set aDict to (NSMutableDictionary’s dictionaryWithDictionary:(contents of i))
    
set aKeyList to (aDict’s allKeys()) as list
    
    
set dResList to (aDict’s valueForKeyPath:"device_title")
    
repeat with ii in dResList
      set dKeyList to ii’s allKeys()
      
set dKey to first item of dKeyList
      
set dDic to (ii’s valueForKeyPath:dKey)
      
      
if devMaker is not equal to "" and kindName is not equal to "" then
        set qText to "device_manufacturer contains ’" & devMaker & "’ && device_minorClassOfDevice_string ==’" & kindName & "’"
      else if devMaker is not equal to "" then
        set qText to "device_manufacturer contains ’" & devMaker & "’"
      else if kindName is not equal to "" then
        set qText to "device_minorClassOfDevice_string ==’" & kindName & "’"
      end if
      
      
set dRes to filterRecListByLabel(dDic, qText) of me
      
if (dRes as list) is not equal to {} then
        (resArray’s addObject:(first item of dRes))
      end if
    end repeat
  end repeat
  
  
return resArray as list
end returnBTPeripheral

–stringのplistを読み込んでRecordに
on readPlistFromStr(theString)
  set aSource to NSString’s stringWithString:theString
  
set pListData to aSource’s dataUsingEncoding:(NSUTF8StringEncoding)
  
set aPlist to NSPropertyListSerialization’s propertyListFromData:pListData mutabilityOption:(NSPropertyListImmutable) |format|:(NSPropertyListFormat) errorDescription:(missing value)
  
return aPlist
end readPlistFromStr

–リストに入れたレコードを、指定の属性ラベルの値で抽出
on filterRecListByLabel(aRecList as list, aPredicate as string)
  set aArray to NSArray’s arrayWithArray:aRecList
  
  
set aPredicate to NSPredicate’s predicateWithFormat:aPredicate
  
set filteredArray to aArray’s filteredArrayUsingPredicate:aPredicate
  
  
set bList to filteredArray as list
  
return bList
end filterRecListByLabel

★Click Here to Open This Script 

Posted in Bluetooth System | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • 開発機としてM2 Mac miniが来たのでガチレビュー
  • CotEditorで2つの書類の行単位での差分検出
  • macOS 15, Sequoia
  • 指定のWordファイルをPDFに書き出す
  • Pages本執筆中に、2つの書類モード切り替えに気がついた
  • Numbersで選択範囲のセルの前後の空白を削除
  • メキシカンハットの描画
  • Pixelmator Pro v3.6.4でAppleScriptからの操作時の挙動に違和感が
  • AdobeがInDesign v19.4からPOSIX pathを採用
  • Safariで「プロファイル」機能を使うとAppleScriptの処理に影響
  • AppleScriptによる並列処理
  • Cocoa Scripting Course 続刊計画
  • macOS 14.xでScript Menuの実行速度が大幅に下がるバグ
  • NaturalLanguage.frameworkでNLEmbeddingの処理が可能な言語をチェック
  • AppleScript入門③AppleScriptを使った「自動化」とは?
  • Keynote/Pagesで選択中の表カラムの幅を均等割
  • Keynote、Pages、Numbers Ver.14.0が登場
  • macOS 15 リモートApple Eventsにバグ?
  • デフォルトインストールされたフォント名を取得するAppleScript
  • AppleScript入門① AppleScriptってなんだろう?

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (212) 13.0savvy (189) 14.0savvy (141) 15.0savvy (120) CotEditor (66) Finder (51) iTunes (19) Keynote (116) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (76) Pages (54) Safari (44) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • diff
  • drive
  • Droplet
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC