Board.KolibriOS.org

Official KolibriOS board
It is currently Mon Aug 19, 2019 12:54 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 24 posts ]  Go to page Previous 1 2
Author Message
PostPosted: Fri Sep 11, 2009 1:43 pm 
Offline
User avatar

Joined: Tue Jan 15, 2008 9:30 am
Posts: 61
Если не секрет , какими?

_________________
Мы не часть этого мира , мы его творцы :)


Top
   
PostPosted: Sat Sep 19, 2009 7:38 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Да не то чтобы секрет, только зачем обнадёживать людей если работа ещё далека от завершения.


Top
   
PostPosted: Thu Jul 18, 2013 5:02 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Было бы удобнее, если бы программа сама могла определить режим ввода с клавиатуры(scan\ascii) для приложения, которому будут посылаться сообщения о нажатии клавиш. Насколько я понимаю, сейчас это сделать нельзя.
Можно выводить в буфер SysFn9. Тогда надо будет добавить в kernel.asm:
Code:
sys_cpuusage:
; .................................................................   
    ; Event mask (+71)
        mov     EAX, dword [ECX+CURRENT_TASK+TASKDATA.event_mask]
        stosd
            
+    ; Keyboard mode (+75)
+       mov     al, dword [ecx*8 + SLOT_BASE + APPDATA.keyboard_mode]
+       stosb            
                        
        pop     esi
        pop     edi   
; .................................................................


Top
   
PostPosted: Wed Nov 20, 2013 10:19 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Ну так я добавлю? И ZKey будет автоматически определять режим ввода.

Только в ZKey такая проблема:
Code:
draw_window:
  test    byte [red_type], 1
  jnz    @f
  test    byte [red_type], 2
  jnz    .draw_switch_button
  start_draw_window 100,370,600,210,0x14224466,labelt

То есть, сейчас start_draw_window пропускается и старая кнопка не удаляется.
Там, где я добавлю свой код, я буду удалять, а остальное я трогать не буду:
Code:
still:
   call   get_receiver_window_slot_number
+   call   get_receiver_window_keyboard_mode
+   call   set_keyboard_mode
+ ; delete_switch_button
+   mov eax, 8
+   mov edx, 0x80700000
+   int   0x40
+   call   draw_window.draw_switch_button
 

Code:
 .draw_switch_button:
  mov   eax, 6
  mul   byte [keyboard_mode]
  add   eax, SwitchText
  stdcall draw_button, 513,28,46,20,106,0x00700000,eax,6,TEXTCOLOR    ; Scan/ASCII switch
@@:
 .draw_indicators_area:
  call lights_on

+  xor al, al
+  xchg al, [red_type]

  mov   byte [red_type], 0
 
+  test    al, 2
+  jnz    .skip_end_draw_window
 
  end_draw_window
 
+ .skip_end_draw_window: 


Top
   
PostPosted: Wed Nov 20, 2013 10:32 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Добавляй, но желательно доступными способами убедиться, что не вызовет проблем. Хотя теоретически все приложения выделяют полный размер под буфер.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Wed Nov 20, 2013 10:39 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Mario_r4 wrote:
Хотя теоретически все приложения выделяют полный размер под буфер.
В документации написано:
Quote:
======================================================================
============= Функция 9 - информация о потоке выполнения. ============
======================================================================
Параметры:
* eax = 9 - номер функции
* ebx = указатель на буфер размера 1 Кб


Top
   
PostPosted: Wed Nov 20, 2013 10:50 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
А еще там:
Code:
  * В данный момент используется только часть буфера размером
    71 = 0x47 байта. Тем не менее рекомендуется использовать буфер
    размером 1 Кб для будущей совместимости, в будущем могут быть
    добавлены некоторые поля.

Но иногда программисты смотрят в код ядра и видят, что остальная область не используется. Понятно, что это ССЗБ, но тем не менее бывает.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
PostPosted: Wed Nov 20, 2013 11:01 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Mario_r4 wrote:
А еще там:
Код:
* В данный момент используется только часть буфера размером
71 = 0x47 байта.
А в kernel.asm:
Quote:
; Event mask (+71)
mov EAX, dword [ECX+CURRENT_TASK+TASKDATA.event_mask]
stosd
То есть, 75 на самом деле.


Top
   
PostPosted: Thu Nov 21, 2013 12:30 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Добавил автопереключение режима ввода с клавиатуры #4263.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 24 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited