如何为eclipse设置Super/Windows/mod4密钥绑定



我想在eclipse(3.7.2)中设置一些涉及键("windows"键)的键绑定,但当我按下它时,它似乎没有拾取修改键。为什么?我该怎么做才能让它检测到它?

您的问题中标记了"linux",所以我假设您使用的是linux和X。。。

因此,要将Super与Eclipse一起使用,首先必须发现是否有Super,如果没有,请创建一个。剩下的内容可能远远超出了您对xmodmap主题的需要。

要做的第一件事是看看你是否已经有了一个超级修改器键。运行"xmodmap-pm"查看当前的修饰符是什么。这里有一个常见的输出:

$ xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):
shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

在上面的输出中,一堆密钥已经映射到Super,其中(十六进制)密钥代码为0x85、0x86、0xce和0xcf。要查看键盘上的任何东西是否恰好是其中一个键(情况并非总是如此),请在终端中运行"xev",并将鼠标指针移动到"xev"的白色输入窗口中,然后尝试不同的键。键的典型输出是这样的(请尝试控制和移位以查看示例)-请特别注意带有keycode和keysym名称的第三行,这里是64和Meta_L。

一定要试试你的"Windows"键,看看它目前有什么键代码和映射。

KeyPress event, serial 42, synthetic NO, window 0xe600003,
    root 0x6b6, subw 0x0, time 2232472454, (-1,167), root:(871,683),
    state 0x0, keycode 64 (keysym 0xffe7, Meta_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

找到"密钥码"部分并将其隐藏到基数16。如果您命中了其中一个Supers,则转换后的代码将与其中一个(在上例中为四个)十六进制键代码匹配,并显示Super_L或Super_R,而不是上面显示的Meta_L。

如果你没有任何键映射到Super,或者你的键盘上没有这些键,那么使用xev来找到你想要用于Super的键的键代码(CapsLock对一些人来说可能是个不错的选择),然后使用xmodmap或桌面UI中的其他工具来设置它。后者不在本回复的范围内,但使用xmodmap,您可以在主目录中创建一个名为.xmodmap的文件,其中包含以下内容:

! note: replace the 0xff below with your *actual* Super_L key's keycode.
! note: whether to use mod3 or mod4 depends on your environment.
keycode 0xff = Super_L
clear mod4
add mod4 = Super_L

使用"xmodmap~/.xmodmap"应用结果。许多X初创公司会自动为您应用这些结果。如果你使用的是UbuntuUnity,在Dash中查找启动应用程序,并为同一命令添加一个。我不确定"~"在上下文中是否有效,您可能想尝试$HOME,或者只使用您的主目录。它最终在~/.config/autostart/xmodmap.desktop中生成了一个文件,如下所示(erlkonig=me;将您的家放进去):

$ cat ./.config/autostart/xmodmap.desktop
[Desktop Entry]
Type=Application
Exec=/usr/bin/xmodmap /home/erlkonig/.Xmodmap
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Xmodmap Keymap Settings
Name=Xmodmap Keymap Settings
Comment[en_US]=Set Keyboard Bindings
Comment=Set Keyboard Bindings

您可以使用"xmodmap-pm"或"xev"来验证结果。以下是前者从更复杂的设置中为我的环境提供的输出(可能与您自己想要的不匹配)。

$ xmodmap -pm
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):
shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x7f)
control     Control_L (0x25)
mod1        Meta_L (0x40),  Meta_L (0xcd)
mod2        Alt_L (0x6c),  Alt_L (0xcc)
mod3        Super_R (0x69),  Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
mod4        Hyper_L (0x42),  Hyper_L (0xcf)
mod5        Num_Lock (0x4d)

Hyper取代了CapsLock(我已经把它移到其他地方了);我把它用于窗口管理器功能,比如Hyper-f"前置"窗口,Hyper-r调整大小,等等。

对于xmodmap的另一个随机(ish)示例,这里有一个密钥映射,它将任何密钥码78映射到Mode_switch,然后允许您将其与'、"、"和~组合,以输入前缀,使您的下一个元音具有类似的变音符号。您也可以将Mode_switter与a一起使用以获得æ,d来获得abl,?来获得?,以及其他一些。

! note: 78 is probably not the keycode most would want here; pick your own :-)
keycode 78 = Mode_switch
!                      no mods shift           mode-switch shift+mode-switch
keysym a          =          a A                        ae AE 
keysym d          =          d D                     thorn THORN
keysym n          =          n N                    ntilde Ntilde
keysym o          =          o O                    oslash Oslash
keysym t          =          t T                       eth ETH
keysym s          =          s S                    ssharp
keysym 0          =          0 parenright           degree     
keysym 6          =          6 asciicircum dead_circumflex
keysym 8          =          8 asterisk           multiply    
keysym apostrophe = apostrophe quotedbl         dead_acute dead_diaeresis
keysym grave      =      grave asciitilde       dead_grave
keysym comma      =      comma less           dead_cedilla guillemotleft
keysym period     =     period greater            NoSymbol guillemotright
keysym slash      =      slash question           NoSymbol questiondown
keysym 1          =          1 exclam             NoSymbol exclamdown
keysym equal      =      equal plus               notequal plusminus

有关更多信息,请使用"man-xmodmap"。

Eclipse不挂接Windows键。你唯一能做的就是使用一个工具将windows键重新绑定到,例如,CTRL+ALT+SHIFT(如果你不使用的话)。像AutoHotkey这样的工具可以完成这项工作。

然后,每当您按下windows键时,就好像您按下了CTRL+ALT+SHIFT

我怀疑您的核心目标是在现有控件和alt绑定之外创建键绑定。例如,让Windows-L做一些不同于Control-L、Alt-L或Shift-L的事情。

不幸的是,linux上的Eclipse似乎不支持shift、control和alt(xmodmap中的mod1)之外的修饰符。因此,没有额外的修改器可以将Windows密钥映射到。合乎逻辑的选择是mod4,但SWT似乎不支持非Windows平台上的mod4。

在添加非windows mod4支持时出现错误https://bugs.eclipse.org/bugs/show_bug.cgi?id=55236.不幸的是,它被标记为"不会修复"已经有一段时间了。我建议去那里投票支持它,并分享其他用户案例/重新打开它的原因(如果你有)。

相关内容

  • 没有找到相关文章

最新更新