6

Я хочу переключать клавиши Ctrl и Alt в Windows XP. Я создал скрипт AutoHotKey, который содержит следующее:

LAlt::LCtrl
RAlt::RCtrl

LCtrl::LAlt
RCtrl::RAlt

Это работает, но единственная проблема заключается в том, что переключатель Alt-Tab застревает. Когда я отпускаю Alt-Tab, переключатель окна остается активным, пока я не нажму другую клавишу или не нажму кнопку мыши.

Кто-нибудь знает, как решить эту проблему?

4 ответа4

4

Я хотел бы переключить Alt и Ctrl, потому что я в настоящее время пользователь Mac на Windows (с клавиатурой ПК). Все горячие клавиши на Mac: Cmd+n, Cmd+w ... -> PC: Ctrl+n, Ctrl+w и Cmd получили то же место, что и клавиша Alt.

Я нашел не идеальное решение:

Отобразите все буквы так:

LAlt & a::Send {LCtrl Down}{a}{LCtrl Up}
...
LAlt & z::Send {LCtrl Down}{z}{LCtrl Up}
LCtrl & a::Send {LAlt Down}{a}{LAlt Up}
...
LCtrl & z::Send {LAlt Down}{z}{LAlt Up}

И вы будете держать Alt+Tab и AltGr функциональными

Это моя полная реализация (не полная): http://www.pastie.org/1660132

2

Я искал то же самое и нашел то, что работает без плагинов или других программ. Вы можете сделать это с помощью реестра, как описано здесь.

Или просто создайте 2 reg файла. Сначала файл для переключения клавиши Ctrl на Alt.

switch_ctrl-to-alt.reg

Это добавляет необходимый ключ в реестр.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1D,00,38,00,38,00,1D,00,00,00,00,00

А затем файл для переключения Alt обратно на клавишу Ctrl.

switch_alt-to-ctrl.reg

Это удаляет необходимый ключ из реестра.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=-

После двойного щелчка по reg-файлу, вам нужно перезагрузить компьютер, и все в порядке.

1

Если вы пользователь Mac (или даже если нет), возможно, вы думаете, что хотите поменять местами Control и Alt, но, возможно, все, что вам на самом деле нужно, это поменять местами.

От Alt-A до Alt-Z и несколько дополнительных клавиш (стрелки, [и]).

Попробуйте, в целях тестирования он активен только в Chrome.

#IfWinActive ahk_exe chrome.exe
![::Send !{Left}
!]::Send !{Right}
!a::Send ^a
!b::Send ^b
!c::Send ^c
!d::Send ^d
!e::Send ^e
!f::Send ^f
!g::Send ^g
!h::Send ^h
!i::Send ^i
!j::Send ^j
!k::Send ^k
!l::Send ^l
!m::Send ^m
!n::Send ^n
!o::Send ^o
!p::Send ^p
!q::Send ^q
!r::Send ^r
!s::Send ^s
!t::Send ^t
!u::Send ^u
!v::Send ^v
!w::Send ^w
!x::Send ^x
!y::Send ^y
!z::Send ^z

!Right::
Send {End}
return

*!Right:: ; This handles Shift-Right
Send {Blind}{LAlt Up}{End}
return

!Left::
Send {Home}
return

*!Left:: ; This handles Shift-Left
Send {Blind}{Alt Up}{Home}
return

Вы должны быть в состоянии основываться на этом. Это самые частые ярлыки на Mac, которые меня привлекают.

1

Это работает для меня:

; First, swap LAlt and Ctrl
LAlt::Ctrl

; This reverts the Alt+Tab behavior
^Tab::
    Send, {LAlt Down}{Tab}
    ReleaseLAlt(10000)

; The purpose of this function is to release the LAlt key
; Without this, the LAlt key will be stuck
ReleaseLAlt(timeout := "")
{
    startTime := A_Tickcount

    while (isaKeyPhysicallyDown("LAlt"))
    {
        if (timeout && A_Tickcount - startTime >= timeout)
            Send, {LAlt Up} ; Took too long

        sleep, 50
    }

    Send, {LAlt Up}
} 

isaKeyPhysicallyDown(Keys)
{
  if isobject(Keys)
  {
    for Index, Key in Keys
      if getkeystate(Key, "P")
        return key  
  }
  else if getkeystate(Keys, "P")
    return Keys ;keys!
  return 0
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .