This file is indexed.

/usr/share/doc/libglfw-dev/readme.html is in libglfw-dev 2.7.9-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>GLFW Readme File</title>
</head>

<body>

<h1>GLFW 2.7.9 source distribution</h1>

<ol>
 <li><a href="#intro">Introduction</a></li>
 <li><a href="#compiling">Compiling GLFW and the example programs</a></li>
 <li><a href="#installing">Installing GLFW</a></li>
 <li><a href="#using">Using GLFW</a></li>
 <li><a href="#changelog">Version history</a></li>
 <li><a href="#structure">Directory structure of the GLFW distribution</a></li>
 <li><a href="#contact">Contacting the project</a></li>
 <li><a href="#credits">Acknowledgements</a></li>
</ol>

<a name="intro"></a>
<h2>1. Introduction</h2>

<p>Welcome to version 2.7.9 of the GLFW library.  GLFW is a free, Open Source,
multi-platform library for OpenGL application development that provides a
powerful API for handling operating system specific tasks such as opening an
OpenGL window, reading keyboard, mouse, joystick and time input, creating
threads, and more.</p>

<p>GLFW 2.7 is expected to be the last major release of the 2.x series, with
most development now being done on what will become version 3.0.</p>

<p>This release adds fixes for multiple cursor motion bugs on Windows and fixes
support for the <code>LFLAGS</code> environment variable on OS X.</p>

<p>For a full list of changes, see the
<a href="#changelog">version history</a>.</p>


<a name="compiling"></a>
<h2>2. Compiling GLFW and the example programs</h2>

<p>A top level makefile can be found in the root directory of the GLFW
distribution that has been designed to work with several compilers. If you
simply enter the GLFW root directory in a shell and type <code>make</code> (or
<code>nmake</code>, <code>mingw32-make</code>, <code>gnumake</code>,
<code>gmake</code> or something else, depending on your development
envronment), and a list should appear with the currently supported options for
systems and compilers.</p>

<p>For example, one of the options is to compile GLFW for Windows using MinGW
and MSYS.  To do this, use:</p>

<blockquote><code>make win32-msys</code></blockquote>

<p>This will compile the GLFW static library and DLL as well as the supplied
example and test programs.</p>

<p>Currently supported compilers and systems are:</p>

<ul>
  <li>Microsoft Visual C++ 2008, 2010 and 2012</li>
  <li>MinGW with or without MSYS</li>
  <li>MinGW cross-compilation for Unix-like systems</li>
  <li>OpenWatcom for Windows</li>
  <li>Unix or Unix-like systems running the X Window System</li>
  <li>Apple GCC or Clang on Mac OS X</li>
</ul>

<p>There are also project files available for Microsoft Visual C++ 2008,
2010 and 2012 in the <code>support/msvc90</code>,
<code>support/msvc100</code> and <code>support/msvc110</code> directories.</p>

<p>If your compiler/system is not in the list, you may have to create new
makefiles in the <code>lib\win32</code>, <code>lib/x11</code> or
<code>lib/cocoa</code> directory, and in the <code>examples</code> directory.
If you encounter any problems using, please use the
<a href="http://sourceforge.net/projects/glfw/forums/forum/247562">support forum</a>.
If you encounter any bugs, please submit an issue to the
<a href="https://github.com/glfw/glfw-legacy/issues">issue tracker</a>. We would
like to support as many systems as possible, so if you had to make any
modifications or additions to the source and/or makefiles in order to make GLFW
compile successfully, we would very much like to know what you had to do.</p>


<h3>2.1 Microsoft Windows</h3>

<p>When building GLFW as a DLL (dynamic link library), all compilation units
need to have the <code>GLFW_BUILD_DLL</code> macro defined.  All build methods
listed below already does this, but you need to do it yourself if you are
making a custom build.  Without this macro, the GLFW DLL will not export
functions correctly and code calling the DLL will be incorrectly generated.</p>

<h4>2.1.1 Microsoft Visual C++</h4>

<p>Project files for both the static and dynamic versions of the GLFW library
are provided in the <code>support/msvc90</code>, <code>support/msvc100</code>
and <code>support/msvc110</code> directories.</p>


<h4>2.1.2 MinGW on Windows</h4>

<p>GLFW can be compiled using only
<a href="http://www.mingw.org/">MinGW</a>.  Open a Windows command prompt,
enter the root directory of the GLFW source distribution and use the
<code>win32-mingw</code> target:</p>

<blockquote><code>mingw32-make win32-mingw</code></blockquote>


<h4>2.1.3 MSYS and MinGW on Windows</h4>

<p>If you have both <a href="http://www.mingw.org/">MinGW and MSYS</a>
installed, a better alternative is to use the built-in MSYS support.  Open an
MSYS shell, enter the root directory of the GLFW source distribution and use
the <code>win32-msys</code> target:</p>

<blockquote><code>mingw32-make win32-msys</code></blockquote>


<h4>2.1.4 Cygwin's MinGW on Windows</h4>

<p>GLFW can be cross-compiled to native Win32 code using the MinGW packages in
<a href="http://www.cygwin.com/">Cygwin</a> (the newer <code>mingw-</code>
packages, not the older <code>gcc-mingw-</code> ones).  Open a Cygwin shell,
enter the root directory of the GLFW source distribution and use the
<code>cross-mgw</code> target:</p>                                       

<blockquote><code>env TARGET=i686-pc-mingw32- make cross-mgw</code></blockquote>

<p>This results in binaries that are functionally identical to those produced
by the other MinGW variants, i.e. they will use <code>msvcrt.dll</code> as libc
and will have no dependency on Cygwin.</p>


<h4>2.1.5 MinGW cross-compilation for Unix or Unix-like systems</h4>

<p>Some Unix-like systems have a MinGW cross-compilation package for compiling
native Win32 binaries, for example the <code>mingw32</code> package on Debian
GNU/Linux and its derivatives.  You can use this to build Win32 binaries of
GLFW and all examples without having to run Microsoft Windows or even Wine.

Use the regular make program with the <code>cross-mgw</code> target.  You may
also need to adjust the <code>TARGET</code> environment variable, depending on
how packagers named the binaries.</p>


<h4>2.1.6 OpenWatcom on Windows</h4>

<p>GLFW can be compiled using <a href="http://www.openwatcom.org/">OpenWatcom</a>
for Windows by running the following in the GLFW root directory:</p>

<blockquote><code>nmake MAKE=nmake win32-ow</code></blockquote>

<p>Also make sure that you have all your environment variables set up
correctly.  It is the default option when installing OpenWatcom to permanently
set up all the required environment variables.  If <code>nmake</code> is
unavailable, you probably have to run <code>WATCOM\setvars.bat</code> from the
command prompt first, where <code>WATCOM</code> is the directory in which you
installed OpenWatcom (e.g. <code>C:\Watcom</code>).</p>


<h3>2.2 X11 on Unix-like systems</h3>

<p>Compiler and link library capabilities are auto-detected with a script
called <code>compile.sh</code>.  Note that you don't need to run this script
yourself, as it is run automatically by the top-level makefile when necessary.
It has been tested on FreeBSD and many Linux distributions and should hopefully
run correctly on the majority of available Unix-like systems.</p>

<p>If you wish to customize the compilation or link flags for GLFW, set the
<code>CFLAGS</code> or <code>LFLAGS</code> environment variables as needed
before building the library.  These flags will be picked up and added to the
generated <code>Makefile.x11</code> files.</p>

<p>If you wish to use a certain compiler, set the <code>CC</code> environment
variable before building the library.  This will also be stored in the
generated <code>Makefile.x11</code> files.</p>

<p>If you have already configured your source tree, you can reset it to an
un-configured state by running make with the <code>x11-dist-clean</code>
target.</p>

<p>If you are making your own build setup for GLFW, you need to be aware of the
various preprocessor symbols that the bundled makefiles use to enable various
features and code paths.  They need to be defined either on the command-line or
at the very beginning for each GLFW source file with an <code>x11_</code>
prefix.</p>

<p>Note that the X11 port of GLFW compiles on Mac OS X, but is currently unable
to open a window when running against X11.app, due to Apple's incomplete
implementation of GLXFBConfigs.</p>

