Вопросы по раскладкам клавиатуры
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.10.22 16:20
Оценка: 1 (1)
Здравствуйте!

1) Вопрос по AltGr. В инетах пишут, что AltGr работает как Ctrl+Alt. Но у меня что-то не работает
Ковыряю DLL-rb раскладок. Вот есть у меня US International раскладка

В заголовке есть описание режимов (всего 7, два из них — какие-то заглушки, ничего не делающие, похоже), и набор каких кнопок каким битам режима соответствует:
  Скрытый текст
Layout: 00020409 - United States-International
0x0409 - Английский (США)

/* Modifier Keys */
pCharModifiers->pVkToBit[0]: Vk: VK_SHIFT (0x10), ModBits: 0x01 (KBDSHIFT)
pCharModifiers->pVkToBit[1]: Vk: VK_CONTROL (0x11), ModBits: 0x02 (KBDCTRL)
pCharModifiers->pVkToBit[2]: Vk: VK_MENU (0x12), ModBits: 0x04 (KBDALT)
pCharModifiers->wMaxModBits: 7
pCharModifiers->ModNumber[0]: <none>
pCharModifiers->ModNumber[1]: 0x01 (KBDSHIFT)
pCharModifiers->ModNumber[2]: 0x04 (KBDALT)
pCharModifiers->ModNumber[3]: 0x05 (KBDSHIFT|KBDALT)
pCharModifiers->ModNumber[4]: SHFT_INVALID - no characters produced with this shift state
pCharModifiers->ModNumber[5]: SHFT_INVALID - no characters produced with this shift state
pCharModifiers->ModNumber[6]: 0x02 (KBDCTRL)

Далее. Есть таблица соответствия кодов виртуальных клавиш:
  Скрытый текст
/* Characters */
---------                                                            NONE               KBDSHIFT           KBDALT             KBDSHIFT|KBDALT    KBDCTRL
        VirtualKey: 0x33 (       3),  Attributes: 0x00, wch: 0x0033 '3'       , 0x0023 '#'       , 0x00B3 '³'       ,
        VirtualKey: 0x35 (       5),  Attributes: 0x00, wch: 0x0035 '5'       , 0x0025 '%'       , 0x20AC '€'       ,
        VirtualKey: 0x37 (       7),  Attributes: 0x00, wch: 0x0037 '7'       , 0x0026 '&'       , 0x00BD '½'       ,
        VirtualKey: 0x38 (       8),  Attributes: 0x00, wch: 0x0038 '8'       , 0x002A '*'       , 0x00BE '¾'       ,
        VirtualKey: 0x39 (       9),  Attributes: 0x00, wch: 0x0039 '9'       , 0x0028 '('       , 0x2018 '‘'       ,
        VirtualKey: 0x30 (       0),  Attributes: 0x00, wch: 0x0030 '0'       , 0x0029 ')'       , 0x2019 '’'       ,
        VirtualKey: 0x52 (       R),  Attributes: 0x01, wch: 0x0072 'r'       , 0x0052 'R'       , 0x00AE '®'       ,  attrs as names: CAPLOK
        VirtualKey: 0x4D (       M),  Attributes: 0x01, wch: 0x006D 'm'       , 0x004D 'M'       , 0x00B5 'µ'       ,  attrs as names: CAPLOK
        VirtualKey: 0xBF (   Slash),  Attributes: 0x00, wch: 0x002F '/'       , 0x003F '?'       , 0x00BF '¿'       ,


Окей. Нажимаю тройку — просто, с шифтом, с альтом: "3#" — с альтом ничего не вводится. Окей, смотрю, что у раскладки стоит флаг KLLF_ALTGR — видимо, надо нажимать AltGr. Окей, пробую, вводится: "3#³". Работает, ура.
Итого, получается, что флаг KBDALT — на самом деле KBDALTGREY (но такого флага самого по себе нету). Вспоминаю, что AltGr работает как Ctrl+Alt — нажимаю Ctrl+Alt+3 — "³". Хм, внезапно — работает. Хотя я накануне ковырялся — не работало. Правда, воспроизвести не смогу, и не записал, но вроде на чешской 405 раскладке ковырялся. Ну, окей, стока понаписал, стирать жалко — пусть будет, может, кому пригодится


