Subversion Repositories Kolibri OS

Rev

Rev 5677 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;                                                                 ;;
  3. ;; Copyright (C) KolibriOS team 2010-2015. All rights reserved.    ;;
  4. ;; Distributed under terms of the GNU General Public License       ;;
  5. ;;                                                                 ;;
  6. ;;  VNC client for KolibriOS                                       ;;
  7. ;;                                                                 ;;
  8. ;;  Written by hidnplayr@kolibrios.org                             ;;
  9. ;;                                                                 ;;
  10. ;;          GNU GENERAL PUBLIC LICENSE                             ;;
  11. ;;             Version 2, June 1991                                ;;
  12. ;;                                                                 ;;
  13. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  14.  
  15. generate_keymap:
  16.  
  17. ; Read keymaps from kernel
  18.         mcall   26, 2, 1, keymap+128
  19.         mcall   26, 2, 2, keymap_shift+128
  20.         mcall   26, 2, 3, keymap_alt+128
  21.  
  22.         mov     edi, keymap
  23.         call    convert_keymap
  24.  
  25.         mov     edi, keymap_shift
  26.         call    convert_keymap
  27.  
  28.         mov     edi, keymap_alt
  29.         call    convert_keymap
  30.  
  31.         ret
  32.  
  33.  
  34.  
  35. convert_keymap:
  36.  
  37.         push    edi
  38.         lea     esi, [edi+128]
  39.         mov     ecx, 128
  40.         xor     eax, eax
  41.   .loop:
  42.         lodsb
  43.         shl     ax, 8
  44.         stosw
  45.         dec     ecx
  46.         jnz     .loop
  47.         pop     edi
  48.  
  49. ; Fill in some keysyms for non-ascii keys
  50.         mov     word[edi+01*2], 0x1bff  ; Escape
  51.         mov     word[edi+14*2], 0x08ff  ; Backspace
  52.         mov     word[edi+15*2], 0x09ff  ; Tab
  53.         mov     word[edi+28*2], 0x0dff  ; Enter
  54.         mov     word[edi+29*2], 0xe3ff  ; Left control key
  55.         mov     word[edi+42*2], 0xe1ff  ; Left shift
  56.         mov     word[edi+54*2], 0xe2ff  ; Right shift
  57.         mov     word[edi+56*2], 0xe9ff  ; Left alt key
  58.         mov     word[edi+59*2], 0xbeff  ; f1
  59.         mov     word[edi+60*2], 0xbfff  ; f2
  60.         mov     word[edi+61*2], 0xc0ff  ; f3
  61.         mov     word[edi+62*2], 0xc1ff  ; f4
  62.         mov     word[edi+63*2], 0xc2ff  ; f5
  63.         mov     word[edi+64*2], 0xc3ff  ; f6
  64.         mov     word[edi+65*2], 0xc4ff  ; f7
  65.         mov     word[edi+66*2], 0xc5ff  ; f8
  66.         mov     word[edi+67*2], 0xc6ff  ; f9
  67.         mov     word[edi+68*2], 0xc7ff  ; f10
  68.         mov     word[edi+71*2], 0x50ff  ; home
  69.         mov     word[edi+72*2], 0x52ff  ; up
  70.         mov     word[edi+73*2], 0x55ff  ; pg up
  71.         mov     word[edi+75*2], 0x51ff  ; left
  72.         mov     word[edi+77*2], 0x53ff  ; right
  73.         mov     word[edi+79*2], 0x57ff  ; end
  74.         mov     word[edi+80*2], 0x54ff  ; down
  75.         mov     word[edi+81*2], 0x56ff  ; pg down
  76.         mov     word[edi+82*2], 0x63ff  ; insert
  77.         mov     word[edi+83*2], 0xffff  ; delete
  78.         mov     word[edi+87*2], 0xc8ff  ; f11
  79.         mov     word[edi+88*2], 0xc9ff  ; f12
  80.         mov     word[edi+91*2], 0xebff  ; left super
  81.  
  82.         ret