? Terminal.app ? metakey.patch ? obj Index: TerminalParser_Linux.m =================================================================== RCS file: /sources/gap/gap/system-apps/Terminal/TerminalParser_Linux.m,v retrieving revision 1.8 diff -u -r1.8 TerminalParser_Linux.m --- TerminalParser_Linux.m 17 Nov 2010 22:42:46 -0000 1.8 +++ TerminalParser_Linux.m 25 Nov 2011 09:14:10 -0000 @@ -1342,6 +1342,7 @@ { BOOL commandAsMeta=[TerminalViewKeyboardPrefs commandAsMeta]; + BOOL altIsNotMeta =[TerminalViewKeyboardPrefs altIsNotMeta]; /* Thanks to different keyboard layouts and dumb default key handling @@ -1356,11 +1357,15 @@ left alt to be meta, and, if right alt is AltGr, right alt not to be meta. Thus, when command-as-meta option is active, we intercept command presses and treat them as meta, and we ignore alternate. + + Since Nov. 2011 GNUstep behaviour changed by default to consider AltGr + as Alt. + altIsNotMeta is needed to keep Alt as Alt and not as Meta. */ if ((commandAsMeta && (mask&NSCommandKeyMask)) || - (!commandAsMeta && (mask&NSAlternateKeyMask))) + (!commandAsMeta && !altIsNotMeta && (mask&NSAlternateKeyMask))) { NSDebugLLog(@"key",@" meta"); [ts ts_sendCString: "\e"]; Index: TerminalViewPrefs.h =================================================================== RCS file: /sources/gap/gap/system-apps/Terminal/TerminalViewPrefs.h,v retrieving revision 1.2 diff -u -r1.2 TerminalViewPrefs.h --- TerminalViewPrefs.h 5 Aug 2009 17:51:00 -0000 1.2 +++ TerminalViewPrefs.h 25 Nov 2011 09:14:10 -0000 @@ -1,5 +1,6 @@ /* copyright 2002, 2003 Alexander Malmberg + 2009-2011 GNUstep Application Project (Riccardo Mottola) This file is a part of Terminal.app. Terminal.app is free software; you can redistribute it and/or modify it under the terms of the GNU General @@ -72,9 +73,11 @@ NSButton *b_commandAsMeta; NSButton *b_doubleEscape; + NSButton *b_altIsNotMeta; } +(BOOL) commandAsMeta; ++(BOOL) altIsNotMeta; +(BOOL) doubleEscape; @end Index: TerminalViewPrefs.m =================================================================== RCS file: /sources/gap/gap/system-apps/Terminal/TerminalViewPrefs.m,v retrieving revision 1.8 diff -u -r1.8 TerminalViewPrefs.m --- TerminalViewPrefs.m 17 Nov 2010 23:26:57 -0000 1.8 +++ TerminalViewPrefs.m 25 Nov 2011 09:14:10 -0000 @@ -1,7 +1,7 @@ /* copyright 2002, 2003 Alexander Malmberg -2009-2010 GAP Project +2009-2011 GAP Project This file is a part of Terminal.app. Terminal.app is free software; you can redistribute it and/or modify it under the terms of the GNU General @@ -635,10 +635,11 @@ static NSString - *CommandAsMetaKey=@"CommandAsMeta", - *DoubleEscapeKey=@"DoubleEscape"; + *CommandAsMetaKey=@"CommandAsMeta", + *DoubleEscapeKey=@"DoubleEscape", + *AltIsNotMetaKey=@"AltIsNotMeta"; -static BOOL commandAsMeta,doubleEscape; +static BOOL commandAsMeta,doubleEscape, altIsNotMeta; @implementation TerminalViewKeyboardPrefs @@ -649,6 +650,7 @@ commandAsMeta=[ud boolForKey: CommandAsMetaKey]; doubleEscape=[ud boolForKey: DoubleEscapeKey]; + altIsNotMeta=[ud boolForKey: AltIsNotMetaKey]; } +(BOOL) commandAsMeta @@ -661,6 +663,11 @@ return doubleEscape; } ++(BOOL) altIsNotMeta +{ + return altIsNotMeta; +} + -(void) save { @@ -677,12 +684,20 @@ else doubleEscape=NO; [ud setBool: doubleEscape forKey: DoubleEscapeKey]; + + if ([b_altIsNotMeta state]) + altIsNotMeta=YES; + else + altIsNotMeta=NO; + [ud setBool: altIsNotMeta forKey: AltIsNotMetaKey]; + } -(void) revert { [b_commandAsMeta setState: commandAsMeta]; [b_doubleEscape setState: doubleEscape]; + [b_altIsNotMeta setState: altIsNotMeta]; } @@ -724,6 +739,18 @@ [top addView: b enablingYResizing: YES]; DESTROY(b); + b=b_altIsNotMeta=[[NSButton alloc] init]; + [b setAutoresizingMask: NSViewMinYMargin|NSViewMaxYMargin|NSViewWidthSizable]; + [b setTitle: + _(@"Treat the Alt key as Alt and not Meta.\n" + @"Useful if command is used as Meta\n" + @"And the keyboard has AltGr and not right Alt\n")]; + [b setButtonType: NSSwitchButton]; + [b sizeToFit]; + [top addView: b enablingYResizing: YES]; + DESTROY(b); + + [top addSeparator]; b=b_doubleEscape=[[NSButton alloc] init];