Вопрос

Отвечая на такой простой вопрос, я удивлен, что ничего не смог найти с помощью поиска...

В любом случае, я создал приложение curses на Python, которое помогает в решении головоломок определенной игры DSiWare.С его помощью вы можете взять пазл и осмотреть его составляющие по отдельности.Ключи qweasdzx используются для раскрашивания плиток (клавиши расположены в виде своего рода палитры).Нажатие одной из этих клавиш с удерживанием Shift выделяет плитки этого цвета.Я не мог и мечтать о более естественной схеме управления.

Так что жаль, что в очередной раз Shift доставляет мне проблемы (в прошлый раз, когда у меня были проблемы с Shift, я заработал значок перекати-поля).Хотя на этот раз проблема более или менее в Caps Lock, которая полностью портит мою программу, меняя функции местами.

Как я могу определить состояние Caps Lock в Python с помощью curses?

Редактировать:Если вы собираетесь предложить использовать отдельный модуль, мне, вероятно, следует напомнить вам, что curses - и, следовательно, моя программа - находится на территории UNIX.

Это было полезно?

Решение

Я нашел решение самостоятельно:

Поскольку проклятия полностью не знают об настройке блокировки Caps в соответствии с τζωτζιου, я попробовал альтернативное решение. В частности, я посмотрел, как проверить замок Caps в скрипте Bash. То, что я нашел, было это:

linux только. Требуется X оконная система.

$ xset q | grep LED
>  auto repeat:  on    key click percent:  0    LED mask:  00000000
.

Последнее 0 в этом выходе (66-й символ в строке) - флаг блокировки Caps. 1 Если он включен, 0, если он выключен.

Python может запустить команды системы Unix с помощью только в Linux команды модуль. Команды, похоже, не мешают проклятиям.

>>> import commands
>>> # Caps Lock is off.
>>> commands.getoutput("xset q | grep LED")[65]
'0'
>>> # Setting Caps Lock on now.
>>> commands.getoutput("xset q | grep LED")[65]
'1'
.

Это работает нормально для меня; Это сценарий личного использования, и это не так, как моя программа не была уже Linux Exclusive. Но я надеюсь, что у кого-то есть другое, больше, совместимое с Windows-совместимым решением.

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

Другие советы

Короткий ответ:ты не можешь.

Более длинный ответ:

curses был создан как библиотека на основе terminfo для упрощения создания пользовательских интерфейсов на основе символов, независимых от используемого терминала (for terminal in 'vt220', 'wyse100', …).

Эти терминалы подключались по последовательной линии, и связь с хостом осуществлялась либо с помощью обычного текста (вводимого пользователем или выводимого хостом), либо специальных последовательностей ("escape" последовательности;ввод пользователем, если были нажаты специальные клавиши, например или Пред., или вывод хостом, если были запрошены специальные операции, такие как позиционирование курсора или очистка экрана).

Я ничего не знаю о Любой тупой терминал, отправляющий специальную последовательность всякий раз, когда была нажата клавиша Caps Lock, или хост, запрашивающий статус Caps Lock;блокировка заглавных букв была частью работы терминала, и хозяину не требовалось никаких знаний.Это похоже на причину, по которой вы не можете запустить программу curses, когда клавиша управления нажата сама по себе.

Все, что связано с проклятиями, относится к терминфо возможности;для того, о чем вы просите, нет никаких связанных возможностей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top