Переключити Ctrl і Alt за допомогою AutoHotKey, не псуючи комутатор Alt-Tab?


7

Я хочу переключити клавіші Ctrl і Alt в Windows XP. Я створив сценарій AutoHotKey, який містить таке:

LAlt::LCtrl
RAlt::RCtrl

LCtrl::LAlt
RCtrl::RAlt

Це працює, але єдина проблема полягає в тому, що перемикач Alt-Tab застрягає. Коли я відпускаю Alt-Tab, перемикач вікон залишається до тих пір, поки я не натисну іншу клавішу або натисніть мишу.

Хтось знає, як виправити цю проблему?

Відповіді:


4

Я хотів би переключити Alt і Ctrl, тому що зараз я користувач Mac у Windows (з клавіатурою ПК). Усі гарячі клавіші на Mac: Cmd + n, Cmd + w ... -> ПК: 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


Чи є у вас проблеми з цим причиною пропуску ключів для Alt? Це напевно відбувається у мене.
Sophistifunk

2

Я шукав те саме, і знайшов щось, що працює без плагінів чи інших програм. Це можна зробити за допомогою реєстру, як описано тут .

Крім того, просто створіть 2 файли рег. Спочатку файл для переключення клавіші 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-файл вам потрібно перезапустити, і ви добре.


Це працювало так само, як superuser.com/a/1202601/222702 , перемикаючи логічні клавіші Ctrl та Alt між їхніми фізичними клавішами, але це не підтримує використання фізичної клавіші Alt для перемикання Alt-Tab (саме це я думаю, що ОП і я шукаю). +1 для включення файлу видалення ключа.
Габе

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. Перепрограмування Alt + Backspace до Ctrl + Backspace (те, що користувачі Mac постійно роблять). 2. Виявляючи якийсь спосіб зіставити Alt + q до Alt + F4, хоча я не впевнений, як це зробити, і продовжувати зберігати іншу функціональність відновлення Alt Q до Ctrl Q.
doctorw0rm

Ну, я був користувачем Mac на платформі hackintosh , а це означає, що я ніколи не припиняв використовувати клавіатуру ПК. Як результат, ми (власники ПК) зазвичай змінюємо параметри «Опція» та «Команда» в налаштуваннях клавіатури OS X. Це означає, що коли ми повертаємося до вікон, наш командний ключ - це наш ключ Alt, а Command-Tab, природно, такий же, як Alt-Tab. Однак я не можу зрозуміти, чому люди продовжують говорити про перезавантаження клавіші Control. Просто не так багато ярликів OS X, які включають клавішу управління. BTW, перезапис Cmd-Q (Alt-Q для мене), щоб WinClose, Aвиправити це для вас.
Орвелофіл

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
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.