<table border=1>
  <tr>
    <td>_GLFW_USE_LINUX_JOYSTICKS</td>
    <td>Use the Linux joystick API. This is the only supported API for the X11
        port. Without it, joystick input will be unavailable.</td>
  </tr>
  <tr>
    <td>_GLFW_HAS_XRANDR</td>
    <td>Use the X Resize and Rotate extension for display mode changes. This is
        the preferred method.</td>
  </tr>
  <tr>
    <td>_GLFW_HAS_XF86VIDMODE</td>
    <td>Use the Xf86VidMode extension for display mode changes. This is a
        fall-back method.</td>
  </tr>
  <tr>
    <td>_GLFW_HAS_PTHREAD</td>
    <td>Use the POSIX Threads API for threading. This is the only supported API
        for the X11 port. Without it, threading will be disabled.</td>
  </tr>
  <tr>
    <td>_GLFW_HAS_SCHED_YIELD</td>
    <td>Call the <code>sched_yield</code> function inside <code>glfwPlatformSleep</code>.</td>
  </tr>
  <tr>
    <td>_GLFW_HAS_GLXGETPROCADDRESS</td>
    <td>Use the <code>glXGetProcAddress</code> function to retrieve OpenGL
        entry point addresses.</td>
  </tr>
  <tr>
    <td>_GLFW_HAS_GLXGETPROCADDRESSARB</td>
    <td>Use the <code>glXGetProcAddressARB</code> function to retrieve OpenGL
        entry point addresses.</td>
  </tr>
  <tr>
    <td>_GLFW_HAS_GLXGETPROCADDRESSEXT</td>
    <td>Use the <code>glXGetProcAddressEXT</code> function to retrieve OpenGL
        entry point addresses.</td>
  </tr>
  <tr>
    <td>_GLFW_HAS_DLOPEN</td>
    <td>Use <code>dlopen</code> on the OpenGL shared library to retrieve OpenGL
        entry point addresses.  This is a fall-back method.</td>
  </tr>
  <tr>
    <td>_GLFW_HAS_SYSCONF</td>
    <td>Use the sysconf API to find the number of processors.</td>
  </tr>
  <tr>
    <td>_GLFW_HAS_SYSCTL</td>
    <td>Use the sysctl API to find the number of processors.</td>
  </tr>
</table>


<h3>2.3 Apple GCC or Clang on Mac OS X</h3>

<p>To compile GLFW for Mac OS X, you will need to have installed the Developer
Tools.  A version of these tools can be found on your Mac OS X disc, with newer
versions available from the Apple Developer Connection site.  When they are
installed, simply open Terminal and go to the root GLFW directory.  From there,
you can build the library and all the examples by running make with the
appropriate target, i.e.:</p>

<blockquote><code>make cocoa</code></blockquote>

<p>The default compiler for the Cocoa port of GLFW is <code>cc</code>, which as
of Mac OS X 10.6 still defaults to GCC, but you can override this using the
<code>CC</code> environment variable.  For example, to build GLFW using Clang,
use:</p>

<blockquote><code>env CC=clang make cocoa</code></blockquote>

<p>There is also a deprecated Carbon port of GLFW, which is limited to
32-bit code and only runs well on Mac OS X 10.3 and 10.4.  However, if you
need to build applications for those systems, it is a better choice than
the Cocoa port, which uses APIs unavailable on systems older than 10.5.</p>


<a name="installing"></a>
<h2>3. Installing GLFW</h2>

<h3>3.1 Windows</h3>

<p>After compiling GLFW with MinGW or Cygwin, three files of interest should
have appeared in the <code>lib\win32</code> directory. They are:
<code>libglfw.a</code> (the static link version of GLFW), <code>glfw.dll</code>
(the DLL version of GLFW) and <code>libglfwdll.a</code> (the DLL import
library).</p>

<p>To install GLFW on Cygwin (and possibly MinGW), run make with the
<code>cygwin-install</code> target.  This will generate the pkg-config file and
copy it, the header file and the library to the correct locations of your
Cygwin installation. If you wish to change the installation location from its
default, set the desired prefix path with the environment variable
<code>PREFIX</code>.</p>

<p>If you used Borland C++ Builder, LCC-Win32, Microsoft Visual C++ or
OpenWatcom, the files are named <code>glfw.lib</code> (the static link version
of GLFW), <code>glfw.dll</code> (the DLL version of GLFW) and
<code>glfwdll.lib</code> (the DLL import library).</p>

<p>The static link library and the DLL import library should be copied to your
compiler's <code>LIB</code> directory (where all other link libraries are
located).  The DLL can be copied either to your Windows system directory (where
opengl32.dll is located), or to the project directory of your GLFW-based
projects (where you place your executable files).</p>

<p>You should also copy the GLFW include file, <code>include\GL\glfw.h</code>,
to the <code>GL</code> directory of your compiler's include directory (i.e.
where <code>gl.h</code>, <code>glu.h</code> etc. are located).</p>


<h3>3.2 Unix</h3>

<p>After compiling GLFW, three files named <code>libglfw.pc.in</code>,
<code>libglfw.a</code> and <code>libglfw.so</code> should have appeared in the
<code>lib/x11</code> directory. This is the pkg-config template file, the GLFW
static link library and the GLFW shared library, respectively.</p>

<p>To install GLFW onto your system, run make as root with the
<code>x11-install</code> make target. This will install the pkg-config file, the
static library and the header. By default, the files will be installed under
<code>/usr/local</code>. If you wish to install to a different location, set the
<code>PREFIX</code> environment variable appropriately when running make.</p>

<p>Note that the shared library is not installed by default, as you really
should think twice before using it. GLFW is very small and shared library
distribution on Unix outside of packaging systems is quite tricky. The GLFW
license also allows static linking without requiring you to share your
code.</p>

<p>However, if you're a *nix distribution packager, use a language binding or
for some other reason wish to install the shared library along with the rest,
run make with the <code>x11-dist-install</code> target.</p>


<h3>3.4 Mac OS X</h3>

<p>After compiling GLFW, three files named <code>libglfw.pc.in</code>,
<code>libglfw.a</code> and <code>libglfw.dylib</code> should appear in the
<code>lib/cocoa</code> directory. This is the pkg-config template file, the GLFW
static link library and the GLFW dynamic library, respectively.</p>

<p>To install GLFW onto your system, run make with sudo and the
<code>cocoa-install</code> build target, i.e.:</p>

<blockquote><code>sudo make cocoa-install</code></blockquote>

<p>This will install the pkg-config file, the static library and the header. By
default, the files will be installed under <code>/usr/local</code>. If you wish
to install to a different location, set the environment variable
<code>PREFIX</code> appropriately when running make.</p>

<p>Note that the shared library is not installed by default, as you really
should think twice before using it. GLFW is very small and very suitable for
static linking. The GLFW license also allows static linking without requiring
your to share your code.</p>

<a name="using"></a>
<h2>4. Using GLFW</h2>

<p>There are two aspects to using GLFW:</p>

<ol>
  <li>How does the GLFW API work</li>
  <li>How to compile programs that use GLFW</li>
</ol>

<p>The first point is covered in the
<a href="docs/UsersGuide.pdf">GLFW Users Guide</a> and the
<a href="docs/Reference.pdf">GLFW Reference Manual</a>, and we suggest that you
read at least the Users Guide, since it's a good introduction to the GLFW
API.</p>

<p>Designing and compiling programs that use GLFW is not very difficult.
A few rules for successfully designing GLFW-based programs are presented
in the following sections.</p>

<h3>4.1 Include the GLFW header file</h3>

<p>In the files of your program where you use OpenGL or GLFW, you should
include the <code>GL/glfw.h</code> header file, i.e.:</p>

<blockquote><code>#include &lt;GL/glfw.h&gt;</code></blockquote>

<p>This defines all the constants, types and function prototypes of the GLFW
API.  It also includes the OpenGL and GLU header files, and defines all the
necessary constants and types that are necessary for these headers to work on
that particular platform.</p>

<p>For example, under Microsoft Windows you are normally required to include
<code>windows.h</code> before you include <code>GL/gl.h</code>.  This would
however make your code dependent on the Windows platform, or at least require
your program to check which platform it is being compiled on.</p>

<p>The GLFW header file takes care of this for you, not by including
<code>windows.h</code>, but rather by itself duplicating the necessary parts of
it.  This way, the namespace won't be cluttered by the entire Windows API.</p>

<p>By default, the regular <code>gl.h</code> OpenGL header is included. If you
wish to include the draft <code>gl3.h</code> header instead, define
<code>GLFW_INCLUDE_GL3</code> before the inclusion of the GLFW header.</p>

