Unlike the first generation Magic Mouse, there is no indicator present on the Magic Mouse 2 that would indicate the charging status.
But if you have access to a Mac (which is with which you are most likely using your Magic Mouse), you can use it to check if your Magic Mouse is charging.
Start by pairing your Magic Mouse to your Mac and checking the battery status in either one of the following places:
Click on the Bluetooth icon towards the right of the macOS Menu Bar. Hover the mouse pointer over the entry corresponding to the Magic Mouse and see the current battery charge level.
Go to System Preferences → Mouse and look for the current battery charge level at the bottom of the window.
Now charge your Magic Mouse 2 for a little while which you can do either using a wall outlet or Mac. Disconnect and check the charge status again to confirm if the Magic Mouse is indeed charging.
Alternatively, you can have the Mouse System Preference pane open and connect the Magic Mouse 2 using the Lightning cable, and the battery indicator would change to show that the Mouse is charging.
Videos
Is there a way to check the battery level of my bluetooth mouse? It's not from apple tho; it's from prolink.
Hi, I bought a magic mouse from Apple but whenever I connect it to my mouse, another mouse's indicator is present instead. I contacted Apple support and they said that it will be fixed on its own. However, despite updating, there is still another mouse indicator on my iPad and Mac. Any idea on how I can fix this issue?
Use ioreg and search for battery using grep
- Check the battery level of connected bluetooth headphones from the command line?
Since ioreg is really verbose - here is one command that cuts down to the names of bluetooth devices and all percentage of battery for each.
ioreg -l |egrep "BatteryPercent|Bluetooth Product Name"
Building on useful answer from bmike [Jul 30 '17] ... with a way to further cut down the repetitions of device names: add (a) symbol carat (^) to signify start-of-line, and (b) escaped vertical bar preceded and followed by specific number of spaces:
ioreg -r -l -n AppleHSBluetoothDevice | egrep '"BatteryPercent" = |^ \| "Bluetooth Product Name" = '
Those filters yielded this result:
| "Bluetooth Product Name" = "Magic Keyboard with Numeric Keypad"
| | "BatteryPercent" = 59
| "Bluetooth Product Name" = "Magic Mouse 2"
| | "BatteryPercent" = 98
More filtering with sed and echoing the variable gave the result that I was looking for
BATTLVL=$(ioreg -r -l -n AppleHSBluetoothDevice | egrep '"BatteryPercent" = |^ \| "Bluetooth Product Name" = '| sed 's/ | "Bluetooth Product Name" = "Magic Mouse 2"/ \| Mouse:/' | sed 's/ | "Bluetooth Product Name" = "Magic Keyboard with Numeric Keypad"/ \| Keyboard:/'| sed 's/ | | "BatteryPercent" = / /'); echo $BATTLVL
The result in console:
| Mouse: 96 | Keyboard: 71
But, when I went to put it all into a bash script file, I found that while BATTLVL indeed contains only the desired words and phrases to be reported, it also contains newline characters -- but, they do not appear when the ECHO command is appended to the preceding command with a semicolon.
So, in order to make further use of the report results, we remove the newlines using techniques suggested in this post:
BATTRPT=${BATTLVL//[$'\t\r\n']}; # Strips all instances of tab, newline, return.
Finally, to add an OS X notification of mouse and keyboard battery level from the bash script, found it necessary to first build the script string into a variable, and then pipe it to osascript so that the double quotes would be included in the string.
theScript=$"display notification \"$BATTRPT\" "
echo $theScript | osascript