我经常在两台计算机之间来回切换:


OSX Snow Leopard
Ubuntu 10.10

我希望能够使用Ubuntu与OSX System Wide相同的键盘快捷键,仅适用于以下键盘序列(即,我不想让Ctrl像Super一样)


Super + C->复制
Super + V->粘贴
Super + T->在我使用的浏览器中打开一个新标签。
Super + W->在我使用的浏览器中关闭一个标签。
/>
因此,总之,我是否有将这些键盘序列映射到系统范围内的以下内容的任何方法?



Super + C-> Ctrl + C


Super + V-> Ctrl + V


Super + T-> Ctrl + T

超级+ W-> Ctrl + W宁愿只做一次,并且在整个系统范围内都可以正常工作!

我正在使用标准的PC键盘,即“ neric 105 key(intl)PC”。我在Mac mini上也使用了相同的键盘。

评论

如果您拨通了所有Mac键盘快捷键,那么共享您的配置文件将非常好!谢谢

嘿!我希望我仍然可以,但是我现在只在Mac上工作,因为我已经搬了工作;-)所以我在任何地方都没有旧的配置...

解决方案不适用于基本操作系统。'

#1 楼

如果安装xautomation软件包,则可以在“系统” /“首选项” /“快捷键” /“自定义”中添加命令,例如:

xte "keyup Meta_L" "keyup c" "keydown Control_L" "key c" "keyup Control_L"


并将其映射到Meta-C。


替代解决方案:

安装AutoKey(apt-get install autokey-gtk)并将短语设置为:

Phrase Text: <ctrl>+C (actually type out the <ctrl>+ here)
Paste Using: Keyboard
Abbreviation: None
Hotkey: <super>+v
Window Filter: None


评论


嘿!这看起来非常有前途...我已经安装了,并且可以从终端运行上述xte命令,并且在终端中输出“ ^ C” ...对我来说看起来不错!但是,当我在“快捷键”中映射它时,它什么也没做...我尝试将另一个程序映射到Meta-C,并且运行良好(即,当我按Meta-C时可以正常运行)。我还尝试指定xte(/ usr / bin / xte)的完整路径,但是该路径也不起作用...您可以在系统上尝试一下,看看是否可行吗?谢谢!

–布莱德公园
2010年11月6日,1:18

因此,xte可以正确发送键控代码,但是显然应用程序会看到快捷键和xte发送的按键组合(例如Meta-Control-C)。我已经更新了答案,以模拟在发送按键之前释放快捷键。

–cscarney
2010年11月6日,下午5:18

经过快速检查,它对我有用,但是我发现了一个解决方案,它可能比xte更可靠(即使您可以使用它)。检查修改后的答案。

–cscarney
2010年11月6日14:09

嘿!谢谢@cscarney!您的AutoKey“替代解决方案”完全有效!非常感谢您为此付出的不懈努力!

–布莱德公园
2010年11月8日17:29

解决方案不适用于Ubuntu 18.04

– JZ。
18/09/19的2:36

#2 楼

从Ubuntu 14开始,您可以使用GNOME Tweaks:
 sudo apt install gnome-tweaks # formerly gnome-tweak-tool
 

然后,查找Tweak工具>键盘和鼠标>其他布局选项> Alt / Win键行为。
并检查:Ctrl映射到Win键和通常的Ctrl键。


评论


似乎什么也没做或不是Mac的行为

–碎肉
16 Dec 3'在4:29

在全新安装的Ubuntu 16中,安装此文件似乎需要gnome-settings-daemon,这似乎会导致产生一系列似乎不应该安装的软件包。

–汤姆·连扎
17年2月5日在15:37

到目前为止,如果您只想使命令键像Mac中的cmd键一样,则是最直接的选择,主要用于复制和粘贴。我在ubuntu-gnome-desktop上

–外消旋
17 Mar 20 '17在23:18

这对于复制粘贴命令非常有用,并且使我无法在Ubuntu中不断打开搜索菜单。现在我只需要将Command-Tab映射到Alt-Tab

–罗恩·史密斯
17年7月9日在2:13

