Wordのキーバインド一覧を作る
Excelのキーバインド一覧を調べる方法が分からなくて悔しかったので、RubyでWordのキーバインド一覧を作ってみました。
require 'excel_lib' require 'pp' class Word < Excel_Wrapper def initialize(visible=true) begin @raw_object = WIN32OLE.connect('Word.Application') @connected = true rescue @raw_object = WIN32OLE.new('Word.Application') end WIN32OLE.my_const_load(@raw_object, Word) @raw_object.visible = visible if block_given? yield self quit unless @connected end end def find_key(*a) findKey(buildKeyCode(*a.map {|k| Word.const_get(k)})) rescue nil end def keybindings keys = Word.constants.grep(/WdKey/i).sort ret = [] keys.each do |k| 0.upto(7) do |m| a = [k] a << 'WdKeyShift' if (m & 1) > 0 a << 'WdKeyControl' if (m & 2) > 0 a << 'WdKeyAlt' if (m & 4) > 0 if (b = find_key(*a)) && !((c = b.command).empty?) ret << [b.keyString, c] end end end ret end end if $0 == __FILE__ Word.new do |app| pp app.keybindings end end
excel_libはhttp://www.tech-notes.dyndns.org/excel_lib/です。
実行結果です。
[["Ctrl+0", "OpenOrCloseUpPara"], ["Ctrl+1", "SpacePara1"], ["Alt+!", "ShowHeading1"], ["Alt+Ctrl+1", "ApplyHeading1"], ["Alt+Ctrl+!", "!"], ["Ctrl+2", "SpacePara2"], ["Alt+\"", "ShowHeading2"], ["Alt+Ctrl+2", "ApplyHeading2"], ["Ctrl+3", "LockFields"], ["Alt+#", "ShowHeading3"], ["Alt+Ctrl+3", "ApplyHeading3"], ["Ctrl+4", "UnlockFields"], ["Alt+$", "ShowHeading4"], ["Ctrl+5", "SpacePara15"], ["Alt+%", "ShowHeading5"], ["Ctrl+6", "UnlinkFields"], ["Alt+&", "ShowHeading6"], ["Alt+'", "ShowHeading7"], ["Alt+(", "ShowHeading8"], ["Alt+)", "ShowHeading9"], ["Ctrl+A", "EditSelectAll"], ["Ctrl+Shift+A", "AllCaps"], ["Alt+Shift+A", "ShowAllHeadings"], ["Ctrl+B", "Bold"], ["Ctrl+Shift+B", "Bold"], ["Ctrl+\\", "ToggleMasterSubdocs"], ["Ctrl+Backspace", "DeleteBackWord"], ["Alt+Backspace", "EditUndo"], ["Alt+Shift+Backspace", "EditRedo"], ["Ctrl+C", "EditCopy"], ["Ctrl+Shift+C", "CopyFormat"], ["Alt+Shift+C", "ClosePane"], ["Alt+Ctrl+C", "c"], ["Ctrl+]", "GrowFontOnePoint"], ["Ctrl+<", "ShrinkFont"], ["Ctrl+D", "FormatFont"], ["Ctrl+Shift+D", "DistributePara"], ["Alt+Shift+D", "InsertDateField"], ["Alt+Ctrl+D", "InsertEndnoteNow"], ["Del", "EditClear"], ["Shift+Del", "EditCut"], ["Ctrl+Del", "DeleteWord"], ["Ctrl+E", "CenterPara"], ["Ctrl+Shift+E", "ToolsRevisionMarksToggle"], ["Alt+Shift+E", "MailMergeEditDataSource"], ["Alt+Ctrl+E", "?"], ["End", "EndOfLine"], ["Shift+End", "EndOfLineExtend"], ["Ctrl+End", "EndOfDocument"], ["Ctrl+Shift+End", "EndOfDocExtend"], ["Alt+End", "EndOfRow"], ["Alt+Shift+End", "EndOfRow"], ["Ctrl++", "Superscript"], ["Alt++", "OutlineExpand"], ["Esc", "Cancel"], ["Ctrl+F", "EditFind"], ["Ctrl+Shift+F", "Font"], ["Alt+Shift+F", "InsertMergeField"], ["Alt+Ctrl+F", "InsertFootnoteNow"], ["F1", "Help"], ["Shift+F1", "HelpTool"], ["Alt+F1", "NextField"], ["Alt+Shift+F1", "PrevField"], ["Alt+Ctrl+F1", "MicrosoftSystemInfo"], ["F10", "MenuMode"], ["Ctrl+F10", "DocMaximize"], ["Ctrl+Shift+F10", "WW2_RulerMode"], ["Alt+F10", "AppMaximize"], ["F11", "NextField"], ["Shift+F11", "PrevField"], ["Ctrl+F11", "LockFields"], ["Ctrl+Shift+F11", "UnlockFields"], ["Alt+F11", "ViewVBCode"], ["Alt+Shift+F11", "MicrosoftScriptEditor"], ["F12", "FileSaveAs"], ["Shift+F12", "FileSave"], ["Ctrl+F12", "FileOpen"], ["Ctrl+Shift+F12", "FilePrint"], ["F2", "MoveText"], ["Shift+F2", "CopyText"], ["Ctrl+F2", "FilePrintPreview"], ["Alt+Shift+F2", "FileSave"], ["Alt+Ctrl+F2", "FileOpen"], ["F3", "InsertAutoText"], ["Shift+F3", "ChangeCase"], ["Ctrl+F3", "Spike"], ["Ctrl+Shift+F3", "InsertSpike"], ["Alt+F3", "CreateAutoText"], ["F4", "EditRedoOrRepeat"], ["Shift+F4", "RepeatFind"], ["Ctrl+F4", "DocClose"], ["Alt+F4", "FileCloseOrExit"], ["F5", "EditGoTo"], ["Shift+F5", "GoBack"], ["Ctrl+F5", "DocRestore"], ["Ctrl+Shift+F5", "EditBookmark"], ["Alt+F5", "AppRestore"], ["F6", "OtherPane"], ["Shift+F6", "OtherPane"], ["Ctrl+F6", "NextWindow"], ["Ctrl+Shift+F6", "PrevWindow"], ["Alt+F6", "NextWindow"], ["Alt+Shift+F6", "PrevWindow"], ["F7", "ToolsProofing"], ["Shift+F7", "ToolsThesaurus"], ["Ctrl+F7", "DocMove"], ["Ctrl+Shift+F7", "UpdateSource"], ["Alt+F7", "NextMisspelling"], ["Alt+Shift+F7", "ToolsDictionary"], ["F8", "ExtendSelection"], ["Shift+F8", "ShrinkSelection"], ["Ctrl+F8", "DocSize"], ["Ctrl+Shift+F8", "ColumnSelect"], ["Alt+F8", "ToolsMacro"], ["F9", "UpdateFields"], ["Shift+F9", "ToggleFieldDisplay"], ["Ctrl+F9", "InsertFieldChars"], ["Ctrl+Shift+F9", "UnlinkFields"], ["Alt+F9", "ViewFieldCodes"], ["Alt+Shift+F9", "DoFieldClick"], ["Ctrl+G", "EditGoTo"], ["Ctrl+H", "EditReplace"], ["Ctrl+Shift+H", "Hidden"], ["Home", "StartOfLine"], ["Shift+Home", "StartOfLineExtend"], ["Ctrl+Home", "StartOfDocument"], ["Ctrl+Shift+Home", "StartOfDocExtend"], ["Alt+Home", "StartOfRow"], ["Alt+Shift+Home", "StartOfRow"], ["Alt+Ctrl+Home", "BrowseSel"], ["Ctrl+-", "\037"], ["Ctrl+=", "Subscript"], ["Alt+=", "OutlineCollapse"], ["Alt+Ctrl+-", "ToolsCustomizeRemoveMenuShortcut"], ["Alt+Ctrl+=", "ToolsCustomizeAddMenuShortcut"], ["Ctrl+I", "Italic"], ["Ctrl+Shift+I", "Italic"], ["Alt+Ctrl+I", "FilePrintPreview"], ["Insert", "Overtype"], ["Shift+Insert", "EditPaste"], ["Ctrl+Insert", "EditCopy"], ["Ctrl+J", "JustifyPara"], ["Ctrl+K", "InsertHyperlink"], ["Ctrl+Shift+K", "SmallCaps"], ["Alt+Shift+K", "MailMergeCheck"], ["Alt+Ctrl+K", "FormatAutoFormat"], ["Ctrl+L", "LeftPara"], ["Ctrl+Shift+L", "ApplyListBullet"], ["Alt+Shift+L", "OutlineShowFirstLine"], ["Alt+Ctrl+L", "InsertListNumField"], ["Ctrl+M", "Indent"], ["Ctrl+Shift+M", "UnIndent"], ["Alt+Shift+M", "MailMergeToPrinter"], ["Alt+Ctrl+M", "InsertAnnotation"], ["Ctrl+N", "FileNew"], ["Ctrl+Shift+N", "DemoteToBodyText"], ["Alt+Shift+N", "MailMergeToDoc"], ["Alt+Ctrl+N", "ViewNormal"], ["Alt+Shift+Num +", "OutlineExpand"], ["Alt+Ctrl+Num +", "ToolsCustomizeKeyboardShortcut"], ["Ctrl+Num /", "EditSelectAll"], ["Alt+Num /", "TableSelectTable"], ["Alt+Shift+Num /", "NormalStyle"], ["Ctrl+Num -", "?"], ["Alt+Shift+Num -", "OutlineCollapse"], ["Alt+Ctrl+Num -", "?"], ["Ctrl+O", "FileOpen"], ["Alt+Shift+O", "MarkTableOfContentsEntry"], ["Alt+Ctrl+O", "ViewOutline"], ["Ctrl+[", "ShrinkFontOnePoint"], ["Ctrl+P", "FilePrint"], ["Ctrl+Shift+P", "FontSizeSelect"], ["Alt+Shift+P", "InsertPageField"], ["Alt+Ctrl+P", "ViewPage"], ["PageDown", "PageDown"], ["Shift+PageDown", "PageDownExtend"], ["Ctrl+PageDown", "BrowseNext"], ["Alt+PageDown", "EndOfColumn"], ["Alt+Shift+PageDown", "EndOfColumn"], ["Alt+Ctrl+PageDown", "EndOfWindow"], ["Alt+Ctrl+Shift+PageDown", "EndOfWindowExtend"], ["PageUp", "PageUp"], ["Shift+PageUp", "PageUpExtend"], ["Ctrl+PageUp", "BrowsePrev"], ["Alt+PageUp", "StartOfColumn"], ["Alt+Shift+PageUp", "StartOfColumn"], ["Alt+Ctrl+PageUp", "StartOfWindow"], ["Alt+Ctrl+Shift+PageUp", "StartOfWindowExtend"], ["Ctrl+>", "GrowFont"], ["Alt+Ctrl+.", "\201c"], ["Ctrl+Q", "ResetPara"], ["Ctrl+Shift+Q", "SymbolFont"], ["Ctrl+R", "RightPara"], ["Alt+Shift+R", "FormatHeaderFooterLink"], ["Alt+Ctrl+R", "R"], ["Shift+Enter", "\v"], ["Ctrl+Enter", "InsertPageBreak"], ["Ctrl+Shift+Enter", "InsertColumnBreak"], ["Alt+Enter", "EditRedoOrRepeat"], ["Ctrl+S", "FileSave"], ["Ctrl+Shift+S", "Style"], ["Alt+Ctrl+S", "DocSplit"], ["Ctrl+*", "ShowAll"], ["Alt+Ctrl+?", "?"], ["Ctrl+Space", "ResetChar"], ["Ctrl+Shift+Space", "?"], ["Ctrl+T", "IndentFirstChar"], ["Ctrl+Shift+T", "UnIndentFirstChar"], ["Alt+Shift+T", "InsertTimeField"], ["Alt+Ctrl+T", "?"], ["Ctrl+Tab", "\t"], ["Ctrl+U", "Underline"], ["Ctrl+Shift+U", "Underline"], ["Alt+Shift+U", "UpdateFields"], ["Alt+Ctrl+U", "TableUpdateAutoFormat"], ["Ctrl+V", "EditPaste"], ["Ctrl+Shift+V", "PasteFormat"], ["Alt+Ctrl+V", "InsertAutoText"], ["Ctrl+W", "DocClose"], ["Ctrl+Shift+W", "WordUnderline"], ["Ctrl+X", "EditCut"], ["Alt+Shift+X", "MarkIndexEntry"], ["Ctrl+Y", "EditRedoOrRepeat"], ["Alt+Ctrl+Y", "RepeatFind"], ["Ctrl+Z", "EditUndo"], ["Ctrl+Shift+Z", "ResetChar"], ["Alt+Ctrl+Z", "GoBack"]]