<p>By default, the <code>glu.h</code> GLU header is included.  If you wish to
avoid this, define <code>GLFW_NO_GLU</code> before the inclusion of the GLFW
header.</p>

<p>In other words:
<ul>
  <li>Do <em>not</em> include <code>gl.h</code> or <code>glu.h</code>
      yourself, as GLFW does this for you</li>
  <li>Do <em>not</em> include <code>windows.h</code> unless you need
      direct access to the Windows API</li>
  <li>If you <em>do</em> include <code>windows.h</code>, do it
      <em>before</em> including <code>GL/glfw.h</code>.  The GLFW header will
      detect this and act appropriately.</li>
</ul>

<p>Also note that if you are using an OpenGL extension loading library such as
<a href="http://glew.sourceforge.net/">GLEW</a>, you should include the GLEW
header <em>before</em> the GLFW one.  The GLEW header defines macros that
disable any <code>gl.h</code> that the GLFW header includes and GLEW will work
as expected.</p>



<h3>4.2 Link with the right libraries</h3>

<h4>4.2.1 Windows static library</h4>

<p>If you link with the static version of GLFW, it is also necessary to
link with some system libraries that GLFW uses.</p>

<p>When linking a program under Windows that uses the static version of GLFW,
you must also link with the following libraries: <code>opengl32</code>,
<code>user32</code> and <code>kernel32</code>. Some of these libraries may be
linked with by default by your compiler. In the table below you can see the
minimum required link options for each supported Windows compiler (you may want
to add other libraries as well, such as <code>glu32</code>):</p>

<table border=1>
  <tr>
    <td><b>Compiler</b></td>
    <td><b>Link options</b></td>
  </tr>
  <tr>
    <td>Borland C++ Builder</td>
    <td><code>glfw.lib opengl32.lib</code></td>
  </tr>
  <tr>
    <td>Cygwin</td>
    <td><i>See Unix static library below</i></td>
  </tr>
  <tr>
    <td>LCC-Win32</td>
    <td><code>glfw.lib opengl32.lib</code></td>
  </tr>
  <tr>
    <td>Microsoft Visual C++</td>
    <td><code>glfw.lib opengl32.lib</code></td>
  </tr>
  <tr>
    <td>MinGW and MinGW-w64</td>
    <td><code>-lglfw -lopengl32</code></td>
  </tr>
  <tr>
    <td>OpenWatcom</td>
    <td><code>glfw.lib opengl32.lib user32.lib</code></td>
  </tr>
</table>


<h4>4.2.2 Windows DLL</h4>

<p>To compile a program that uses the DLL version of GLFW, you need to
define the <code>GLFW_DLL</code> constant. This can either be done with a
compiler switch, typically by adding <code>-DGLFW_DLL</code> to the list of
compiler options. You can also do it by adding the following line to all your
source files <b>before</b> including the GLFW header file:</p>

<blockquote><code>#define GLFW_DLL</code></blockquote>

<p>When linking a program under Windows that uses the DLL version of GLFW,
the only library you need to link with for GLFW to work is <code>glfwdll</code>.
In the table below you can see the minimum required link options for each
supported Windows compiler (you may want to add other libraries as well,
such as <code>opengl32</code> and <code>glu32</code>):</p>

<table border=1>
  <tr>
    <td><b>Compiler</b></td>
    <td><b>Link options</b></td>
  </tr>
  <tr>
    <td>Borland C++ Builder</td>
    <td><code>glfwdll.lib</code></td>
  </tr>
  <tr>
    <td>Cygwin</td>
    <td><code>-lglfwdll</code></td>
  </tr>
  <tr>
    <td>LCC-Win32</td>
    <td><code>glfwdll.lib</code></td>
  </tr>
  <tr>
    <td>Microsoft Visual C++</td>
    <td><code>glfwdll.lib</code></td>
  </tr>
  <tr>
    <td>MinGW and MinGW-w64</td>
    <td><code>-lglfwdll</code></td>
  </tr>
  <tr>
    <td>OpenWatcom</td>
    <td><code>glfwdll.lib</code></td>
  </tr>
</table>



<h4>4.2.3 Unix static library</h4>

<p>GLFW supports
<a href="http://pkgconfig.freedesktop.org/wiki/">pkg-config</a>,
and a <code>libglfw.pc</code> file is generated and installed when you install
the library.  For systems that do not provide pkg-config, you should look in
this file for the proper compile and link flags for your system, as determined
by compile.sh at compile time.</p>

<p>A typical compile and link command-line when using the GLFW static library
may look like this:</p>

<blockquote><code>cc `pkg-config --cflags libglfw` -o myprog myprog.c `pkg-config --static --libs libglfw`</code></blockquote>

<p>When using the GLFW sharedd library it may look like this:</p>

<blockquote><code>cc `pkg-config --cflags libglfw` -o myprog myprog.c `pkg-config --libs libglfw`</code></blockquote>

<p>If you use GLU functions in your program you should also add
<code>-lGLU</code> to your link flags.</p>



<h4>4.2.5 Mac OS X static library</h4>

<p>When compiling and linking a program under Mac OS X that uses GLFW, you
must also link with Cocoa and OpenGL frameworks.

<p>If you are using Xcode, you simply add the GLFW library <code>libglfw.a</code> and
these frameworks to your project. If, however, you are building your program
from the command-line, there are two methods for correctly linking your GLFW
program.</p>

<p>GLFW supports
<a href="http://pkgconfig.freedesktop.org/wiki/">pkg-config</a>, and a
libglfw.pc file is generated and installed when you install the library. You
can find pkg-config in most packaging systems, such as
<a href="http://www.finkproject.org/">Fink</a> and
<a href="http://www.macports.org/">MacPorts</a>, so if you have one of them
installed, simply install pkg-config. Once you have pkg-config available, the
command-line for compiling and linking your program is:</p>

<blockquote><code>cc `pkg-config --cflags libglfw` -o myprog myprog.c `pkg-config --libs libglfw`</code></blockquote>

<p>If you do not wish to use pkg-config, you will need to add the required
frameworks and libraries to your command-line using the <code>-l</code> and
<code>-framework</code> switches, i.e.:</p>

<blockquote><code>cc -o myprog myprog.c -lglfw -framework Cocoa -framework OpenGL -framework IOKit</code></blockquote>

<p>Note that you do not add the .framework extension to a framework when adding
it from the command-line.</p>

<p>These frameworks contain all OpenGL and GLU functions, so there is no need to
add additional libraries or frameworks when using GLU functionality. Also note
that even though your machine may have Unix-style OpenGL libraries, they are for
use with the X Window System, and will <em>not</em> work with the Mac OS X native
version of GLFW.</p>

<a name="changelog"></a>
<h2>5. Version history</h2>

<h3>v2.7.9</h3>
<ul>
  <li>[Cocoa] Bugfix: The dynamic library makefile rule did not use <code>LFLAGS</code></li>
  <li>[Win32] Bugfix: Enabling or disabling the cursor for an inactive window did nothing (backported from 3.0)</li>
  <li>[Win32] Bugfix: The locked cursor was re-centered when the window was inactive (backported from 3.0)</li>
  <li>[Win32] Bugfix: The cursor clip rectangle included the title bar (backported from 3.0)</li>
</ul>

<h3>v2.7.8</h3>
<ul>
  <li>[Win32] Bugfix: The temporary window was shown before being destroyed (backported from 3.0)</li>
  <li>[X11] Bugfix: Some function pointer types were named incorrectly</li>
  <li>[X11] Bugfix: The Mesa 9.x implementation of <code>GLX_ARB_create_context_profile</code> is broken in some revisions (backported from 3.0)</li>
</ul>

<h3>v2.7.7</h3>
<ul>
  <li>[Cocoa] Bugfix: The cursor positioning code used NSPoint in place of CGPoint</li>
  <li>[Cocoa] Bugfix: The detection of setRestorable: used the wrong selector signature</li>
  <li>[Cocoa] Bugfix: The test for whether <code>glfwTerminate</code> had been called from the main thread was missing</li>
  <li>[Win32] Added Visual C++ 2012 project files for the static library, DLL and all test and example programs</li>
  <li>[Win32] Bugfix: The <code>GLFW_OPENGL_DEBUG_CONTEXT</code> hint did not trigger context re-creation when <code>WGL_ARB_create_context</code> was available</li>
  <li>[Win32] Bugfix: The <code>GLFW_OPENGL_DEBUG_CONTEXT</code> window parameter was not set after debug context creation</li>
  <li>[X11] Added support for the <code>GLX_EXT_swap_control</code> and <code>GLX_MESA_swap_control</code> extensions as alternatives to <code>GLX_SGI_swap_control</code></li>
  <li>[X11] Bugfix: The <code>GLFW_OPENGL_DEBUG_CONTEXT</code> window parameter was not set after debug context creation</li>
  <li>[X11] Bugfix: The window size hints were not updated when calling <code>glfwSetWindowSize</code> on a non-resizable window</li>
  <li>[X11] Bugfix: The detected link flags for <code>clock_gettime</code> were not added to the pkg-config file</li>
</ul>

<h3>v2.7.6</h3>
<ul>
  <li>[Cocoa] Added joystick support (backported from 3.0)</li>
  <li>[Cocoa] Added new joystick test (backported from 3.0)</li>
  <li>[Cocoa] Bugfix: Fullscreen windows with OpenGL 3.2 core contexts failed to open</li>
  <li>[Cocoa] Bugfix: The cursor position was incorrectly rounded during conversion</li>
  <li>[Cocoa] Bugfix: Cursor positioning led to nonsensical results for fullscreen windows</li>
  <li>[Cocoa] Bugfix: The GLFW window was flagged as restorable</li>
  <li>[Win32] Bugfix: A test was missing for whether all available pixel formats had been disqualified</li>
  <li>[Win32] Bugfix: Entering locked cursor mode caused cursor movement to be reported to the mouse position callback</li>
  <li>[Win32] Bugfix: Setting the cursor position caused cursor movement to be reported to the mouse position callback</li>
  <li>[Win32] Bugfix: A .def file using <code>__stdcall</code> naming conventions was used for the 64-bit DLL on MinGW-w64</li>
  <li>[Win32] Bugfix: A superfluous link flag prevented tests and examples from being built for 64-bit on MinGW-w64</li>
  <li>[X11] Bugfix: The VirtualBox OpenGL implementation does not set the window bit for GLX framebuffer configs</li>
</ul>

<h3>v2.7.5</h3>
<ul>
  <li>[Cocoa] Replaced <code>NSDate</code> time source with <code>mach_absolute_time</code> (backported from 3.0)</li>
  <li>[Cocoa] Bugfix: A header needed for <code>MAXPATHLEN</code> on some systems was not included</li>
</ul>

<h3>v2.7.4</h3>
<ul>
  <li>[X11] Bugfix: The library containing <code>clock_gettime</code> was not detected</li>
  <li>[X11] Bugfix: The POSIX monotonic clock was detected using a non-POSIX macro</li>
  <li>[Cocoa] Replaced deprecated Core Graphics event suppression call</li>
  <li>[Cocoa] Bugfix: The <code>GLFW_WINDOW_NO_RESIZE</code> window parameter was always zero</li>
  <li>[Cocoa] Bugfix: <code>glfwInit</code> changed the current directory without a bundle resource directory (backported from 3.0)</li>
  <li>[Cocoa] Bugfix: <code>glfwInit</code> created a non-interactive menu bar (backported from 3.0)</li>
  <li>[Carbon] Bugfix: The <code>GLFW_WINDOW_NO_RESIZE</code> window parameter was always zero</li>
  <li>[Win32] Bugfix: The <code>GLFW_WINDOW_NO_RESIZE</code> window parameter was always zero</li>
</ul>

<h3>v2.7.3</h3>
<ul>
  <li>Added <code>GLFW_INCLUDE_GL3</code> macro for including the new <code>gl3.h</code> instead of <code>gl.h</code></li>
  <li>Bugfix: The returned desktop mode did not reflect the display mode as it was before the window was opened.</li>
  <li>Bugfix: The reference manual did not note that <code>glfwSetMousePosCallback</code> and <code>glfwSetMouseWheelCallback</code> called the new callback before returning</li>
  <li>[X11] Added the POSIX <code>CLOCK_MONOTONIC</code> time source as the preferred method (backported from 3.0)</li>
  <li>[X11] Bugfix: Added missing <code>Requires:</code> line to pkg-config file generation</li>
  <li>[X11] Bugfix: Threading link flags were discarded before pkg-config file generation</li>
  <li>[X11] Bugfix: A synchronization point necessary for jitter-free locked cursor mode was incorrectly removed</li>
  <li>[Cocoa] Added <code>cocoa-dist-install</code> install target, intended for packagers and language binding creators</li>
  <li>[Cocoa] Bugfix: Permitted requests for OpenGL 3.0 and 3.1 despite the 3.2 context being forward-compatible</li>
  <li>[Win32] Added Visual C++ 2010 project files for the GLFW tests and examples</li>
  <li>[Win32] Replaced Cygwin cross-compile support with MSYS support due to clearer separation between Cygwin and MSYS</li> 
  <li>[Win32] Bugfix: Alt+F4 hot key was not translated into <code>WM_CLOSE</code></li>
</ul>

<h3>v2.7.2</h3>
<ul>
  <li>Added library version check to dynamic linking test</li>
  <li>[Cocoa] Added support for OpenGL 3.2 core profile in 10.7 Lion and above</li>
  <li>[Cocoa] Made relevant <code>CFLAGS</code> overridable</li>
  <li>[Cocoa] Bugfix: The OpenGL framework pointer was not retrieved, making <code>glfwGetProcAddress</code> fail</li>
  <li>[Cocoa] Bugfix: The Cocoa layer was not notified that the application may be multithreaded</li>
</ul>

<h3>v2.7.1</h3>
<ul>
  <li>Clarified language in the Reference Manual concerning window hint resetting</li>
  <li>Bugfix: The OpenGL profile and forward-compatibility window parameters were not set</li>
  <li>Bugfix: The default OpenGL version in the <code>version</code> test was set to 1.1</li>
  <li>Bugfix: The FSAA test did not check for the availability of <code>GL_ARB_multisample</code></li>
  <li>Bugfix: The window could be left in a closed state but still be flagged as open</li>
  <li>Bugfix: <code>glfwGetWindowSize</code> did not check whether GLFW was initialized or whether the window was open</li>
  <li>[Cocoa] Bugfix: The loop condition for saving video modes used the wrong index variable</li>
  <li>[Cocoa] Bugfix: The iconified and active window states were not tracked</li>
  <li>[X11] Cleaned up depdendencies for <code>libglfw.pc</code> file</li>
  <li>[X11] Bugfix: The <code>dlopen</code> fallback method for <code>glfwGetProcAddress</code> had been broken by unrelated edits</li>
  <li>[X11] Bugfix: Calling <code>glXCreateContextAttribsARB</code> with an unavailable OpenGL version caused the application to terminate with a <code>BadMatch</code> Xlib error</li>
  <li>[X11] Bugfix: <code>GLFW_WINDOW_NO_RESIZE</code> was honored in fullscreen mode</li>
  <li>[Win32] Added Visual C++ 2010 project files for the GLFW DLL and static library to the <code>support/msvc100</code> directory</li>
  <li>[Win32] Enabled <code>_GLFW_NO_DLOAD_GDI32</code> and <code>_GLFW_NO_DLOAD_WINMM</code> for the DLL build</li>
  <li>[Win32] Bugfix: <code>compile.bat</code> used Unix-style line endings</li>
  <li>[Win32] Bugfix: The <code>WGLSWAPINTERVALEXT_T</code>, <code>WGLGETEXTENSIONSSTRINGARB_T</code> and <code>WGLGETEXTENSIONSSTRINGEXT_T</code> typedefs were declared under <code>WGL_ARB_pixel_format</code></li>
  <li>[Win32] Bugfix: The array for WGL context attributes was too small and could overflow</li>
  <li>[Win32] Bugfix: Context creation using profiles did not check for the availability of <code>WGL_ARB_create_context_profile</code></li> 
  <li>[Win32] Bugfix: Context recreation logic was overly conservative, leading to unnecessary recreations</li> 
  <li>[Win32] Bugfix: Window focus was not handled correctly when using <code>glfwInconifyWindow</code></li>
</ul>

<h3>v2.7</h3>
<ul>
  <li>Added <code>GLFW_OPENGL_VERSION_MAJOR</code> and <code>GLFW_OPENGL_VERSION_MINOR</code>
      hints for versioned context creation</li>
  <li>Added <code>GLFW_OPENGL_FORWARD_COMPAT</code> hint for forward compatible context creation</li>
  <li>Added <code>GLFW_OPENGL_DEBUG_CONTEXT</code> hint for debug context creation</li>
  <li>Added <code>GLFW_OPENL_PROFILE</code> hint for context creation using profiles</li>
  <li>Added <code>GLFW_NO_GLU</code> macro for disabling the inclusion of the GLU header by the GLFW header</li>
  <li>Added platform-independent pixel format selection (not used on Mac OS X)</li>
  <li>Added support and symbols for several additional keys, including Windows/Command keys, Pause, Caps Lock and Menu</li>
  <li>Added conservative value clamping to <code>glfwOpenWindowHint</code></li>
  <li>Added a number of test programs mostly useful to developers of GLFW</li>
  <li>Added error messages and graceful failure to example programs</li>
  <li>Added Cocoa port for Mac OS X 10.5 Leopard and later</li>
  <li>Added vsync to all relevant example programs</li>
  <li>Added a rudimentary OpenGL 3.2+ core profile example program</li>
  <li>Updated Pascal (formerly Delphi) bindings to support more compilers</li>
  <li>Clarified and expanded the User's Guide and Reference Manual</li>
  <li>Fixed a number of compiler warnings in the example programs</li>
  <li>OpenGL version is now only parsed once, at window creation time</li>
  <li>Changed <code>glfwSwapBuffers</code> to call <code>glfwPollEvents</code> <em>after</em> buffer swap</li>
  <li>Changed all comments in public header file to plain C style</li>
  <li>Removed the <code>keytest</code> example program, as it was superseded by the <code>events</code> test</li>
  <li>Removed deprecated AmigaOS and DOS ports</li>
  <li>Removed all FPS counters from example programs</li>
  <li>Removed all unmaintained language bindings</li>
  <li>Removed support for Pelles C</li>
  <li>Removed broken Microsoft Visual C++ 6.0 build path</li>
  <li>[X11] Added <code>x11-dist-install</code> install target, intended for packagers of GLFW</li>
  <li>[X11] Added <code>x11-dist-clean</code> build target, intended for developers of GLFW</li>
  <li>[X11] Added support for <code>GLX_SGIX_fbconfig</code></li>
  <li>[X11] Added support for user-specified compilation flags via <code>CFLAGS</code></li>
  <li>[X11] Added documentation of configuration macros</li>
  <li>[X11] Implemented support for <code>GLFW_SYSTEM_KEYS</code></li>
  <li>[X11] Improved configuration and makefile creation logic</li>
  <li>[X11] Removed support for GLX version 1.2 and below</li>
  <li>[X11] Removed unnecessary calls to XSync</li>
  <li>[X11] Removed use of legacy window style atoms</li>
  <li>[X11] Bugfix: Repeated keys would sometimes leak through despite key repeat being disabled</li>
  <li>[X11] Bugfix: Fullscreen window resizing would cause color buffer clearing without taking framebuffer objects into account</li>
  <li>[X11] Bugfix: AltGr was not reported as right Alt</li>
  <li>[X11] Bugfix: Window colormap was not freed</li>
  <li>[X11] Bugfix: Close callback was called for <code>glfwCloseWindow</code></li>
  <li>[X11] Bugfix: Misspelt struct member in XF86VidMode code path</li>
  <li>[X11] Bugfix: Window decorations would not appear using certain versions of Compiz on Intel hardware</li>
  <li>[X11] Bugfix: Numeric keypad key symbols would change depending on Num Lock state</li>
  <li>[X11] Bugfix: Hidden cursor position snapped back when halfway from window center to edge</li>
  <li>[X11] Bugfix: Not properly verifying that the window was mapped before making certain calls caused a <code>BadMatch</code> error</li>
  <li>[X11] Bugfix: The response to <code>_NET_WM_PING</code> events was malformed</li>
  <li>[X11] Bugfix: Hidden cursor mode interfered with other applications when GLFW window was unfocused</li>
  <li>[X11] Bugfix: The invisible cursor objects used for hidden cursor mode were not freed</li>
  <li>[X11] Bugfix: EWMH-compliant window managers were incorrectly detected</li>
  <li>[X11] Bugfix: The EWMH code path for fullscreen windows did not present the window using <code>_NET_ACTIVE_WINDOW</code></li>
  <li>[X11] Bugfix: The EWMH code path for fullscreen windows did not send a <code>_NET_WM_STATE</code> client message</li>
  <li>[Carbon] Added Universal Binary build targets for all examples</li>
  <li>[Carbon] Renamed MacOSX port to Carbon</li>
  <li>[Carbon] Removed support for 10.2 Jaguar</li>
  <li>[Carbon] Deprecated Carbon port</li>
  <li>[Carbon] Bugfix: Using the Dock or menu Quit command did not call the close callback</li>
  <li>[Carbon] Bugfix: Key repeat events were not caught on 10.5 Leopard</li>
  <li>[Carbon] Bugfix: Certain keys were not reported</li>
  <li>[Carbon] Bugfix: Missing <code>-m32</code> flag caused build failure on 10.6 Snow Leopard</li>
  <li>[Carbon] Bugfix: Missing <code>-mmacosx-version-min</code> flag caused build failure on 10.5 Leopard</li>
  <li>[Carbon] Bugfix: <code>glfwOpenWindow</code> did not call <code>glClear</code></li>
  <li>[Win32] Added Visual C++ project files for all examples and test programs</li>
  <li>[Win32] Removed iterative context re-creation attempts for FSAA sample count</li>
  <li>[Win32] Bugfix: The Visual C++ GLFW DLL project file did not use the correct DEF file</li>
  <li>[Win32] Bugfix: WGL extensions were not detected and/or used correctly</li>
  <li>[Win32] Bugfix: Improper use of wParam for <code>WM_SYSCOMMAND</code></li>
  <li>[Win32] Bugfix: Derivatives of stream.c were not cleaned up by compile.bat</li>
  <li>[Win32] Bugfix: Pointer for <code>GetExtensionsStringARB</code> was not initialized</li>
  <li>[Win32] Bugfix: Makefiles contained the wrong GLFW API version</li>
  <li>[Win32] Bugfix: Numeric keypad key symbols would change depending on Num Lock state</li>
  <li>[Win32] Bugfix: <code>DllMain</code> performed a number of forbidden actions (by calling <code>glfwTerminate</code>)</li>
</ul>

<h3>v2.6</h3>
<ul>
  <li>Added <code>GLFW_FSAA_SAMPLES</code> multisampling hint</li>
  <li>Added <code>GLFW_WINDOW_NO_RESIZE</code> hint for non-resizable windows</li>
  <li>Added install targets for all Unix-like build targets</li>
  <li>Added <code>glfwReadMemoryImage</code> function for creating a <code>GLFWImage</code> object from an image file in a memory buffer</li>
  <li>Added <code>glfwLoadMemoryTexture2D</code> function for decoding an image file in a memory buffer into a texture</li>
  <li>Added <code>glfwLoadTextureImage2D</code> function for loading a <code>GLFWImage</code> object into a texture</li>
  <li>Added cross-compilation support for MinGW under a Unix-like host</li>
  <li>D bindings updated and all examples ported to modern D</li>
  <li>Delphi bindings updated to reflect API additions</li>
  <li>Bugfix: The interaction between key repeat and window focus code caused duplicate presses</li>
  <li>Bugfix: The mouse position was not properly updated when re-enabling the mouse cursor</li>
  <li>[Win32] Added pkg-config file generation for Cygwin</li>
  <li>[Win32] Added version number to window class name</li>
  <li>[Win32] Added optional loading of user provided window icon resource</li>
  <li>[Win32] Bugfix: Very small sleep periods were forced to higher value</li>
  <li>[Win32] Bugfix: The nmake makefile did not handle paths with spaces correctly</li>
  <li>[Win32] Bugfix: Removed assembly RDTSC timing code</li>
  <li>[Win32] Bugfix: Hidden cursor was not clipped to windowed windows</li>
  <li>[X11] Added XRandR code path for fullscreen windows</li>
  <li>[X11] Added building of shared library</li>
  <li>[X11] Added <a href="http://tronche.com/gui/x/icccm/">ICCCM</a> WM fullscreen hints</li>
  <li>[X11] Added support for the <code>_NET_WM_PING</code> protocol</li>
  <li>[X11] Added pkg-config file generation</li>
  <li>[X11] Added setting of WM size hints</li>
  <li>[X11] Bugfix: Removed assembly RDTSC timing code</li>
  <li>[X11] Bugfix: Window re-opening now works properly (including fullscreen windows)</li>
  <li>[X11] Bugfix: Potential crash bug in video mode matching code</li>
  <li>[X11] Bugfix: Static buffers imposed an invisible limit on reported video mode count</li>
  <li>[X11] Bugfix: Interaction with certain window managers when setting input focus would cause termination with a BadMatch error</li>
  <li>[X11] Bugfix: Keypad keys did not trigger the character callback</li>
  <li>[MacOSX] Added pkg-config file generation</li>
  <li>[MacOSX] Added building of shared library</li>
  <li>[MacOSX] Added building of Universal Binary libraries</li>
  <li>[MacOSX] Replaced fullscreen code path with CGL version</li>
  <li>[MacOSX] Bugfix: Binaries without bundles or resource forks now interact properly with the WM</li>
  <li>[MacOSX] Bugfix: Replaced Carbon event time source with <code>gettimeofday</code></li>
  <li>[MacOSX] Bugfix: Added code to minimize the dreaded OpenGL application startup jump</li>
  <li>[MacOSX] Bugfix: Fixed broken implementation of <code>glfwSetMousePos</code> for windowed mode</li>
  <li>[MacOSX] Bugfix: Fixed broken implementation of hidden cursor</li>
  <li>[MacOSX] Bugfix: Capturing all displays and not just the main one</li>
  <li>[AmigaOS] Obsoleted platform due to lack of maintainer and community interest</li>
  <li>[DOS] Obsoleted platform due to lack of maintainer and community interest</li>