我的应用程序中没有看到“调整工具”。我该怎么办?

–帕万·贾达(Pavan Jadda)
18-10-3在16:12

#3 楼

有一种方法可以将Ctrl映射到Win / Super键:


转到“系统”->“首选项”->“键盘”,
打开“选项卡布局”,然后单击“选项”。 ..,
打开Alt / Win键行为,
,然后选择Control映射到Win键。

对于控制台,这里有一个论坛帖子。
/>
有关更多挖掘的信息,请在此处查看常规Linux键盘操作指南。

注意事项

评论


嘿@danizmax-感谢您的回复...但是我特别想避免更改Ctrl的完整行为...如果可以的话,我发现它与其他内容完全无关...我真的想映射我在帖子中提到的键盘快捷键...谢谢!

–布莱德公园
2010年11月4日0:00

那么Ctr +保持不变。它只会将所有Ctrl +复制到Super +,因此您只需添加行为即可。除非您真的只想更改您提到的内容,否则您将不得不大量使用xmodmap和loadkeys进行挖掘。我已将链接添加到常规Linux键盘HOWTO。希望对您有帮助:P

– danizmax
10-11-4在11:40

这是所有提议中最简单的解决方案。

– Datageek
13年3月16日在16:21

在Ubuntu 15.10中,我不再在系统设置中看到“选项”或“ alt / win键行为”选项。

–user29020
16 Mar 5 '16 at 2:07

现在在gnome调整中,“键盘和鼠标”

–于罗吉格
17年11月1日在19:53

#4 楼

以上某些解决方案较旧,无法在Ubuntu 18.04上使用。这是更新的答案



如果未安装在系统中,请安装gnome-tweaks

sudo apt-get install gnome-tweaks

打开通过按左下角的“显示应用程序”来显示应用程序列表。
请注意,这只会将WINDOWS键的行为更改为CMD键,并保持CTRL键与以前相同(您将拥有2个CTRL键)。如果您不喜欢,请跳过第4步,然后转到第5步。
查找Tweaks application --> Keyboard and Mouse --> Additional Layout options --> Alt/Win behavior --> Select Control is mapped to Win keys and the usual Ctrl Keys
如果完成了步骤4,则跳过此步骤。此步骤会将Windows键“行为”交换为Ctrl,反之亦然。寻找Tweaks application --> Keyboard and Mouse --> Additional Layout options --> Ctrl Position --> Select Swap Left Win with Left Ctrl
我还想从macOS中获得的另一件事是能够使用CMD + Tab(在本例中为Windows + Tab)切换窗口。为此,请转到Settings --> Keyboard --> Look for Switch Windows under navigation section --> Double Click it and press Windows+Tab when pop up appears


评论


按照与步骤6相同的步骤,可以在“键盘”设置中查找“启动器”>“搜索”,然后将其映射到WINDOWS + SPACE以模仿Spotlight。

–伊恩·麦克法兰(Ian MacFarlane)
20 Dec 1 '20 at 20:20

#5 楼

为了扩展cscarney的AutoKey提示,我正在开发自己的AutoKey配置,以在我的点文件存储库中的Ubuntu(类似于OS X的<cmd>+c<cmd>+v,... Emacs风格的<ctrl>+f<ctrl>+b等)中实现所有这些。 >
我不使用基本短语(当前窗口过滤功能已被破坏),但使用Python脚本来禁用Emacs,Eclipse,Vim,gnome-terminal等应用程序中的AutoKey ...不想弄乱现有的快捷方式。

您可以查看底部的README,以获得有关如何进行设置的说明。

评论


该应用程序的链接已断开

– chifliiiii
18-10-30在13:37

@chifliiiii修复了链接,但是请注意,我的点文件中的链接配置很可能已过时,因为多年来我一直没有使用它。

–metakermit
18-10-30在18:55

#6 楼

撞这个!您的小指将感谢我