2) Флаг CAPLOKALTGR, который устанавливается (может быть установлен) для каждой VK — CapsLock toggles the SHIFT state only if both Ctrl and Alt are down.

Вот это вообще не понятно. Потыкал, потыкал — как работает, не понял. Раскладка, опять же — 00020409 — United States-International.
Судя по описанию, которое я нашел — Caps Lock режим включается по нажатию клавиши "Caps Lock" только если при этом нажат AltGr.

Там CAPLOKALTGR появляется так:
  Скрытый текст
        VirtualKey: 0x41 (       A),  Attributes: 0x05, wch: 0x0061 'a'       , 0x0041 'A'       , 0x00E1 'á'       , 0x00C1 'Á'       ,  attrs as names: CAPLOK|CAPLOKALTGR
        VirtualKey: 0x53 (       S),  Attributes: 0x01, wch: 0x0073 's'       , 0x0053 'S'       , 0x00DF 'ß'       , 0x00A7 '§'       ,  attrs as names: CAPLOK
        VirtualKey: 0x44 (       D),  Attributes: 0x05, wch: 0x0064 'd'       , 0x0044 'D'       , 0x00F0 'ð'       , 0x00D0 'Ð'       ,  attrs as names: CAPLOK|CAPLOKALTGR
        VirtualKey: 0x4C (       L),  Attributes: 0x05, wch: 0x006C 'l'       , 0x004C 'L'       , 0x00F8 'ø'       , 0x00D8 'Ø'       ,  attrs as names: CAPLOK|CAPLOKALTGR
        VirtualKey: 0xBA (   Colon),  Attributes: 0x00, wch: 0x003B ';'       , 0x003A ':'       , 0x00B6 '¶'       , 0x00B0 '°'       ,

С "Colon" и остальными клавишами с флагом CAPLOK — понятно, CAPLOK сдвигает регистр символа, а для точки с запятой нет пары строчный/прописной. А вот что тут значит флаг CAPLOKALTGR, и почему он не установлен для клавиши "S"? Я вот не вижу отличий в описании (да и в поведении тоже) клавиши "S" от клавиш "D" и "L"


ЗЫ В десятке вроде сделали поудобнее, чем раньше. А может, я как-то по-другому настроил. Но сейчас Alt+Shift переключает по кругу только две основные раскладки EN/RU, а все дополнительные игнорит. Чтобы переключится на экзотику, надо либо мышкой тыкать, либо Win+Space нажимать. А раньше в семерке Alt+Shift всё по кругу переключал, из-за этого я заводил отдельного пользователя с кучей установленных раскладок, чтобы из-под него экспериментировать с ними.


ЗЗЫ Кстати, обнаружилось, что очень часто не важно, в какой последовательности нажимать CTRL+ALT+SHIFT. Так, Shift+Alt переключает раскладки аналогично Alt+Shift, только триггероv переключения работает Alt, а не Shift
Маньяк Робокряк колесит по городу
Re: Вопросы по раскладкам клавиатуры
От: Carc Россия https://vk.com/gosha_mazov
Дата: 05.10.22 21:42
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте!


M>1) Вопрос по AltGr.

... [skipped]
А в чем вопросы-то?
Aml Pages Home
Re[2]: Вопросы по раскладкам клавиатуры
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.10.22 22:00
Оценка:
Здравствуйте, Carc, Вы писали:

M>>1) Вопрос по AltGr.

C>... [skipped]
C>А в чем вопросы-то?

Что за х этот такой флаг CAPLOKALTGR и как его кушать.

Ну и с AltGr тоже непонятки. Сегодня вроде заработало, хотя я после пары пива, а вчера на трезвую не работало, как Ctrl+Alt
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.