- 001
- 002
- 003
- 004
- 005
- 006
- 007
- 008
- 009
- 010
- 011
- 012
- 013
- 014
- 015
- 016
- 017
- 018
- 019
- 020
- 021
- 022
- 023
- 024
- 025
- 026
- 027
- 028
- 029
- 030
- 031
- 032
- 033
- 034
- 035
- 036
- 037
- 038
- 039
- 040
- 041
- 042
- 043
- 044
- 045
- 046
- 047
- 048
- 049
- 050
- 051
- 052
- 053
- 054
- 055
- 056
- 057
- 058
- 059
- 060
- 061
- 062
- 063
- 064
- 065
- 066
- 067
- 068
- 069
- 070
- 071
- 072
- 073
- 074
- 075
- 076
- 077
- 078
- 079
- 080
- 081
- 082
- 083
- 084
- 085
- 086
- 087
- 088
- 089
- 090
- 091
- 092
- 093
- 094
- 095
- 096
- 097
- 098
- 099
- 100
/// <summary>
/// Преобразование системных наименований клавиш в "понятные пользователю"
/// </summary>
/// <param name="key">Нажатая системная клавиша</param>
/// <returns>Понятное представление</returns>
public static string ReplaceKeyCode(System.Windows.Forms.Keys key)
{
switch (key)
{
case Keys.OemQuestion: return "'?'";
case Keys.OemOpenBrackets: return "'{'";
case Keys.Oemtilde: return "'~'";
case Keys.Next: return "PageDown";
}
switch (key)
{
case Keys.A: return "A";
case Keys.Add: return "Num'+'";
case Keys.Alt: return "Alt";
case Keys.B: return "B";
case Keys.Back: return "Backspace";
case Keys.C: return "C";
case Keys.Cancel: return "Cancel";
case Keys.Clear: return "Clear";
case Keys.ControlKey: return "Ctrl";
case Keys.D: return "D";
case Keys.D0: return "0"; case Keys.D1: return "1"; case Keys.D2: return "2"; case Keys.D3: return "3";
case Keys.D4: return "4"; case Keys.D5: return "5"; case Keys.D6: return "6"; case Keys.D7: return "7";
case Keys.D8: return "8"; case Keys.D9: return "9"; case Keys.Decimal: return "Num'.'";
case Keys.Delete: return "Delete";
case Keys.Divide: return "Num'/'";
case Keys.Down: return "Down";
case Keys.E: return "E";
case Keys.End: return "End";
case Keys.Escape: return "Esc";
case Keys.F: return "F";
case Keys.F1: return "F1";
case Keys.F10: return "F10";
case Keys.F11: return "F11";
case Keys.F12: return "F12";
case Keys.F2: return "F2";
case Keys.F3: return "F3";
case Keys.F4: return "F4";
case Keys.F5: return "F5";
case Keys.F6: return "F6";
case Keys.F7: return "F7";
case Keys.F8: return "F8";
case Keys.F9: return "F9";
case Keys.G: return "G";
case Keys.H: return "H";
case Keys.Home: return "Home";
case Keys.I: return "I";
case Keys.Insert: return "Insert";
case Keys.J: return "J";
case Keys.K: return "K";
case Keys.L: return "L";
case Keys.M: return "M";
case Keys.N: return "N";
case Keys.Next: return "Next";
case Keys.NumPad0: return "Num0";
case Keys.NumPad1: return "Num1";
case Keys.NumPad2: return "Num2";
case Keys.NumPad3: return "Num3";
case Keys.NumPad4: return "Num4";
case Keys.NumPad5: return "Num5";
case Keys.NumPad6: return "Num6";
case Keys.NumPad7: return "Num7";
case Keys.NumPad8: return "Num8";
case Keys.NumPad9: return "Num9";
case Keys.O: return "O";
case Keys.Oem1: return "';'";
case Keys.Oem5: return "'/'";
case Keys.Oem6: return "'{'";
case Keys.Oem7: return "\"";
case Keys.OemMinus: return "'-'";
case Keys.OemPeriod: return "'>'";
case Keys.Oemcomma: return "'<'";
case Keys.Oemplus: return "'+'";
case Keys.P: return "P";
case Keys.PageUp: return "PageUp";
case Keys.Q: return "Q";
case Keys.R: return "R";
case Keys.S: return "S";
case Keys.ShiftKey: return "Shift";
case Keys.Space: return "Space";
case Keys.Subtract: return "Num'-'";
case Keys.T: return "T";
case Keys.Tab: return "Tab";
case Keys.U: return "U";
case Keys.Up: return "Up";
case Keys.V: return "V";
case Keys.W: return "W";
case Keys.X: return "X";
case Keys.Y: return "Y";
case Keys.Z: return "Z";
case Keys.Menu: return "Alt";
case Keys.Multiply: return "Num'*'";
default: return string.Empty;
}
}
body90 02.03.2013 12:08 # +1
Lure Of Chaos 03.03.2013 13:45 # +1
vse_govno 04.03.2013 00:41 # −1
Lure Of Chaos 04.03.2013 00:43 # 0
3.14159265 18.03.2013 21:41 # 0
Скорее статических языков. Хотя тоже спорно. Всё-таки недостатки в голове писавшего.
>либо огромный свитч, либо мапа
ЛолШто? Ну напиши условие чтобы отсеять диапазоны с буквами, цыфрами.
А ну да, я забыл что уберязык от MS имеет LINQ, но не поддерживает range в операторе case. Но еще есть оператор If.
И добавь в мапу, только то что надо переопределить.
Lure Of Chaos 19.03.2013 02:17 # +1
попробую пояснить мысль. например, имеем на жабаскрипте\жуквери асинхронную последовательность действий, что-то вроде а красиво бы было эту хрень записать в последовательном олдскул виде но, видимо, мне не хватает мозгов знаний,опыта.
bormand 19.03.2013 06:04 # 0
bormand 19.03.2013 06:13 # 0
bormand 19.03.2013 06:34 # 0
roman-kashitsyn 19.03.2013 11:53 # +2
В Twisted есть абстракция Deferred: при срабатывании deferred вызывается цепочка коллбеков (вывод каждого коллбека скармливается следующему коллбеку в качестве аргумента), и если результатом очередного коллбека является Deferred, он отправляется в реактор, а текущий Deferred приостанавливается, добавляя функцию своего пробуждения в deferred, полученный из цепочки.
bormand 19.03.2013 12:14 # 0
roman-kashitsyn 19.03.2013 13:25 # 0
bormand 19.03.2013 15:21 # 0
Вот как раз статья, в которой показаны оба стиля - без yield, вполне реализуемый в js, и с yield: http://hackedbellini.org/development/writing-asynchronous-python-code-with-twisted-using-inlinecallbacks/.
А твистовские inlineCallbacks и deferredGenerator основаны именно на yield ;(
P.S. Или я в чем-то заблуждаюсь?
3.14159265 19.03.2013 15:44 # +1
3.14159265 19.03.2013 15:38 # 0
Оно практически в любой либе приделано, и в вездесущем жкуери давно есть.
roman-kashitsyn 19.03.2013 07:30 # 0
3.14159265 19.03.2013 15:35 # 0
Ведь по сути там используется именно этот функциональный принцип.
В общем луркай deffered / promices.
http://wiki.commonjs.org/wiki/Promises/A
ЗЫ Ну кстати вон Роман выше написал.
bormand 19.03.2013 15:44 # 0
Собственно этот promises это и есть язык поверх js, т.к. встроенные if, while и даже операторы толком поюзать уже не получится.
P.S. Кстати в последнем бусте появились модули context и coroutine, с которыми на крестах можно ваять не смотрящуюся как ебаное говно спагетти-код асинхронщину.
3.14159265 19.03.2013 15:48 # 0
Ну да. Императивное заменили на CPS со всеми вытекающими недостатками (громоздкость) и профитом (асинхронность, цепочки, чистота).
Зато не надо городить самому. Я пробовал. Не особо тривиально.
За yield я ответил выше. И вообще не пойму. Люр спрашивает за практическое решение на js и жкуери в частности, а вы ему суёте свой пухтон.
2 Люр
>$.ajax
Это уже сам по себе deffered-объект. Немного руками допилить и получится то что тебе нужно.
bormand 19.03.2013 15:57 # 0
А я в этом треде всего лишь утверждаю, что пухтонские методы в js не прокатят пока всеми браузерами не начнут поддерживаться yield'ы и генераторы.
А насчет практичности решения - ну придется горы функций из jquery заворачивать в промайсы, что не так уж и удобно и весело.
absolut 04.03.2013 05:52 # 0
Heisenberg 18.03.2013 15:40 # 0
guest 19.03.2013 15:58 # −3