WingMan – Diff between revs 3 and 4

Subversion Repositories:
Rev:
Show entire fileIgnore whitespace
Rev 3 Rev 4
Line 1... Line 1...
1 using System; 1 using System;
-   2 using System.Collections.Concurrent;
2 using System.Collections.Generic; 3 using System.Collections.Generic;
3 using System.ComponentModel; 4 using System.ComponentModel;
4 using System.Data; 5 using System.Data;
5 using System.Drawing; 6 using System.Drawing;
6 using System.Globalization; 7 using System.Globalization;
7 using System.Linq; 8 using System.Linq;
8 using System.Net; 9 using System.Net;
-   10 using System.Resources;
9 using System.Text; 11 using System.Text;
10 using System.Threading; 12 using System.Threading;
11 using System.Threading.Tasks; 13 using System.Threading.Tasks;
12 using System.Windows.Forms; 14 using System.Windows.Forms;
-   15 using Gma.System.MouseKeyHook;
13 using WingMan.Communication; 16 using WingMan.Communication;
14 using WingMan.Host; 17 using WingMan.Host;
Line 15... Line 18...
15   18  
16 namespace WingMan 19 namespace WingMan
Line 23... Line 26...
23   26  
Line 24... Line 27...
24 private SemaphoreSlim MQTTServerSemaphore {get; set;} = new SemaphoreSlim(1, 1); 27 private SemaphoreSlim MQTTServerSemaphore {get; set;} = new SemaphoreSlim(1, 1);
Line -... Line 28...
-   28  
-   29 private SemaphoreSlim MQTTClientSemaphore { get; set; } = new SemaphoreSlim(1, 1);
-   30  
-   31 private static IKeyboardMouseEvents MouseKeyApplicationHook { get; set; }
-   32  
-   33 private static IKeyboardMouseEvents MouseKeyGlobalHook { get; set; }
-   34  
-   35 private List<string> MouseKeyCombo { get; set; }
-   36  
-   37 private HelmBindings HelmBindings { get; set; }
-   38  
-   39 private BindingSource HelmBindingSource { get; set; }
25   40  
26 private SemaphoreSlim MQTTClientSemaphore { get; set; } = new SemaphoreSlim(1, 1); 41 public ConcurrentDictionary<string, HelmBindings> WingBindings { get; set; }
27   42  
Line -... Line 43...
-   43 public WingManForm()
-   44 {
28 public WingManForm() 45 InitializeComponent();
29 { 46  
-   47 MouseKeyGlobalHook = Hook.GlobalEvents();
-   48  
-   49 MQTTClient = new MQTTClient(this);
-   50 MQTTServer = new MQTTServer(this);
-   51  
-   52 HelmBindings = new HelmBindings();
-   53 HelmBindings.Bindings = new List<HelmBinding>();
-   54  
-   55 HelmBindingSource = new BindingSource();
-   56 HelmBindingSource.DataSource = HelmBindings.Bindings;
-   57  
-   58 HelmBindingsListBox.DisplayMember = "DisplayName";
30 InitializeComponent(); 59 HelmBindingsListBox.ValueMember = "Keys";
Line 31... Line 60...
31   60 HelmBindingsListBox.DataSource = HelmBindingSource;
32 MQTTClient = new MQTTClient(this); 61  
33 MQTTServer = new MQTTServer(this); 62 WingBindings = new ConcurrentDictionary<string, HelmBindings>();
Line 222... Line 251...
222 { 251 {
223 await MQTTClient.BroadcastLobbyMessage(LobbySayTextBox.Text); 252 await MQTTClient.BroadcastLobbyMessage(LobbySayTextBox.Text);
224 } 253 }
Line 225... Line 254...
225   254  
-   255 }
-   256  
-   257 private void HelmAddButtonClick(object sender, EventArgs e)
-   258 {
-   259 if (string.IsNullOrEmpty(HelmNameTextBox.Text))
-   260 {
-   261 HelmNameTextBox.BackColor = Color.LightPink;
-   262 return;
-   263 }
-   264  
-   265 HelmAddButton.Enabled = false;
-   266  
-   267 MouseKeyCombo = new List<string>();
-   268  
-   269 MouseKeyApplicationHook = Hook.AppEvents();
-   270 MouseKeyApplicationHook.MouseDown += MouseKeyHookOnMouseDown;
-   271 MouseKeyApplicationHook.KeyUp += MouseKeyHookOnKeyUp;
-   272 MouseKeyApplicationHook.KeyDown += MouseKeyHookOnKeyDown;
-   273 MouseKeyApplicationHook.MouseUp += MouseKeyHookOnMouseUp;
-   274  
-   275 }
-   276  
-   277 private void MouseKeyHookOnKeyUp(object sender, KeyEventArgs e)
-   278 {
-   279 HelmBindings.Bindings.Add(new HelmBinding
-   280 {
-   281 Keys = MouseKeyCombo,
-   282 Name = HelmNameTextBox.Text
-   283 });
-   284  
-   285 HelmBindingSource.ResetBindings(false);
-   286  
-   287 MouseKeyApplicationHook.KeyDown -= MouseKeyHookOnKeyDown;
-   288 MouseKeyApplicationHook.KeyUp -= MouseKeyHookOnKeyUp;
-   289  
-   290 MouseKeyApplicationHook.Dispose();
-   291  
-   292 HelmNameTextBox.Text = string.Empty;
-   293 HelmAddButton.Enabled = true;
-   294 }
-   295  
-   296 private void MouseKeyHookOnMouseUp(object sender, MouseEventArgs e)
-   297 {
-   298 HelmBindings.Bindings.Add(new HelmBinding
-   299 {
-   300 Keys = MouseKeyCombo,
-   301 Name = HelmNameTextBox.Text
-   302 });
-   303  
-   304 HelmBindingSource.ResetBindings(false);
-   305  
-   306 MouseKeyApplicationHook.KeyDown -= MouseKeyHookOnKeyDown;
-   307 MouseKeyApplicationHook.KeyUp -= MouseKeyHookOnKeyUp;
-   308  
-   309 MouseKeyApplicationHook.Dispose();
-   310  
-   311 HelmNameTextBox.Text = string.Empty;
-   312 HelmAddButton.Enabled = true;
-   313 }
-   314  
-   315  
-   316 private void MouseKeyHookOnMouseDown(object sender, MouseEventArgs e)
-   317 {
-   318 MouseKeyCombo.Add(MouseButtonToName(e.Button));
-   319 }
-   320  
-   321 private void MouseKeyHookOnKeyDown(object sender, KeyEventArgs e)
-   322 {
-   323 e.SuppressKeyPress = true;
-   324  
-   325 MouseKeyCombo.Add(KeyCodeToName((int) e.KeyCode));
-   326 }
-   327  
-   328 private void HelmNameTextBoxClick(object sender, EventArgs e)
-   329 {
-   330 HelmNameTextBox.BackColor = Color.Empty;
-   331 }
-   332  
-   333 private string MouseButtonToName(MouseButtons button)
-   334 {
-   335 var mouseButton = string.Empty;
-   336 switch (button)
-   337 {
-   338 case MouseButtons.Left:
-   339 mouseButton = "Left Mouse Button";
-   340 break;
-   341 case MouseButtons.Middle:
-   342 mouseButton = "Middle Mouse Button";
-   343 break;
-   344 case MouseButtons.Right:
-   345 mouseButton = "Right Mouse Button";
-   346 break;
-   347 }
-   348  
-   349 return mouseButton;
-   350 }
-   351  
-   352 private string KeyCodeToName(int code)
-   353 {
-   354 var keyString = string.Empty;
-   355 switch (code)
-   356 {
-   357 case 0:
-   358 break;
-   359 case 1:
-   360 keyString = "Mouse Left";
-   361 break;
-   362 case 2:
-   363 keyString = "Mouse Right";
-   364 break;
-   365 case 3:
-   366 keyString = "Cancel";
-   367 break;
-   368 case 4:
-   369 keyString = "Mouse Middle";
-   370 break;
-   371 case 5:
-   372 keyString = "Special 1";
-   373 break;
-   374 case 6:
-   375 keyString = "Special 2";
-   376 break;
-   377 case 8:
-   378 keyString = "Back";
-   379 break;
-   380 case 9:
-   381 keyString = "TAB";
-   382 break;
-   383 case 12:
-   384 keyString = "Clear";
-   385 break;
-   386 case 13:
-   387 keyString = "Enter";
-   388 break;
-   389 case 16:
-   390 keyString = "Shift";
-   391 break;
-   392 case 17:
-   393 keyString = "Ctrl";
-   394 break;
-   395 case 18:
-   396 keyString = "Menu";
-   397 break;
-   398 case 19:
-   399 keyString = "Pause";
-   400 break;
-   401 case 20:
-   402 keyString = "Caps Lock";
-   403 break;
-   404 case 21:
-   405 keyString = "Kana/Hangul";
-   406 break;
-   407 case 23:
-   408 keyString = "Junja";
-   409 break;
-   410 case 24:
-   411 keyString = "Final";
-   412 break;
-   413 case 25:
-   414 keyString = "Hanja/Kanji";
-   415 break;
-   416 case 27:
-   417 keyString = "Esc";
-   418 break;
-   419 case 28:
-   420 keyString = "Convert";
-   421 break;
-   422 case 29:
-   423 keyString = "NonConvert";
-   424 break;
-   425 case 30:
-   426 keyString = "Accept";
-   427 break;
-   428 case 31:
-   429 keyString = "Mode";
-   430 break;
-   431 case 32:
-   432 keyString = "Space";
-   433 break;
-   434 case 33:
-   435 keyString = "Page Up";
-   436 break;
-   437 case 34:
-   438 keyString = "Page Down";
-   439 break;
-   440 case 35:
-   441 keyString = "End";
-   442 break;
-   443 case 36:
-   444 keyString = "Home";
-   445 break;
-   446 case 37:
-   447 keyString = "Left";
-   448 break;
-   449 case 38:
-   450 keyString = "Up";
-   451 break;
-   452 case 39:
-   453 keyString = "Right";
-   454 break;
-   455 case 40:
-   456 keyString = "Down";
-   457 break;
-   458 case 41:
-   459 keyString = "Select";
-   460 break;
-   461 case 42:
-   462 keyString = "Print";
-   463 break;
-   464 case 43:
-   465 keyString = "Execute";
-   466 break;
-   467 case 44:
-   468 keyString = "Snapshot";
-   469 break;
-   470 case 45:
-   471 keyString = "Insert";
-   472 break;
-   473 case 46:
-   474 keyString = "Delete";
-   475 break;
-   476 case 47:
-   477 keyString = "Help";
-   478 break;
-   479 case 48:
-   480 keyString = "Num 0";
-   481 break;
-   482 case 49:
-   483 keyString = "Num 1";
-   484 break;
-   485 case 50:
-   486 keyString = "Num 2";
-   487 break;
-   488 case 51:
-   489 keyString = "Num 3";
-   490 break;
-   491 case 52:
-   492 keyString = "Num 4";
-   493 break;
-   494 case 53:
-   495 keyString = "Num 5";
-   496 break;
-   497 case 54:
-   498 keyString = "Num 6";
-   499 break;
-   500 case 55:
-   501 keyString = "Num 7";
-   502 break;
-   503 case 56:
-   504 keyString = "Num 8";
-   505 break;
-   506 case 57:
-   507 keyString = "Num 9";
-   508 break;
-   509 case 65:
-   510 keyString = "A";
-   511 break;
-   512 case 66:
-   513 keyString = "B";
-   514 break;
-   515 case 67:
-   516 keyString = "C";
-   517 break;
-   518 case 68:
-   519 keyString = "D";
-   520 break;
-   521 case 69:
-   522 keyString = "E";
-   523 break;
-   524 case 70:
-   525 keyString = "F";
-   526 break;
-   527 case 71:
-   528 keyString = "G";
-   529 break;
-   530 case 72:
-   531 keyString = "H";
-   532 break;
-   533 case 73:
-   534 keyString = "I";
-   535 break;
-   536 case 74:
-   537 keyString = "J";
-   538 break;
-   539 case 75:
-   540 keyString = "K";
-   541 break;
-   542 case 76:
-   543 keyString = "L";
-   544 break;
-   545 case 77:
-   546 keyString = "M";
-   547 break;
-   548 case 78:
-   549 keyString = "N";
-   550 break;
-   551 case 79:
-   552 keyString = "O";
-   553 break;
-   554 case 80:
-   555 keyString = "P";
-   556 break;
-   557 case 81:
-   558 keyString = "Q";
-   559 break;
-   560 case 82:
-   561 keyString = "R";
-   562 break;
-   563 case 83:
-   564 keyString = "S";
-   565 break;
-   566 case 84:
-   567 keyString = "T";
-   568 break;
-   569 case 85:
-   570 keyString = "U";
-   571 break;
-   572 case 86:
-   573 keyString = "V";
-   574 break;
-   575 case 87:
-   576 keyString = "W";
-   577 break;
-   578 case 88:
-   579 keyString = "X";
-   580 break;
-   581 case 89:
-   582 keyString = "Y";
-   583 break;
-   584 case 90:
-   585 keyString = "Z";
-   586 break;
-   587 case 91:
-   588 keyString = "Windows Left";
-   589 break;
-   590 case 92:
-   591 keyString = "Windows Right";
-   592 break;
-   593 case 93:
-   594 keyString = "Application";
-   595 break;
-   596 case 95:
-   597 keyString = "Sleep";
-   598 break;
-   599 case 96:
-   600 keyString = "NumPad 0";
-   601 break;
-   602 case 97:
-   603 keyString = "NumPad 1";
-   604 break;
-   605 case 98:
-   606 keyString = "NumPad 2";
-   607 break;
-   608 case 99:
-   609 keyString = "NumPad 3";
-   610 break;
-   611 case 100:
-   612 keyString = "NumPad 4";
-   613 break;
-   614 case 101:
-   615 keyString = "NumPad 5";
-   616 break;
-   617 case 102:
-   618 keyString = "NumPad 6";
-   619 break;
-   620 case 103:
-   621 keyString = "NumPad 7";
-   622 break;
-   623 case 104:
-   624 keyString = "NumPad 8";
-   625 break;
-   626 case 105:
-   627 keyString = "NumPad 9";
-   628 break;
-   629 case 106:
-   630 keyString = "NumPad *";
-   631 break;
-   632 case 107:
-   633 keyString = "NumPad +";
-   634 break;
-   635 case 108:
-   636 keyString = "NumPad .";
-   637 break;
-   638 case 109:
-   639 keyString = "NumPad -";
-   640 break;
-   641 case 110:
-   642 keyString = "NumPad ,";
-   643 break;
-   644 case 111:
-   645 keyString = "NumPad /";
-   646 break;
-   647 case 112:
-   648 keyString = "F1";
-   649 break;
-   650 case 113:
-   651 keyString = "F2";
-   652 break;
-   653 case 114:
-   654 keyString = "F3";
-   655 break;
-   656 case 115:
-   657 keyString = "F4";
-   658 break;
-   659 case 116:
-   660 keyString = "F5";
-   661 break;
-   662 case 117:
-   663 keyString = "F6";
-   664 break;
-   665 case 118:
-   666 keyString = "F7";
-   667 break;
-   668 case 119:
-   669 keyString = "F8";
-   670 break;
-   671 case 120:
-   672 keyString = "F9";
-   673 break;
-   674 case 121:
-   675 keyString = "F10";
-   676 break;
-   677 case 122:
-   678 keyString = "F11";
-   679 break;
-   680 case 123:
-   681 keyString = "F12";
-   682 break;
-   683 case 124:
-   684 keyString = "F13";
-   685 break;
-   686 case 125:
-   687 keyString = "F14";
-   688 break;
-   689 case 126:
-   690 keyString = "F15";
-   691 break;
-   692 case 127:
-   693 keyString = "F16";
-   694 break;
-   695 case 128:
-   696 keyString = "F17";
-   697 break;
-   698 case 129:
-   699 keyString = "F18";
-   700 break;
-   701 case 130:
-   702 keyString = "F19";
-   703 break;
-   704 case 131:
-   705 keyString = "F20";
-   706 break;
-   707 case 132:
-   708 keyString = "F21";
-   709 break;
-   710 case 133:
-   711 keyString = "F22";
-   712 break;
-   713 case 134:
-   714 keyString = "F23";
-   715 break;
-   716 case 135:
-   717 keyString = "F24";
-   718 break;
-   719 case 144:
-   720 keyString = "Num lock";
-   721 break;
-   722 case 145:
-   723 keyString = "Scroll";
-   724 break;
-   725 case 160:
-   726 keyString = "Shift Left";
-   727 break;
-   728 case 161:
-   729 keyString = "Shift Right";
-   730 break;
-   731 case 162:
-   732 keyString = "Ctrl Left";
-   733 break;
-   734 case 163:
-   735 keyString = "Ctrl Right";
-   736 break;
-   737 case 164:
-   738 keyString = "Menu Left";
-   739 break;
-   740 case 165:
-   741 keyString = "Menu Right";
-   742 break;
-   743 default:
-   744 break;
-   745 }
-   746  
-   747 return keyString;
-   748 }
-   749  
-   750 private void HelmRemoveButtonClick(object sender, EventArgs e)
-   751 {
-   752 var helmBinding = (HelmBinding)HelmBindingsListBox.SelectedItem;
-   753 if (helmBinding == null)
-   754 return;
-   755  
-   756 HelmBindings.Bindings.Remove(helmBinding);
-   757 HelmBindingSource.ResetBindings(false);
226 } 758 }
227 } 759 }