我所有的肌肉记忆都是基于Mac的,在工作和个人生活中我都使用Mac,但是我碰巧遇到了Dell Latitude E7470,所以我想Linux可以继续使用(因为我的Macbook Pro是2012年推出的,而且非常笨重,我只是不想打扰\ r \ n行尾)。因此,找出如何修改系统以匹配我的肌肉记忆而不是重新学习键盘快捷键一直是一项进展缓慢的工作。

首先,我只是使用“键盘”>“布局”>“选项...”的“ Ctrl映射到Alt; Alt映射到Win”的设置,但这是非常小的事情,不喜欢我的设置直到我经过迎宾员之后才应用。我也很难让〜/ .Xmodmap在启动时运行(本身,作为.xinitrc的一部分,以及作为启动应用程序和/ etc / default /

中的自定义启动命令) m当前运行Ubuntu MATE 19.10(Eoan),并且键盘被识别为pc105

您必须修改下面的脚本(或单个文件,如果您已经对

使〜/ .Xmodmap:

echo '! -*- coding: utf-8 -*-
! keycode  37 = Control_L NoSymbol Control_L
! keycode  64 = Alt_L Meta_L Alt_L Meta_L
! keycode 105 = Control_R NoSymbol Control_R
! keycode 108 = Alt_R Meta_R Alt_R Meta_R
! keycode 133 = Super_L NoSymbol Super_L
! keycode 134 = Super_R NoSymbol Super_R
! keycode 135 = Menu NoSymbol Menu
! keycode 147 = XF86MenuKB NoSymbol XF86MenuKB
! keycode 204 = NoSymbol Alt_L NoSymbol Alt_L
! keycode 206 = NoSymbol Super_L NoSymbol Super_L
!
! keycode 105 = Alt_R Meta_R
clear control
clear mod1
clear mod4
keycode 37 = Super_L
keycode 105 = Super_R
keycode 133 = Alt_L Meta_L
keycode 64 = Control_L
keycode 108 = Control_R
add control = Control_L Control_R
add mod1 = Alt_L Meta_L
add mod4 = Super_L Super_R' > ~/.Xmodmap


make〜/。 xinitrc:

echo 'if [ -s ~/.Xmodmap ]; then
    xmodmap ~/.Xmodmap
fi
xmodmap ~/.Xmodmap' > ~/.xinitrc


为键盘修改X11键盘符号文件(重要的部分是include "altwin(ctrl_alt_win)"之前的// End of modifier mappings.,这是未经修改的/ usr / share / X11 / xkb / symbols / pc文件):

echo 'default  partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {

    key <ESC>  {    [ Escape        ]   };

    // The extra key on many European keyboards:
    key <LSGT> {    [ less, greater, bar, brokenbar ] };

    // The following keys are common to all layouts.
    key <BKSL> {    [ backslash,    bar ]   };
    key <SPCE> {    [    space      ]   };

    include "srvr_ctrl(fkey2vt)"
    include "pc(editing)"
    include "keypad(x11)"

    key <BKSP> {    [ BackSpace, BackSpace  ]   };

    key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
    key <RTRN> {    [ Return        ]   };

    key <CAPS> {    [ Caps_Lock     ]   };
    key <NMLK> {    [ Num_Lock      ]   };

    key <LFSH> {    [ Shift_L       ]   };
    key <LCTL> {    [ Control_L     ]   };
    key <LWIN> {    [ Super_L       ]   };

    key <RTSH> {    [ Shift_R       ]   };
    key <RCTL> {    [ Control_R     ]   };
    key <RWIN> {    [ Super_R       ]   };
    key <MENU> {    [ Menu          ]   };

    // Beginning of modifier mappings.
    modifier_map Shift  { Shift_L, Shift_R };
    modifier_map Lock   { Caps_Lock };
    modifier_map Control{ Control_L, Control_R };
    modifier_map Mod2   { Num_Lock };
    modifier_map Mod4   { Super_L, Super_R };

    // Fake keys for virtual<->real modifiers mapping:
    key <LVL3> {    [ ISO_Level3_Shift  ]   };
    key <MDSW> {    [ Mode_switch       ]   };
    modifier_map Mod5   { <LVL3>, <MDSW> };

    key <ALT>  {    [ NoSymbol, Alt_L   ]   };
    include "altwin(meta_alt)"

    key <META> {    [ NoSymbol, Meta_L  ]   };
    modifier_map Mod1   { <META> };

    key <SUPR> {    [ NoSymbol, Super_L ]   };
    modifier_map Mod4   { <SUPR> };

    key <HYPR> {    [ NoSymbol, Hyper_L ]   };
    modifier_map Mod4   { <HYPR> };
    include "altwin(ctrl_alt_win)"
    // End of modifier mappings.

    key <OUTP> { [ XF86Display ] };
    key <KITG> { [ XF86KbdLightOnOff ] };
    key <KIDN> { [ XF86KbdBrightnessDown ] };
    key <KIUP> { [ XF86KbdBrightnessUp ] };
};

hidden partial alphanumeric_keys
xkb_symbols "editing" {
    key <PRSC> {
    type= "PC_ALT_LEVEL2",
    symbols[Group1]= [ Print, Sys_Req ]
    };
    key <SCLK> {    [  Scroll_Lock      ]   };
    key <PAUS> {
    type= "PC_CONTROL_LEVEL2",
    symbols[Group1]= [ Pause, Break ]
    };
    key  <INS> {    [  Insert       ]   };
    key <HOME> {    [  Home         ]   };
    key <PGUP> {    [  Prior        ]   };
    key <DELE> {    [  Delete       ]   };
    key  <END> {    [  End          ]   };
    key <PGDN> {    [  Next         ]   };

    key   <UP> {    [  Up           ]   };
    key <LEFT> {    [  Left         ]   };
    key <DOWN> {    [  Down         ]   };
    key <RGHT> {    [  Right        ]   };
};' >/usr/share/x11/xkb/symbols/pc


以防万一,如果需要,这是/ usr / share / X11 / xkb / symbols / altwin的相关部分手动添加:

// Ctrl is mapped to the Alt, Alt to the Super, and Win to the Ctrl keys.
partial modifier_keys
xkb_symbols "ctrl_alt_win" {
    key <LALT> { [ Control_L, Control_L  ] };
    key <RALT> { type[Group1] = "TWO_LEVEL",
                 symbols[Group1] = [ Control_R, Control_R ] };
    key <LWIN> { [ Alt_L, Meta_L ] };
    key <RWIN> { [ Alt_R, Meta_R ] };
    key <LCTL> { [ Super_L ] };
    key <RCTL> { [ Super_R ] };
    modifier_map Control { <RALT>, <LALT> };
    modifier_map Mod1 { <LWIN>, <RWIN> };
    modifier_map Mod4 { <LCTL>, <RCTL> };
};


修改/ etc / defaults / keyboard:

q4312078 q

最后,这是我的GNOME和Marco绑定dconf转储:


echo '# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="caps:shift_nocancel,ctrl:alt,alt:win,win:ctrl"

BACKSPACE="guess"' >/etc/default/keyboard

Marco:

[org/gnome/desktop/wm/keybindings]
activate-window-menu=['disabled']
begin-move=['disabled']
close=['<Control>q']
maximize=['<Alt><Super>m']
minimize=['<Control>m']
move-to-corner-ne=['disabled']
move-to-corner-nw=['disabled']
move-to-corner-se=['disabled']
move-to-corner-sw=['disabled']
move-to-side-e=['disabled']
move-to-side-n=['disabled']
move-to-side-s=['disabled']
move-to-side-w=['disabled']
move-to-workspace-1=['<Shift><Super>Home']
move-to-workspace-down=['<Shift><Super>Next']
move-to-workspace-up=['<Shift><Super>Prior']
show-desktop=['<Control>F3']
switch-to-workspace-1=['<Super>Home']
switch-to-workspace-down=['<Super>Next']
switch-to-workspace-up=['<Super>Prior']
switch-windows=['disabled']
switch-windows-backward=['disabled']
toggle-fullscreen=['<Control><Super>f']
toggle-maximized=['<Shift><Control>m']
toggle-shaded=['<Alt><Super>s']
unmaximize=['<Control><Alt>m']


#7 楼

编辑:我在这里描述的简单方法有一些缺点(下面提到,最明显的是粘滞键)。因此,我现在建议检查Kinto,它可以通过主动重新映射键盘来避免此类问题。 SXHKD(简单的X热键守护程序)。
这是我制作的基本~/.config/sxhkd/sxhkdrc配置文件。
高级:我的最新版本更加完善,可以针对不同的应用程序发送不同的击键,但需要外部脚本,并且可能有一些不需要的绑定。
这是一个代码段:
# Reload this config
control + alt + shift + r
  killall -USR1 -u "$USER" sxhkd && echo 'sxhkd config reloaded'

# Cut, copy and paste
alt + x
  xte "keyup x" "keyup Meta_L" "keydown Control_L" "key x" "keyup Control_L" "keydown Meta_L"
alt + c
  xte "keyup c" "keyup Meta_L" "keydown Control_L" "key c" "keyup Control_L" "keydown Meta_L"    
alt + v
  xte "keyup v" "keyup Meta_L" "keydown Control_L" "key v" "keyup Control_L" "keydown Meta_L"

# Open tab, close tab, restore closed tab
alt + t
  xte "keyup t" "keyup Meta_L" "keydown Control_L" "key t" "keyup Control_L" "keydown Meta_L"
alt + w
  xte "keyup w" "keyup Meta_L" "keydown Control_L" "key w" "keyup Control_L" "keydown Meta_L"    
alt + shift + t
  xte "keyup t" "keyup Meta_L" "keydown Control_L" "key t" "keyup Control_L" "keydown Meta_L"

# Move to home/end
alt + Left
  xte "keyup Meta_L" "keyup Left" "key Home" "keydown Meta_L"
alt + Right
  xte "keyup Meta_L" "keyup Right" "key End" "keydown Meta_L"
alt + shift + Left
  xte "keyup Meta_L" "keyup Left" "key Home" "keydown Meta_L"
alt + shift + Right
  xte "keyup Meta_L" "keyup Right" "key End" "keydown Meta_L"

# Move one word
super + Left
  xte "keyup Super_L" "keyup Left" "keydown Control_L" "key Left" "keyup Control_L" "keydown Super_L"
super + Right
  xte "keyup Super_L" "keyup Right" "keydown Control_L" "key Right" "keyup Control_L" "keydown Super_L"
super + shift + Left
  xte "keyup Super_L" "keyup Left" "keydown Control_L" "key Left" "keyup Control_L" "keydown Super_L"
super + shift + Right
  xte "keyup Super_L" "keyup Right" "keydown Control_L" "key Right" "keyup Control_L" "keydown Super_L"

注意:

如您所见,如果我键入了在执行虚拟笔划之前使用原始的修饰键,然后我再次按下它。这意味着用户可以重复其按键操作,而不必再次释放并按下修改键。换句话说,按下Alt-W后,系统会看到Alt键被按下。

注意事项:


这可能是个问题(尤其是速度较慢时如果您在xte命令仍在运行时释放Alt键。您将得到一个“粘性” Alt键,因为xte为您按下了它!


使用这种方法,如果按住该键,触发器将不会重复。 (因此,按住“超级左键”不能移动12个单词。)



评论


过去我曾经使用bbkeys,但可悲的是,这些天来并没有打包它。

– joeytwiddle
19年1月6日在15:02

#8 楼

一旦您知道该怎么做,这将是一件容易的事。


检查您的钥匙的钥匙代码。在终端上运行该程序。
xev</pre>  

在此示例中,终端显示我的k的键代码为“ 45”。就像创建此文件一样:
gedit ~/.Xmodmap</pre>  



其内容应类似于以下示例:
keycode 64 = Alt_L Meta_L Alt_L Meta_L  
keycode 108 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift  

(根据需要更改键码编号-查看步骤“ 1”)
说明:
注意:如果要更改我的k,应使用步骤“ 1”中显示的“ keycode 45”。 />注销并重新登录或重新启动或运行以下命令:
xmodmap ~/.Xmodmap</pre>  

希望您喜欢;-)



#9 楼

与其他人的出色工作类似并基于其他人的出色工作,我使用Autokey快捷方式和获得此设置的说明进行了回购:

https://github.com/bliles/autokey-macos

#10 楼

首先
安装Guest Additions CD(Devices->Insert Guest Additions CD image)。

激活剪贴板共享
然后重启后,在Virtualbox中转到Machine->Settings->General->Advanced并设置Shared Clipboard: Bidrectional

更改VirtualBox主机密钥
Vitualbox/Preferences/Input/Virtual Machine/Host Key Combination
选择其他,然后按

键映射:
对于我来说,为cmd/ctrl映射添加英文(Macintosh)键盘似乎是最舒适的解决方法:)转到Ubuntu Settings->Text Entry
(我猜在较旧的版本中,可能在键盘布局设置中)
Input sources to use:击中加(+) VirtualBox 5.0.4中的Ubuntu 14.04.3 LTS 64位

