LCOV - code coverage report
Current view: top level - src/plugins/mousepad - valent-mousepad-keydef.h (source / functions) Coverage Total Hit
Test: Code Coverage Lines: 16.1 % 62 10
Test Date: 2024-04-23 06:02:46 Functions: 100.0 % 1 1
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 12.1 % 33 4

             Branch data     Line data    Source code
       1                 :             : // SPDX-License-Identifier: GPL-3.0-or-later
       2                 :             : // SPDX-FileCopyrightText: Andy Holmes <andrew.g.r.holmes@gmail.com>
       3                 :             : 
       4                 :             : #pragma once
       5                 :             : 
       6                 :             : #include <gdk/gdk.h>
       7                 :             : 
       8                 :             : G_BEGIN_DECLS
       9                 :             : 
      10                 :             : /**
      11                 :             :  * valent_mousepad_keysym_is_modifier:
      12                 :             :  * @keysym: a keysym
      13                 :             :  *
      14                 :             :  * Check if @keysym is a known keyboard modifier (e.g. Shift).
      15                 :             :  *
      16                 :             :  * Returns: %TRUE, or %FALSE if not a modifier
      17                 :             :  */
      18                 :             : static inline gboolean
      19                 :             : valent_mousepad_keysym_is_modifier (uint32_t keysym)
      20                 :             : {
      21                 :             :   switch (keysym)
      22                 :             :     {
      23                 :             :     /* Supported */
      24                 :             :     case GDK_KEY_Control_L:
      25                 :             :     case GDK_KEY_Control_R:
      26                 :             :     case GDK_KEY_Alt_L:
      27                 :             :     case GDK_KEY_Alt_R:
      28                 :             :     case GDK_KEY_Shift_L:
      29                 :             :     case GDK_KEY_Shift_R:
      30                 :             :     case GDK_KEY_Super_L:
      31                 :             :     case GDK_KEY_Super_R:
      32                 :             : 
      33                 :             :     /* Unsupported */
      34                 :             :     case GDK_KEY_Overlay1_Enable:
      35                 :             :     case GDK_KEY_Overlay2_Enable:
      36                 :             :     case GDK_KEY_Caps_Lock:
      37                 :             :     case GDK_KEY_Shift_Lock:
      38                 :             :     case GDK_KEY_Meta_L:
      39                 :             :     case GDK_KEY_Meta_R:
      40                 :             :     case GDK_KEY_Hyper_L:
      41                 :             :     case GDK_KEY_Hyper_R:
      42                 :             :     case GDK_KEY_Mode_switch:
      43                 :             :     case GDK_KEY_ISO_Level3_Shift:
      44                 :             :     case GDK_KEY_ISO_Level3_Latch:
      45                 :             :     case GDK_KEY_ISO_Level5_Shift:
      46                 :             :     case GDK_KEY_ISO_Level5_Latch:
      47                 :             :       return TRUE;
      48                 :             :     default:
      49                 :             :       return FALSE;
      50                 :             :     }
      51                 :             : }
      52                 :             : 
      53                 :             : /**
      54                 :             :  * valent_mousepad_keycode_to_keyval:
      55                 :             :  * @keycode: a special keycode
      56                 :             :  *
      57                 :             :  * Convert @keycode from a KDE Connect special key to a GDK keyval.
      58                 :             :  *
      59                 :             :  * Returns: a GDK keyval, or `0` if not found
      60                 :             :  */
      61                 :             : static inline uint32_t
      62                 :           1 : valent_mousepad_keycode_to_keyval (uint32_t  keycode)
      63                 :             : {
      64                 :           1 :   static const uint32_t keymap[] = {
      65                 :             :     0,                   // 0 (Invalid)
      66                 :             :     GDK_KEY_BackSpace,   // 1
      67                 :             :     GDK_KEY_Tab,         // 2
      68                 :             :     GDK_KEY_Linefeed,    // 3
      69                 :             :     GDK_KEY_Left,        // 4
      70                 :             :     GDK_KEY_Up,          // 5
      71                 :             :     GDK_KEY_Right,       // 6
      72                 :             :     GDK_KEY_Down,        // 7
      73                 :             :     GDK_KEY_Page_Up,     // 8
      74                 :             :     GDK_KEY_Page_Down,   // 9
      75                 :             :     GDK_KEY_Home,        // 10
      76                 :             :     GDK_KEY_End,         // 11
      77                 :             :     GDK_KEY_Return,      // 12
      78                 :             :     GDK_KEY_Delete,      // 13
      79                 :             :     GDK_KEY_Escape,      // 14
      80                 :             :     GDK_KEY_Sys_Req,     // 15
      81                 :             :     GDK_KEY_Scroll_Lock, // 16
      82                 :             :     0,                   // 17 (Reserved)
      83                 :             :     0,                   // 18 (Reserved)
      84                 :             :     0,                   // 19 (Reserved)
      85                 :             :     0,                   // 20 (Reserved)
      86                 :             :     GDK_KEY_F1,          // 21
      87                 :             :     GDK_KEY_F2,          // 22
      88                 :             :     GDK_KEY_F3,          // 23
      89                 :             :     GDK_KEY_F4,          // 24
      90                 :             :     GDK_KEY_F5,          // 25
      91                 :             :     GDK_KEY_F6,          // 26
      92                 :             :     GDK_KEY_F7,          // 27
      93                 :             :     GDK_KEY_F8,          // 28
      94                 :             :     GDK_KEY_F9,          // 29
      95                 :             :     GDK_KEY_F10,         // 30
      96                 :             :     GDK_KEY_F11,         // 31
      97                 :             :     GDK_KEY_F12,         // 32
      98                 :             :   };
      99                 :             : 
     100         [ +  - ]:           1 :   if (keycode >= G_N_ELEMENTS (keymap))
     101                 :             :     return 0;
     102                 :             : 
     103         [ -  + ]:           1 :   return keymap[keycode];
     104                 :             : }
     105                 :             : 
     106                 :             : /**
     107                 :             :  * valent_mousepad_keyval_to_keycode:
     108                 :             :  * @keyval: a key value
     109                 :             :  *
     110                 :             :  * Convert @keyval from a GDK keyval to a special key for KDE Connect.
     111                 :             :  *
     112                 :             :  * Returns: a special key code, or `0` if not found
     113                 :             :  */
     114                 :             : static inline uint32_t
     115                 :           3 : valent_mousepad_keyval_to_keycode (uint32_t keyval)
     116                 :             : {
     117   [ -  -  -  -  :           3 :   switch (keyval)
          -  -  -  -  -  
          -  -  -  -  -  
          -  -  -  -  -  
          -  -  -  -  -  
             -  -  +  +  
                      - ]
     118                 :             :     {
     119                 :             :     case GDK_KEY_BackSpace:
     120                 :             :       return 1;
     121                 :             : 
     122                 :           0 :     case GDK_KEY_Tab:
     123                 :             :     case GDK_KEY_KP_Tab:
     124                 :           0 :       return 2;
     125                 :             : 
     126                 :           0 :     case GDK_KEY_Linefeed:
     127                 :           0 :       return 3;
     128                 :             : 
     129                 :           0 :     case GDK_KEY_Left:
     130                 :             :     case GDK_KEY_KP_Left:
     131                 :           0 :       return 4;
     132                 :             : 
     133                 :           0 :     case GDK_KEY_Up:
     134                 :             :     case GDK_KEY_KP_Up:
     135                 :           0 :       return 5;
     136                 :             : 
     137                 :           0 :     case GDK_KEY_Right:
     138                 :             :     case GDK_KEY_KP_Right:
     139                 :           0 :       return 6;
     140                 :             : 
     141                 :           0 :     case GDK_KEY_Down:
     142                 :             :     case GDK_KEY_KP_Down:
     143                 :           0 :       return 7;
     144                 :             : 
     145                 :           0 :     case GDK_KEY_Page_Up:
     146                 :             :     case GDK_KEY_KP_Page_Up:
     147                 :           0 :       return 8;
     148                 :             : 
     149                 :           0 :     case GDK_KEY_Page_Down:
     150                 :             :     case GDK_KEY_KP_Page_Down:
     151                 :           0 :       return 9;
     152                 :             : 
     153                 :           0 :     case GDK_KEY_Home:
     154                 :             :     case GDK_KEY_KP_Home:
     155                 :           0 :       return 10;
     156                 :             : 
     157                 :           0 :     case GDK_KEY_End:
     158                 :             :     case GDK_KEY_KP_End:
     159                 :           0 :       return 11;
     160                 :             : 
     161                 :           0 :     case GDK_KEY_Return:
     162                 :             :     case GDK_KEY_KP_Enter:
     163                 :             :     case GDK_KEY_ISO_Enter:
     164                 :           0 :       return 12;
     165                 :             : 
     166                 :           0 :     case GDK_KEY_Delete:
     167                 :             :     case GDK_KEY_KP_Delete:
     168                 :           0 :       return 13;
     169                 :             : 
     170                 :           0 :     case GDK_KEY_Escape:
     171                 :           0 :       return 14;
     172                 :             : 
     173                 :           0 :     case GDK_KEY_Sys_Req:
     174                 :           0 :       return 15;
     175                 :             : 
     176                 :           0 :     case GDK_KEY_Scroll_Lock:
     177                 :           0 :       return 16;
     178                 :             : 
     179                 :           0 :     case GDK_KEY_F1:
     180                 :           0 :       return 21;
     181                 :             : 
     182                 :           0 :     case GDK_KEY_F2:
     183                 :           0 :       return 22;
     184                 :             : 
     185                 :           0 :     case GDK_KEY_F3:
     186                 :           0 :       return 23;
     187                 :             : 
     188                 :           0 :     case GDK_KEY_F4:
     189                 :           0 :       return 24;
     190                 :             : 
     191                 :           0 :     case GDK_KEY_F5:
     192                 :           0 :       return 25;
     193                 :             : 
     194                 :           0 :     case GDK_KEY_F6:
     195                 :           0 :       return 26;
     196                 :             : 
     197                 :           0 :     case GDK_KEY_F7:
     198                 :           0 :       return 27;
     199                 :             : 
     200                 :           0 :     case GDK_KEY_F8:
     201                 :           0 :       return 28;
     202                 :             : 
     203                 :           0 :     case GDK_KEY_F9:
     204                 :           0 :       return 29;
     205                 :             : 
     206                 :           0 :     case GDK_KEY_F10:
     207                 :           0 :       return 30;
     208                 :             : 
     209                 :           0 :     case GDK_KEY_F11:
     210                 :           0 :       return 31;
     211                 :             : 
     212                 :           1 :     case GDK_KEY_F12:
     213                 :           1 :       return 32;
     214                 :             : 
     215                 :           2 :     default:
     216                 :           2 :       return 0;
     217                 :             :     }
     218                 :             : }
     219                 :             : 
     220                 :             : G_END_DECLS
     221                 :             : 
        

Generated by: LCOV version 2.0-1