- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想在 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/
我有一个 foo 类,它有一个 bar 方法,它接受可调用的东西(函数指针/仿函数)。这个可调用的东西应该作为绑定(bind)元素传递给另一个方法 doit 和第三个方法 bar_cb 方法。 #in
我正在尝试在我的 WPF 4.0 应用程序(使用 VS 2010 Pro RTM)中创建自定义 TabItem 模板/样式,但尽管一切似乎都正常工作,但我注意到跟踪窗口中存在绑定(bind)错误。 我
作为一名刚接触 Android 的开发人员,我想我可能误解了绑定(bind)服务。 我创建了一项服务来结束对服务器的访问。作为此服务的一部分,该服务正在监听多播地址,以识别本地网络上的设备何时出现和消
这个问题在这里已经有了答案: What is the use of the JavaScript 'bind' method? (23 个回答) 关闭 7 年前。 所以我一直在尝试了解一些 JS 上
我不明白这三种语法之间的区别: where a = f (b) do a <- f (b) do let a = f (b) 我确实明白了a <- f(b)与其他两个不同,在大多数情况下,我尝试了所有
我在将 Cocoa 项目从手动同步接口(interface)模型转换为绑定(bind)模型时遇到问题,这样我就不必担心接口(interface)粘合代码。 我关注了 CocoaDevCentral C
我正在尝试找出一种好的方法来对处理大数据集的代码进行并行化,然后将结果数据导入 RavenDb。 数据处理受 CPU 限制和数据库导入 IO 限制。 我正在寻找一种解决方案,以对 Environmen
我正在 foreach 循环中生成单选按钮。我试图将选中的属性绑定(bind)到父级中的基本可观察值。不幸的是,当单击单选按钮时,父级的属性似乎没有在单击处理程序中更新。 基于一些previous w
在我的 Windows Phone 应用程序中,我有两个 LongListSelectors并排在页面上。我想做到这一点,以便当用户滚动其中一个时,另一个滚动相同的量。 两个 LongListSele
我在网上看到这个问题准备面试: Given a non-preemptive kernel which type of process will get affected morein terms o
我有一个 foreach 绑定(bind),如下所示: Summary Permitting 原因是有两个选项卡始终存在,并且我根据是否添加了其他选项卡来添加其他选项
任何人都有绑定(bind)相同的情况DataContext到 TextBlock 中的 Text 属性(例如)。 我必须分配 DataContext以我的风格反射(reflect)基于 Datacon
给定以下代码: Login 和下面的javascript $(function () { $('#btnLogin').click(function () { co
我使用 boost::asio 创建了一个服务器。我在绑定(bind)到端点时遇到问题。所以,如果我在构造函数中初始化一个接受器: Server::Server(QWidget *parent) :
我正在将现有项目从 MySQL 转换为 Postgres。代码中有相当多的原始 SQL 文字使用 ? 作为占位符,例如 SELECT id FROM users WHERE
似乎在绑定(bind)某些数据时出错了,有人可以帮我解决我哪里出错了,尽管我无法弄清楚。 真的不需要在这里显示太多,这是 Binding,我已经通过移除背景并在其中放置颜色来测试背景,效果很好。 编辑
我正在尝试使用 wcf 构建一个 http 监听器(web 服务)。这个监听器是一个更大的桌面应用程序的一部分。此桌面应用程序还会调用 http 监听器。 当监听器接收到数据时,它应该被传递到桌面应用
嘿嘿。 我正在使用 Node.JS 和 child_process 来生成 bash 进程。我试图了解我是否正在执行 I/O 绑定(bind)、CPU 绑定(bind)或两者兼而有之。 我正在使用 p
尝试执行以下操作并出现“Got interpolation ({{}}) where expression was expected”错误。 {{item.name}} 谢谢!
我有一个导入的 Java 库,它是我解决方案中的“绑定(bind)库”项目。 我正在尝试从解决方案中的另一个项目绑定(bind)到第 3 方库中的服务。 第 3 方库文档 [在 java 中] 非常简
我是一名优秀的程序员,十分优秀!