jEdit在Mac OS上的键盘行为

10

有没有办法让 jEdit 的键盘控制方式与本机的 Mac OS 应用程序相同?

所谓的“相同”,是指使用 command+left 会将光标移动到行首,使用 alt+left 会将光标移动到当前单词的开头等。


好问题!有进展吗? 我也在想同样的问题。但我在网上也找不到任何信息。恐怕你必须自己创建绑定。.. - RngTng
这是与键位绑定相关的问题,jedit无法识别一些Mac键。这不仅仅是映射的问题。我了解到在之前的jedit版本中有一个适用于Mac的插件。但是根据我所知,由于它与JDK6不兼容,该插件已被删除。 - BefittingTheorem
3个回答

10

首先需要启用ALT键。在startup.bsh文件中完成此操作,该文件位于:

JEDIT_HOME/Contents/Resources/Java/startup/startup.bsh

在 Mac OS 上,通常会是这样:

/Applications/jEdit.app/Contents/Resources/Java/startup/startup.bsh
以下行应该取消注释:
Debug.ALT_KEY_PRESSED_DISABLED = false;
Debug.ALTERNATIVE_DISPATCHER = false;

现在您可以在键映射中包括ALT键,其中

C => CMD
M => ALT
到行末:C+Right  
到行首:C+Left 
到下一个单词:M+Right 
到上一个单词:M+Left 
选择下一个单词:MS+Right 
选择上一个单词:MS+Left 
选择到行末:CS+Right 
选择到行首:CS+Left

这很有帮助,但并没有提供我想要的所有功能。从版本5.1.0开始,如果在startup.bsh文件中搜索'MacOS',则有一些其他需要取消注释的行(KeyEventTranslator.setModifierMapping);这样做可以解决@BrianHeylin最初的问题。 - JJ Zabkar
非常感谢Brian。只是需要在jEdit 5.3.0中手动添加以下行:Debug.ALT_KEY_PRESSED_DISABLED = false;' 和 'Debug.ALTERNATIVE_DISPATCHER = false; - Jorge Gil

3
很不幸,Brian的发现在QWERTZ键盘上无法很好地使用:它禁用了输入像管道、花括号或任何使用ALT键作为修饰符的字符的可能性。
根据startup.bsh中的注释:
/*{{{ Remapping modifier keys part II */

/* Note if you chose to make use of the M+ (option key) prefix on MacOS, you
 * will need to disable a little piece of code: */
//Debug.ALT_KEY_PRESSED_DISABLED = false;
/* Otherwise M+ will be ignored for the purposes of keyboard shortcuts. */

/* But if you enable this, you might find that Option+8 for example invokes your
 * macro but also inserts a bulletpoint, as per standard Macintosh keyboard
 * behavior. To disable the Option key for inserting special high ASCII
 * characters, uncomment this. Note that it has wider implications, notably
 * DROVAK keyboard shortcuts will be mapped as if the keyboard was QWERTY. */
//Debug.ALTERNATIVE_DISPATCHER = false;

/*}}}*/

只需取消注释Debug.ALT_KEY_PRESSED_DISABLED即可解决问题,但在这里[1],它并不起作用——我可以使用ALT作为快捷键的修饰符,也可以将其用作输入字符的修饰符。先前的部分还涉及修饰符的映射:

/*{{{ Remapping modifier keys part I */

/* The below is the default, swap the items around to
 * change meaning of C+, A+, M+, S+.
 */
//KeyEventTranslator.setModifierMapping(InputEvent.CTRL_MASK,
//  InputEvent.ALT_MASK, InputEvent.META_MASK,
//  InputEvent.SHIFT_MASK);

/* ... and this the MacOS default: */
//KeyEventTranslator.setModifierMapping(InputEvent.META_MASK,  /* == C+ */
//  InputEvent.CTRL_MASK,  /* == A+ */
//  InputEvent.ALT_MASK,   /* == M+ */
//  InputEvent.SHIFT_MASK  /* == S+ */);

/*}}}*/

但是,无论我尝试了哪些设置组合,我都没能实现同时使用ALT作为快捷键修饰符和文本输入的设置。因此,任何提示/修复都将不胜感激。;-)
[1] 这里指的是:jEdit 4.3.2 @ OSX 10.5.8 (Java 1.5.0_30),使用QWERTZ(德语)键盘。

我也遇到了同样的问题,使用QWERTY键盘。:( 无法通过jEdit输入#? - Nick

1
一个适合我的解决方案:
创建一些宏,将需要的特殊字符插入到文本区域中(每个字符一个宏)。
然后您可以更改设置以启用jedit的alt键(我仅启用了两个属性中的第一个)。
之后,您可以为记录的宏分配alt快捷方式,以使特殊字符通过与以前相同的快捷方式插入。
之后,您可以更改文本导航的快捷键设置以匹配mac标准,并且仍然可以通过定义的宏快捷键使用特殊字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接