~ubuntu-branches/ubuntu/saucy/lazarus/saucy

« back to all changes in this revision

Viewing changes to lcl/interfaces/cocoa/mackeycodes.inc

  • Committer: Package Import Robot
  • Author(s): Paul Gevers, Abou Al Montacir, Bart Martens, Paul Gevers
  • Date: 2013-06-08 14:12:17 UTC
  • mfrom: (1.1.9)
  • Revision ID: package-import@ubuntu.com-20130608141217-7k0cy9id8ifcnutc
Tags: 1.0.8+dfsg-1
[ Abou Al Montacir ]
* New upstream major release and multiple maintenace release offering many
  fixes and new features marking a new milestone for the Lazarus development
  and its stability level.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_fixes_branch
* LCL changes:
  - LCL is now a normal package.
      + Platform independent parts of the LCL are now in the package LCLBase
      + LCL is automatically recompiled when switching the target platform,
        unless pre-compiled binaries for this target are already installed.
      + No impact on existing projects.
      + Linker options needed by LCL are no more added to projects that do
        not use the LCL package.
  - Minor changes in LCL basic classes behaviour
      + TCustomForm.Create raises an exception if a form resource is not
        found.
      + TNotebook and TPage: a new implementation of these classes was added.
      + TDBNavigator: It is now possible to have focusable buttons by setting
        Options = [navFocusableButtons] and TabStop = True, useful for
        accessibility and for devices with neither mouse nor touch screen.
      + Names of TControlBorderSpacing.GetSideSpace and GetSpace were swapped
        and are now consistent. GetSideSpace = Around + GetSpace.
      + TForm.WindowState=wsFullscreen was added
      + TCanvas.TextFitInfo was added to calculate how many characters will
        fit into a specified Width. Useful for word-wrapping calculations.
      + TControl.GetColorResolvingParent and
        TControl.GetRGBColorResolvingParent were added, simplifying the work
        to obtain the final color of the control while resolving clDefault
        and the ParentColor.
      + LCLIntf.GetTextExtentExPoint now has a good default implementation
        which works in any platform not providing a specific implementation.
        However, Widgetset specific implementation is better, when available.
      + TTabControl was reorganized. Now it has the correct class hierarchy
        and inherits from TCustomTabControl as it should.
  - New unit in the LCL:
      + lazdialogs.pas: adds non-native versions of various native dialogs,
        for example TLazOpenDialog, TLazSaveDialog, TLazSelectDirectoryDialog.
        It is used by widgetsets which either do not have a native dialog, or
        do not wish to use it because it is limited. These dialogs can also be
        used by user applications directly.
      + lazdeviceapis.pas: offers an interface to more hardware devices such
        as the accelerometer, GPS, etc. See LazDeviceAPIs
      + lazcanvas.pas: provides a TFPImageCanvas descendent implementing
        drawing in a LCL-compatible way, but 100% in Pascal.
      + lazregions.pas. LazRegions is a wholly Pascal implementation of
        regions for canvas clipping, event clipping, finding in which control
        of a region tree one an event should reach, for drawing polygons, etc.
      + customdrawncontrols.pas, customdrawndrawers.pas,
        customdrawn_common.pas, customdrawn_android.pas and
        customdrawn_winxp.pas: are the Lazarus Custom Drawn Controls -controls
        which imitate the standard LCL ones, but with the difference that they
        are non-native and support skinning.
  - New APIs added to the LCL to improve support of accessibility software
    such as screen readers.
* IDE changes:
  - Many improvments.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/New_IDE_features_since#v1.0_.282012-08-29.29
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes#IDE_Changes
* Debugger / Editor changes:
  - Added pascal sources and breakpoints to the disassembler
  - Added threads dialog.
