我想更改键盘上某些键的键绑定。我希望一些人运行命令,而另一些人激活不同的键。
我可以使用哪些应用程序来执行此操作?
指数:
我仍在寻找使用dconf和其他任何方法的答案。
xkb
-answer:askubuntu.com/a/347382/354350
我想更改键盘上某些键的键绑定。我希望一些人运行命令,而另一些人激活不同的键。
我可以使用哪些应用程序来执行此操作?
指数:
xkb
-answer:askubuntu.com/a/347382/354350
Answers:
sudo apt-get install xbindkeys
Xbindkeys是一个非常通用的程序,可让您非常轻松地重新映射键。它使用一个配置文件(我的默认文件位于您的主目录中)将按键绑定更改为某些命令。
要创建默认配置文件,请使用以下命令:
xbindkeys --defaults
打印默认配置文件。因此,如果要创建包含默认值的文件,请使用:
xbindkeys --defaults > $HOME/.xbindkeysrc
它将默认值打印到.xbindkeysrc
位于home(~
)中的隐藏文件中。
现在要实际更改键的绑定,我们首先需要知道这些键的名称或键符号是什么。 xbindkeys
允许我们使用-k
手柄查找键或组合键的名称。跑:
xbindkeys -k
然后按一个键或组合键。输出将看一些类似这样(按下时space):
"NoCommand"
m:0x10 + c:65
Mod2 + space
"No Command"
告诉我们当前没有命令与该Space键关联。
m:0x10 + c:65
Mod2 + space
是键/组合键的名称。
让我们打开您之前创建的配置文件:
gedit .xbindkeysrc
这是默认配置文件的摘录:
#
# A list of keys is in /usr/include/X11/keysym.h and in
# /usr/include/X11/keysymdef.h
# The XK_ is not needed.
#
# List of modifier:
# Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
# Mod3 (CapsLock), Mod4, Mod5 (Scroll).
#
# The release modifier is not a standard X modifier, but you can
# use it if you want to catch release events instead of press events
# By defaults, xbindkeys does not pay attention with the modifiers
# NumLock, CapsLock and ScrollLock.
# Uncomment the lines above if you want to pay attention to them.
#keystate_numlock = enable
#keystate_capslock = enable
#keystate_scrolllock= enable
# Examples of commands:
"xbindkeys_show"
control+shift + q
每行开头#
都是注释,不会被读取或运行xbindkeys
。
到目前为止,唯一没有被注释掉的行是:
"xbindkeys_show"
control+shift + q
此摘录显示了xbindkeys
命令的基本语法:
"Command to run (in quotes)"
key to associate with command (no quotes)
如您所见:
"xbindkeys_show"
control+shift + q
xbindkeys_show
按下Ctrl+ Shift+ 时运行命令q。
现在让我们尝试绑定一些键。我建议清除整个默认文件,使其为空白。它包含您可能不需要的预设键绑定。
现在,假设您要使用Ctrl+ b打开浏览器。首先,你需要知道的名称或键符的Ctrl+ b是。如前所述,您可以xbindkeys -k
用来查找一个或多个键的名称,但是有一种更简单的方法。对于Ctrl+之类的简单组合,b您可以使用:
Control+b
是不是容易得多!
现在找到您喜欢的浏览器的命令:
对于Firefox: firefox
对于铬: chromium-browser
对于Opera: opera
还记得以前的语法吗?xbindkeys
当您按Ctrl+ 时启动Firefox(或其他喜欢的浏览器)的命令b是:
"firefox"
Control+b
现在,将其放入配置文件并保存。现在您可能会注意到您的命令尚不起作用,这是因为该命令xbindkeys
未运行。要启动它,只需xbindkeys
从终端运行即可。您的Ctrl+ b现在应该启动浏览器!
如果您希望键盘上的某个键调用键盘上的另一个键,则将需要额外的软件,因为xbindkeys
它本身并不支持此功能。我知道我们可以使用两个程序,xdotool
和xte
。我更喜欢,xte
所以我将使用它。
安装它:
sudo apt-get install xautomation
的语法xte
如下:
xte 'command key/mousebutton/xyCoordinates'
例子:
要呼叫一个按键,请按: xte 'key keyName'
调用组合键: xte 'keydown keyName' 'keydown secondKeyName' 'keyup keyName' 'keyup secondKeyName
调用鼠标按钮:( xte 'mouseclick buttonNumber'
稍后我们将讨论查找按钮编号)
移动鼠标: xte 'mousemove xCoordinate yCoordinate'
和更多!读man xte
现在您已经知道用于模拟按键的命令,您可以从xbindkeys
脚本中调用它,如下所示:
"xte 'key b'"
Control+b
您可能会猜到,这会xte 'key b'
在我们按Ctrl+ 时调用b,它将在b您当前正在处理的任何文档中输入a 。
我的事不过注意的是,xbindkeys
和xte
并不总是很好地工作在一起。有时您必须完全同时按下按键才能获得输出,而其他时候效果很好。这可能与系统配置和/或硬件有关,也可能没有。.我不确定。有关将密钥绑定到其他密钥的更可靠方法,请参见maggotbrain的答案。
您还可以使用xbindkeys
将鼠标按钮绑定到命令(以及键盘快捷键,请参见上文)。您现在应该已经熟悉鼠标按钮的基本格式:
" [command to run] "
b:n
[command to run]
您要运行的命令在哪里,以及该命令n
要使用的鼠标按钮的编号。
如果您不知道鼠标键的编号,则可以使用它xev
来找出它的含义:
xev | grep button
输出将是这样的:
user@host:~$ xev | grep button
state 0x10, button 1, same_screen YES
state 0x110, button 1, same_screen YES
state 0x10, button 2, same_screen YES
state 0x210, button 2, same_screen YES
state 0x10, button 3, same_screen YES
state 0x410, button 3, same_screen YES
当我按下每个鼠标按钮时。
例如:
" firefox "
b:2
当我按下鼠标中键时启动Firefox。
使用xev
和更改键绑定xmodmap
。
默认情况下,两个命令行应用程序均可用,因此无需安装其他软件。
Xev “创建一个窗口,然后要求X服务器在该窗口发生任何事情(例如,它被移动,调整大小,键入,单击等)时向其发送事件。” xev手册页
xmodmap是“用于编辑和显示键盘修饰符映射和键映射表的程序,客户端应用程序使用该程序将事件键代码转换为键符。” xmodmap手册页
下面的示例将Caps_Lock键重新映射为键的行为Esc(许多vi / vim用户认为这是有用的键盘映射)。
启动xev
从终端窗口应用(Ctrl- - )。Altt
该应用程序将初始化,显示多行并启动空白窗口。使xev
应用程序窗口保持焦点,然后按想要使用其属性/行为的键。
在终端窗口中,您将看到几行输出。记下返回的第三行。这将包含您希望移至另一个键的属性的名称。
KeyPress event, serial 32, synthetic NO, window 0x3e00001,
root 0x256, subw 0x0, time 16245388, (616,73), root:(1487,535),
state 0x10, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
XLookupString gives 1 bytes: (1b) ""
在这种情况下,Esc键(键码9)使用名称“ Escape”。
这次我们正在寻找正在使用的密钥代码Caps Lock。
再次注意第三行:
KeyRelease event, serial 32, synthetic NO, window 0x4c00001,
root 0x256, subw 0x0, time 94702774, (862,151), root:(1733,613),
state 0x10, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
XKeysymToKeycode returns keycode: 9
XLookupString gives 1 bytes: (1b) ""
现在,我们已经获得了有关要更改的键的信息xev
,我们将使用它xmodmap
来修改键映射。在命令终端(Ctrl+ Alt+ t)中,运行以下命令:
此命令将修改Caps Lock为使用与以下行为相同的行为Esc
xmodmap -e "keycode 66 = Escape"
此选项将键映射表作为表达式打印到文件中 ~/.Xmodmap
xmodmap -pke > ~/.Xmodmap
使用以下命令激活更改(仅对于此登录会话):
xmodmap ~/.Xmodmap
使更改在重启后保持不变:
如果不存在,请在主文件夹中创建一个名为的文件.xinitrc
。
touch .xinitrc
将以下行放入文件中并保存文件:
xmodmap ~/.Xmodmap
(例如Num Lock)
获取修饰键的键映射表(此处缩写输出)
$ xmodmap -pm
shift Shift_L (0x32), Shift_R (0x3e)
mod2 Num_Lock (0x4d)
例如,如果要将数字小键盘上的Del/ Period键上的句点的行为更改为 逗号,请使用以下命令:
xmodmap -e "keycode 91 mod2 = KP_Delete comma"
请注意,这是mod2
在Num Lock按下修饰符时使用键映射更改键行为的。语法如下:
xmodmap -e "<KEYCODE> <MODIFIER> = <behaviour> <behaviour_with_modifier>"
默认情况下(这只是对Seth的出色回答的补充),Ubuntu(在此示例中,我使用的是16.04)在系统设置中默认包含2个类别:
要转到系统设置,请在右上角单击齿轮图标:
然后选择系统设置:
在这里,您将找到2个可以将您转到“快捷方式创建”部分的选项。
如果选择“ 文本输入”,则必须选择“ 右下角”的“ 键盘设置”链接,该链接会直接将您转到“快捷方式”选项。
如果选择“ 键盘”选项,则必须单击“ 快捷方式”选项卡
到达“快捷方式”选项卡后,您将在左侧列表底部选择“ 自定义快捷方式”:
然后单击底部的加号以开始创建自己的快捷方式:
从那里开始,只需要添加快捷方式的名称即可(不要将快捷方式的名称与要执行的实际命令的名称混淆)。在下面的“命令”字段中,您将放置将对此快捷方式执行的命令。在下面的示例中,我将快捷方式命名为“ Sublime Text 3”,以了解该特定快捷方式的含义。在命令字段中,我添加了实际的命令subl
。
屏幕上将显示以下内容,因为快捷方式尚未分配按键或组合键,因此默认情况下为“禁用”:
然后,我们将单击“已禁用”消息以向其添加按键组合:
在这一部分中,我指定SHIFT+ CTRL+的组合键,S以便在按此组合键时可以打开Sublime Text App。
之后,您可以通过按相应的组合键并查看应用程序打开来简单地测试您的组合:
注意:对于特殊组合,如杀死X服务器的组合,建议访问以下链接:如何启用Ctrl-Alt-Backspace组合以杀死X服务器?
If you click on the Options button at the bottom right (Found on 13.04 or previous versions)...
版本> 13.04的选项按钮在哪里?
进入系统设置 → Keboard,选择快捷方式标签,然后为您的浏览器添加新的自定义快捷方式。如果您的默认浏览器是Firefox,请firefox
在命令字段中使用for;如果您的默认浏览器是Firefox,请使用chromium-browser
,依此类推:
您可以通过从软件中心安装自动键来创建复杂的(多键)键盘快捷键。与xmodmap不同,AutoKey不会重新绑定键盘上的实际键。它在后台运行并拦截您定义的键盘快捷键,然后将模拟的按键发送到您的应用程序。
首次启动AutoKey时,它将在后台启动服务(通知图标尚未统一更新,因此没有视觉指示)。一旦运行,您可以通过再次运行启动器来调出配置界面:
现在打开“编辑”>“首选项”,然后选择“登录时自动启动AutoKey”,以确保您的快捷方式在您登录时就可以使用。
键入要映射键来在文本框中。
+
在它们之间放置一个键,否则它们<ctrl>+c
将按顺序发送(例如,将在大多数应用程序中复制;<ctrl>+c<ctrl>+n<ctrl>+v
将创建包含所选内容的新文档;<shift>+ubuntu
将键入文本“ Ubuntu”)按下“热键”旁边的“设置”按钮。这将弹出一个对话框,允许您确定要映射组合键从:
选择文件>保存
完成配置的例子(它发送<enter>
当你按下<ctrl>+m
)看起来是这样的:
尝试这个:
安装一个名为XKeyCaps的程序。要安装,只需按键盘上的Ctrl+ Alt+ T打开终端。打开时,运行以下命令:
sudo apt-get install xkeycaps
安装完成后,您可以在提示符下执行xkeycaps以运行该程序。运行后,选择正确的键盘布局,然后单击“确定”。
然后,当您在屏幕上找到键盘时,右键单击所需的键(在本例中为)S,然后选择交换键。
确保将下面的行添加到您的会话中,以便它在每次启动时自动启动。
xmodmap ~/.xmodmap-`uname-n`
资料来源:UFM ytsejam1138
uname-n
认为是uname -n
?
unmae-n
。我无权测试Ubuntu机器,但是一旦完成,我将进一步检查。
如果您只想重新映射键,其他答案很好。
但是,还有另一种方法来处理它。AutoKey是键盘宏处理器,它使您可以将任何键/修饰符组合与一个脚本相关联,该脚本几乎可以执行您可以用键盘执行的所有操作以及更多操作。
AutoKey具有脚本记录器和输入基本键序列的简单方法,但是它的脚本是用Python编写的,几乎可以完成所有您可以编写的代码。
使用它的最简单方法是使其将击键发送到您的应用程序/桌面。当以这种方式使用时,系统/应用程序无法确定不是您在键入,因此不需要API或其他接口,它们只需执行“您”键入的操作即可。
AutoKey还可以处理短语。键入触发字符串时,它可以用该字符串替换新文本(立即或在键入分隔符(如换行符或制表符)之后。)
它还具有窗口过滤器,因此您可以将特定的短语或脚本限制为仅在特定类型的窗口中运行(例如,在标题中带有Mozilla的窗口,因此它们只能在Firefox或Thunderbird等环境中运行)。
AutoKey当前具有Gtk和Qt版本。
编辑:
用户论坛 活动用户论坛。
Wiki中有许多示例脚本。因为它主要是一个具有很多选项的GUI应用程序,所以示例将需要大量屏幕截图和整篇文章。
我定义了一个短语,这样当我键入“ Jmail! ”时,它会立即用我相当长的电子邮件地址替换它。
我编写了一个通过键入触发的脚本Ctrl- P仅在标题中带有“ Mozilla”的窗口中有效。键入Ctrl- P弹出(Firefox或Thunderbird)打印对话框,选择“打印到文件”,然后在我的打印队列中填写下一个可用的打印文件的名称(我将其编号为01、02,...,然后脚本读取该队列目录,查找最后一个文件号,并将其递增1)。我将其与我的双面打印仿真软件(duplexpr)一起使用,以消除大量的击键和鼠标移动。
我从游戏玩家那里看到了其他一些脚本,这些脚本使他们可以快速访问有关其角色和资源的信息,以便他们可以专注于动作。
将键盘键用作鼠标按钮
您可能需要将键盘键映射到鼠标按钮。如果要使用键盘键单击(如果有Macbook或触控板按钮不正确,则可以使用),则可以执行以下操作。
安装一些实用程序:
sudo apt-get install x11-utils xkbset x11-xserver-utils
找到您要映射的密钥的密钥代码:
xev | grep keycode
在终端按感兴趣的键,将出现如下一行:
state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
使用键码,重新映射键,使其与鼠标左键相同:
xkbset m
xmodmap -e "keycode 64 = Pointer_Button1"
Pointer_Button3
是鼠标右键,Pointer_Button2
是中间键。
xkb
是X Keyboard扩展名。它负责将键盘的键映射到其指定功能。
xkb
可以在中找到符号/usr/share/X11/xkb/symbols/
。修饰键映射到中/usr/share/X11/xkb/symbols/pc
。
说,我需要切换Caps Lock
和Left Control
键的功能。需要对pc
文件进行以下更改:
key <CAPS> { [ Control_L ] };
key <LCTL> { [ Caps_Lock ] };
为了应用新的映射,您需要清除以下内容xkb
的缓存/var/lib/xkb
:
rm -rf /var/lib/xkb/*
现在,只需重新启动X会话,您就可以开始了。
资料来源:https : //radu.cotescu.com/remapping-keys-in-ubuntu-14.04/
编辑:ls
在symbols
目录内部
做这个:
af cm gn kz nec_vndr sk
al cn gr la ng sn
altwin compose group latam nl sony_vndr
am ctrl hp_vndr latin no srvr_ctrl
apl cz hr level3 nokia_vndr sun_vndr
ara de hu level5 np sy
at digital_vndr ie lk olpc terminate
az dk il lt pc th
ba ee in lv ph tj
bd empty inet ma pk tm
be epo iq macintosh_vndr pl tr
bg es ir mao pt tw
br et is md ro typo
brai eurosign it me rs tz
bt fi jp mk ru ua
bw fo ke ml rupeesign us
by fr keypad mm se uz
ca fujitsu_vndr kg mn sgi_vndr vn
capslock gb kh mt sharp_vndr xfree68_vndr
cd ge kpdl mv shift za
ch gh kr nbsp si
文件ru
中的映射基于俄语标准键盘。该macintosh_vndr
文件夹包含Apple键盘的映射。简而言之,这种方法用途广泛。继续玩吧:)
/usr/share/X11/xkb/symbols/pc
。
CCSM使您可以更改一些系统键盘快捷键。
要安装它,请使用软件中心或以下命令:
sudo apt-get install compizconfig-settings-manager
我用它来将“窗口传播”快捷方式从默认的Super+ W更改为Super+ Tab,就像在Windows 10上一样。在另一个线程上,我的回答是:
我想按“打印屏幕”以使用该gnome-screenshot
应用程序保存屏幕截图,如薄荷
但是我想使用终端而不是GUI来实现,因为我想在使用squashfs
工具创建自定义ISO时将其设置为默认设置。
首先我使用命令安装了gnome-screenshot
sudo apt-get install gnome-screenshot
然后我使用设置->键盘->自定义快捷方式 ->添加(+)按钮-> 分配了自定义快捷方式
在对话框中:
按添加按钮
然后Print screen按键。
密钥现已绑定,我可以根据需要保存屏幕截图。
但不使用终端,这是GUI方式
然后我安装dconf-editor
使用
sudo apt-get install dconf-editor
并搜索gnome-screenshot
我在此路径中找到我的自定义键绑定
/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/
键的值是:
现在,我将其复制并删除GUI自定义快捷键
我打开终端并输入以下命令
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command "'gnome-screenshot'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding "'Print'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/name "'print screen'"
和瞧
现在,仅使用dconf
和终端,就可以在没有任何GUI的情况下保存屏幕截图。我也不需要dconf-editor
了,它只是安装来获取值。