Skip to content

Commit f7bf785

Browse files
authored
v9.1
1 parent e28e176 commit f7bf785

3 files changed

Lines changed: 35 additions & 36 deletions

File tree

Engine/Input.py

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import ctypes
22
from ctypes.wintypes import *
3-
from Engine.Logging import *
4-
from Engine.Byte import *
53

64
# CTYPES ADAPTATE -------------------------------
75

@@ -157,7 +155,7 @@ def init(useHotkey=False, lineInput=False, echo=False, resizeEvents=False, mouse
157155
"""Включает получение событий\nПринимает: (bool) useHotkey - использование горячих клавиш, (bool) lineInput - описание отсутствует, (bool) echo - добавление в выходной массив, (bool) resizeEvents - принятие событий изменения размеров окна, (bool) mouseEvents - принятие событий мыши, (bool) insert - включает insert, (bool) quickEdit - выделение мышью, (bool) extended - запрет quickEdit"""
158156
Input.handle = ctypes.windll.kernel32.GetStdHandle(-10)
159157
Input.events = ctypes.wintypes.DWORD()
160-
Input.InputRecord = INPUT_RECORD()
158+
Input.record = INPUT_RECORD()
161159

162160
out = 0
163161

@@ -176,51 +174,54 @@ def init(useHotkey=False, lineInput=False, echo=False, resizeEvents=False, mouse
176174

177175
def reset():
178176
"""Отчистка входного буффера"""
179-
prev = 0
177+
178+
# Получаем события
180179
Input.tick()
181-
while int(bytes(Input.events)[0]) != 0:
180+
181+
# Если кол-во принятых событий не равно 0 то принимаем еще
182+
while Input.eventsRecived != False:
182183
Input.tick()
183184

185+
# Присваиваем переменным стандартные значения
184186
Input.varInit()
185187

186188
def varInit():
187189
"""Сброс / инициализация переменных"""
190+
Input.event = 0
188191
Input.eventType = 0
189192

190193
Input.mouseX = 0
191194
Input.mouseY = 0
192195
Input.mouseKey = 0
193-
196+
Input.prevMouseState = False
194197
Input.mouseType = 0
195198

196199
Input.keyboardCode = 0
197200
Input.keyboardChar = 0
198201
Input.keyboardState = 0
199202
Input.prevKeyboardState = False
200-
Input.prevMouseState = False
201-
202-
Input.event = 0
203-
Input.eventString = ""
204203

205204
def tick():
206-
"""Получение событий, обработка и их запись в массив\nПринимает: (bool) asyn - не ждать события"""
205+
"""Получение и запись событий"""
207206

208-
ctypes.windll.kernel32.ReadConsoleInputExW(Input.handle, ctypes.byref(Input.InputRecord), 1, ctypes.byref(Input.events), 2)
209-
record = Input.InputRecord
207+
# Принимаем события от консоли
208+
ctypes.windll.kernel32.ReadConsoleInputExW(Input.handle, ctypes.byref(Input.record), 1, ctypes.byref(Input.events), 2)
210209

211-
Input.event = record.Event
212-
Input.eventType = record.EventType
210+
# Определяет есть ли новые события
211+
Input.eventsRecived = bool(int(bytes(Input.events)[0]))
213212

214-
Input.mouseX = Input.event.MouseEvent.dwMousePosition.X # X
215-
Input.mouseY = Input.event.MouseEvent.dwMousePosition.Y # Y
216-
Input.mouseKey = Input.event.MouseEvent.dwButtonState # какая кнопка клавиатуры нажата
213+
# Записываем все в удобные для работы переменные
214+
Input.event = Input.record.Event
215+
Input.eventType = Input.record.EventType
216+
217+
Input.mouseX = Input.event.MouseEvent.dwMousePosition.X
218+
Input.mouseY = Input.event.MouseEvent.dwMousePosition.Y
219+
Input.mouseKey = Input.event.MouseEvent.dwButtonState
217220

218221
Input.prevMouseState = Input.mouseType == Input.Mouse.DOWN
219222
Input.mouseType = Input.event.MouseEvent.dwEventFlags # колесо / нажатие / движение / двойное нажатие
220223

221224
Input.prevKeyboardState = Input.keyboardState if Input.eventType == Input.Types.Keyboard else False
222225
Input.keyboardCode = Input.event.KeyEvent.wVirtualKeyCode # Код кнопки клавиатуры
223226
Input.keyboardChar = Input.event.KeyEvent.uChar.UnicodeChar # Символ клавиши
224-
Input.keyboardState = Input.event.KeyEvent.bKeyDown if Input.eventType == Input.Types.Keyboard else False # Состояние кнопки
225-
226-
Input.eventString = f"{Input.mouseX}{Input.mouseY}{Input.mouseKey}{Input.keyboardCode}{Input.keyboardChar}{Input.keyboardState}"
227+
Input.keyboardState = Input.event.KeyEvent.bKeyDown if Input.eventType == Input.Types.Keyboard else False # Состояние кнопки

Engine/Textbox.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ def inputFromEvent(self,):
3535
"""Обработка нажатий клавиатуры\nПринимает: (Event) event - событие"""
3636
if not(self.selected): return
3737
if Input.eventType == Input.Types.Keyboard:
38-
Logging.log(Input.keyboardState, Input.Keyboard.DOWN, Input.prevKeyboardState)
3938
if Input.keyboardState == Input.Keyboard.DOWN and not Input.prevKeyboardState:
4039
if Input.keyboardCode == Input.Keyboard.Keys.BACKSPACE:
4140
self.value = self.value[:-1]

README.md

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
|[EBM](https://github.com/Sinus44/Console-Engine#class-EBM)|Импорт файлов *.ebm, получение данных из файла и их структуризация|
2121
|[ImageBMP](https://github.com/Sinus44/Console-Engine#class-ImageBMP)|Импорт картинок пригодных для вставки в Window, из формата *.bmp|
2222
|[ImageEBM](https://github.com/Sinus44/Console-Engine#class-ImageEBM)|Импорт картинок пригодных для вставки в Window, из формата *.ebm|
23-
|[Logging](https://github.com/Sinus44/Console-Engine#class-Logging)|Запись отладочной информации в файл|
2423
|[Input](https://github.com/Sinus44/Console-Engine#class-Input)|Обработка входящих событий окна консоли|
2524
|[Interval](https://github.com/Sinus44/Console-Engine#class-Interval)|Цикличный вызов функции в соответветсвии с интервалом|
25+
|[Logging](https://github.com/Sinus44/Console-Engine#class-Logging)|Запись отладочной информации в файл|
2626
|[Mmath](https://github.com/Sinus44/Console-Engine#class-Mmath)|Математические функции|
2727
|[Output](https://github.com/Sinus44/Console-Engine#class-Output)|Настройка выходного буффера окна консоли|
2828
|[Perceptron](https://github.com/Sinus44/Console-Engine#class-Perceptron)|Простой нейрон|
@@ -215,17 +215,6 @@
215215
Принимает: (tuple) color - цвет
216216
Возвращает: (string) - символ код цвета OR (int) - 0 если alpha канал
217217

218-
## Class Logging
219-
Запись отладочной информации в файл
220-
### Методы:
221-
222-
### log()
223-
Логирование в файл
224-
Принимает: (*strings) - строки для логгирования
225-
226-
### print()
227-
Логирование в консольnПринимает: (*strings) - строки для логгирования
228-
229218
## Class Input
230219
Обработка входящих событий окна консоли
231220
### Методы:
@@ -241,8 +230,7 @@
241230
Сброс / инициализация переменных
242231

243232
### tick()
244-
Получение событий, обработка и их запись в массив
245-
Принимает: (bool) asyn - не ждать события
233+
Получение и запись событий
246234

247235
## Class Interval
248236
Цикличный вызов функции в соответветсвии с интервалом
@@ -261,6 +249,17 @@
261249
### function()
262250
Метод котоый будет запущен в отдельном потоке
263251

252+
## Class Logging
253+
Запись отладочной информации в файл
254+
### Методы:
255+
256+
### log()
257+
Логирование в файл
258+
Принимает: (*strings) - строки для логгирования
259+
260+
### print()
261+
Логирование в консольnПринимает: (*strings) - строки для логгирования
262+
264263
## Class Mmath
265264
Математические функции
266265
### Методы:

0 commit comments

Comments
 (0)