如何使键盘像OSX System Wide一样工作?


111

我不断在两台计算机之间来回切换:

  • OSX雪豹
  • 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
  • Super+W -> Ctrl+W

我知道我可以通过多种方式针对vim和Firefox进行此操作,而且我敢肯定对于大多数应用程序来说……但是我宁愿只做一次并使其在整个系统范围内起作用!

我使用的是标准PC键盘,即Ubuntu上的“通用105键(intl)PC”。我还在Mac mini上使用相同的键盘。


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

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

解决方案不能在基本OS上使用。”
Paschalis

Answers:


38

如果安装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)的完整路径,但是该路径也不起作用...您可以在系统上尝试一下,看看是否可行吗?谢谢!
布莱德·帕克斯

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

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

1
嘿!谢谢@cscarney!您的AutoKey“替代解决方案”完全有效!感谢您为此付出的不懈努力!
布拉德·帕克斯

1
解决方案不适用于Ubuntu 18.04
JZ。

17

对于Ubuntu 14或更高版本,您可以执行以下操作:

sudo apt-get install gnome-tweak-tool

然后,查找“调整工具”>“键入”>“ Alt / Win”键行为

并检查:Ctrl映射到Win键(和通常的Ctrl键)


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

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

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

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

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

13

有一种映射CtrlWin/ Super键的方法:

  1. 转到系统->首选项->键盘

  2. 打开标签版式

  3. 单击选项...

  4. 打开Alt/ Win关键行为

  5. 并选择“ 控件映射到赢键”

而对于控制台有一个论坛帖子怎么办这里

有关更多挖掘的信息,请在此处查看常规Linux键盘“ HOWTO” 。

问候


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

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

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

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

1
现在处于gnome调整状态,“键盘和鼠标”
Yrogirg

8

为了扩大cscarney的自动密钥提示,我发展我的自动密钥配置实现这一切在Ubuntu(OS X样<cmd>+c<cmd>+v... Emacs风格<ctrl>+f<ctrl>+b...)在我的dotfile回购

我不使用基本短语(当前窗口过滤功能已损坏),但是使用Python脚本来禁用诸如Emacs,Eclipse,Vim,gnome-terminal等应用程序中的AutoKey ...现有的快捷方式。

您可以查看README底部的,以获取有关设置方法的说明。


应用程序的链接已断开
chifliiiii

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

5

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

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

    sudo apt-get install gnome-tweaks

  2. 通过按左下角的“ 显示应用程序”来打开应用程序列表。

  3. 请注意,这只会将WINDOWS键的行为更改为CMD键,并保持CTRL键与以前相同(您将拥有2个CTRL键)。如果您不喜欢,请跳过步骤4并转到步骤5

  4. 寻找Tweaks application --> Keyboard and Mouse --> Additional Layout options --> Alt/Win behavior --> Select Control is mapped to Win keys and the usual Ctrl Keys

  5. 如果完成了步骤4,请跳过此步骤。此步骤会将Windows键Behavior交换为Ctrl,反之亦然。寻找Tweaks application --> Keyboard and Mouse --> Additional Layout options --> Ctrl Position --> Select Swap Left Win with Left Ctrl

  6. 我从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


5

我想要一个可以在任何桌面环境/窗口管理器中使用的解决方案,因此我将cscarney的建议结合使用了xautomation和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

4

一旦您知道如何做,这将是一件容易的事。

1)检查您的钥匙的密码。在终端上运行该程序。

Xev


在此示例中,终端显示my的键码为k“ 45”。

2)根据需要创建它们,然后更改它们:

gedit〜/ .Xmodmap

它的内容应类似于以下示例:

键代码64 = Alt_L Meta_L Alt_L Meta_L
键代码108 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift

(根据需要更改键码编号-查看步骤“ 1”)

说明:(提示
:如果要更改我的代码k,则应使用“键代码45”,如步骤“ 1”所示)。

4)注销并重新登录或重新启动或运行以下命令:

xmodmap〜/ .Xmodmap

希望你喜欢 ;-)



1

首先
安装来宾添加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:命中加号(+)
添加English (Macintosh)

我在VirtualBox 5.0.4中使用Ubuntu 14.04.3 LTS 64bit


1

Kinto是一个简单得多的解决方案。我已经为此工作了3年。.终于觉得我可以回馈一些东西,因为它的效果很好,与我最近的2次尝试不同。它适用于基于x11和基于systemd的发行版,但是,尽管增强了安全性,使它难以使用,但一旦我找到了实现它的好方法,该概念便会延续到Wayland。

1)要点(对于那些只想了解前提或实施自己的替代解决方案的人,不包括边缘情况)。

https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb

2)使用systemd,bash和xprop的完整安装程序。(像chromebooks一样的边缘保护套很难支撑,但是我很喜欢我,所以每个人都可以受益!)

https://github.com/rbreaves/kinto

Kinto(日语为翻页)的原因是这样的-即使您使用其他方法完善了每个普通GUI应用程序的键重映射,也不会像在Linux上那样轻易获得相同的Terminal体验。在Mac上。那是不幸的-因为Macs给我们的开发人员提供了一个键盘图,该键盘对于终端应用程序来说效果很好。我所做的事情是,通过setxkbmap和使用中的活动应用程序将键盘映射更改为2个布局选项中的1个,这导致您必须创建最少的特定于任何特定应用程序的附加快捷键。

本质上,使用此解决方案,您无需为如何正确创建新的快捷键或尝试避免终端应用程序与其他GUI应用程序中的快捷方式冲突而斗争。您只需要充分利用这两个词的优势,它就可以尽可能无缝地工作-除了包括用于各种终端和流行的文本编辑器的默认快捷方式配置文件之外,我可能会在后面提供这些文件。甚至像Sublime这样的文本编辑器也不会在每个快捷方式上简单地用Ctrl换掉Cmd键,但是在我所说的时间中,它可以正确对齐约95%或更多。

在谈论Wayland时,我确实有一个概念证明,说明如何使用现有的引入应用程序名称的小部件在KDE Plasma 5上使此keymap keyswap技巧起作用。如果有人有更好的解决方案,那么我会不知所措,尤其是如果它也可以在x11上运行。Xprop在x11上完全可以满足要求,但是在Wayland上显然没有用。

https://github.com/rbreaves/applet-window-title/commit/ff17e694579a52a9848d6bea87b2d11f22033718


0

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

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

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

如果您明天仍然受困,我会再看一次。


系统->首选项
Leo

嗨,狮子座...虽然我没有在Ubuntu上使用Mac键盘...我正在使用标准的PC键盘,即“通用105键(intl)PC”确实尝试将“键盘模型”切换到Vendor Apple /模型苹果,但似乎没有什么区别。...我也尝试了供应商苹果/模型Macbook,而且似乎也没有任何改变...
布拉德·帕克斯

而且它的价值是,我在Macmini上也使用了完全相同的PC键盘,因为我是二手购买的,它没有配备Mac键盘。再次感谢。
布拉德·帕克斯

0

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

1.安装自动键

sudo apt install autokey-gtk

2.配置自动键

  1. 添加根文件夹,将其命名为MacKeys之类的名称
  2. 您将在其中为ctrl-c,v,x和a创建4个脚本
  3. 分配给每个脚本热键super-c,super-v等
  4. 用下面的代码填充脚本(将字母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.可选,完全阻止双赢切换总览

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.