// Commands.h: interface of the CCommands class
//
//////////////////////////////////////////////////////////////////////
#include "xkeymacsdll.h"
#if !defined(AFX_COMMANDS_H__3AD9D537_AB40_40BB_9697_35F1BB0CA431__INCLUDED_)
#define AFX_COMMANDS_H__3AD9D537_AB40_40BB_9697_35F1BB0CA431__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
enum SEARCH_DIRECTION { NA, FORWARD, BACKWARD, AGAIN };
enum MAXIMIZE_DIRECTION { VERTICAL, HORIZONTAL, ROLL_UP_UNROLL, MAX_MAXIMIZE_DIRECTION };
enum INPUT_METHOD_OPEN_STATUS {CLOSE_INPUT_METHOD, OPEN_INPUT_METHOD, TOGGLE_INPUT_METHOD};
enum CONSOLE_MENU_EDIT { CMD_MARK = 1, CMD_COPY, CMD_PASTE, CMD_SELECT_ALL, CMD_SCROLL, CMD_FIND };
enum CONSOLE_MENU { CMD_RESTORE = 1, CMD_MOVE, CMD_SIZE, CMD_MINIMIZE, CMD_MAXIMIZE, CMD_CLOSE, CMD_EDIT, CMD_DEFAULTS, CMD_PROPERTIES };
enum { MAX_WINDOW = 64 };
typedef struct OriginalWindowPosition
{
HWND hWnd;
BOOL bMax[MAX_MAXIMIZE_DIRECTION];
int nOriginalX; // for HORIZONTAL
int nOriginalY; // for VERTICAL
int nOriginalWidth; // for HORIZONTAL
int nOriginalHeight; // for VERTICAL
} OriginalWindowPosition_t;
class AFX_EXT_CLASS CCommands
{
public:
static int TransposeWords();
static int CycleItemsInversely();
static int CycleItems();
static int OneShotModifierAltRepeat();
static int OneShotModifierAlt();
static int OneShotModifierCtrlRepeat();
static int OneShotModifierCtrl();
static int OneShotModifierShiftRepeat();
static int OneShotModifierShift();
static int Retop();
static int RollUpUnroll();
static int Underscore();
static int CapsLock();
static int DisableXKeymacs();
static int EnableXKeymacs();
static int BackwardKillWord();
static int KillLineForAllFormat();
static int TransposeLines();
static int FindNext();
static int Find();
static int Print();
static int New();
static int Cut();
static int Paste();
static int Copy();
static void SetTemporarilyDisableXKeymacs(BOOL bTemporarilyDisableXKeymacs);
static BOOL IsTemporarilyDisableXKeymacs();
static int TemporarilyDisableXKeymacs();
static int Redo();
static int PassThrough();
static GOTO MoveCaret(BYTE bVk, BOOL bCtrl = FALSE);
static int MaximizeHorizontally();
static int MaximizeVertically();
static int Maximize();
static int Minimize();
static int Size();
static int Move();
static int Restore();
static void SetMark(BOOL bSetMark);
static BOOL IsSetMark();
static int BackQuote();
static int Tilde();
static int Escape();
static int C_Eisu();
static int C_();
static int SwitchToBuffer();
static int SwitchBetweenInputLocales();
static int CallLastKbdMacro();
static int EndKbdMacro();
static int StartKbdMacro();
static int SelectAll();
static int MarkWholeBuffer();
static int KillWord();
static void SetLastCommand(int (*LastCommand)());
static int KillBuffer();
static int Reset(int rc);
static int CloseInputMethod();
static int CompleteCloseInputMethod();
static int OpenInputMethod();
static int NumericArgument(int n);
static void ClearNumericArgument();
static int GetNumericArgument();
static int EnableOrDisableXKeymacs();
static int IsearchForward();
static int IsearchBackward();
static int TransposeChars();
static int Recenter();
static int Repeat(BYTE bVk);
static void bC_u(BOOL b);
static BOOL bC_u();
static int UniversalArgument();
static int NumericArgumentMinus();
static int NumericArgument9();
static int NumericArgument8();
static int NumericArgument7();
static int NumericArgument6();
static int NumericArgument5();
static int NumericArgument4();
static int NumericArgument3();
static int NumericArgument2();
static int NumericArgument1();
static int NumericArgument0();
static int MetaAlt();
static int MetaEscape();
static int Meta();
static void bM_(BOOL b);
static BOOL bM_();
static int Ignore();
static int ShellCommand();
static int YankPop();
static int Yank();
static int KillRingSave();
static int KillRegion();
static int WriteFile();
static int C_x();
static void Reset();
static void bC_(BOOL b);
static BOOL bC_();
static void bC_x(BOOL b);
static BOOL bC_x();
static int ScrollDown();
static int ScrollUp();
static int SaveBuffer();
static int MarkPage();
static int Newline();
static int TabToTabStop();
static int FindFile();
static int KeyboardQuit();
static int SetMarkCommand();
static int IconifyOrDeiconifyFrame();
static int SaveBuffersKillEmacs();
static int Undo();
static int KillLine();
static int DeleteChar();
static int DeleteBackwardChar();
static int EndOfBuffer();
static int BeginningOfBuffer();
static int QueryReplaceRegexp();
static int QueryReplace();
static int ToggleInputMethod();
static int CompleteToggleInputMethod();
static int OpenLine();
static int PreviousLine();
static int NextLine();
static int BackwardWord();
static int ForwardWord();
static int EndOfLine();
static int BackwardChar();
static int BeginningOfLine();
static int ForwardChar();
CCommands();
virtual ~CCommands();
private:
static BOOL IsKillCommand(int (*nFunctionPointer)());
static void PrintFunctionName(int (*nFunctionPointer)());
static OriginalWindowPosition_t* GetOriginalWindowPosition(HWND hWnd);
static OriginalWindowPosition_t m_OriginalWindowPosition[MAX_WINDOW];
static int KillLine(BOOL bAllFormat, int (*pCommand)() = KillLine);
static BOOL IsEmptyClipboardData(const int nID = 0);
static int FindReturnFromClipboardData(const int nID = 0);
static void Cut_();
static void RestoreClipboardData(const int nID = 0);
static void CaptureClipboardData(const int nID = 0, const BOOL bTextOnly = FALSE);
static CArray m_oClipboardData;
static int SystemMenuEdit(const CONSOLE_MENU_EDIT nDown);
static int Click(const POINT* const pClickPoint);
static int SystemMenu(const CONSOLE_MENU nDown);
static BOOL m_bTemporarilyDisableXKeymacs;
static int Maximize(MAXIMIZE_DIRECTION direction);
static DWORD DeactivateMark();
static BOOL m_bFirstFindDialog;
static BOOL SetCaretPosition();
static void GetCaretPosition();
static CPtrList m_FindText;
static CPtrList m_ScrollInfo;
static CPtrList m_CaretPos;
static void Copy_();
static BYTE GetDirectionBackwardKey();
static BYTE GetDirectionForwardKey();
static BYTE GetSearchOptionKey();
static BYTE GetFindWhatKey();
static void OpenFindDialog();
static BOOL m_bC_;
static void CdSdKduSuCu(BYTE bVk);
static int (*m_LastKillCommand)();
static int (*m_LastCommand)();
static void SetInputMethodOpenStatus(INPUT_METHOD_OPEN_STATUS status, BOOL isComplete = FALSE);
static void SetSearchDirection(SEARCH_DIRECTION direction = m_SearchDirection);
static SEARCH_DIRECTION m_SearchDirection;
static int Search(SEARCH_DIRECTION direction);
static void DecreaseNumericArgument();
static BOOL CopyBackCharacter();
static BOOL CopyNextCharacter();
static BOOL m_bC_u;
static BOOL m_bNegativeNumericArgument;
static BOOL m_bDefaultNumericArgument;
static BOOL m_bM_;
static BOOL m_bC_x;
static DWORD ClickCaret();
static BOOL m_bSetMark;
static void ReleaseKey(BYTE bVk);
static void DepressKey(BYTE bVk);
static void SdKduSu(BYTE bVk1, BYTE bVk2 = 0, BYTE bVk3 = 0, BYTE bVk4 = 0);
static void AdSdKduSuAu(BYTE bVk1);
static void AdKduAu(BYTE bVk1, BYTE bVk2 = 0, BYTE bVk3 = 0);
static void CdKduCu(BYTE bVk1, BYTE bVk2 = 0);
static void Kdu(BYTE bVk1 = 0, BYTE bVk2 = 0, BYTE bVk3 = 0, BYTE bVk4 = 0);
static DWORD m_nNumericArgument;
static void Su();
static BOOL m_bIsSu;
};
typedef struct KeyBind
{
int nCommandType;
BYTE bVk;
int nControlID;
} KeyBind_t;
enum { MAX_KEY_BIND = 8 };
typedef struct Command
{
char *szCommandName;
int nCategoryID;
int nDescriptionID;
int nToolTipID;
int (*fCommand)();
KeyBind_t keybind[MAX_KEY_BIND];
} Command_t;
#include "../xkeymacs/resource.h"
static const Command_t Commands[] = {
{"[unassigned]", 0, 0, 0, NULL, {'\0'}},
{"C-x", 0, IDS_CONTROL_X_PREFIX_D, IDS_CONTROL_X_PREFIX_T, CCommands::C_x, {'\0'}},
{"C-", IDS_OTHER, IDS_CONTROL_D, IDS_CONTROL_T, CCommands::C_, {{NONE, VK_CONTROL, 0},
{NONE, VK_LCONTROL, 0},
{NONE, VK_RCONTROL, 0},
{'\0'}}},
{"C- for Eisu", 0, IDS_CONTROL_PREFIX_D, IDS_CONTROL_PREFIX_T, CCommands::C_Eisu, {'\0'}},
{"Caps Lock", IDS_OTHER, IDS_CAPS_LOCK_D, IDS_CAPS_LOCK_T, CCommands::CapsLock, {'\0'}},
{"Close Input Method", IDS_IME, IDS_CLOSE_INPUT_METHOD_D, IDS_CLOSE_INPUT_METHOD_T, CCommands::CloseInputMethod, {'\0'}},
{"Complete & Close Input Method", IDS_IME, IDS_COMPLETE_CLOSE_INPUT_METHOD_D, IDS_COMPLETE_CLOSE_INPUT_METHOD_T, CCommands::CompleteCloseInputMethod,{'\0'}},
{"Complete & Toggle Input Method", IDS_IME, IDS_COMPLETE_TOGGLE_INPUT_METHOD_D, IDS_COMPLETE_TOGGLE_INPUT_METHOD_T, CCommands::CompleteToggleInputMethod, {'\0'}},
{"Copy", IDS_OTHER, IDS_COPY_D, IDS_COPY_T, CCommands::Copy, {'\0'}},
{"Cut", IDS_OTHER, IDS_CUT_D, IDS_CUT_T, CCommands::Cut, {'\0'}},
{"Cycle items", IDS_OTHER, IDS_CYCLE_ITEMS_D, IDS_CYCLE_ITEMS_T, CCommands::CycleItems, {'\0'}},
{"Cycle items inversely", IDS_OTHER, IDS_CYCLE_ITEMS_INVERSELY_D, IDS_CYCLE_ITEMS_INVERSELY_T, CCommands::CycleItemsInversely, {'\0'}},
{"Disable XKeymacs", IDS_OTHER, IDS_DISABLE_XKEYMACS_D, IDS_DISABLE_XKEYMACS_T, CCommands::DisableXKeymacs, {'\0'}},
{"Enable or Disable XKeymacs", IDS_OTHER, IDS_ENABLE_OR_DISABLE_XKEYMACS_D, IDS_ENABLE_OR_DISABLE_XKEYMACS_T, CCommands::EnableOrDisableXKeymacs, {{CONTROL, 'Q', IDC_CQ},
{CONTROL+SHIFT, 'Q', IDC_CQ},
{'\0'}}},
{"Enable XKeymacs", IDS_OTHER, IDS_ENABLE_XKEYMACS_D, IDS_ENABLE_XKEYMACS_T, CCommands::EnableXKeymacs, {'\0'}},
{"newline", IDS_OTHER, IDS_NEWLINE_D, IDS_NEWLINE_T, CCommands::Newline, {{CONTROL, 'M', IDC_CM},
{CONTROL+SHIFT, 'M', IDC_CM},
{'\0'}}},
{"Esc", IDS_OTHER, IDS_ESCAPE_D, IDS_ESCAPE_T, CCommands::Escape, {'\0'}},
{"Find", IDS_OTHER, IDS_FIND_D, IDS_FIND_T, CCommands::Find, {'\0'}},
{"Find Next", IDS_OTHER, IDS_FIND_NEXT_D, IDS_FIND_NEXT_T, CCommands::FindNext, {'\0'}},
{"Ignore", IDS_OTHER, IDS_IGNORE_D, IDS_IGNORE_T, CCommands::Ignore, {'\0'}},
{"Kill Line for All Format", IDS_OTHER, IDS_KILL_LINE_FOR_ALL_FORMAT_D, IDS_KILL_LINE_FOR_ALL_FORMAT_T, CCommands::KillLineForAllFormat, {'\0'}},
{"Maximize", IDS_OTHER, IDS_MAXIMIZE_D, IDS_MAXIMIZE_T, CCommands::Maximize, {'\0'}},
{"Maximize Horizontally", IDS_OTHER, IDS_MAXIMIZE_HORIZONTALLY_D, IDS_MAXIMIZE_HORIZONTALLY_T, CCommands::MaximizeHorizontally, {'\0'}},
{"Maximize Vertically", IDS_OTHER, IDS_MAXIMIZE_VERTICALLY_D, IDS_MAXIMIZE_VERTICALLY_T, CCommands::MaximizeVertically, {'\0'}},
{"Meta", IDS_OTHER, IDS_META_PREFIX_D, IDS_META_PREFIX_T, CCommands::Meta, {{CONTROL, 0xDB, IDC_SQUARE_BRA},
{'\0'}}}, // VK_OEM_4
{"Meta for Alt", IDS_OTHER, IDS_META_D, IDS_META_T, CCommands::MetaAlt, {{NONE, VK_MENU, IDC_ALT},
{NONE, VK_LMENU, IDC_LEFT_ALT},
{NONE, VK_RMENU, IDC_RIGHT_ALT},
{'\0'}}},
{"Meta for Escape", IDS_OTHER, IDS_META_PREFIX_AND_ORIGINAL_D, IDS_META_PREFIX_AND_ORIGINAL_T, CCommands::MetaEscape, {{NONE, VK_ESCAPE, IDC_ESCAPE},
{NONE+SHIFT, VK_ESCAPE, IDC_ESCAPE},
{'\0'}}}, // add SHIFT
{"Minimize", IDS_OTHER, IDS_MINIMIZE_D, IDS_MINIMIZE_T, CCommands::Minimize, {'\0'}},
{"Move", IDS_OTHER, IDS_MOVE_D, IDS_MOVE_T, CCommands::Move, {'\0'}},
{"New", IDS_OTHER, IDS_NEW_D, IDS_NEW_T, CCommands::New, {'\0'}},
{"One Shot Modifier Alt", IDS_MODIFIER, IDS_OSMODIFIER_ALT_D, IDS_OSMODIFIER_ALT_T, CCommands::OneShotModifierAlt, {'\0'}},
{"One Shot Modifier Alt with Repeat", IDS_MODIFIER, IDS_OSMODIFIER_ALT_REPEAT_D, IDS_OSMODIFIER_ALT_REPEAT_T, CCommands::OneShotModifierAltRepeat, {'\0'}},
{"One Shot Modifier Ctrl", IDS_MODIFIER, IDS_OSMODIFIER_CTRL_D, IDS_OSMODIFIER_CTRL_T, CCommands::OneShotModifierCtrl, {'\0'}},
{"One Shot Modifier Ctrl with Repeat", IDS_MODIFIER, IDS_OSMODIFIER_CTRL_REPEAT_D, IDS_OSMODIFIER_CTRL_REPEAT_T, CCommands::OneShotModifierCtrlRepeat, {'\0'}},
{"One Shot Modifier Shift", IDS_MODIFIER, IDS_OSMODIFIER_SHIFT_D, IDS_OSMODIFIER_SHIFT_T, CCommands::OneShotModifierShift, {'\0'}},
{"One Shot Modifier Shift with Repeat", IDS_MODIFIER, IDS_OSMODIFIER_SHIFT_REPEAT_D, IDS_OSMODIFIER_SHIFT_REPEAT_T, CCommands::OneShotModifierShiftRepeat, {'\0'}},
{"Open Input Method", IDS_IME, IDS_OPEN_INPUT_METHOD_D, IDS_OPEN_INPUT_METHOD_T, CCommands::OpenInputMethod, {'\0'}},
{"Pass Through", IDS_OTHER, IDS_PASS_THROUGH_D, IDS_PASS_THROUGH_T, CCommands::PassThrough, {'\0'}},
{"Paste", IDS_OTHER, IDS_PASTE_D, IDS_PASTE_T, CCommands::Paste, {'\0'}},
{"Print", IDS_OTHER, IDS_PRINT_D, IDS_PRINT_T, CCommands::Print, {'\0'}},
{"Redo", IDS_OTHER, IDS_REDO_D, IDS_REDO_T, CCommands::Redo, {'\0'}},
{"Restore", IDS_OTHER, IDS_RESTORE_D, IDS_RESTORE_T, CCommands::Restore, {'\0'}},
{"Retop", IDS_OTHER, IDS_RETOP_D, IDS_RETOP_T, CCommands::Retop, {'\0'}},
{"Roll-up/Unroll", IDS_WINDOW, IDS_ROLL_UP_UNROLL_D, IDS_ROLL_UP_UNROLL_T, CCommands::RollUpUnroll, {{META, VK_F12, IDC_MF12},
{'\0'}}},
{"Select All", IDS_OTHER, IDS_SELECT_ALL_D, IDS_SELECT_ALL_T, CCommands::SelectAll, {'\0'}},
{"Size", IDS_OTHER, IDS_SIZE_D, IDS_SIZE_T, CCommands::Size, {'\0'}},
{"Switch Between Input Locales",IDS_IME, IDS_SWITCH_BETWEEN_INPUT_LOCALES_D, IDS_SWITCH_BETWEEN_INPUT_LOCALES_T, CCommands::SwitchBetweenInputLocales, {'\0'}},
{"Temporarily Disable XKeymacs",IDS_OTHER, IDS_TEMPORARILY_DISABLE_XKEYMACS_D, IDS_TEMPORARILY_DISABLE_XKEYMACS_T, CCommands::TemporarilyDisableXKeymacs, {'\0'}},
{"~", IDS_OTHER, IDS_TILDE_D, IDS_TILDE_T, CCommands::Tilde, {'\0'}},
{"`", IDS_OTHER, IDS_BACK_QUOTE_D, IDS_BACK_QUOTE_T, CCommands::BackQuote, {'\0'}},
{"_", IDS_OTHER, IDS_UNDERSCORE_D, IDS_UNDERSCORE_T, CCommands::Underscore, {'\0'}},
{"backward-char", IDS_MOTION, IDS_BACKWARD_CHAR_D, IDS_BACKWARD_CHAR_T, CCommands::BackwardChar, {{CONTROL, 'B', IDC_CB},
{CONTROL+SHIFT, 'B', IDC_CB},
{'\0'}}},
{"backward-kill-word", IDS_KILL, IDS_BACKWARD_KILL_WORD_D, IDS_BACKWARD_KILL_WORD_T, CCommands::BackwardKillWord, {{META, VK_BACK, IDC_MDEL},
{META+SHIFT, VK_BACK, IDC_MDEL},
{'\0'}}},
{"backward-word", IDS_MOTION, IDS_BACKWARD_WORD_D, IDS_BACKWARD_WORD_T, CCommands::BackwardWord, {{META, 'B', IDC_MB},
{META+SHIFT, 'B', IDC_MB},
{'\0'}}},
{"beginning-of-buffer", IDS_MOTION, IDS_BEGINNING_OF_BUFFER_D, IDS_BEGINNING_OF_BUFFER_T, CCommands::BeginningOfBuffer, {{META+SHIFT, 0xBC, IDC_MSCOMMA},
{'\0'}}}, // VK_OEM_COMMA
{"beginning-of-line", IDS_MOTION, IDS_BEGINNING_OF_LINE_D, IDS_BEGINNING_OF_LINE_T, CCommands::BeginningOfLine, {{CONTROL, 'A', IDC_CA},
{CONTROL+SHIFT, 'A', IDC_CA},
{'\0'}}},
{"call-last-kbd-macro", IDS_OTHER, IDS_CALL_LAST_KBD_MACRO_D, IDS_CALL_LAST_KBD_MACRO_T, CCommands::CallLastKbdMacro, {{CONTROLX, 'E', IDC_CXE},
{CONTROLX+SHIFT, 'E', IDC_CXE},
{'\0'}}},
{"delete-backward-char", IDS_KILL, IDS_DELETE_BACKWARD_CHAR_D, IDS_DELETE_BACKWARD_CHAR_T, CCommands::DeleteBackwardChar, {{CONTROL, 'H', IDC_CH},
{CONTROL+SHIFT, 'H', IDC_CH},
{'\0'}}},
{"delete-char", IDS_KILL, IDS_DELETE_CHAR_D, IDS_DELETE_CHAR_T, CCommands::DeleteChar, {{CONTROL, 'D', IDC_CD},
{CONTROL+SHIFT, 'D', IDC_CD},
{'\0'}}},
{"end-kbd-macro", IDS_OTHER, IDS_END_KBD_MACRO_D, IDS_END_KBD_MACRO_T, CCommands::EndKbdMacro, {{CONTROLX+SHIFT, '0', IDC_CXS0},
{'\0'}}},
{"end-of-buffer", IDS_MOTION, IDS_END_OF_BUFFER_D, IDS_END_OF_BUFFER_T, CCommands::EndOfBuffer, {{META+SHIFT, 0xBE, IDC_MSPERIOD},
{'\0'}}}, // VK_OEM_PERIOD
{"end-of-line", IDS_MOTION, IDS_END_OF_LINE_D, IDS_END_OF_LINE_T, CCommands::EndOfLine, {{CONTROL, 'E', IDC_CE},
{CONTROL+SHIFT, 'E', IDC_CE},
{'\0'}}},
{"find-file", IDS_FILES, IDS_FIND_FILE_D, IDS_FIND_FILE_T, CCommands::FindFile, {{CONTROL+CONTROLX, 'F', IDC_CXCF},
{CONTROL+SHIFT+CONTROLX, 'F', IDC_CXCF},
{'\0'}}},
{"forward-char", IDS_MOTION, IDS_FORWARD_CHAR_D, IDS_FORWARD_CHAR_T, CCommands::ForwardChar, {{CONTROL, 'F', IDC_CF},
{CONTROL+SHIFT, 'F', IDC_CF},
{'\0'}}},
{"forward-word", IDS_MOTION, IDS_FORWARD_WORD_D, IDS_FORWARD_WORD_T, CCommands::ForwardWord, {{META, 'F', IDC_MF},
{META+SHIFT, 'F', IDC_MF},
{'\0'}}},
{"iconify-or-deiconify-frame", IDS_WINDOW, IDS_ICONIFY_OR_DEICONIFY_FRAME_D, IDS_ICONIFY_OR_DEICONIFY_FRAME_T, CCommands::IconifyOrDeiconifyFrame, {{CONTROL, 'Z', IDC_CZ},
{CONTROL+SHIFT, 'Z', IDC_CZ},
{'\0'}}},
{"isearch-backward", IDS_SEARCH, IDS_ISEARCH_BACKWARD_D, IDS_ISEARCH_BACKWARD_T, CCommands::IsearchBackward, {{CONTROL, 'R', IDC_CR},
{CONTROL+SHIFT, 'R', IDC_CR},
{'\0'}}},
{"isearch-forward", IDS_SEARCH, IDS_ISEARCH_FORWARD_D, IDS_ISEARCH_FORWARD_T, CCommands::IsearchForward, {{CONTROL, 'S', IDC_CS},
{CONTROL+SHIFT, 'S', IDC_CS},
{'\0'}}},
{"keyboard-quit", IDS_RECOVERY, IDS_KEYBOARD_QUIT_D, IDS_KEYBOARD_QUIT_T, CCommands::KeyboardQuit, {{CONTROL, 'G', IDC_CG},
{CONTROL+SHIFT, 'G', IDC_CG},
{'\0'}}},
{"kill-buffer", IDS_FILES, IDS_KILL_BUFFER_D, IDS_KILL_BUFFER_T, CCommands::KillBuffer, {{CONTROLX, 'K', IDC_CXK},
{SHIFT+CONTROLX, 'K', IDC_CXK},
{'\0'}}},
{"kill-line", IDS_KILL, IDS_KILL_LINE_D, IDS_KILL_LINE_T, CCommands::KillLine, {{CONTROL, 'K', IDC_CK},
{CONTROL+SHIFT, 'K', IDC_CK},
{'\0'}}},
{"kill-region", IDS_KILL, IDS_KILL_REGION_D, IDS_KILL_REGION_T, CCommands::KillRegion, {{CONTROL, 'W', IDC_CW},
{CONTROL+SHIFT, 'W', IDC_CW},
{'\0'}}},
{"kill-ring-save", IDS_KILL, IDS_KILL_RING_SAVE_D, IDS_KILL_RING_SAVE_T, CCommands::KillRingSave, {{META, 'W', IDC_MW},
{META+SHIFT, 'W', IDC_MW},
{'\0'}}},
{"kill-word", IDS_KILL, IDS_KILL_WORD_D, IDS_KILL_WORD_T, CCommands::KillWord, {{META, 'D', IDC_MD},
{META+SHIFT, 'D', IDC_MD},
{'\0'}}},
{"mark-page", IDS_OTHER, IDS_MARK_PAGE_D, IDS_MARK_PAGE_T, CCommands::MarkPage, {{CONTROL+CONTROLX, 'P', IDC_CXCP},
{CONTROL+SHIFT+CONTROLX, 'P', IDC_CXCP},
{'\0'}}},
{"mark-whole-buffer", IDS_OTHER, IDS_MARK_WHOLE_BUFFER_D, IDS_MARK_WHOLE_BUFFER_T, CCommands::MarkWholeBuffer, {{CONTROLX, 'H', IDC_CXH},
{CONTROLX+SHIFT, 'H', IDC_CXH},
{'\0'}}},
{"next-line", IDS_MOTION, IDS_NEXT_LINE_D, IDS_NEXT_LINE_T, CCommands::NextLine, {{CONTROL, 'N', IDC_CN},
{CONTROL+SHIFT, 'N', IDC_CN},
{'\0'}}},
{"numeric argument 0", IDS_OTHER, IDS_DIGIT_ARGUMENT0_D, IDS_DIGIT_ARGUMENT0_T, CCommands::NumericArgument0, {{CONTROL, '0', IDC_CDIGIT},
{META, '0', IDC_CDIGIT},
{'\0'}}},
{"numeric argument 1", IDS_OTHER, IDS_DIGIT_ARGUMENT1_D, IDS_DIGIT_ARGUMENT1_T, CCommands::NumericArgument1, {{CONTROL, '1', IDC_CDIGIT},
{META, '1', IDC_CDIGIT},
{'\0'}}},
{"numeric argument 2", IDS_OTHER, IDS_DIGIT_ARGUMENT2_D, IDS_DIGIT_ARGUMENT2_T, CCommands::NumericArgument2, {{CONTROL, '2', IDC_CDIGIT},
{META, '2', IDC_CDIGIT},
{'\0'}}},
{"numeric argument 3", IDS_OTHER, IDS_DIGIT_ARGUMENT3_D, IDS_DIGIT_ARGUMENT3_T, CCommands::NumericArgument3, {{CONTROL, '3', IDC_CDIGIT},
{META, '3', IDC_CDIGIT},
{'\0'}}},
{"numeric argument 4", IDS_OTHER, IDS_DIGIT_ARGUMENT4_D, IDS_DIGIT_ARGUMENT4_T, CCommands::NumericArgument4, {{CONTROL, '4', IDC_CDIGIT},
{META, '4', IDC_CDIGIT},
{'\0'}}},
{"numeric argument 5", IDS_OTHER, IDS_DIGIT_ARGUMENT5_D, IDS_DIGIT_ARGUMENT5_T, CCommands::NumericArgument5, {{CONTROL, '5', IDC_CDIGIT},
{META, '5', IDC_CDIGIT},
{'\0'}}},
{"numeric argument 6", IDS_OTHER, IDS_DIGIT_ARGUMENT6_D, IDS_DIGIT_ARGUMENT6_T, CCommands::NumericArgument6, {{CONTROL, '6', IDC_CDIGIT},
{META, '6', IDC_CDIGIT},
{'\0'}}},
{"numeric argument 7", IDS_OTHER, IDS_DIGIT_ARGUMENT7_D, IDS_DIGIT_ARGUMENT7_T, CCommands::NumericArgument7, {{CONTROL, '7', IDC_CDIGIT},
{META, '7', IDC_CDIGIT},
{'\0'}}},
{"numeric argument 8", IDS_OTHER, IDS_DIGIT_ARGUMENT8_D, IDS_DIGIT_ARGUMENT8_T, CCommands::NumericArgument8, {{CONTROL, '8', IDC_CDIGIT},
{META, '8', IDC_CDIGIT},
{'\0'}}},
{"numeric argument 9", IDS_OTHER, IDS_DIGIT_ARGUMENT9_D, IDS_DIGIT_ARGUMENT9_T, CCommands::NumericArgument9, {{CONTROL, '9', IDC_CDIGIT},
{META, '9', IDC_CDIGIT},
{'\0'}}},
{"numeric argument -", IDS_OTHER, IDS_NEGATIVE_ARGUMENT_D, IDS_NEGATIVE_ARGUMENT_T, CCommands::NumericArgumentMinus, {{CONTROL, 0xBD, IDC_CDIGIT},
{META, 0xBD, IDC_CDIGIT},
{'\0'}}},
{"open-line", IDS_OTHER, IDS_OPEN_LINE_D, IDS_OPEN_LINE_T, CCommands::OpenLine, {{CONTROL, 'O', IDC_CO},
{CONTROL+SHIFT, 'O', IDC_CO},
{'\0'}}},
{"previous-line", IDS_MOTION, IDS_PREVIOUS_LINE_D, IDS_PREVIOUS_LINE_T, CCommands::PreviousLine, {{CONTROL, 'P', IDC_CP},
{CONTROL+SHIFT, 'P', IDC_CP},
{'\0'}}},
{"query-replace", IDS_SEARCH, IDS_QUERY_REPLACE_D, IDS_QUERY_REPLACE_T, CCommands::QueryReplace, {{META+SHIFT, '5', IDC_MS5},
{'\0'}}},
{"query-replace-regexp", IDS_SEARCH, IDS_QUERY_REPLACE_REGEXP_D, IDS_QUERY_REPLACE_REGEXP_T, CCommands::QueryReplaceRegexp, {{CONTROL+META+SHIFT, '5', IDC_CMS5},
{'\0'}}},
{"recenter", IDS_MOTION, IDS_RECENTER_D, IDS_RECENTER_T, CCommands::Recenter, {{CONTROL, 'L', IDC_CL},
{CONTROL+SHIFT, 'L', IDC_CL},
{'\0'}}},
{"save-buffer", IDS_FILES, IDS_SAVE_BUFFER_D, IDS_SAVE_BUFFER_T, CCommands::SaveBuffer, {{CONTROL+CONTROLX, 'S', IDC_CXCS},
{CONTROL+SHIFT+CONTROLX, 'S', IDC_CXCS},
{'\0'}}},
{"save-buffers-kill-emacs", IDS_WINDOW, IDS_SAVE_BUFFERS_KILL_EMACS_D, IDS_SAVE_BUFFERS_KILL_EMACS_T, CCommands::SaveBuffersKillEmacs, {{CONTROL+CONTROLX, 'C', IDC_CXCC},
{CONTROL+SHIFT+CONTROLX, 'C', IDC_CXCC},
{'\0'}}},
{"scroll-down", IDS_MOTION, IDS_SCROLL_DOWN_D, IDS_SCROLL_DOWN_T, CCommands::ScrollDown, {{META, 'V', IDC_MV},
{META+SHIFT, 'V', IDC_MV},
{'\0'}}},
{"scroll-up", IDS_MOTION, IDS_SCROLL_UP_D, IDS_SCROLL_UP_T, CCommands::ScrollUp, {{CONTROL, 'V', IDC_CV},
{CONTROL+SHIFT, 'V', IDC_CV},
{'\0'}}},
{"set-mark-command", IDS_OTHER, IDS_SET_MARK_COMMAND_D, IDS_SET_MARK_COMMAND_T, CCommands::SetMarkCommand, {{CONTROL, VK_SPACE, IDC_CSPACE},
{CONTROL+SHIFT, VK_SPACE, IDC_CSPACE},
{'\0'}}},
{"shell-command", IDS_OTHER, IDS_SHELL_COMMAND_D, IDS_SHELL_COMMAND_T, CCommands::ShellCommand, {{META+SHIFT, '1', IDC_MS1},
{'\0'}}},
{"start-kbd-macro", IDS_OTHER, IDS_START_KBD_MACRO_D, IDS_START_KBD_MACRO_T, CCommands::StartKbdMacro, {{CONTROLX+SHIFT, '9', IDC_CXS9},
{'\0'}}},
{"switch-to-buffer", IDS_OTHER, IDS_SWITCH_TO_BUFFER_D, IDS_SWITCH_TO_BUFFER_T, CCommands::SwitchToBuffer, {{CONTROLX, 'B', IDC_CXB},
{CONTROLX+SHIFT, 'B', IDC_CXB},
{'\0'}}},
{"tab-to-tab-stop", IDS_OTHER, IDS_TAB_D, IDS_TAB_T, CCommands::TabToTabStop, {{CONTROL, 'I', IDC_CI},
{CONTROL+SHIFT, 'I', IDC_CI},
{META, 'I', IDC_MI},
{META+SHIFT, 'I', IDC_MI},
{'\0'}}},
{"toggle-input-method", IDS_IME, IDS_TOGGLE_WIN32IME_MODE_D, IDS_TOGGLE_WIN32IME_MODE_T, CCommands::ToggleInputMethod, {{CONTROL+CONTROLX, 'J', IDC_CXCJ},
{CONTROL+SHIFT+CONTROLX, 'J', IDC_CXCJ},
{CONTROL, 'O', IDC_CO2},
{CONTROL+SHIFT, 'O', IDC_CO2},
{CONTROL, 0xDC, IDC_CBACKSLASH},
{CONTROL, 0xE2, IDC_CBACKSLASH_106},
{'\0'}}},
{"transpose-chars", IDS_KILL, IDS_TRANSPOSE_CHARS_D, IDS_TRANSPOSE_CHARS_T, CCommands::TransposeChars, {{CONTROL, 'T', IDC_CT},
{CONTROL+SHIFT, 'T', IDC_CT},
{'\0'}}},
{"transpose-lines", IDS_KILL, IDS_TRANSPOSE_LINES_D, IDS_TRANSPOSE_LINES_T, CCommands::TransposeLines, {{CONTROL+CONTROLX, 'T', IDC_CXCT},
{CONTROL+SHIFT+CONTROLX, 'T', IDC_CXCT},
{'\0'}}},
{"transpose-words", IDS_KILL, IDS_TRANSPOSE_WORDS_D, IDS_TRANSPOSE_WORDS_T, CCommands::TransposeWords, {{META, 'T', IDC_MT},
{META+SHIFT, 'T', IDC_MT},
{'\0'}}},
{"undo", IDS_RECOVERY, IDS_UNDO_D, IDS_UNDO_T, CCommands::Undo, {{CONTROLX, 'U', IDC_CXU},
{CONTROL+SHIFT, 0xBD, IDC_C_},
{CONTROL, 0xBF, IDC_CSLASH},
{'\0'}}},
{"universal-argument", IDS_OTHER, IDS_UNIVERSAL_ARGUMENT_D, IDS_UNIVERSAL_ARGUMENT_T, CCommands::UniversalArgument, {{CONTROL, 'U', IDC_CU},
{CONTROL+SHIFT, 'U', IDC_CU},
{'\0'}}},
{"write-file", IDS_FILES, IDS_WRITE_FILE_D, IDS_WRITE_FILE_T, CCommands::WriteFile, {{CONTROL+CONTROLX, 'W', IDC_CXCW},
{CONTROL+SHIFT+CONTROLX, 'W', IDC_CXCW},
{'\0'}}},
{"yank", IDS_KILL, IDS_YANK_D, IDS_YANK_T, CCommands::Yank, {{CONTROL, 'Y', IDC_CY},
{CONTROL+SHIFT, 'Y', IDC_CY},
{'\0'}}},
{"yank-pop", IDS_KILL, IDS_YANK_POP_D, IDS_YANK_POP_T, CCommands::YankPop, {{META, 'Y', IDC_MY},
{META+SHIFT, 'Y', IDC_MY},
{'\0'}}},
};
#endif // !defined(AFX_COMMANDS_H__3AD9D537_AB40_40BB_9697_35F1BB0CA431__INCLUDED_)