#11 楼

我有一个苹果铝键盘。对@cscarney的建议进行了微小的修改(使用Super_L而不是Meta_L)使其在Ubuntu 18.04中工作。

Command: xte "keyup Super_L" "keyup c" "keydown Control_L" "key c" "keyup Control_L"
Short cut: Super+C

Command: xte "keyup Super_L" "keyup v" "keydown Control_L" "key v" "keyup Control_L"
Short cut: Super+V


#12 楼

您可能想看看Kinto,这是一个相当全面的解决方案,具有完整的GitHub存储库。


“为专业mac用户设计的更好的Linux和Windows键盘布局”


它避免了我在sxhkd上遇到的一些问题,因为它不会重新解释击键,而是使用xmodmap提前重新映射它们。

具体地说,它会监视您的X会话以查看窗口焦点何时更改,然后迅速切换到该应用程序的适当键绑定。

#13 楼

我没有Ubuntu(Mac在这里,Ubu在办公室),但是我在那儿使用Mac键盘,出于与您相同的原因,我想这样做。

首先要确保您的键盘已安装为Mac键盘。我认为您可以在system-> preferences-> keyboard中更改此设置。当您在那里时,其中一个选项卡将带您进入键映射页面,您可以在其中设置cmd密钥的工作方式。

就像我说的,我记不清了-我可以指出到这里的屏幕上的位,但是那不起作用,因为我不在。