</ul>

<h3>v2.5</h3>
<ul>
 <li>Added the function glfwWaitEvents</li>
 <li>Added window close callback, which enables a program to prevent a user
     from closing a window with the window manager</li>
 <li>Added window refresh callback, which is called when the window needs
     to be refreshed</li>
 <li>Added support for loading alpha textures (GLFW_ALPHA_MAP_BIT)</li>
 <li>Added support for the Lua programming language</li>
 <li>Added support for the D programming language</li>
 <li>Added support for the Pelles C compiler for Windows</li>
 <li>Added API level support for up to eight mouse buttons</li>
 <li>[Win32] Added support for up to five mouse buttons</li>
 <li>[Win32] Mouse down events capture mouse input</li>
 <li>[Win32] Bugfix: The DLL now exports glfwSetTime</li>
 <li>[Win32] Fix: The GLFW window is now placed in the upper left corner
     of the desktop working area</li>
 <li>[Win32/X11] Bugfix: More robust check for SwapInterval</li>
 <li>[X11] Added support for USB joysticks under Linux (/dev/input/js*)</li>
 <li>[X11] Bugfix: Added support for GLX extensions in glfwExtensionSupported</li>
 <li>[X11] Bugfix: More robust fullscreen mode (?)</li>
 <li>[X11] Bugfix: Runtime check of XF86VidMode support for the active
     display</li>
 <li>[X11] Bugfix: Some mouse button events were reported incorrectly</li>
 <li>[MacOSX] Added support for the input char callback.</li>
 <li>[MacOSX] Added video mode validation and duplicate elimination.</li>
 <li>[MacOSX] Switched to a new MakeBundle.sh script.</li>
 <li>[MacOSX] Added emulation of the window refresh callback.</li>
 <li>[MacOSX] Bugfix: The window and its associated resources are now
     properly released.</li>
 <li>[MacOSX] Bugfix: Removed support for more than eight mouse buttons.</li>
 <li>[x86 CPUs] Improved Intel mobile CPU detection (e.g. disables RDTSC
     timing on Centrino systems)</li>
</ul>

<h3>v2.4.2</h3>
<ul>
 <li>Preliminary native Mac OS X support (via the Carbon interface)</li>
 <li>Preliminary DOS support (DJGPP + Mesa)</li>
 <li>Changed license to the zlib license (almost identical to the previous
     GLFW license), so now GLFW is OSI Certified</li>
 <li>Rewrote the GLFW documentation in LaTeX, meaning several improvements
     (both visual and practical)</li>
 <li>Added the <code>support</code> folder to the distribution, which includes
     support for various languages</li>
 <li>[Win32] Added OpenWatcom compiler support (thanks Sebastian
     Schuberth!)</li>
 <li>[Win32] Changed fallback timer from GetTickCount to timeGetTime,
     which usually provides better resolution</li>
 <li>[Win32] Bugfix: Accumulator buffer selection should be more
     robust</li>
 <li>[Win32] Bugfix: If stereo rendering is requested, and no stereo pixel
     format could be created, glfwOpenWindow now fails</li>
 <li>[Win32] Bugfix: glfwSetWindowSize now sets the size of the client
     area, NOT the entire window, meaning that there is a 1:1 relationship
     between glfwSetWindowSize and glfwGetWindowSize</li>
 <li>[X11] Added FreeBSD and QNX support</li>
 <li>[X11] Added support for non-pthread capable systems</li>
 <li>[X11] Hopefully more robust configuration script (compile.sh)</li>
 <li>[X11] Bugfix: When mouse cursor is hidden, mouse sensitivity is no
     longer degraded</li>
 <li>[X11] Bugfix: Source files EOL was PC style (CR/LF) in v2.4.1 (blame
     my WinCVS configuration)</li>
 <li>[X11] Bugfix: When a GLFW window is closed, input focus is properly
     released</li>
 <li>[X11] Bugfix: Iconification of fullscreen windows should now work
     properly</li>
 <li>[x86 CPUs] Improved RDTSC timing (e.g. RDTSC support on single-CPU
     Intel Hyper-Threading enabled systems)</li>
 <li>[AmigaOS] Added joystick support</li>
 <li>[AmigaOS] Mouse cursor positioning is now implemented</li>
 <li>[AmigaOS] Added support for Geek Gadgets GCC</li>
 <li>[AmigaOS] Bugfix: glfwGetWindowParam now returns proper values for
     all parameters (except for GLFW_ACCELERATED)</li>
</ul>

<h3>v2.4.1</h3>
<ul>
 <li>Added AmigaOS support (preliminary)</li>
 <li>GLFW for the X Window System now works under Mac OS X</li>
 <li>[Win32] Bugfix: glfwWaitCond treated the timeout as milliseconds
     instead of seconds</li>
 <li>[X11] Bugfix: GLFW should now compile under IRIX v5.3</li>
 <li>[X11] Bugfix: GLFW should now compile with Kylix</li>
</ul>

