Jump to content

Программирование нажатия клавиш

Программирование нажатий клавиш описывает особый способ программирования, при котором каждое нажатие клавиши на устройстве или приложении каким-либо образом записывается, а затем воспроизводится, так что записанные нажатия клавиш можно повторить несколько раз. Программирование нажатий клавиш чаще всего, но не исключительно, встречается в программируемых калькуляторах , но существуют и программные приложения, программируемые нажатиями клавиш, например Vim (текстовый редактор). [1]

Пример: Калькуляторы TI

[ редактировать ]
ТИ-58С

Калькуляторы Texas Instruments TI-58 / TI-58C / TI-59 были программируемыми, а хранилище программ имело форму последовательности кодов, которые (в основном) соответствовали положению клавиш на клавиатуре калькулятора. Вот упрощенная схема основного расположения клавиш:

 х 1 х 2 х 3 х 4 х 5
1 х А Б С Д И
22x 2-й ИНВ ln х ЭТОТ среда CLR
33x ЛРН x⇌t х 2 x 1/х
44x ССТ ЧТО РКЛ СУММА и х
55x летнее время ЭЭ  (   )   ÷ 
66x ГТО  7   8   9   × 
77x См.  4   5   6   - 
88x РСТ  1   2   3   + 
99x Р/С  0   .  +/-  = 

Каждой клавише присвоен двухзначный код; для большинства (но не всех) ключей цифра десятков происходит от номера строки (как указано в левой части таблицы), а цифра единиц — от номера столбца (как указано в верхней части таблицы).

Теперь рассмотрим очень простую программу, которая добавляет 2 к отображаемому числу, а затем останавливается. Вход в программу начинается с позиции программы 000 и выглядит следующим образом:

Расположение Содержание Значение Комментарии
000 85 +
001 02 2
002 95 = вычислить результат
003 91 Р/С остановить программу

Чтобы использовать эту программу, вы должны ввести номер n , с которым нужно работать, нажать RST, чтобы убедиться, что текущая позиция программы равна 000, а затем R/S , чтобы начать выполнение. Когда программа остановится (что должно произойти довольно быстро для такой простой программы), на дисплее отобразится число n + 2.

Вы можете видеть, что коды 85, 95 и 91 соответствуют позициям клавиш, отмеченных + , = и R/S на сетке выше, но код для 2 — это не 83, как можно было бы ожидать, судя по положению сетки, а 02. Последний код был выбран для того, чтобы его было легче понять человеку, пытающемуся прочитать программу. 00..09 используются для обозначения ключей 0..9 Строки 0 нет, поэтому коды .

Контекстно-зависимые интерпретации

[ редактировать ]

Эти калькуляторы TI позволяли адресовать до 100 ячеек памяти данных с номерами от 00 до 99 (некоторые модели имели более низкий предел). Последовательность нажатий клавиш, такая как STO 4 2 (сохранение отображаемого в данный момент номера в памяти 42), будет закодирована как 42 42. В этом случае первая цифра 42 является кодом клавиши STO , а вторая цифра 42 не является кодом клавиши. а номер регистра памяти. Калькулятор знает, как это интерпретировать, потому что это то, что должно следовать за кодом клавиши STO .

Адреса программ были трехзначными, что потенциально позволяло программам состоять из до 1000 шагов, пронумерованных от 000 до 999 (хотя на самом деле ни одна из выпущенных моделей не допускала такого максимума). Команда ветвления, например GTO 3 4 5 (безусловный переход к ячейке 345), будет закодирована как 61 03 45. В этом случае цифра сотен пункта назначения ветвления находится в цифре единиц второго байта инструкции (после кода операции). , с нулевой цифрой десятков; а остальные цифры находятся в третьем байте инструкции.

С другой стороны, кодовая последовательность типа 61 11 представляет собой нажатие клавиши GTO A которое является ветвью к месту, отмеченному символической меткой A. , Калькулятор может определить, что это символическая ветвь, а не ветвь к пронумерованному месту, поскольку разряд десятков байта, следующий сразу за кодом операции, не равен нулю.

Большинство клавиш клавиатуры можно использовать в качестве символических надписей. Например, такие последовательности, как GTO STO и GTO GTO, являются допустимыми при условии, что STO и GTO фактически определены как метки где-то в программе.

Ключи-модификаторы

[ редактировать ]

Большинство клавиш имели несколько функций, в зависимости от того, INV или 2nd была ли предварительно нажата . INV вызывала «обратную» (что бы это ни значило) следующую функцию и записывалась в программе как отдельное нажатие клавиши (код 22), в то время как вторая вызывала совершенно другую функцию, которая была написана на лицевой панели клавиатуры чуть выше клавиши. Например, нажав 2-й x 2 вызвал функцию sin , а INV 2nd x 2 (или INV sin ) дал вам арксинус.

Код этой альтернативной функции получается из кода исходной ключевой функции путем добавления 5 к цифре единиц ( без переноса на цифру десятков). Таким образом, коды клавиш, соответствующие положению самой 2-й клавиши (21 и 26), никогда не используются в качестве кодов операций. Вот таблица кодов, созданных со вторым префиксом:

 х 6 х 7 х 8 х 9 х 0
1 х А' Б' С' Д' И'
22x  ИНВ бревно КП среда CLR
33x Пгм P→R грех потому что загар
44x Инс CM Отлично Прд В
55x Принадлежащий анг Исправить Int |х|
66x Пауза х=т Нет На Ты
77x LBL x≥t Σx среднее (х) Рад
88x Санкт-Флг Если флаг D.MS п Град
99x Писать Дсз Реклама Прт Список

Объединенные нажатия клавиш

[ редактировать ]

Ключ Ind допускает косвенность: везде, где разрешена ссылка на регистр памяти или местоположение программы, этот ключ можно использовать для получения фактического значения из регистра памяти. Например, последовательность ключей RCL Ind 1 0 означает выборку значения из регистра памяти 10 и использование этого значения, в свою очередь, в качестве номера регистра памяти, содержимое которого должно быть выбрано в качестве текущего операнда. Однако в этом случае Ind не может быть закодирован как код 40, поскольку кодовая последовательность 43 40 будет интерпретироваться как RCL 4 0 , а не RCL Ind .

Но из-за использования кодов 00..09 для коды клавиш 0..9 62-64, 72-74, 82-84 и 92 доступны для других применений. Таким образом, большинство из них перераспределяются для представления op Ind последовательностей :

 х 2 х 3 х 4
66x Pgm Индий Exc Индийский Прд Инд
77x СТО Индий RCL Индия СУММА Инд.
88x  ГТО Индий оператор Индийский
99x ИНВ СБР   

Таким образом, последовательность ключей RCL Ind 1 0 будет закодирована как 73 10.

Обратите внимание на использование кода 92 для INV SBR (возврат из подпрограммы); в этом не было необходимости по причинам двусмысленности, но это было сделано для экономии места при такой общей последовательности.

См. также

[ редактировать ]
  1. ^ «Документация Vim: повторите» .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 40f53080eaf181035e4ad34e6bce198d__1658262720
URL1:https://arc.ask3.ru/arc/aa/40/8d/40f53080eaf181035e4ad34e6bce198d.html
Заголовок, (Title) документа по адресу, URL1:
Keystroke programming - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)