keyboard.html 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <!DOCTYPE html>
  2. <!--[if IE]><![endif]-->
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  7. <title>Keyboard Event Processing </title>
  8. <meta name="viewport" content="width=device-width">
  9. <meta name="title" content="Keyboard Event Processing ">
  10. <meta name="generator" content="docfx 2.54.0.0">
  11. <link rel="shortcut icon" href="../favicon.ico">
  12. <link rel="stylesheet" href="../styles/docfx.vendor.css">
  13. <link rel="stylesheet" href="../styles/docfx.css">
  14. <link rel="stylesheet" href="../styles/main.css">
  15. <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
  16. <meta property="docfx:navrel" content="../toc.html">
  17. <meta property="docfx:tocrel" content="../toc.html">
  18. <meta property="docfx:rel" content="../">
  19. </head> <body data-spy="scroll" data-target="#affix" data-offset="120">
  20. <div id="wrapper">
  21. <header>
  22. <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
  23. <div class="container">
  24. <div class="navbar-header">
  25. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
  26. <span class="sr-only">Toggle navigation</span>
  27. <span class="icon-bar"></span>
  28. <span class="icon-bar"></span>
  29. <span class="icon-bar"></span>
  30. </button>
  31. <a class="navbar-brand" href="../index.html">
  32. <img id="logo" class="svg" src="../images/logo48.png" alt="">
  33. </a>
  34. </div>
  35. <div class="collapse navbar-collapse" id="navbar">
  36. <form class="navbar-form navbar-right" role="search" id="search">
  37. <div class="form-group">
  38. <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
  39. </div>
  40. </form>
  41. </div>
  42. </div>
  43. </nav>
  44. <div class="subnav navbar navbar-default">
  45. <div class="container hide-when-search" id="breadcrumb">
  46. <ul class="breadcrumb">
  47. <li></li>
  48. </ul>
  49. </div>
  50. </div>
  51. </header>
  52. <div class="container body-content">
  53. <div id="search-results">
  54. <div class="search-list"></div>
  55. <div class="sr-items">
  56. <p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
  57. </div>
  58. <ul id="pagination"></ul>
  59. </div>
  60. </div>
  61. <div role="main" class="container body-content hide-when-search">
  62. <div class="article row grid">
  63. <div class="col-md-10">
  64. <article class="content wrap" id="_content" data-uid="">
  65. <h1 id="keyboard-event-processing">Keyboard Event Processing</h1>
  66. <p>Keyboard events are sent by the <a href="mainloop.html">Main Loop</a> to the
  67. Application class for processing. The keyboard events are sent
  68. exclusively to the current <code>Toplevel</code>, this being either the default
  69. that is created when you call <code>Application.Init</code>, or one that you
  70. created an passed to <code>Application.Run(Toplevel)</code>. </p>
  71. <h2 id="flow">Flow</h2>
  72. <p>Keystrokes are first processes as hotkeys, then as regular keys, and
  73. there is a final cold post-processing event that is invoked if no view
  74. processed the key.</p>
  75. <h2 id="hotkey-processing">HotKey Processing</h2>
  76. <p>Events are first send to all views as a &quot;HotKey&quot;, this means that the
  77. <code>View.ProcessHotKey</code> method is invoked on the current toplevel, which
  78. in turns propagates this to all the views in the hierarchy. If any
  79. view decides to process the event, no further processing takes place.</p>
  80. <p>This is how hotkeys for buttons are implemented. For example, the
  81. keystroke &quot;Alt-A&quot; is handled by Buttons that have a hot-letter &quot;A&quot; to
  82. activate the button.</p>
  83. <h2 id="regular-processing">Regular Processing</h2>
  84. <p>Unlike the hotkey processing, the regular processing is only sent to
  85. the currently focused view in the focus chain.</p>
  86. <p>The regular key processing is only invoked if no hotkey was caught.</p>
  87. <h2 id="cold-key-processing">Cold-key Processing</h2>
  88. <p>This stage only is executed if the focused view did not process the
  89. event, and is broadcast to all the views in the Toplevel.</p>
  90. <p>This method can be overwritten by views that want to provide
  91. accelerator functionality (Alt-key for example), but without
  92. interefering with normal ProcessKey behavior.</p>
  93. </article>
  94. </div>
  95. <div class="hidden-sm col-md-2" role="complementary">
  96. <div class="sideaffix">
  97. <div class="contribution">
  98. <ul class="nav">
  99. </ul>
  100. </div>
  101. <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
  102. <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
  103. </nav>
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. <footer>
  109. <div class="grad-bottom"></div>
  110. <div class="footer">
  111. <div class="container">
  112. <span class="pull-right">
  113. <a href="#top">Back to top</a>
  114. </span>
  115. <span>Generated by <strong>DocFX</strong></span>
  116. </div>
  117. </div>
  118. </footer>
  119. </div>
  120. <script type="text/javascript" src="../styles/docfx.vendor.js"></script>
  121. <script type="text/javascript" src="../styles/docfx.js"></script>
  122. <script type="text/javascript" src="../styles/main.js"></script>
  123. </body>
  124. </html>