* Components changes:
  - TAChart: many fixes and new features
  - CodeTool: support Delphi style generics and new syntax extensions.
  - AggPas: removed to honor free licencing. (Closes: Bug#708695)
[Bart Martens]
* New debian/watch file fixing issues with upstream RC release.
[Abou Al Montacir]
* Avoid changing files in .pc hidden directory, these are used by quilt for
  internal purpose and could lead to surprises during build.
[Paul Gevers]
* Updated get-orig-source target and it compinion script orig-tar.sh so that they
  repack the source file, allowing bug 708695 to be fixed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
(*
 
2
About Mac Key codes:
 
3
unfortunately, mac key codes are keyboard specific:
 
4
that is, there is no universal VK_A, but every keyboard has its code for VK_A
 
5
Key codes depend on physical key position on the keyboard: considering a
 
6
QWERTY keyboard and an AZERTY one, keycode(Q) of first one = keycode(A) of
 
7
the second one, and so on.
 
8
For "printable" keys we can rely on kEventParamKeyMacCharCodes and
 
9
kEventParamKeyUnicodes event parameters to obtain an ascii/unicode value
 
10
that we can translate to the appropriate VK_ code
 
11
For non printable keys (Function, ins, arrow and so on...) we use the raw
 
12
keycodes, since it looks like they are constant across all keyboards
 
13
 
 
14
So, here are constants for non-printable keys (MK means "Mac Key").
 
15
These constants were extracted using KeyCodes program by Peter Maurer
 
16
(http://www.petermaurer.de/nasi.php?section=keycodes)
 
17
 
 
18
Some keys were taken from the ancient "Macintosh Toolbox Essentials", page 87
 
19
http://developer.apple.com/documentation/mac/pdf/MacintoshToolboxEssentials.pdf
 
20
*)
 
21
 
 
22
const
 
23
  MK_ENTER     = $24;
 
24
  MK_SPACE     = $31;
 
25
  MK_ESC       = $35;
 
26
  MK_F1        = $7A;
 
27
  MK_F2        = $78;
 
28
  MK_F3        = $63;
 
29
  MK_F4        = $76;
 
30
  MK_F5        = $60;
 
31
  MK_F6        = $61;
 
32
  MK_F7        = $62;
 
33
  MK_F8        = $64;
 
34
  MK_F9        = $65;
 
35
  MK_F10       = $6D;
 
36
  MK_F11       = $67;
 
37
  MK_F12       = $6F;
 
38
  MK_F13       = $69; MK_PRNSCR  = MK_F13;  //Print screen = F13
 
39
  MK_F14       = $6B; MK_SCRLOCK = MK_F14;  //Scroll Lock = F14
 
40
  MK_F15       = $71; MK_PAUSE   = MK_F15;  //Pause = F15
 
41
  MK_POWER     = $7F7F;
 
42
  MK_TAB       = $30;
 
43
  MK_INS       = $72; MK_HELP    = MK_INS;  //old macs call this key "help"
 
44
  MK_DEL       = $75;
 
45
  MK_HOME      = $73;
 
46
  MK_END       = $77;
 
47
  MK_PAGUP     = $74;
 
48
  MK_PAGDN     = $79;
 
49
  MK_UP        = $7E;
 
50
  MK_DOWN      = $7D;
 
51
  MK_LEFT      = $7B;
 
52
  MK_RIGHT     = $7C;
 
53
  MK_NUMLOCK   = $47;
 
54
  MK_NUMPAD0   = $52;
 
55
  MK_NUMPAD1   = $53;
 
56
  MK_NUMPAD2   = $54;
 
57
  MK_NUMPAD3   = $55;
 
58
  MK_NUMPAD4   = $56;
 
59
  MK_NUMPAD5   = $57;
 
60
  MK_NUMPAD6   = $58;
 
61
  MK_NUMPAD7   = $59;
 
62
  MK_NUMPAD8   = $5b;
 
63
  MK_NUMPAD9   = $5c;
 
64
  MK_PADEQUALS = $51; //only present in old mac keyboards?
 
65
  MK_PADDIV    = $4B;
 
66
  MK_PADMULT   = $43;
 
67
  MK_PADSUB    = $4E;
 
68
  MK_PADADD    = $45;
 
69
  MK_PADDEC    = $41;
 
70
  MK_PADENTER  = $4C; //enter on numeric keypad
 
71
  MK_BACKSPACE = $33;
 
72
  MK_CAPSLOCK  = $39;
 
73
 
 
74
 
 
75
//Modifiers codes - you'll never get these directly
 
76
 
 
77
  MK_SHIFTKEY  = $38;
 
78
  MK_CTRL      = $3B;
 
79
  MK_ALT       = $3A; MK_OPTION = MK_ALT;
 
80
  MK_COMMAND   = $37; MK_APPLE  = MK_COMMAND;
 
81
 
 
82
  MK_TILDE        = 50; // `/~ key
 
83
  MK_MINUS        = 27; // -/_ key
 
84
  MK_EQUAL        = 24; // =/+ key
 
85
  MK_BACKSLASH    = 42; // \ | key
 
86
  MK_LEFTBRACKET  = 33; // [ { key
 
87
  MK_RIGHTBRACKET = 30; // ] } key
 
88
  MK_SEMICOLON    = 41; // ; : key
 
89
  MK_QUOTE        = 39; // ' " key
 
90
  MK_COMMA        = 43; // , < key
 
91
  MK_PERIOD       = 47; // . > key
 
92
  MK_SLASH        = 44; // / ? key
 
93