I was mistaken about this.
When I was looking at the dictionary in Script Debugger it said get/set for the Keyboard Shortcut class.
It didn't occur to me the shortcut string inside it might be read-only, so I conjectured without testing and got caught. :)
I talked to developer Daniel Jalkut about this, and it's unlikely to change.
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
Here is a script that will create a text table of script name, keyboard shortcut, script file path in a file on the desktop. (Just in case you ever have to manually recreate your keyboard shortcuts.)
-------------------------------------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2015/08/31 09:44
# dMod: 2016/04/22 13:04
# Appl: FastScripts
# Task: List all keyboard shortcuts in a text file on the Desktop.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @FastScripts, @Backup, @Keyboard_Shortcut
-------------------------------------------------------------------------------------------
set _pad to " "
set AppleScript's text item delimiters to linefeed
tell application "FastScripts"
tell (script items where its has keyboard shortcut is true)
set scriptItemNameList to its name
set scriptFileList to paragraphs of (script file as Unicode text)
set shortcutStringList to shortcut string of keyboard shortcut
end tell
end tell
set AppleScript's text item delimiters to tab
set maxNameLength to 0
set maxkeyboardShortcutLength to 0
set _cntr to 0
repeat with i in shortcutStringList
set _cntr to _cntr + 1
set (contents of i) to item _cntr of scriptItemNameList & tab & contents of i & tab & item _cntr of scriptFileList
set nameLength to length of (text item 1 of i)
if maxNameLength < nameLength then
set maxNameLength to nameLength
end if
set keyboardShortcutLength to length of (text item 2 of i)
if maxkeyboardShortcutLength < keyboardShortcutLength then
set maxkeyboardShortcutLength to keyboardShortcutLength
end if
end repeat
repeat with i in shortcutStringList
set scriptName to text item 1 of i
set keyboardShortcut to text item 2 of i
set scriptPath to text item 3 of i
set padLen to maxNameLength - (length of scriptName) + 5
set scriptName to scriptName & text 1 thru padLen of _pad
set padLen to maxkeyboardShortcutLength - (length of keyboardShortcut) + 5
set keyboardShortcut to keyboardShortcut & text 1 thru padLen of _pad
set contents of i to scriptName & keyboardShortcut & scriptPath
end repeat
set AppleScript's text item delimiters to linefeed
set shortcutStringList to shortcutStringList as text
set backupFile to (path to desktop folder as text) & "FastScripts Keyboard Shortcut List.txt"
writeFile(shortcutStringList, backupFile, 0, «class utf8»)
-------------------------------------------------------------------------------------------
--» HANDLERS
-------------------------------------------------------------------------------------------
on writeFile(srcData, targetFile, startPosition, dataType)
try
set fileRef to open for access targetFile with write permission
if startPosition = 0 then
set eof of fileRef to 0
end if
write srcData to fileRef as dataType starting at startPosition
close access fileRef
on error errMsg number errNum
try
close access fileRef
end try
error "Error in handler: writeFile of library: gen.lib" & return & return & errMsg
end try
end writeFile
-------------------------------------------------------------------------------------------