CtrlとAltを入れ替えるためにautohotkeyを使用しています
LAlt::LCtrl
LCtrl::LAlt
これはうまく機能しますが、それに加えて、Alt + TabとCtrl + Tabを元の場所に保持したいと思います。
私はすでに多くの異なるコードスニペットを試しましたが、これまでのところ実際にうまく機能したものはありません。
完全に機能するソリューションに最も近いのは、Alt + Tabのみで、Shift + Alt + Tabはありません https://stackoverflow.com/questions/18454895/using-auto-hotkey-to -swap-ctrl-alt-and-implement-ctrl-tab
了解しました。動作します。
それは正しい方向でしたが、コードにはいくつかの問題がありました。特に、LShiftがfalseであるかどうかはチェックされていなかったため、最初のステートメントは常にtrueでした。
Ctrl + Tabのサポートも追加しました。
*tab::
{
if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P") = false) {
Send {LControl up}{LAlt down}{tab}
KeyWait, tab
} else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P")) {
Send {LControl up}{LShift down}{LAlt down}{tab}
KeyWait, tab
} else if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P") = false) {
Send {LAlt up}{LCtrl down}{tab}
KeyWait, tab
} else if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P")) {
Send {LAlt up}{LShift down}{LCtrl down}{tab}
KeyWait, tab
} else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P") = false) {
Send {LWin down}{tab}
KeyWait, tab
} else if (GetKeyState("LWin", "P") AND GetKeyState("LShift", "P")) {
Send {LShift down}{LWin down}{tab}
KeyWait, tab
} else {
send {tab}
}
return
}
~LAlt Up::
{
send {LAlt up}
return
}
~LCtrl Up::
{
send {LCtrl up}
return
}
LAlt::LCtrl
LCtrl::LAlt
私はあなたがリンクした回答で提供されたコードの例からのみ作業しているので、以下のコードをまとめました。 「Shift + Alt + Tab」でどのアクションが実行されるかわかりません。システムで応答がないため、これが目的の効果を発揮するかどうかをテストする必要があります。
*tab::
{ if (GetKeyState("LAlt", "P"))
{ Send {LControl up}{Alt down}{tab}
KeyWait, tab
}else if (GetKeyState("LAlt", "P")) AND (GetKeyState("LShift", "P"))
{ Send {LControl up}{LShift down}{Alt down}{tab}
KeyWait, tab
}else
{ send {tab}
}
return
}
~LAlt Up::
{ send {lAlt up}
return
}
LAlt::LCtrl
LCtrl::LAlt
私にとって、@ herkulanoバージョンはWindows10では信頼できません。時々それは異なるキーを実行し、私は働くことができません。
代わりに、C-M--
のような組み合わせでEmacsでも機能するこれを使用します。
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
; The .ahk text file needed to be saved with UTF8-BOM encoding rather than UTF8
; https://stackoverflow.com/questions/15635635/how-do-i-use-unicode-in-autohotkey
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
global sendLAltUpOnLCtrlUp := 0
;; https://superuser.com/questions/984343/remap-ctrl-to-alt-and-keep-alttab-and-ctrltab/1332713#1332713
;; https://autohotkey.com/board/topic/96465-switch-alt-and-ctrl-retain-alt-tab/
;; Let LCtrl sends LWin, LWin sends LAlt and LAlt sends LCtrl using SharpKeys and then
*tab::
{
if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P") = false) {
sendLAltUpOnLCtrlUp := 1
Send {LCtrl up}{LAlt down}{tab}
KeyWait, tab
} else
if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P")) {
sendLAltUpOnLCtrlUp := 1
Send {LCtrl up}{LShift down}{LAlt down}{tab}
KeyWait, tab
}
else {
send {tab}
}
return
}
~LCtrl up::
{
if(sendLAltUpOnLCtrlUp == 1) {
sendLAltUpOnLCtrlUp := 0
send {LAlt up}
} else {
send {LCtrl up}
}
return
}
~LAlt up::
{
send {LAlt up}
return
}
;; Example how to insert polish diactrics with `RAlt + Shift + A` etc.
;; https://pl.m.wikipedia.org/wiki/Alfabet_polski
>!+a::Send {U+0104}
>!a::Send {U+0105}
これを別の.ahk
に入れてください:
SendMode Input
*LAlt::
send {LCtrl down}
Keywait, Lalt
send {LCtrl up}
return
*LCtrl::
send {Lalt down}
Keywait, LCtrl
send {Lalt up}
return
そしてこれは別の.ahk
で:
SendMode Input
LAlt & Tab::
send {Lalt down}{Tab}
return
+esc::Exitapp
次に、両方のスクリプトを実行します(最初のスクリプトを最初に実行します)。
@rofrolのバージョンは本当に気に入りましたが、Ctrl(+ Shift)+ Tabが押されたときにAlt(+ Shift)+ Tabの送信のみを処理しました。
Alt(+ Shift)+ Tabが押されたときの逆のCtrl(+ Shift)+ Tabも必要でした。
さらに、コーディング中に常に使用する単純なShift + Tab機能が壊れたため、それを修正するための条件を追加しました。
global sendLAltUpOnLCtrlUp := 0
global sendLCtrlUpOnLAltUp := 0
*tab::
{
if (GetKeyState("LCtrl", "P") AND GetKeyState("LShift", "P"))
{
sendLAltUpOnLCtrlUp := 1
Send {LCtrl up}{LShift down}{LAlt down}{tab}
KeyWait, tab
}
else if (GetKeyState("LCtrl", "P"))
{
sendLAltUpOnLCtrlUp := 1
Send {LCtrl up}{LAlt down}{tab}
KeyWait, tab
}
else if (GetKeyState("LAlt", "P") AND GetKeyState("LShift", "P"))
{
sendLCtrlUpOnLAltUp := 1
Send {LAlt up}{LShift down}{LCtrl down}{tab}
KeyWait, tab
}
else if (GetKeyState("LAlt", "P"))
{
sendLCtrlUpOnLAltUp := 1
Send {LAlt up}{LCtrl down}{tab}
KeyWait, tab
}
else if (GetKeyState("LShift", "P"))
{
Send {LShift down}{tab}
KeyWait, tab
}
else
{
send {tab}
}
return
}
~LCtrl up::
{
if(sendLAltUpOnLCtrlUp == 1)
{
sendLAltUpOnLCtrlUp := 0
send {LAlt up}
}
else
{
send {LCtrl up}
}
return
}
~LAlt up::
{
if(sendLCtrlUpOnLAltUp == 1)
{
sendLCtrlUpOnLAltUp := 0
send {LCtrl up}
}
else
{
send {LAlt up}
}
return
}