<h3>v2.4</h3>
<ul>
 <li>Major source code rearrangement - much code is now shared between
     different platforms, and it should be easier to port GLFW to new
     platforms</li>
 <li>Added a Unicode keyboard text input interface (CharCallback)</li>
 <li>Keyboard key input is now slightly more internationalized: GLFW now
     uses 8-bit ISO-8859-1 encoding for keys representing printable
     characters (e.g. &quot;&Ouml;&quot;, &quot;&#167;&quot;, etc), as
     opposed to the previous 7-bit US-ASCII encoding</li>
 <li>Added more key constants (F13-F25, keypad '=')</li>
 <li>Added an enable/disable swicth for automatic event polling from
     glfwSwapBuffers</li>
 <li>[X11] Added support for sysctl for querying the number of processors
     in the system (if POSIX sysconf is not supported)</li>
 <li>[X11] Bugfix: compile.sh now works with Sun sh (and hopefully others
     too)</li>
 <li>[X11] Bugfix: compile.sh now detects the need for -ldl when dlopen is
     used</li>
 <li>[Win32] Bugfix: When closing a fullscreen window under Win 9x/NT4,
     the task bar icon now disappears properly</li>
 <li>[Win32] Bugfix: GLFW should now compile on a wider range of MSVC
     compilers (e.g. .NET) - Thanks Tim Little!</li>
</ul>

<h3>v2.3.2</h3>
<ul>
 <li>Removed the silly limitation of 100 threads (the thread information
     is now kept in a linked list)</li>
 <li>General source cleanup (window state is now kept in a single
     struct, plus some other minor changes)</li>
 <li>[X11] Added Solaris gethrtime() support (not tested yet), which
     should give an improved timer for Sun/Solaris stations</li>
 <li>[X11] Some fixes to the 'compile.sh' script (-O for non-gcc compilers
     and 'make x11-gcc' should now really force GCC)</li>
</ul>

<h3>v2.3.1</h3>
<ul>
 <li>[X11] A minimalist configuration script was added that solves the
     issue with glXGetProcAddressARB, and unifies all Unix/X11 Makefiles
     into one template Makefile (well, one for GLFW, and one for the
     examples)</li>
</ul>

<h3>v2.3</h3>
<ul>
 <li>Added OpenGL stereo rendering support</li>
 <li>Added a function for parsing the OpenGL version string
     (glfwGetGLVersion)</li>
 <li>[x86] Bugfix: Hopefully the CPU core clock dependent timer RDTSC will
     never be used on CPUs with variable core frequencies anymore</li>
 <li>[X11] Bugfix: GLFW could create stereo rendering capable windows,
     even if it was not requested (GLFW v2.2.x did not support selection
     of stereo rendering)</li>
 <li>[X11] Bugfix: glfwGetProcAddress returned NULL on most systems (even
     on those that supported glXGetProcAddressARB). Now GLFW assumes that
     glXGetProcAddressARB is supported on all systems, which solves the
     bug, but may result in compiler errors on some systems (please let me
     know if you have any related problems).</li>
</ul>

<h3>v2.2.3</h3>
<ul>
 <li>Bugfix: Checking for GL_SGIS_generate_mipmap is more robust</li>
 <li>Bugfix: glfwLoadTexture2D will now fail if no window is opened</li>
 <li>[Win32] Bugfix: Right shift was not detected under Win 9x/ME (it is
     still not as good as under NT/2K/XP, but at least you get right
     shifts)</li>
 <li>[X11] Bugfix: Visuals are now selected more accurately. For instance,
     glfwOpenWindow will no longer fail if you request a 24-bit color
     buffer if only 16-bit color visuals are available (which means that
     pong3d should work on 16-bit displays).</li>
</ul>

<h3>v2.2.2</h3>
<ul>
 <li>[Win32] Bugfix: Windows did not always get focus (this was a tough
     one!)</li>
 <li>[Win32] Bugfix: glfwGetWindowParam did not work with
     GLFW_ACCUM_*_BITS or GLFW_AUX_BUFFERS</li>
 <li>[X11] Bugfix: Linux joystick Y axis positions were reversed</li>
</ul>

<h3>v2.2.1</h3>
<ul>
 <li>[X11] Added joystick support for Linux</li>
</ul>

<h3>v2.2</h3>
<ul>
 <li>Added joystick support (only supported under Windows so far)</li>
 <li>Added joystick controls to pong3d.c (only 3 more lines of code)</li>
 <li>Added glfwOpenWindowHint() function</li>
 <li>It is now possible to specify a desired vertical monitor refresh
     rate (for fullscreen windows)</li>
 <li>It is now possible to request an accumulator buffer and auxiliary
     buffers</li>
 <li>Added glfwSetTime() function</li>
 <li>Added a GLFW conversion of the MESA/GLUT gears.c demo to the example
     programs</li>
 <li>[Win32] gdi32.dll and winmm.dll are now loaded dynamically when
     glfwInit() is called. This means that there is no need to link with
     gdi32.lib or winmm.lib when using the static version of GLFW, which
     should make GLFW usage more convenient.</li>
 <li>[Win32] Bugfix: Greatly improved keyboard input (detect left/right
     CTRL etc)</li>
 <li>[Win32] Bugfix: glfwExtensionSupported now detects all WGL extensions
     (e.g. WGL_ARB_pbuffer)</li>
 <li>[Win32] Bugfix: Mouse cursor was not re-hidden when a GLFW window was
     deselected and then selected again (with ALT+TAB)</li>
 <li>[X11] Bugfix: Minor bug in the SGI timer - and ugly (unintended) SGI
     timer debug info removed</li>
 <li>[X11] Bugfix: glfwGetDesktopMode and glfwGetVideoModes no longer give
     segmentation faults if no X server is available</li>
</ul>

<h3>v2.1</h3>
<ul>
 <li>Added image and texture loading capabilities (support for the TGA
     file format at the moment)</li>
 <li>Added a new example program (mipmaps.c) for showing off the automatic
     mipmap generation and texture loading capabilities of GLFW 2.1</li>
 <li>Removed the separate TGA loader (tga.c in the examples directory)
     since texture loading is supported natively by GLFW. Also updated the
     Pong3D demo to use GLFW texture loading instead of tga.c.</li>
 <li>Improved keyboard handling (e.g. numeric keypad keys can be
     detected)</li>
 <li>Added a new example program, keytest.c</li>
 <li>Changed the GLFWvidmode structure and the corresponding API functions
     to report pure color bits instead of the confusing (and unportable)
     "BPP" field</li>
 <li>Changed glfwSetWindowSize so that it operates in fullscreen mode
     too</li>
 <li>Added mouse wheel support under Windows (not Win95) and X11</li>
 <li>Added window iconification functions (glfwInconifyWindow and
     glfwRestoreWindow)</li>
 <li>Improved iconification and deactivation handling under both Windows
     and X11</li>
 <li>Made it possible to turn on/off key repeat (the default is now no key
     repeat)</li>
 <li>Added SGI hardware timer support (CLOCK_SGI_CYCLE) for improved
     timer resolution for SGI computers</li>
 <li>Added support for the free Borland C++ Builder 5.x compiler for
     Windows</li>
 <li>Made it possible to compiler GLFW as a Windows DLL using any of the
     supported compilers</li>
 <li>Some constants have changed names (e.g. GLFW_REDBITS is now called
     GLFW_RED_BITS)</li>
 <li>Updated GLFW documentation (GLFW Users Guide and GLFW Reference
     Manual) to reflect the changes in the API</li>
 <li>[Win32] Bugfix: Corrected Cygwin toplevel makefile entry</li>
 <li>[Win32] Bugfix: Fixed event lag bug</li>
 <li>[Win32] Bugfix: Fixed Radeon 8500 crash</li>
 <li>[X11] Bugfix: Fixed the window close bug</li>
 <li>[X11] Bugfix: Iconification/deactivation is now detected</li>
 <li>[X11] Bugfix: Non-OpenGL visuals are not listed anymore</li>
 <li>[XFree86] Bugfix: Undesired video mode changes are now prevented</li>
</ul>

<h3>v2.0.3</h3>
<ul>
 <li>Added precise CPU cycle based timing support (RDTSC) for x86
     CPUs (under both Windows and Unix)</li>
 <li>Added a makefile option for building for Windows with Cygwin</li>
 <li>Corrected the CC for Unix/X11 makefiles (-Wall is usually not a
     supported flag for CC, so it was removed from the CFLAGS list)</li>
</ul>

<h3>v2.0.2</h3>
<ul>
 <li>Added a makefile option for building for X11 with 'cc' rather than
     'gcc' (useful for IRIX users for instance).</li>
 <li>[Win32] Bugfix: Mouse coordinates are now relative to the window
     upper left corner, which also means that disabling the mouse cursor
     in windowed mode should work much better.</li>
 <li>[X11] Bugfix: Added a bunch of more keys that are recognized by
     GLFW.</li>
 <li>[X11] Bugfix: glfwGetNumberOfProcessors now works for IRIX (earlier
     versions of GLFW would not compile under IRIX).</li>
</ul>

<h3>v2.0.1</h3>
<ul>
 <li>glfwTerminate() will now be called automatically upon normal program
     termination (using atexit())</li>
 <li>[Win32] Bugfix: Buffer-swapping did not work if a window lost
     focus.</li>
 <li>[Win32] Bugfix: Top level Makefile did not work under Windows
     9x.</li>
 <li>[Win32] Bugfix: NULL declaratoin in glfw.h was not MSVC 7.x
     compatible.</li>
 <li>[X11] Bugfix: GLFW would not build with C++ (e.g. g++).</li>
</ul>

<h3>v2.0</h3>
<ul>
 <li>GLFW is no longer a single source file, but an entire link library.</li>
 <li>Added multi threading support.</li>
 <li>Added more window control.</li>
 <li>New distribution layout (both Win32 and X11 version in same archive).</li>
 <li>Added GLFW Users Manual and GLFW Reference Manual as PDF files.</li>
 <li>Some bugfixes.</li>
</ul>

<h3>v1.0.2</h3>
<ul>
 <li>Improved fullscreen functionality.</li>
 <li>Added fullscreen support for X11.</li>
</ul>

<h3>v1.0.1</h3>
<ul>
 <li>Added support for the X Window System.</li>
 <li>Fixed bugs.</li>
</ul>

<h3>v1.0.0</h3>
<ul>
 <li>First release.</li>
 <li>Only supported Windows.</li>
</ul>


<a name="structure"></a>
<h2>6. Directory structure of the GLFW distribution</h2>

<p>Here is an overview of the directory structure of the GLFW distribution:</p>

<table border=0 cellspacing=0>
<tr valign="top"><td width=100><code>docs</code></td><td>&nbsp;</td><td>GLFW manuals in PDF format</td></tr>
<tr valign="top"><td><code>examples</code></td><td>&nbsp;</td><td>Several example programs in C</td></tr>
<tr valign="top"><td><code>include</code></td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;GL</code></td><td>&nbsp;</td><td>Here is the GLFW C/C++ include file</td></tr>
<tr valign="top"><td><code>lib</code></td><td>&nbsp;</td><td>The source code for GLFW</td></tr>
<tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;cocoa</code></td><td>&nbsp;</td><td>Mac OS X/Cocoa specific implementation</td></tr>
<tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;win32</code></td><td>&nbsp;</td><td>Windows specific implementation</td></tr>
<tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;x11</code></td><td>&nbsp;</td><td>Unix/X11 specific implementation</td></tr>
<tr valign="top"><td><code>support</code></td><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;d</code></td><td>&nbsp;</td><td>D support</td></tr>
<tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;msvc90</code></td><td>&nbsp;</td><td>Project files for Visual C++ 2008</td></tr>
<tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;msvc100</code></td><td>&nbsp;</td><td>Project files for Visual C++ 2010</td></tr>
<tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;msvc110</code></td><td>&nbsp;</td><td>Project files for Visual C++ 2012</td></tr>
<tr valign="top"><td><code>&nbsp;&nbsp;&nbsp;pascal</code></td><td>&nbsp;</td><td>Pascal support</td></tr>
<tr valign="top"><td><code>tests</code></td><td>&nbsp;</td><td>Several test programs in C</td></tr>
</table>


<a name="contact"></a>
<h2>7. Contacting the project</h2>

<p>The official website for GLFW is <a href="http://www.glfw.org/">glfw.org</a>.
It contains the latest version of GLFW, news and other information that is
useful for OpenGL development.</p>

<p>If you have questions related to the use of GLFW, we have a
<a href="https://sourceforge.net/forum/forum.php?forum_id=247562">user's web forum</a>,
and the registered IRC channel <code>#glfw</code> on
<a href="http://freenode.net/">Freenode</a>.</p>

<p>If you have a bug to report, a patch to submit or a feature you'd like to
request, please file an issue in the
<a href="https://github.com/glfw/glfw-legacy/issues">issue trackers</a>.</p>

Finally, if you're interested in helping out with the development of
GLFW or porting it to your favorite platform, we have a
<a href="https://lists.stacken.kth.se/mailman/listinfo/glfw-dev">developer's mailing list</a>,
or you could join us on <code>#glfw</code>.


<a name="credits"></a>
<h2>8. Acknowledgements</h2>

<p>GLFW exists because people around the world donated their time and lent
their skills.  Special thanks go out to:</p>

<ul>

  <li>artblanc, for a patch replacing a deprecated Core Graphics call</li>

  <li>Bobyshev Alexander and Martins Mozeiko, for the original proposal of
  an FSAA hint and their work on the Win32 implementation of FSAA</li>

  <li>Keith Bauer, for his invaluable help with porting and maintaining GLFW on
  Mac OS X, and for his many ideas</li>

  <li>Jarrod Davis, for the Delphi port of GLFW</li>

  <li>Olivier Delannoy, for the initial implementation of FSAA support on
  X11, cross-compiling support for MinGW and general extreme usefulness</li>

  <li>Paul R. Deppe, who helped with Cygwin support, and made an
  adaption of <a href="http://plib.sourceforge.net/">PLIB</a>
  so that it can use GLFW (instead of GLUT)</li>

  <li>Jonathan Dummer, for submitting a patch fixing an input bug on Win32 and
  adding logic for the GLFW_ICON resource</li>

  <li>Gerald Franz, who made GLFW compile under IRIX, and supplied patches
  for the X11 keyboard translation routine</li>

  <li>Marcus Geelnard, the original author and long-time maintainer of GLFW,
  without whose brilliant work none of this would have happened</li>

  <li>Stefan Gustavson, for quick and thorough testing of GLFW on many and
  varied operating systems and hardware configurations</li>

  <li>Sylvain Hellegouarch, for support, bug reports and testing</li>

  <li>Alex Holkner, for writing the code from which the Compiz/Intel fix was
  stolen</li>

  <li>Toni Jovanoski, for helping with the MASM32 port of GLFW, and
  supplying the example program and fixed OpenGL and GLU bindings for
  MASM32</li>

  <li>Cameron King, for reporting a hidden cursor mouse bug on X11</li>

  <li>Peter Knut, for his many and detailed reports of difficult to find input
  bugs</li>

  <li>Robin Leffmann, for his work on Mac OS X and other platforms, and his
  invaluable support</li>

  <li>Glenn Lewis, for helping out with support for the D programming
  language</li>

  <li>Shane Liesegang, for providing a bug fix relating to Cocoa window
  restoration and reporting several Cocoa bugs</li>

  <li>Tristam MacDonald, for his bug reports and feedback on the Cocoa port</li>

  <li>David Medlock, for doing the initial Lua port</li>

  <li>Kenneth Miller, for his many and detailed bug reports on Win32</li>

  <li>Jeff Molofee, the author of the excellent OpenGL tutorials at <a
  href="http://nehe.gamedev.net/">NeHe Productions</a>.
  Much of the Windows code of GLFW was originally based on Jeff's
  code</li>

  <li>Douglas C. Schmidt and Irfan Pyarali, for their excellent article
  <a href="http://www.cs.wustl.edu/~schmidt/win32-cv-1.html">Strategies for Implementing POSIX Condition Variables on Win32</a></li>

  <li>Sebastian Schuberth, for the OpenWatcom makefiles</li>

  <li>Matt Sealey, for helping with the MorphOS port</li>

  <li>Steve Sexton, for reporting an input bug in the Carbon port</li>

  <li>Dmitri Shuralyov, for support, bug reports, bug fixes and testing</li>

  <li>Daniel Skorupski, for reporting a bug in the Win32 DEF file</li>

  <li>Bradley Smith, for his updates of the D support and his ports of the
  remaining examples to the D language</li>

  <li>Julian Squires, for submitting a patch for a bug in the key repeat logic on X11</li>

  <li>Liam Staskawicz, for finding a bug in the termination logic of the OS X port</li>

  <li>Johannes Stein, for maintaining the Pascal bindings</li>

  <li>Cort Stratton, for reporting two bugs related to the creation of debug
  contexts</li>

  <li>Sergey Tikhomirov, for the initial implementation of joystick support on
  Mac OS X</li>

  <li>Samuli Tuomola, for support, bug reports and testing</li>

  <li>Frank Wille, for helping with the AmigaOS port and making GLFW
  compile under IRIX 5.3</li>

  <li>Yaniel, for fixing a bug with fullscreen windows using OpenGL 3.0 contexts on Cocoa</li>

  <li>Santi Zupancic, for support, bug reports and testing</li>

  <li>Lasse Öörni, for submitting patches for the input code of the Win32 and X11 ports</li>

  <li>Дмитри Малышев, for the idea of a GLFW_NO_GLU macro</li>

  <li>blanco, for submitting a patch for a deprecation bug in the Cocoa port</li>

  <li>heromyth, for reporting a bug in the D bindings</li>

  <li>Ozzy @ <a href="http://www.orkysquad.org">Orkysquad</a>,
  for his dedication to GLFW, for debugging my source, and for his
  valuable experience with game development</li>

  <li>Peoro, for reporting a bug in the <code>_NET_WM_PING</code> response</li>

  <li>TTK-Bandit, for submitting a number of input patches adding many missing
  keys to the Win32 and X11 ports</li>

  <li>yuriks, for reporting a bug in Win32 context creation</li>

  <li>All the unmentioned and anonymous contributors in the GLFW community, for
  bug reports, patches, feedback and encouragement</li>

  <li><a href="http://www.opengl.org/">OpenGL.org</a>, and all the people on
  the discussion forums there that have provided help during the development of
  GLFW</li>

</ul>

</body>
</html>