Несколько примеров изменения назначения клавиш.

Переключатель "альтернативной клавиатуры" (Рус/Лат).

Как я уже говорил, при загруженной (или встроенной) русской раскладке клавиатуры клавиша [CapsLock] начинает работать как "переключатель языка" - русский/латинский.

Если вам это не нравится, можно изменить раскладку так, чтобы [CapsLock] всегда оставалась CapsLock'ом. А "переключатель языка" присвоить какой-нибудь другой клавише или комбинации клавиш.

Первым делом вернем CapsLock на место. Для этого надо в файле раскладки найти строчки, в которых содержится значение alock.

  058   alock  clock  clock  clock  clock  clock  clock  clock   O
  084   alock  alock  alock  alock  alock  alock  alock  alock   O
  186   alock  clock  clock  clock  clock  clock  clock  clock   O
  212   alock  alock  alock  alock  alock  alock  alock  alock   O

Строчки со скан-кодами 84 и 212 нас мало интересуют. (Честно говоря, я не знаю - что это за клавиша.) А вот строчки 58 и 186 - это как раз клавиша [CapsLock] в "нормальной" и "альтернативной" (русской) клавиатурах.

Как видите, без модификаторов (shift, ctrl или alt) она действует как alock (alt group), а с любым из модификаторов - как clock (caps lock).

Просто исправьте alock на clock.

  058   clock  clock  clock  clock  clock  clock  clock  clock   O
  186   clock  clock  clock  clock  clock  clock  clock  clock   O

Теперь надо придумать - чем мы будем переключаться на русскую клавиатуру и обратно.

Если у вас есть незадействованные клавиши, например, "окошки" на "микрософтовской" клавиатуре, то можно занять одну из них. Это достаточно просто и я не буду подробно рассматривать этот случай. Можете посмотреть пример с клавишей Meta - это делается практически так же.

Если же свободных клавиш нет, то можно переключатель alock "подвесить" на какую-нибудь комбинацию клавиш. Например - "два шифта". То есть, каждая кнопка [Shift] должна работать как shift, а если их нажать одновременно, должен получится alock.

Для начала, найдем строчки в которых есть слово shift

  042   lshift lshift lshift lshift lshift lshift lshift lshift  O
  054   rshift rshift rshift rshift rshift rshift rshift rshift  O

  170   lshift lshift lshift lshift lshift lshift lshift lshift  O
  182   rshift rshift rshift rshift rshift rshift rshift rshift  O

Учтем, что даже при "одновременном" нажатии этих кнопок, все равно одна из них будет нажата чуть-чуть раньше. Поэтому, та кнопка которая будет нажата раньше, переведет клавиатуру в состояние shift, при котором выбирается вторая колонка значений (точнее, все четные), а уже вторая - должна выполнить нужное нам действие.

Если мы хотим, чтобы последовательность нажатия была не важна, нам надо исправить значение и для клавиши lshift во второй колонке (считаем, что правый shift мы нажали чуть раньше) и для клавиши rshift (на тот случай, если первым будет нажат левый shift).

  042   lshift alock  lshift lshift lshift lshift lshift lshift  O
  054   rshift alock  rshift rshift rshift rshift rshift rshift  O

  170   lshift alock  lshift lshift lshift lshift lshift lshift  O
  182   rshift alock  rshift rshift rshift rshift rshift rshift  O

Дело сделано.

Клавиша Meta.

Модификатор meta в раскладке клавиатуры отсутствует. Если вам кажется, что он будет вам очень полезен, надо найти подходящую клавишу и присвоить ей значение meta.

Если у вас "микрософтовская" клавиатура, то под met'у можно задействовать одну из кнопок с "окошками", напрмер - левую. Если вы не знаете ее скан-код (вообще-то, это 105), можно найти ее по значению - "по умолчанию" она имеет значение fkey62

  105	fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62  O
Просто замените значения во всех колонках на meta
  105	meta   meta   meta   meta   meta   meta   meta   meta    O
Если у вас русская раскладка клавиатуры, то не забудьте ту же операцию проделать для той же кнопки в "альтернативной" части раскладки
  233	fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62  O
Если же "микрософтовских" кнопок у вас нет, то можно под met'у выделить одну из "парных" кнопок ([Shift], [Ctrl] или [Alt]). Поскольку, для syscons нет разницы - какую из них вы нажмете для получения нужного эффекта, можно, напрмер, в качестве alt оставить только левую кнопку (та строчка, где значения - lalt), а правую кнопку (значения - ralt) изменить на meta.

"Комбинация из трех пальцев" - Ctrl+Alt+Del.

Если вам не нравится, что ваш компьютер можно перегрузить в любой момент, нажав "магическую комбинацию" Ctrl+Alt+Del, найдите в раскладке все строчки со словом boot (учтите, что клавиш Del две - одна над стрелками, а другая на "дополнительной цифровой клавиатуре").
  083   del    '.'    '.'    '.'    174    174    boot   boot    N
  103	fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot   fkey61  O
  211   del    '.'    '.'    '.'    174    174    boot   boot    N
  231	fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot   fkey61  O

Просто замените слово boot на что-нибудь другое - nop ("пустая" клавиша) или bel ("писк").

Кстати, если вы боитесь, что враги могут восстановить эту клавишу и все-таки "отправить в перезагрузку" вашу машину, в последних версиях syscons появилось более радикальное средство.

Надо пересобрать ядро с "option SC_DISABLE_REBOOT", и куда бы вы (или злоумышленники) ни назначили значение boot, оно просто не окажет никакого действия на машину.


Иван Паскаль pascal@tsu.ru