diff options
Diffstat (limited to 'src/KeyMap.cxx')
| -rw-r--r-- | src/KeyMap.cxx | 47 | 
1 files changed, 38 insertions, 9 deletions
| diff --git a/src/KeyMap.cxx b/src/KeyMap.cxx index c223d5b59..4d866d195 100644 --- a/src/KeyMap.cxx +++ b/src/KeyMap.cxx @@ -66,14 +66,42 @@ unsigned int KeyMap::Find(int key, int modifiers) {  	return 0;  } +#if PLAT_GTK_MACOSX +#define OS_X_KEYS 1 +#else +#define OS_X_KEYS 0 +#endif + +// Define a modifier that is exactly Ctrl key on all platforms +// Most uses of Ctrl map to Cmd on OS X but some can't so use SCI_[S]CTRL_META +#if OS_X_KEYS +#define SCI_CTRL_META SCI_META +#define SCI_SCTRL_META (SCI_META | SCI_SHIFT) +#else +#define SCI_CTRL_META SCI_CTRL +#define SCI_SCTRL_META (SCI_CTRL | SCI_SHIFT) +#endif +  const KeyToCommand KeyMap::MapDefault[] = { + +#if OS_X_KEYS +    {SCK_DOWN,		SCI_CTRL,	SCI_DOCUMENTEND}, +    {SCK_DOWN,		SCI_CSHIFT,	SCI_DOCUMENTENDEXTEND}, +    {SCK_UP,		SCI_CTRL,	SCI_DOCUMENTSTART}, +    {SCK_UP,		SCI_CSHIFT,	SCI_DOCUMENTSTARTEXTEND}, +    {SCK_LEFT,		SCI_CTRL,	SCI_VCHOME}, +    {SCK_LEFT,		SCI_CSHIFT,	SCI_VCHOMEEXTEND}, +    {SCK_RIGHT,		SCI_CTRL,	SCI_LINEEND}, +    {SCK_RIGHT,		SCI_CSHIFT,	SCI_LINEENDEXTEND}, +#endif +      {SCK_DOWN,		SCI_NORM,	SCI_LINEDOWN},      {SCK_DOWN,		SCI_SHIFT,	SCI_LINEDOWNEXTEND}, -    {SCK_DOWN,		SCI_CTRL,	SCI_LINESCROLLDOWN}, +    {SCK_DOWN,		SCI_CTRL_META,	SCI_LINESCROLLDOWN},      {SCK_DOWN,		SCI_ASHIFT,	SCI_LINEDOWNRECTEXTEND},      {SCK_UP,		SCI_NORM,	SCI_LINEUP},      {SCK_UP,			SCI_SHIFT,	SCI_LINEUPEXTEND}, -    {SCK_UP,			SCI_CTRL,	SCI_LINESCROLLUP}, +    {SCK_UP,			SCI_CTRL_META,	SCI_LINESCROLLUP},      {SCK_UP,		SCI_ASHIFT,	SCI_LINEUPRECTEXTEND},      {'[',			SCI_CTRL,		SCI_PARAUP},      {'[',			SCI_CSHIFT,	SCI_PARAUPEXTEND}, @@ -81,13 +109,13 @@ const KeyToCommand KeyMap::MapDefault[] = {      {']',			SCI_CSHIFT,	SCI_PARADOWNEXTEND},      {SCK_LEFT,		SCI_NORM,	SCI_CHARLEFT},      {SCK_LEFT,		SCI_SHIFT,	SCI_CHARLEFTEXTEND}, -    {SCK_LEFT,		SCI_CTRL,	SCI_WORDLEFT}, -    {SCK_LEFT,		SCI_CSHIFT,	SCI_WORDLEFTEXTEND}, +    {SCK_LEFT,		SCI_CTRL_META,	SCI_WORDLEFT}, +    {SCK_LEFT,		SCI_SCTRL_META,	SCI_WORDLEFTEXTEND},      {SCK_LEFT,		SCI_ASHIFT,	SCI_CHARLEFTRECTEXTEND},      {SCK_RIGHT,		SCI_NORM,	SCI_CHARRIGHT},      {SCK_RIGHT,		SCI_SHIFT,	SCI_CHARRIGHTEXTEND}, -    {SCK_RIGHT,		SCI_CTRL,	SCI_WORDRIGHT}, -    {SCK_RIGHT,		SCI_CSHIFT,	SCI_WORDRIGHTEXTEND}, +    {SCK_RIGHT,		SCI_CTRL_META,	SCI_WORDRIGHT}, +    {SCK_RIGHT,		SCI_SCTRL_META,	SCI_WORDRIGHTEXTEND},      {SCK_RIGHT,		SCI_ASHIFT,	SCI_CHARRIGHTRECTEXTEND},      {'/',		SCI_CTRL,		SCI_WORDPARTLEFT},      {'/',		SCI_CSHIFT,	SCI_WORDPARTLEFTEXTEND}, @@ -98,14 +126,12 @@ const KeyToCommand KeyMap::MapDefault[] = {      {SCK_HOME, 		SCI_CTRL, 	SCI_DOCUMENTSTART},      {SCK_HOME, 		SCI_CSHIFT, 	SCI_DOCUMENTSTARTEXTEND},      {SCK_HOME, 		SCI_ALT, 	SCI_HOMEDISPLAY}, -//    {SCK_HOME,		SCI_ASHIFT,	SCI_HOMEDISPLAYEXTEND},      {SCK_HOME,		SCI_ASHIFT,	SCI_VCHOMERECTEXTEND},      {SCK_END,	 	SCI_NORM,	SCI_LINEEND},      {SCK_END,	 	SCI_SHIFT, 	SCI_LINEENDEXTEND},      {SCK_END, 		SCI_CTRL, 	SCI_DOCUMENTEND},      {SCK_END, 		SCI_CSHIFT, 	SCI_DOCUMENTENDEXTEND},      {SCK_END, 		SCI_ALT, 	SCI_LINEENDDISPLAY}, -//    {SCK_END,		SCI_ASHIFT,	SCI_LINEENDDISPLAYEXTEND},      {SCK_END,		SCI_ASHIFT,	SCI_LINEENDRECTEXTEND},      {SCK_PRIOR,		SCI_NORM,	SCI_PAGEUP},      {SCK_PRIOR,		SCI_SHIFT, 	SCI_PAGEUPEXTEND}, @@ -127,7 +153,11 @@ const KeyToCommand KeyMap::MapDefault[] = {      {SCK_BACK, 		SCI_ALT,	SCI_UNDO},      {SCK_BACK,		SCI_CSHIFT,	SCI_DELLINELEFT},      {'Z', 			SCI_CTRL,	SCI_UNDO}, +#if OS_X_KEYS +    {'Z', 			SCI_CSHIFT,	SCI_REDO}, +#else      {'Y', 			SCI_CTRL,	SCI_REDO}, +#endif      {'X', 			SCI_CTRL,	SCI_CUT},      {'C', 			SCI_CTRL,	SCI_COPY},      {'V', 			SCI_CTRL,	SCI_PASTE}, @@ -139,7 +169,6 @@ const KeyToCommand KeyMap::MapDefault[] = {      {SCK_ADD, 		SCI_CTRL,	SCI_ZOOMIN},      {SCK_SUBTRACT,	SCI_CTRL,	SCI_ZOOMOUT},      {SCK_DIVIDE,	SCI_CTRL,	SCI_SETZOOM}, -    //'L', 			SCI_CTRL,		SCI_FORMFEED,      {'L', 			SCI_CTRL,	SCI_LINECUT},      {'L', 			SCI_CSHIFT,	SCI_LINEDELETE},      {'T', 			SCI_CSHIFT,	SCI_LINECOPY}, | 
