如何为eclipse设置超级/ Windows/mod4键绑定
我想在eclipse(3.7.2)中设置一些涉及键(“windows”键)的键绑定,但它似乎没有选择当我按下它时修改键。为什么?我能做些什么来检测它?如何为eclipse设置超级/ Windows/mod4键绑定
Eclipse不挂钩Windows键。你唯一能做的就是使用一个工具重新绑定windows key,例如,CTRL + ALT + SHIFT(如果你不使用它的话)。像AutoHotkey这样的工具可以完成这项工作。
然后,当你按下windows键,这将是,如果你按下CTRL + ALT + SHIFT ,然后你就可以用它来绑定您想要的热键。
你的“Linux”的标签在你的问题,所以我会假设你正在使用Linux和X ...
因此,使用超与Eclipse,首先你要发现你是否有 a超级,如果没有,就做一个。其余的部分可能比你在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)
在上面的输出,一串钥匙已经映射到中超,与(十六进制)键代码0x85,0x86可以,0xce和0xcf。要查看键盘上是否有任何键盘碰巧是其中一个键(这并非总是如此),请在终端中运行“xev”,并将鼠标指针移至“xev”的大部分白色输入窗口,然后尝试不同的钥匙。典型的输出看起来像这样的键(尝试控制和转向看例子) - 特别注意第三行的键码和键名称,在这里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.如果你已经打了超级计算机之一,你的转换代码将匹配的一个(在上面的例子中,四)六角键码,和显示Super_L或Super_R而不是上面显示的Meta_L。
如果您没有任何键映射到超级键,或者您的键盘上没有任何键,那么请使用xev来查找您要使用的密钥用于Super(CapsLock might对某些人来说是个不错的选择),然后在桌面的UI中使用xmodmap或其他工具来设置它。后者是这个答复的范围之外,但使用xmodmap,你可以只让一个叫.Xmodmap在你的home目录与该文件在它:
! 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初创公司会自动为您提供这些服务。如果您使用的是Ubuntu Unity,请在Dash中查找启动应用程序,并为该命令添加一个。我不确定“〜”是否适用于上下文,您可能想尝试使用$ HOME或只使用您的主目录。它最终会在〜/ .config/autostart/xmodmap中生成一个文件。桌面像这样的(erlkonig =我,把你的家中,而不是):
$ 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_switch来获得æ, d得到d,?得到¿,和其他一些人。
! 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
更多信息,请使用“xmodmap的人”。
我怀疑你的核心目标是创建键绑定除了你现有的控制和alt绑定。因此,例如,让Windows-L执行与Control-L,Alt-L或Shift-L不同的操作。
不幸的是,似乎Linux上的Eclipse不支持超出shift,control和alt(在xmodmap中为mod1)的修饰符。所以没有额外的修改器可以将Windows键映射到。合乎逻辑的选择是mod4,但看起来SWT在非Windows平台上不支持mod4。
在https://bugs.eclipse.org/bugs/show_bug.cgi?id=55236处添加非windows mod4支持存在一个错误。不幸的是,它被标记为“不会修复”一段时间。我建议去那里投票并分享额外的用户案例/重新开放它的原因,如果你有它们。
据我所知,Eclipse似乎没有看到mod4(或mod3)。因此,将Super分配给mod4实际上并没有帮助。 – studgeek 2016-05-06 23:22:55
呃。那真不幸。如果在Linux + X11上它确实如此,并且它不会最终被Eclipse命名为其他东西,但它不在那里......好吧,不要这样做。哦,这只是答案的一半,让Eclipse团队支持标准的X11修改器是其余的(如果你是对的,它还没有)。 – 2016-05-07 04:22:20