评论


系统->首选项->键盘->布局->选项

–狮子座
2010-10-29 8:27

嗨,狮子座...虽然我没有在Ubuntu上使用Mac键盘...但是我在使用标准PC键盘,即“通用105键(intl)PC”确实尝试将“键盘模型”切换到Vendor Apple /对Apple型号进行建模,但似乎没有任何区别。...

–布莱德公园
2010-10-29 12:11



而且出于价值,我还是在Macmini上使用了完全相同的PC键盘,因为我是二手购买的,它没有配备Mac键盘。再次感谢。

–布莱德公园
2010-10-29 12:17

#14 楼

自动键确实为我工作。现在,win + c(v,x,a)可以像我期望的那样在我的系统上工作。

1。安装自动键

sudo apt install autokey-gtk

2。配置自动键


添加根文件夹,将其命名为MacKeys之类的名称
您将在其中为ctrl-c,v,x和a创建四个脚本
分配给每个脚本热键super-c,super-v等
用下面的代码填充脚本(替换其他组合的字母c)

winClass = window.get_active_class() keys = "<ctrl>+c" if winClass == "gnome-terminal-server.Gnome-terminal": keys = "<ctrl>+<shift>+c"; keyboard.send_keys(keys)

4a 。对于CmdZ,CmdA或CmdX可使用keyboard.send_keys("<ctrl>+x")

3之类的简单脚本。将/ usr / bin / autokey-gtk添加到启动应用程序

4。在键盘设置中禁用win-A

通常,win-a会切换到概述。

5。可选,完全阻止win切换总览

您可能希望将其删除。安装gnome-tweak-tool,转到键盘,然后重新绑定从桌面切换到概述。那对我的gnome ubuntu 16.04有用。