Intro
为此,您有两种方法:
- 使用你自己的代码
- 使用第三方软件
在这个答案中,我介绍了最有效和最简单的方法,因此对于某些操作系统来说,编写自己的代码是简单有效的,而在其他操作系统中,它并不是真正有效,需要艰苦的工作,没有成就,但浪费时间
Windows 用户 - 方法 1:使用 Microsoft PowerToys
- 安装 powertoys 从here https://learn.microsoft.com/en-us/windows/powertoys/install
- 打开它并从侧边栏菜单转到“键盘管理器”
- 在“快捷方式”部分下单击“重新映射快捷方式”
- 对于“物理快捷方式”部分,您应该添加“Alt(左)”和“L”,对于“映射到”部分,您应该输入“右”
- 对于您想要的其他键重新映射,分别再次执行步骤 4
- 点击“确定”
就是这样,你准备好了
Windows 用户 - 方法 2:使用自动热键
在此方法中,您将使用:
-
alt+I instead of ↑
-
alt+K instead of ↓
-
alt+J instead of ←
-
alt+L instead of →
为了使用此功能,您需要执行以下步骤:
- 下载并安装自动热键 https://autohotkey.com
- 右键单击桌面区域,然后转到新建并创建一个新的“记事本”文件
- 打开空记事本文件并将下面的代码复制/粘贴到其中
- 将记事本文件重命名为您想要的任何内容,但使用 *.ahk 格式
- 单击您的文件来运行脚本
现在您可以享受并且再也不用使用箭头键了......
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
; AHK Command ; key = Effect (Description)
; ALT Keypress Implied for all below
!i::Send {UP} ; i UP (Cursor up line)
!k::Send {DOWN} ; k DOWN (Cursor down line)
!j::Send {LEFT} ; j LEFT (Cursor left one character)
!l::Send {RIGHT} ; l RIGHT (Cursor right one character)
!h::Send {HOME} ; h ALT + RIGHT (Cursor to beginning of line)
!;::Send {END} ; ; ALT + LEFT (Cursor to end of line)
!u::Send ^{HOME} ; h SHIFT + HOME (Cursor to beginning of document)
!o::Send ^{END} ; o SHIFT + END (Cursor to end of document)
; CTRL + ALT Keypress Implied for all below
!^j::Send ^{LEFT} ; j CTRL + LEFT (Cursor left per word)
!^l::Send ^{RIGHT} ; l CTRL + RIGHT (Cursor right per word)
; SHIFT + ALT Keypress Implied for all below
!+i::Send +{UP} ; i SHIFT + UP (Highlight per line)
!+k::Send +{DOWN} ; k SHIFT + DOWN (Highlight per line)
!+j::Send +{LEFT} ; j SHIFT + LEFT (Highlight per character)
!+l::Send +{RIGHT} ; l SHIFT + RIGHT (Highlight per character)
!+h::Send +{HOME} ; h SHIFT + ALT + LEFT (Highlight to beginning of line)
!+;::Send +{END} ; ; SHIFT + ALT + RIGHT (Hightlight to end of line)
!+u::Send ^+{HOME} ; u SHIFT + CTRL + HOME (Highlight to beggininng of document)
!+o::Send ^+{END} ; o SHIFT + CTRL + END (Hightlight to end of document)
; SHIFT + CTRL + ALT Keypress Implied for all below
!+^j::Send +^{LEFT} ; j SHIFT + CTRL + LEFT (Highlight per word)
!+^l::Send +^{RIGHT} ; l SHIFT + CTRL + RIGHT (Hightlight per word)
!+^i::Send +!{UP} ; i SHIFT + ALT + UP (Multiply cursor up)
!+^k::Send +!{DOWN} ; k SHIFT + ALT + DOWN (Multiply cursor down)
; CTRL + SHIFT Keypress Implied for all below
+^i::Send +^{UP}
+^k::Send +^{DOWN}
重要笔记
要使用您制作的自动热键脚本,每次打开计算机时,您可以将脚本复制到启动文件夹中,而不是每次都单击脚本。
如何找到启动文件夹?
-
win+R
- type: 外壳:启动
- 将您的脚本复制到该文件夹中
MacOS用户
在此方法中,您将使用
-
option+I instead of ↑
-
option+K instead of ↓
-
option+J instead of ←
-
option+L instead of →
Use 锤勺 https://www.hammerspoon.org/:是一个用于多种用途的强大工具(不仅仅是分配键绑定,例如您可以将它用于 Windows sanping 或...),我认为这是任何 MacOS 中必须具备的工具之一
由于hammerspoon的文档非常简单,我只是将代码放在这里,您可以从中安装和配置hammerspoonHammerspoon 入门 https://www.hammerspoon.org/go/
hs.hotkey.bind({"alt"}, "I", function()
hs.eventtap.keyStroke({}, "up")
end)
hs.hotkey.bind({"alt"}, "K", function()
hs.eventtap.keyStroke({}, "down")
end)
hs.hotkey.bind({"alt"}, "J", function()
hs.eventtap.keyStroke({}, "left")
end)
hs.hotkey.bind({"alt"}, "L", function()
hs.eventtap.keyStroke({}, "right")
end)
重要笔记
如果您认为hammerspoon速度很慢或者不像您想要的那样天才,那么另一种选择是卡拉宾纳 https://karabiner-elements.pqrs.org/
基于 Debian 的 Linux 用户(不是 Ubuntu;请参阅重要说明):
在此方法中,您将使用:
-
CapsLock+I instead of ↑
-
CapsLock+K instead of ↓
-
CapsLock+J instead of ←
-
CapsLock+L instead of →
and
-
alt_gr instead of CapsLock
如何?出色地:
-
打开终端,将键盘布局写入文件(我将其命名为 modmap),然后打开该文件并编辑它,如下所示:
xmodmap -pke > modmap
gedit modmap
-
修改keyCode 108(alt_Gr/ISO_Level3_Shift)值,所以修改后应该是这样的:
keycode 108 = Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock Caps_Lock
-
修改keyCode 66(CapsLock)值,所以修改后应该是这样的:
keycode 66 = Mode_switch Mode_switch Mode_switch Mode_switch Mode_switch Mode_switch
-
修改keyCode 31(i)的值,所以修改后应该是这样的:
keycode 31 = i I Up NoSymbol NoSymbol NoSymbol NoSymbol NoSymbol
-
修改keyCode 44(j)值,所以修改后应该是这样的:
keycode 44 = j J Left NoSymbol NoSymbol NoSymbol NoSymbol NoSymbol
-
修改keyCode 45(k)值,所以修改后应该是这样的:
keycode 45 = k K Down NoSymbol NoSymbol NoSymbol NoSymbol NoSymbol
-
修改keyCode 46(l)值,所以修改后应该是这样的:
keycode 46 = l L Right NoSymbol NoSymbol NoSymbol NoSymbol NoSymbol
重要笔记
-
xmodmap 在 Ubuntu 上不再使用/支持(因为它对许多用户来说不方便,我认为他们从 2013 年开始停止使用 xmodmap),但由于这是一个关于非常快速编码和使用计算机以及编码的专业问题,我明白许多专业人士使用 Debian 或他们自己的基于 Debian 的 Linux(不是 Ubuntu),他们总是更喜欢原生解决方案而不是插件或......
无论如何,如果您使用 Ubuntu,您可以使用 xkb 或 gnome 调整工具,您可以在 GUI 中调整键盘映射
-
如果您的键盘上有多种语言/输入,则无法轻松使用此解决方案,但您可以按如下方式使用它:
-
CapsLock+shift+i instead of ↑
-
CapsLock+shift+k instead of ↓
-
CapsLock+shift+j instead of ←
-
CapsLock+shift+l instead of →
例如,如果您还想拥有波斯语语言输入您可以执行上面的步骤 1,2,3,然后更改其他步骤,如下所示:
keycode 31 = i I Arabic_heh Up 5 6 7 8
keycode 44 = j J Arabic_teh Left 5 6 7 8
keycode 45 = k K Arabic_noon Down 5 6 7 8
keycode 46 = l L Arabic_meem Right 5 6 7 8
请注意,您不应在终端中测试上述键盘快捷键
-
由于我们正在使用xmodmap
工具(因为它是本机的,与 xkb 不同),您只能更改已使用 AltGr 的键码的 AltGr 键符号。所以我们用CapsLock来改变它来克服这个问题,因为CapsLock对于手指来说更舒服,发现它是一个非常可以接受的解决方案。
-
在大多数情况下,alt_Gr 是键盘上正确的 alt 键
进一步阅读有关 xmodmap 的内容在 ArchWiki 上 https://wiki.archlinux.org/index.php/Xmodmap#Keymap_table
如果有人了解 BSD OS(或基于 BSD)中的这个答案,如果他/她将其添加到我的答案中,我将不胜感激