4

Я только что понял, что Microsoft Keyboard Layout Creator больше не работает под Windows 8. Я успешно использовал его в Windows 7 для создания пользовательской раскладки клавиатуры поверх раскладки в США, где я дополнительно добавил AltGr+a, AltGr+o, AltGr+u для соответствующих умных чисел ä, ö и ü.

Теперь я хочу сделать то же самое в Windows 8, с той дополнительной сложностью, что мой новый ноутбук не имеет клавиши AltGr, а только ONE Crtl и ONE Alt, и соответствующие комбинации с a, o и u в значительной степени взяты. Поэтому я подумал, могу ли я использовать AutoHotKey для создания горячих клавиш для Space+a, Space+o и Space+u. Вот как далеко я получил:

~space & a::
Send ä

Этот скрипт отобразит Space+a на правильный умлаут, и амперсанд позаботится о том, чтобы вы все еще могли использовать клавишу пробела, когда эта горячая клавиша не используется. Тем не менее, это всегда будет вставлять пробел перед 'ä'. Кроме того, быстрая последовательность клавиш Space и a также приведет к умлауту, когда я на самом деле хотел набрать «a».

Я ищу решение, которое будет вставлять одиночные символы без пробелов при нажатии соответствующей горячей клавиши, и это никак не повлияет на результат, то есть последовательное (в отличие от одновременного) нажатие пробела и {a, o, u} не буду ничего делать. Кроме того, он не должен связываться с общесистемными горячими клавишами, такими как Windows+Space, для переключения языка ввода. Если это можно сделать без AutoHotKey , я с радостью приму это решение.

4 ответа4

4

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

:?C*:``a::à
:?C*:``i::ì
:?C*:``e::è
:?C*:``o::ò
:?C*:``u::ù
:?C*:``A::À
:?C*:``I::Ì
:?C*:``E::È
:?C*:``O::Ò
:?C*:``U::Ù

:?C*:^ :: ; Turn ^{Space} into neutral ^, else ^ will be used in next vowel.
    Send, {^}{Space}{BackSpace}
Return

:?C*:^a::â
:?C*:^i::î
:?C*:^e::ê
:?C*:^o::ô
:?C*:^u::û
:?C*:^A::Â
:?C*:^I::Î
:?C*:^E::Ê
:?C*:^O::Ô
:?C*:^U::Û


:?C*:`" :: ; Turn "{Space} into neutral ", else " will be used in next vowel.
    Send, +{'}{Space}{BackSpace}
Return

:?C*:`"a::ä
:?C*:`"i::ï
:?C*:`"e::ë
:?C*:`"o::ö
:?C*:`"u::ü
:?C*:`"A::Ä
:?C*:`"I::Ï
:?C*:`"E::Ë
:?C*:`"O::Ö
:?C*:`"U::Ü

:?C*:' :: ; Turn '{Space} into neutral ', else ' will be used in next vowel.
    Send, {'}{Space}{BackSpace}
Return

:?C*:`'a::á
:?C*:`'i::í
:?C*:`'e::é
:?C*:`'o::ó
:?C*:`'u::ú
:?C*:`'A::Á
:?C*:`'I::Í
:?C*:`'E::É
:?C*:`'O::Ó
:?C*:`'U::Ú

:?C*:`'c::ç
:?C*:`'C::Ç
:?C*:ss\::ß
:?C*:ae\::æ
:?C*:AE\::Æ
:?C*:oe\::œ
:?C*:OE\::Œ
3

Вдохновленный последним постом, я нашел дополнительное решение, так как вышеописанное иногда вызывало проблемы при написании.

  1. Я сначала переназначил CapsLock на RShift, так как всегда использую ключ LShift для прописной буквы
  2. Настройте отображение

Rshift & a::
{
  GetKeyState, state, Lshift
  if state = D
    sendinput, Ä
  else
    sendinput, ä    
  return
}

Rshift & o::
{
  GetKeyState, state, Lshift
  if state = D
    sendinput, Ö
  else
    sendinput, ö    
  return
}

Rshift & u::
{
  GetKeyState, state, Lshift
  if state = D
    sendinput, Ü
  else
    sendinput, ü
  return
}

Rshift & s::
{
  sendinput, ß
  return
}

Rshift & e::
{
  sendinput, €
  return
}
0

Чувствую себя странно, отвечая на мой собственный вопрос, но, поскольку у кого-то еще не было идеи, я понял это сам. Следующий скрипт AutoHotKey делает свое дело:

#SingleInstance force

~space & a::
{
  GetKeyState, state, Shift
  if state = D
    sendinput, {backspace 1}Ä
  else
    sendinput, {backspace 1}ä

  return
}

~space & o::
{
  GetKeyState, state, Shift
  if state = D
    sendinput, {backspace 1}Ö
  else
    sendinput, {backspace 1}ö
  return
}

~space & u::
{
  GetKeyState, state, Shift
  if state = D
    sendinput, {backspace 1}Ü
  else
    sendinput, {backspace 1}ü
  return
}

~space & s::
{
  sendinput, {backspace 1}ß
  return
}

~space & e::
{
  sendinput, {backspace 1}€
  return
}

Важной частью является использование функции backspace , которая удаляет пространство, когда был активирован один из вариантов сочетаний клавиш. Кроме того, проверка состояния клавиши Shift позволяет вводить символы с учетом регистра. Для удобства я также добавил горячие клавиши для немецкого "острого s" (который существует только в нижнем регистре) и символа евро.

Пожалуйста, не забудьте запустить этот скрипт при входе в систему с правами администратора, следуя очень хорошей инструкции здесь.

С этим сценарием клавиша пробела функционирует, как и раньше, и только в случае нажатия на нее вместе с одной из клавиш a , o , u , s или e , она делает что-то особенное, и это то решение, которое я искал.

0

Вы также можете использовать немного дольше, но стандартные клавиши Alt + 132 = ä Alt + 137 (or 0235) = ë Alt + 139 (or 0239) = ï Alt + 148 (or 0246) = ö Alt + 129 (or 0252) = ü

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