Unfortunately it doesn't work, and when I looked for the specific file it wasn't in this path.
I guess because this post is old and I'm in Ventura osx, maybe Apple changed the path for keyboard viewer.app
any suggestions how to open this keyboard from macro?
I wrote a small AppleScript script as a playground exercise several years ago. It toggles the viewer, although it may appear superfluous to make it hide programmatically rather than clicking on x.
Since it employs GUI scripting, expect it to break in the event that the more current macOS has changed the GUI structure.
ignoring case
tell application "System Events"
tell process "SystemUIServer"
tell menu bar 1
tell (the first menu bar item whose description contains "text input" or description contains "text")
perform action "AXPress"
repeat until menu 1 exists
delay 0.1
end repeat
tell menu 1
if exists menu item "show keyboard viewer" then
set TargetMenuItem to "show keyboard viewer"
else
set TargetMenuItem to "hide keyboard viewer"
end if
tell menu item TargetMenuItem
perform action "AXPress"
if TargetMenuItem is "hide keyboard viewer" then
do shell script "killall ABRT KeyboardViewer" -- the command is necessary because after closing the keyboard's window its process is still running. The loop below checks for its status.
set ProcessExists to true
repeat until ProcessExists is false
set ProcessExists to exists application process "Keyboard Viewer" of application "System Events"
delay 0.1
end repeat
end if
end tell
end tell
end tell
end tell
end tell
end tell
end ignoring
Keyboard Viewer the app disappeared a while ago. I had a look but couldn't find a command line method for opening its replacement -- but I'd love to be proved wrong!
Yep, while everything used to be a child of SystemUIServer they're now split across multiple processes -- SystemUIServer, ControlCenter... And, in this case, TextInputMenuAgent.
I was thrown for a while, not realising that TextInputMenuAgent has two menu bars -- the first seems to be another route to the Apple Menu and the application menus, the second holds the icons etc at the other end of the menu bar.
Because the menu item you want becomes "Hide Keyboard Viewer" after you've activated the viewer, this will act as a toggle.
tell application "System Events"
tell process "TextInputMenuAgent"
tell menu bar 2
tell item 1 of (every menu bar item whose accessibility description is "Show Emoji & Symbols")
click
tell menu 1
if exists menu item "Show Keyboard Viewer" then
click menu item "Show Keyboard Viewer"
else
click menu item "Hide Keyboard Viewer"
end if
end tell
end tell
end tell
end tell
end tell
thanks guys for replay..
I played a bit with the keyboard viewer settings and found an option for a hot corner, the truth is it works amazingly. I changed the default dwell time to 0.25ms and it gives a great solution.
It does depend on what you are doing under what OS, and particularly on whether you're able to use the ignoring application responses trick.
The above macro takes 1.8 seconds to run for me on Ventura, then there's a short delay for Keyboard Viewer to appear after the menu click. ignoring breaks the macro for me. Yours looks like an earlier OS, which could explain why it's much faster for you.