gpt4 book ai didi

linux - 如何为 Eclipse 设置 Super/Windows/mod4 键绑定(bind)

转载 作者:IT王子 更新时间:2023-10-29 00:01:43 26 4
gpt4 key购买 nike

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

最佳答案

您在问题中标记了“linux”,所以我假设您使用的是 Linux 和 X ...

因此,要将 Super 与 Eclipse 一起使用,首先您必须确定您是否拥有一个 Super,如果没有,则创建一个。关于 xmodmap 的其余部分可能远远超出您的需要。

首先要做的是查看您是否已经拥有 super 修改键。运行“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”的大部分白色输入窗口中,然后尝试不同的键。键的典型输出看起来像这样(尝试控制和转移以查看示例)——特别注意带有键码和键符号名称的第三行,这里是 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

找到“keycode”部分并将其转换为 16 进制。如果您点击了其中一个 Supers,则转换后的代码将匹配其中一个(在上例中为四个)十六进制键码,并显示 Super_L 或 Super_R而不是上面显示的 Meta_L。

如果您没有任何映射到 Super 的键,或者事实证明它们都不存在于您的键盘上,则使用 xev 找到您想要用于的键的键码Super(CapsLock 对某些人来说可能是个不错的选择),然后使用 xmodmap 或桌面用户界面中的其他工具进行设置。后者超出了本回复的范围,但使用 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 初创公司会自动为您应用这些。如果您使用的是 Ubuntu Unity,请在 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 的另一个随机(大概)示例,这里有一个键盘映射,它将任何键码 78 映射到 Mode_switch,然后允许您将它与 '、"、` 和 ~ 组合以输入前缀,使您的下一个元音上有类似的变音符号。您还可以使用 Mode_switch 和 a 来获取 æ,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

有关更多信息,请使用“man xmodmap”。

关于linux - 如何为 Eclipse 设置 Super/Windows/mod4 键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11421156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com