FileMaker Custom Keyboard Shortcuts are a key part of developer productivity.
Attached is a one page Work-in-Progress PNG documenting the Custom Keyboard Shortcuts that we are currently using.
This technique is based on and extends the work documented here:
Macintosh Keyboard Shortcuts Enhancer tool , created by Matt Petrowsky
...and builds on a presentation that I gave to the NYFMP.org group:
More ideas here...
Take the Short Cut by Daniel Wood
Below is a shell script that will install a reasonably well thought out set of Custom Keyboard Shortcuts into FileMaker 18.
Here are the steps to install (at your own risk!!!)...
Close your System Preferences Application (as needed)
Quit FileMaker Pro (Advanced)
Run this #!/bin/sh shell script from: BBEdit > menu > #! > Run in Terminal
[begin]
#!/bin/sh
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Security…' '$@A' # ⇧⌘A
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Value Lists…' '$@V' # ⇧⌘V
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'External Data Sources…' '$@E' # ⇧⌘E
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Custom Functions…' '$@X' # ⇧⌘X
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Custom Menus…' '$@M' # ⇧⌘M
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'File Options…' '^O' # ⌃O
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Buttons' '^~@B' # ⌃⌥⌘B
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Sample Data' '^~@D' # ⌃⌥⌘D
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Sliding Objects' '^~@O' # ⌃⌥⌘O
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Non-Printing Objects' '^~@N' # ⌃⌥⌘N
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Conditional Formatting' '^~@C' # ⌃⌥⌘C
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Script Triggers' '^~@S' # ⌃⌥⌘S
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Quick Find' '^~@Q' # ⌃⌥⌘Q
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Tooltips' '^~@T' # ⌃⌥⌘T
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Conditional…' '^C' # ⌃C
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Themes…' '$@T' # ⇧⌘T
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Smallest Width' '^~@←' # ⌃⌥⌘←
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Smallest Height' '^~@↑' # ⌃⌥⌘↑
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Largest Width' '^~@→' # ⌃⌥⌘→
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Largest Height' '^~@↓' # ⌃⌥⌘↓
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Script Debugger' '^B' # ⌃B
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Data Viewer' '^D' # ⌃D
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Containers…' '$@C' # ⇧⌘C
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Popover Buttons' '^~@P' # ⌃⌥⌘P
[end]
Open FileMaker Pro (Advanced)
Happy FileMaker'ing!
Shown below (in green boxes) are some of the keyboard shortcuts that you should see.
6 Likes
Great stuff. Thank you for sharing this with the community, @tonywhitelive !
Jenyen
February 13, 2022, 12:35pm
3
Do you know which versions of FM this works with? From version 12 onward? Anything older?
Thanks.
I do not know all the versions that it works for. Most?
You might test (at your own risk) to see if it works for you and your version.
1 Like
DrewFM
February 14, 2022, 5:35pm
5
I've been thinking lately, lots of people use Logitech mouses for gaming. I dont know much about them.
Is there a way to set those mouse shortcuts with Filemaker?
Yes, I use a Logitech gaming mice for development.
To be honest a lot of my binds are for Spotify controls, however I do use a few for FileMaker. I work in a multi file solution and often I need to get quickly into field definitions from another file, so I have set up a custom menu item to take me to that file. In the Logitech app I can set up multiple keystrokes to be bound to a button, which I do to run the custom menu shortcut followed by cmd+shift+d to get into field definitions.
I have also tried a few others in the past, one experimental sequence which was intended to allow me to open any script by clicking a button on a layout. In Logitech you can record macros. I would press a special key on the mouse over a button, which would:
• Turn on debugger (via a custom shortcut).
• Single-click
• step into script in debugger
• launch script window via debugger
• Terminate script and close debugger
The end result quite nice (however not 100% reliable due to timings).
At the end of the day you can program any of the buttons to basically do anything. You can also have different profiles for various apps. You can also have multiple profiles for an app and bind a button to cycle between profiles, allowing you to have more than one set of button binds.
3 Likes
harvest
February 15, 2022, 5:46am
7
While I use a Logitech for working for almost 10 years now I haven't tried to program any key of it. It just doesn't seem to fit to the mouse. (maybe that is also the reason for not using the Touchbar of the Macbooks) I'm using it because of speed and the levels of settings I get to customize my experience. I got pushed to it by a fellow programmer who is a gamer and saw/heard me sometimes swearing at my older input devices while working on bigger screens or two-monitor-setups.
As a developer, your two biggest tools are the keyboard/mouse obviously - so why wouldn't you invest in making these perform to the absolute best they can to improve your efficiency and proficiency as a developer.
All too often I see people developing with a basic setup.
The keyboard can be made so much more powerful with additional custom shortcuts, and text-expanding tools to save time reaching for the mouse, or wasted typing.
While the mouse can do so much more in terms of additional buttons & bindings..
Over the course of a year, the savings in time from adding shortcuts & extra buttons is massive.
4 Likes
harvest
February 16, 2022, 11:33am
9
I absolutely agree. I'm using the keyboard shortcuts a lot, enhancing the functionality via macOS means (Systempreferences -> Keyboard -> Shortcuts) and by generating own combinations of key sequences via the MBS Hotkey - component within FM-applications.
Mouse shortcuts are a different case though because I don't have the same mouse on all setups (Logitech M10, Logitech G402, Logitech G700s) especially while "on the road", thus no mouse programming as of today for me
1 Like
Yeah the mouse is definitely more difficult. Overall about 95% of efficiency comes from the keyboard, the mouse buttons while nice don't provide a massive boost.
2 Likes
csmu
February 2, 2025, 12:19am
11
I know it's been a long time this was first posted - things change.
The bash script above failed with FileMaker 21 on my device. I added a few Shortcuts via App Shortcuts and read the results.
The difference was the code exported had lowercase letters. I changed the bash script to use lowercase shortcuts, ran the script and they all turned up in FileMaker.
I added shortcuts for Pause on error, Enable Script Triggers and Disabled Script Triggers. I use Pause on error a lot to simulate break points by creating script steps that error if $debug is True.
Thanks @tonywhitelive for posting this topic!
install.filemaker.shortcuts.sh
#!/usr/bin/env bash
echo ""
echo "File"
echo ""
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'File Options...' '^o' # ⌃O"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'File Options...' '^o'
echo ""
echo "File > Manage"
echo ""
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Security...' '$@a' # ⇧⌘A"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Security...' '$@a'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Value Lists...' '$@v' # ⇧⌘V"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Value Lists...' '$@v'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'External Data Sources...' '$@e' # ⇧⌘E"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'External Data Sources...' '$@e'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Custom Functions...' '$@x' # ⇧⌘X"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Custom Functions...' '$@x'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Custom Menus...' '$@m' # ⇧⌘M"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Custom Menus...' '$@m'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Containers...' '$@c' # ⇧⌘C"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Containers...' '$@c'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Themes...' '$@t' # ⇧⌘T"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Themes...' '$@t'
echo ""
echo "Data Viewer"
echo ""
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Data Viewer' '^d' # ⌃D"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Data Viewer' '^d'
echo ""
echo "Scripting / Debugging"
echo ""
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Script Debugger' '^b' # ⌃B"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Script Debugger' '^b'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Pause on error' '\\Uf70f' # F12"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Pause on error' '\Uf70f'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Disable Script Triggers' '^\\Uf70f' # ⌃F12"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Disable Script Triggers' '^\Uf70f'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Enable Script Triggers' '^⌘\\Uf70f' # ⌃F12"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Enable Script Triggers' '^\Uf70f'
echo ""
echo "Layout > View > Show"
echo ""
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Buttons' '^~@b' # ⌃⌥⌘B"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Buttons' '^~@b'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Sample Data' '^~@d' # ⌃⌥⌘D"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Sample Data' '^~@d'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Sliding Objects' '^~@o' # ⌃⌥⌘O"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Sliding Objects' '^~@o'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Non-Printing Objects' '^~@n' # ⌃⌥⌘N"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Non-Printing Objects' '^~@n'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Popover Buttons' '^~@p' # ⌃⌥⌘P"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Popover Buttons' '^~@p'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Quick Find' '^~@q' # ⌃⌥⌘Q"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Quick Find' '^~@q'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Conditional Formatting' '^~@c' # ⌃⌥⌘C"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Conditional Formatting' '^~@c'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Script Triggers' '^~@s' # ⌃⌥⌘S"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Script Triggers' '^~@s'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Tooltips' '^~@t' # ⌃⌥⌘T"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Tooltips' '^~@t'
echo ""
echo "Layout Object/s Control"
echo ""
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Set Script Triggers...' '^~s' # ⌃⌥S"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Set Script Triggers...' '^~s'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Smallest Width' '^~@←' # ⌃⌥⌘←"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Smallest Width' '^~@←'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Smallest Height' '^~@↑' # ⌃⌥⌘↑"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Smallest Height' '^~@↑'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Largest Width' '^~@→' # ⌃⌥⌘→"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Largest Width' '^~@→'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Largest Height' '^~@↓' # ⌃⌥⌘↓"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'Largest Height' '^~@↓'
echo "defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'New Inspector' '@~i' # ⌥⌘I"
defaults write com.filemaker.client.pro12 NSUserKeyEquivalents -dict-add 'New Inspector' '@~i' # ⌥⌘I
echo ""
read.filemaker.shortcuts.sh
#!/usr/bin/env bash
echo defaults read com.filemaker.client.pro12 NSUserKeyEquivalents
defaults read com.filemaker.client.pro12 NSUserKeyEquivalents
delete.filemaker.shortcuts.sh
#!/usr/bin/env bash
echo "defaults delete com.filemaker.client.pro12 NSUserKeyEquivalents"
defaults delete com.filemaker.client.pro12 NSUserKeyEquivalents
filemaker.shortcuts.zip (3.2 KB)
Cheers
2 Likes