diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index cd0ee3d0..00000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-name: CI
-
-on: [push, pull_request]
-
-jobs:
- build:
- name: ${{ matrix.platform.name }} ${{ matrix.config.name }}
- runs-on: ${{ matrix.platform.os }}
-
- strategy:
- matrix:
- platform:
- - { name: Windows VS2017, os: windows-2016 }
- - { name: Windows VS2019, os: windows-latest }
- - { name: Linux GCC, os: ubuntu-latest }
- - { name: Linux Clang, os: ubuntu-latest, flags: -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ }
- - { name: MacOS XCode, os: macos-latest }
- config:
- - { name: Shared, flags: -DBUILD_SHARED_LIBS=TRUE }
- - { name: Static, flags: -DBUILD_SHARED_LIBS=FALSE }
-
- include:
- - platform: { name: MacOS XCode, os: macos-latest }
- config: { name: Frameworks, flags: -DSFML_BUILD_FRAMEWORKS=TRUE }
- - platform: { name: MacOS XCode, os: macos-latest }
- config: { name: iOS, flags: -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/cmake/toolchains/iOS.toolchain.cmake -DIOS_PLATFORM=SIMULATOR }
- - platform: { name: Android, os: ubuntu-latest }
- config: { name: x86, flags: -DCMAKE_ANDROID_ARCH_ABI=x86 -DCMAKE_SYSTEM_NAME=Android -DSFML_BUILD_TEST_SUITE=FALSE -DCMAKE_ANDROID_NDK=$GITHUB_WORKSPACE/android-ndk-r18b -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26 }
- - platform: { name: Android, os: ubuntu-latest }
- config: { name: armeabi-v7a, flags: -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_SYSTEM_NAME=Android -DSFML_BUILD_TEST_SUITE=FALSE -DCMAKE_ANDROID_NDK=$GITHUB_WORKSPACE/android-ndk-r18b -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26 }
- steps:
- - name: Checkout Code
- uses: actions/checkout@v2
-
- - name: Install Linux Dependencies
- if: runner.os == 'Linux'
- run: sudo apt-get install libxrandr-dev libxcursor-dev libudev-dev libopenal-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev
-
-
- - name: Install Android Components
- if: matrix.platform.name == 'Android'
- run: |
- echo "y" | /usr/local/lib/android/sdk/tools/bin/sdkmanager --install "cmake;3.10.2.4988404" --sdk_root=ANDROID_SDK_ROOT
- sudo ln -sf /usr/local/lib/android/sdk/cmake/3.10.2.4988404/bin/cmake /usr/bin/cmake
- wget -nv https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip -P $GITHUB_WORKSPACE
- unzip -qq -d $GITHUB_WORKSPACE android-ndk-r18b-linux-x86_64.zip
-
-
- - name: Configure CMake
- shell: bash
- run: cmake -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -DSFML_BUILD_EXAMPLES=TRUE -DCMAKE_VERBOSE_MAKEFILE=ON -DSFML_BUILD_TEST_SUITE=TRUE ${{matrix.platform.flags}} ${{matrix.config.flags}}
-
- - name: Build
- shell: bash
- run: cmake --build $GITHUB_WORKSPACE/build --config Release --target install
diff --git a/.travis.yml b/.travis.yml
index 953ae090..ebefd2c0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -4,7 +4,6 @@ addons:
apt_packages:
- cmake
- libxrandr-dev
- - libxcursor-dev
- libudev-dev
- libopenal-dev
- libflac-dev
@@ -15,7 +14,7 @@ addons:
before_script:
- mkdir build && cd build
-- cmake .. $CMAKE_FLAGS -DCMAKE_INSTALL_PREFIX=../install -DSFML_BUILD_EXAMPLES=TRUE -DCMAKE_VERBOSE_MAKEFILE=ON
+- cmake .. $CMAKE_FLAGS -DCMAKE_INSTALL_PREFIX=../install -DSFML_BUILD_EXAMPLES=TRUE
script:
- cmake --build . --target install
@@ -75,38 +74,16 @@ matrix:
env:
- CMAKE_FLAGS="-GXcode -DSFML_BUILD_TEST_SUITE=TRUE -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/iOS.toolchain.cmake -DIOS_PLATFORM=SIMULATOR"
- - name: "Visual Studio 15 2017 Dynamic"
+ - name: "Visual studio 15 2017 Dynamic"
os: windows
env:
- CMAKE_FLAGS="-DSFML_BUILD_TEST_SUITE=FALSE"
- - name: "Visual Studio 15 2017 Static"
+ - name: "Visual studio 15 2017 Static"
os: windows
env:
- CMAKE_FLAGS="-DBUILD_SHARED_LIBS=FALSE -DSFML_BUILD_TEST_SUITE=TRUE"
- - name: "Visual Studio 16 2019 Dynamic"
- os: windows
- env:
- - CMAKE_FLAGS="-DSFML_BUILD_TEST_SUITE=FALSE"
- - MSBUILD_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin"
- - VS160COMNTOOLS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools"
- - PATH=$MSBUILD_PATH:$PATH
- install:
- - choco install visualstudio2019buildtools --package-parameters "--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64"
- - choco install visualstudio2019-workload-nativedesktop
-
- - name: "Visual Studio 16 2019 Static"
- os: windows
- env:
- - CMAKE_FLAGS="-DBUILD_SHARED_LIBS=FALSE -DSFML_BUILD_TEST_SUITE=TRUE"
- - MSBUILD_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin"
- - VS160COMNTOOLS="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools"
- - PATH=$MSBUILD_PATH:$PATH
- install:
- - choco install visualstudio2019buildtools --package-parameters "--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64"
- - choco install visualstudio2019-workload-nativedesktop
-
- name: "Android armeabi-v7a"
language: android
android: &androidComponents
@@ -119,6 +96,7 @@ matrix:
install: &androidInstall
- echo y | sdkmanager "cmake;3.10.2.4988404"
+ - echo y | sdkmanager "lldb;3.1"
- sudo ln -sf /usr/local/android-sdk/cmake/3.10.2.4988404/bin/cmake /usr/bin/cmake
- wget https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip
- unzip -qq android-ndk-r18b-linux-x86_64.zip
diff --git a/cmake/SFMLConfigDependencies.cmake.in b/cmake/SFMLConfigDependencies.cmake.in
index c5813bd6..1028110f 100644
--- a/cmake/SFMLConfigDependencies.cmake.in
+++ b/cmake/SFMLConfigDependencies.cmake.in
@@ -47,7 +47,6 @@ if(SFML_STATIC_LIBRARIES)
if(FIND_SFML_OS_LINUX OR FIND_SFML_OS_FREEBSD)
sfml_bind_dependency(TARGET X11 FRIENDLY_NAME "X11" SEARCH_NAMES "X11")
sfml_bind_dependency(TARGET X11 FRIENDLY_NAME "Xrandr" SEARCH_NAMES "Xrandr")
- sfml_bind_dependency(TARGET X11 FRIENDLY_NAME "Xcursor" SEARCH_NAMES "Xcursor")
endif()
if(FIND_SFML_OS_LINUX)
@@ -72,11 +71,11 @@ if(SFML_STATIC_LIBRARIES)
if(FIND_SFML_AUDIO_COMPONENT_INDEX GREATER -1)
sfml_bind_dependency(TARGET OpenAL FRIENDLY_NAME "OpenAL" SEARCH_NAMES "OpenAL" "openal" "openal32")
if (NOT FIND_SFML_OS_IOS)
- sfml_bind_dependency(TARGET VORBIS FRIENDLY_NAME "VorbisFile" SEARCH_NAMES "vorbisfile")
- sfml_bind_dependency(TARGET VORBIS FRIENDLY_NAME "VorbisEnc" SEARCH_NAMES "vorbisenc")
+ sfml_bind_dependency(TARGET Vorbis FRIENDLY_NAME "VorbisFile" SEARCH_NAMES "vorbisfile")
+ sfml_bind_dependency(TARGET Vorbis FRIENDLY_NAME "VorbisEnc" SEARCH_NAMES "vorbisenc")
endif()
- sfml_bind_dependency(TARGET VORBIS FRIENDLY_NAME "Vorbis" SEARCH_NAMES "vorbis")
- sfml_bind_dependency(TARGET VORBIS FRIENDLY_NAME "Ogg" SEARCH_NAMES "ogg")
+ sfml_bind_dependency(TARGET Vorbis FRIENDLY_NAME "Vorbis" SEARCH_NAMES "vorbis")
+ sfml_bind_dependency(TARGET Vorbis FRIENDLY_NAME "Ogg" SEARCH_NAMES "ogg")
sfml_bind_dependency(TARGET FLAC FRIENDLY_NAME "FLAC" SEARCH_NAMES "FLAC")
endif()
diff --git a/doc/mainpage.hpp b/doc/mainpage.hpp
index 8f85f0cd..16f2c43a 100644
--- a/doc/mainpage.hpp
+++ b/doc/mainpage.hpp
@@ -3,7 +3,7 @@
///
/// \section welcome Welcome
/// Welcome to the official SFML documentation. Here you will find a detailed
-/// view of all the SFML classes and functions.
+/// view of all the SFML classes and functions.
/// If you are looking for tutorials, you can visit the official website
/// at www.sfml-dev.org.
///
diff --git a/examples/cocoa/CocoaAppDelegate.h b/examples/cocoa/CocoaAppDelegate.h
index 389e94b7..1a21572f 100644
--- a/examples/cocoa/CocoaAppDelegate.h
+++ b/examples/cocoa/CocoaAppDelegate.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/examples/cocoa/CocoaAppDelegate.mm b/examples/cocoa/CocoaAppDelegate.mm
index bfb0dff1..d264000c 100644
--- a/examples/cocoa/CocoaAppDelegate.mm
+++ b/examples/cocoa/CocoaAppDelegate.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/examples/cocoa/NSString+stdstring.h b/examples/cocoa/NSString+stdstring.h
index 4d1d2f5a..fa3df095 100644
--- a/examples/cocoa/NSString+stdstring.h
+++ b/examples/cocoa/NSString+stdstring.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/examples/cocoa/NSString+stdstring.mm b/examples/cocoa/NSString+stdstring.mm
index 59d147d0..4958ae7d 100644
--- a/examples/cocoa/NSString+stdstring.mm
+++ b/examples/cocoa/NSString+stdstring.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/examples/cocoa/main.m b/examples/cocoa/main.m
index 03da8ce5..209a86bf 100644
--- a/examples/cocoa/main.m
+++ b/examples/cocoa/main.m
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/examples/cocoa/resources/Cocoa-Info.plist b/examples/cocoa/resources/Cocoa-Info.plist
index 1a937c30..7a7da9b9 100644
--- a/examples/cocoa/resources/Cocoa-Info.plist
+++ b/examples/cocoa/resources/Cocoa-Info.plist
@@ -25,7 +25,7 @@
LSMinimumSystemVersion
10.6
NSHumanReadableCopyright
- Copyright © 2007-2020 Marco Antognini and Laurent Gomila. Shared under zlib/libpng License.
+ Copyright © 2007-2019 Marco Antognini and Laurent Gomila. Shared under zlib/libpng License.
NSMainNibFile
MainMenu
NSPrincipalClass
diff --git a/include/SFML/Audio.hpp b/include/SFML/Audio.hpp
index 68fe1a69..f0b5b30a 100644
--- a/include/SFML/Audio.hpp
+++ b/include/SFML/Audio.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/AlResource.hpp b/include/SFML/Audio/AlResource.hpp
index f670c139..9f0f4dcd 100644
--- a/include/SFML/Audio/AlResource.hpp
+++ b/include/SFML/Audio/AlResource.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/Export.hpp b/include/SFML/Audio/Export.hpp
index c21ffb6e..bba990d9 100644
--- a/include/SFML/Audio/Export.hpp
+++ b/include/SFML/Audio/Export.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/InputSoundFile.hpp b/include/SFML/Audio/InputSoundFile.hpp
index 4c9eb951..f4000d4c 100644
--- a/include/SFML/Audio/InputSoundFile.hpp
+++ b/include/SFML/Audio/InputSoundFile.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/Listener.hpp b/include/SFML/Audio/Listener.hpp
index 569eb912..f14beda2 100644
--- a/include/SFML/Audio/Listener.hpp
+++ b/include/SFML/Audio/Listener.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/Music.hpp b/include/SFML/Audio/Music.hpp
index bbe84c89..732eb42b 100644
--- a/include/SFML/Audio/Music.hpp
+++ b/include/SFML/Audio/Music.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/OutputSoundFile.hpp b/include/SFML/Audio/OutputSoundFile.hpp
index 6247ef0e..c8f06260 100644
--- a/include/SFML/Audio/OutputSoundFile.hpp
+++ b/include/SFML/Audio/OutputSoundFile.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/Sound.hpp b/include/SFML/Audio/Sound.hpp
index 909f4c16..a4a49835 100644
--- a/include/SFML/Audio/Sound.hpp
+++ b/include/SFML/Audio/Sound.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/SoundBuffer.hpp b/include/SFML/Audio/SoundBuffer.hpp
index 8b8391a5..8b965b6d 100644
--- a/include/SFML/Audio/SoundBuffer.hpp
+++ b/include/SFML/Audio/SoundBuffer.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/SoundBufferRecorder.hpp b/include/SFML/Audio/SoundBufferRecorder.hpp
index 9e100d15..e14c4880 100644
--- a/include/SFML/Audio/SoundBufferRecorder.hpp
+++ b/include/SFML/Audio/SoundBufferRecorder.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/SoundFileFactory.hpp b/include/SFML/Audio/SoundFileFactory.hpp
index cae1f692..b7d7c877 100644
--- a/include/SFML/Audio/SoundFileFactory.hpp
+++ b/include/SFML/Audio/SoundFileFactory.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/SoundFileFactory.inl b/include/SFML/Audio/SoundFileFactory.inl
index bbfa91f1..e9794153 100644
--- a/include/SFML/Audio/SoundFileFactory.inl
+++ b/include/SFML/Audio/SoundFileFactory.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/SoundFileReader.hpp b/include/SFML/Audio/SoundFileReader.hpp
index 61dd998f..04fd5ff6 100644
--- a/include/SFML/Audio/SoundFileReader.hpp
+++ b/include/SFML/Audio/SoundFileReader.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/SoundFileWriter.hpp b/include/SFML/Audio/SoundFileWriter.hpp
index ff90bab2..5e7ae016 100644
--- a/include/SFML/Audio/SoundFileWriter.hpp
+++ b/include/SFML/Audio/SoundFileWriter.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/SoundRecorder.hpp b/include/SFML/Audio/SoundRecorder.hpp
index 53cf73ad..ccbdca12 100644
--- a/include/SFML/Audio/SoundRecorder.hpp
+++ b/include/SFML/Audio/SoundRecorder.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/SoundSource.hpp b/include/SFML/Audio/SoundSource.hpp
index ce795d67..02a3f5d5 100644
--- a/include/SFML/Audio/SoundSource.hpp
+++ b/include/SFML/Audio/SoundSource.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Audio/SoundStream.hpp b/include/SFML/Audio/SoundStream.hpp
index 31c6b9f3..f1c7f1f5 100644
--- a/include/SFML/Audio/SoundStream.hpp
+++ b/include/SFML/Audio/SoundStream.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -251,20 +251,6 @@ protected:
////////////////////////////////////////////////////////////
virtual Int64 onLoop();
- ////////////////////////////////////////////////////////////
- /// \brief Set the processing interval
- ///
- /// The processing interval controls the period at which the
- /// audio buffers are filled by calls to onGetData. A smaller
- /// interval may be useful for low-latency streams. Note that
- /// the given period is only a hint and the actual period may
- /// vary. The default processing interval is 10 ms.
- ///
- /// \param interval Processing interval
- ///
- ////////////////////////////////////////////////////////////
- void setProcessingInterval(Time interval);
-
private:
////////////////////////////////////////////////////////////
@@ -329,9 +315,8 @@ private:
unsigned int m_sampleRate; //!< Frequency (samples / second)
Uint32 m_format; //!< Format of the internal sound buffers
bool m_loop; //!< Loop flag (true to loop, false to play once)
- Uint64 m_samplesProcessed; //!< Number of samples processed since beginning of the stream
+ Uint64 m_samplesProcessed; //!< Number of buffers processed since beginning of the stream
Int64 m_bufferSeeks[BufferCount]; //!< If buffer is an "end buffer", holds next seek position, else NoLoop. For play offset calculation.
- Time m_processingInterval; //!< Interval for checking and filling the internal sound buffers.
};
} // namespace sf
diff --git a/include/SFML/Config.hpp b/include/SFML/Config.hpp
index 3f282f2a..70b4a92d 100644
--- a/include/SFML/Config.hpp
+++ b/include/SFML/Config.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -36,7 +36,7 @@
////////////////////////////////////////////////////////////
// Identify the operating system
-// see https://sourceforge.net/p/predef/wiki/Home/
+// see http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system
////////////////////////////////////////////////////////////
#if defined(_WIN32)
diff --git a/include/SFML/GpuPreference.hpp b/include/SFML/GpuPreference.hpp
index d0cd9adf..a05c5a1d 100644
--- a/include/SFML/GpuPreference.hpp
+++ b/include/SFML/GpuPreference.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics.hpp b/include/SFML/Graphics.hpp
index 191c83fc..d0e0c8ff 100644
--- a/include/SFML/Graphics.hpp
+++ b/include/SFML/Graphics.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/BlendMode.hpp b/include/SFML/Graphics/BlendMode.hpp
index 4f8462b8..c2613cba 100644
--- a/include/SFML/Graphics/BlendMode.hpp
+++ b/include/SFML/Graphics/BlendMode.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/CircleShape.hpp b/include/SFML/Graphics/CircleShape.hpp
index 6f01c8d1..eba29c58 100644
--- a/include/SFML/Graphics/CircleShape.hpp
+++ b/include/SFML/Graphics/CircleShape.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Color.hpp b/include/SFML/Graphics/Color.hpp
index 6152b8c4..6771da13 100644
--- a/include/SFML/Graphics/Color.hpp
+++ b/include/SFML/Graphics/Color.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/ConvexShape.hpp b/include/SFML/Graphics/ConvexShape.hpp
index 45925651..28b6f22b 100644
--- a/include/SFML/Graphics/ConvexShape.hpp
+++ b/include/SFML/Graphics/ConvexShape.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Drawable.hpp b/include/SFML/Graphics/Drawable.hpp
index 612a8203..f03e5e0e 100644
--- a/include/SFML/Graphics/Drawable.hpp
+++ b/include/SFML/Graphics/Drawable.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Export.hpp b/include/SFML/Graphics/Export.hpp
index 88e4358b..1d9d6083 100644
--- a/include/SFML/Graphics/Export.hpp
+++ b/include/SFML/Graphics/Export.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Font.hpp b/include/SFML/Graphics/Font.hpp
index b8e5d925..49a9f863 100644
--- a/include/SFML/Graphics/Font.hpp
+++ b/include/SFML/Graphics/Font.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -166,10 +166,6 @@ public:
/// might be available. If the glyph is not available at the
/// requested size, an empty glyph is returned.
///
- /// You may want to use \ref hasGlyph to determine if the
- /// glyph exists before requesting it. If the glyph does not
- /// exist, a font specific default is returned.
- ///
/// Be aware that using a negative value for the outline
/// thickness will cause distorted rendering.
///
@@ -183,24 +179,6 @@ public:
////////////////////////////////////////////////////////////
const Glyph& getGlyph(Uint32 codePoint, unsigned int characterSize, bool bold, float outlineThickness = 0) const;
- ////////////////////////////////////////////////////////////
- /// \brief Determine if this font has a glyph representing the requested code point
- ///
- /// Most fonts only include a very limited selection of glyphs from
- /// specific Unicode subsets, like Latin, Cyrillic, or Asian characters.
- ///
- /// While code points without representation will return a font specific
- /// default character, it might be useful to verify whether specific
- /// code points are included to determine whether a font is suited
- /// to display text in a specific language.
- ///
- /// \param codePoint Unicode code point to check
- ///
- /// \return True if the codepoint has a glyph representation, false otherwise
- ///
- ////////////////////////////////////////////////////////////
- bool hasGlyph(Uint32 codePoint) const;
-
////////////////////////////////////////////////////////////
/// \brief Get the kerning offset of two glyphs
///
@@ -275,32 +253,6 @@ public:
////////////////////////////////////////////////////////////
const Texture& getTexture(unsigned int characterSize) const;
- ////////////////////////////////////////////////////////////
- /// \brief Enable or disable the smooth filter
- ///
- /// When the filter is activated, the font appears smoother
- /// so that pixels are less noticeable. However if you want
- /// the font to look exactly the same as its source file,
- /// you should disable it.
- /// The smooth filter is enabled by default.
- ///
- /// \param smooth True to enable smoothing, false to disable it
- ///
- /// \see isSmooth
- ///
- ////////////////////////////////////////////////////////////
- void setSmooth(bool smooth);
-
- ////////////////////////////////////////////////////////////
- /// \brief Tell whether the smooth filter is enabled or not
- ///
- /// \return True if smoothing is enabled, false if it is disabled
- ///
- /// \see setSmooth
- ///
- ////////////////////////////////////////////////////////////
- bool isSmooth() const;
-
////////////////////////////////////////////////////////////
/// \brief Overload of assignment operator
///
@@ -399,7 +351,6 @@ private:
void* m_streamRec; //!< Pointer to the stream rec instance (it is typeless to avoid exposing implementation details)
void* m_stroker; //!< Pointer to the stroker (it is typeless to avoid exposing implementation details)
int* m_refCount; //!< Reference counter used by implicit sharing
- bool m_isSmooth; //!< Status of the smooth filter
Info m_info; //!< Information about the font
mutable PageTable m_pages; //!< Table containing the glyphs pages by character size
mutable std::vector m_pixelBuffer; //!< Pixel buffer holding a glyph's pixels before being written to the texture
diff --git a/include/SFML/Graphics/Glsl.hpp b/include/SFML/Graphics/Glsl.hpp
index 6ea8694f..c395344e 100644
--- a/include/SFML/Graphics/Glsl.hpp
+++ b/include/SFML/Graphics/Glsl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Glsl.inl b/include/SFML/Graphics/Glsl.inl
index 4a839fdc..610b41b0 100644
--- a/include/SFML/Graphics/Glsl.inl
+++ b/include/SFML/Graphics/Glsl.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Glyph.hpp b/include/SFML/Graphics/Glyph.hpp
index 9ee00175..f0b4deb1 100644
--- a/include/SFML/Graphics/Glyph.hpp
+++ b/include/SFML/Graphics/Glyph.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Image.hpp b/include/SFML/Graphics/Image.hpp
index f2a7518b..570d4f11 100644
--- a/include/SFML/Graphics/Image.hpp
+++ b/include/SFML/Graphics/Image.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/PrimitiveType.hpp b/include/SFML/Graphics/PrimitiveType.hpp
index 08b675e3..74e3c416 100644
--- a/include/SFML/Graphics/PrimitiveType.hpp
+++ b/include/SFML/Graphics/PrimitiveType.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Rect.hpp b/include/SFML/Graphics/Rect.hpp
index d6cba3dd..0342e5f3 100644
--- a/include/SFML/Graphics/Rect.hpp
+++ b/include/SFML/Graphics/Rect.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Rect.inl b/include/SFML/Graphics/Rect.inl
index d996c604..1aa073dc 100644
--- a/include/SFML/Graphics/Rect.inl
+++ b/include/SFML/Graphics/Rect.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/RectangleShape.hpp b/include/SFML/Graphics/RectangleShape.hpp
index b3375794..f2151768 100644
--- a/include/SFML/Graphics/RectangleShape.hpp
+++ b/include/SFML/Graphics/RectangleShape.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/RenderStates.hpp b/include/SFML/Graphics/RenderStates.hpp
index ed6c9131..08ff6324 100644
--- a/include/SFML/Graphics/RenderStates.hpp
+++ b/include/SFML/Graphics/RenderStates.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/RenderTarget.hpp b/include/SFML/Graphics/RenderTarget.hpp
index 58bb8c33..29f411c3 100644
--- a/include/SFML/Graphics/RenderTarget.hpp
+++ b/include/SFML/Graphics/RenderTarget.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/RenderTexture.hpp b/include/SFML/Graphics/RenderTexture.hpp
index 0931ee7b..7d5f612f 100644
--- a/include/SFML/Graphics/RenderTexture.hpp
+++ b/include/SFML/Graphics/RenderTexture.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/RenderWindow.hpp b/include/SFML/Graphics/RenderWindow.hpp
index bf32e356..969cbf12 100644
--- a/include/SFML/Graphics/RenderWindow.hpp
+++ b/include/SFML/Graphics/RenderWindow.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Shader.hpp b/include/SFML/Graphics/Shader.hpp
index 9ac485a4..60fb7777 100644
--- a/include/SFML/Graphics/Shader.hpp
+++ b/include/SFML/Graphics/Shader.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Shape.hpp b/include/SFML/Graphics/Shape.hpp
index 44893cb5..087ef94e 100644
--- a/include/SFML/Graphics/Shape.hpp
+++ b/include/SFML/Graphics/Shape.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Sprite.hpp b/include/SFML/Graphics/Sprite.hpp
index 9581192e..56bea3e5 100644
--- a/include/SFML/Graphics/Sprite.hpp
+++ b/include/SFML/Graphics/Sprite.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Text.hpp b/include/SFML/Graphics/Text.hpp
index 8b1a093f..25c6b462 100644
--- a/include/SFML/Graphics/Text.hpp
+++ b/include/SFML/Graphics/Text.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Texture.hpp b/include/SFML/Graphics/Texture.hpp
index 0fbb0f9c..66035b45 100644
--- a/include/SFML/Graphics/Texture.hpp
+++ b/include/SFML/Graphics/Texture.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Transform.hpp b/include/SFML/Graphics/Transform.hpp
index d46aeebb..e26c01cd 100644
--- a/include/SFML/Graphics/Transform.hpp
+++ b/include/SFML/Graphics/Transform.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Transformable.hpp b/include/SFML/Graphics/Transformable.hpp
index c1560e2a..7d653f1e 100644
--- a/include/SFML/Graphics/Transformable.hpp
+++ b/include/SFML/Graphics/Transformable.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/Vertex.hpp b/include/SFML/Graphics/Vertex.hpp
index 6755479e..16d0512b 100644
--- a/include/SFML/Graphics/Vertex.hpp
+++ b/include/SFML/Graphics/Vertex.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/VertexArray.hpp b/include/SFML/Graphics/VertexArray.hpp
index 1645f65f..1cf8e7f9 100644
--- a/include/SFML/Graphics/VertexArray.hpp
+++ b/include/SFML/Graphics/VertexArray.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/VertexBuffer.hpp b/include/SFML/Graphics/VertexBuffer.hpp
index 7daaf014..76dfe761 100644
--- a/include/SFML/Graphics/VertexBuffer.hpp
+++ b/include/SFML/Graphics/VertexBuffer.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Graphics/View.hpp b/include/SFML/Graphics/View.hpp
index 6712c944..0c1691a7 100644
--- a/include/SFML/Graphics/View.hpp
+++ b/include/SFML/Graphics/View.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Main.hpp b/include/SFML/Main.hpp
index 27e3296e..9cc93623 100644
--- a/include/SFML/Main.hpp
+++ b/include/SFML/Main.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Network.hpp b/include/SFML/Network.hpp
index f3f98c30..fc2c626b 100644
--- a/include/SFML/Network.hpp
+++ b/include/SFML/Network.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Network/Export.hpp b/include/SFML/Network/Export.hpp
index 516a9d08..b3c52218 100644
--- a/include/SFML/Network/Export.hpp
+++ b/include/SFML/Network/Export.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Network/Ftp.hpp b/include/SFML/Network/Ftp.hpp
index ddc3a9c8..3cac70f9 100644
--- a/include/SFML/Network/Ftp.hpp
+++ b/include/SFML/Network/Ftp.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Network/Http.hpp b/include/SFML/Network/Http.hpp
index 61754729..067f2f4a 100644
--- a/include/SFML/Network/Http.hpp
+++ b/include/SFML/Network/Http.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Network/IpAddress.hpp b/include/SFML/Network/IpAddress.hpp
index b497b245..4ed5ea0d 100644
--- a/include/SFML/Network/IpAddress.hpp
+++ b/include/SFML/Network/IpAddress.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Network/Packet.hpp b/include/SFML/Network/Packet.hpp
index db9a797e..6d48e520 100644
--- a/include/SFML/Network/Packet.hpp
+++ b/include/SFML/Network/Packet.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -72,23 +72,10 @@ public:
/// \param sizeInBytes Number of bytes to append
///
/// \see clear
- /// \see getReadPosition
///
////////////////////////////////////////////////////////////
void append(const void* data, std::size_t sizeInBytes);
- ////////////////////////////////////////////////////////////
- /// \brief Get the current reading position in the packet
- ///
- /// The next read operation will read data from this position
- ///
- /// \return The byte offset of the current read position
- ///
- /// \see append
- ///
- ////////////////////////////////////////////////////////////
- std::size_t getReadPosition() const;
-
////////////////////////////////////////////////////////////
/// \brief Clear the packet
///
diff --git a/include/SFML/Network/Socket.hpp b/include/SFML/Network/Socket.hpp
index 9ebb930b..d5f7319e 100644
--- a/include/SFML/Network/Socket.hpp
+++ b/include/SFML/Network/Socket.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Network/SocketHandle.hpp b/include/SFML/Network/SocketHandle.hpp
index 688ea0bf..1dd13095 100644
--- a/include/SFML/Network/SocketHandle.hpp
+++ b/include/SFML/Network/SocketHandle.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Network/SocketSelector.hpp b/include/SFML/Network/SocketSelector.hpp
index 332f0724..d8e2b965 100644
--- a/include/SFML/Network/SocketSelector.hpp
+++ b/include/SFML/Network/SocketSelector.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Network/TcpListener.hpp b/include/SFML/Network/TcpListener.hpp
index d0bdad40..1f99f6d1 100644
--- a/include/SFML/Network/TcpListener.hpp
+++ b/include/SFML/Network/TcpListener.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -74,10 +74,6 @@ public:
/// function is called, it will stop listening on the old
/// port before starting to listen on the new port.
///
- /// When providing sf::Socket::AnyPort as port, the listener
- /// will request an available port from the system.
- /// The chosen port can be retrieved by calling getLocalPort().
- ///
/// \param port Port to listen on for incoming connection attempts
/// \param address Address of the interface to listen on
///
diff --git a/include/SFML/Network/TcpSocket.hpp b/include/SFML/Network/TcpSocket.hpp
index 5778068a..52b84e1c 100644
--- a/include/SFML/Network/TcpSocket.hpp
+++ b/include/SFML/Network/TcpSocket.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Network/UdpSocket.hpp b/include/SFML/Network/UdpSocket.hpp
index 14176f8e..826a156d 100644
--- a/include/SFML/Network/UdpSocket.hpp
+++ b/include/SFML/Network/UdpSocket.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -78,10 +78,9 @@ public:
///
/// Binding the socket to a port is necessary for being
/// able to receive data on that port.
- ///
- /// When providing sf::Socket::AnyPort as port, the listener
- /// will request an available port from the system.
- /// The chosen port can be retrieved by calling getLocalPort().
+ /// You can use the special value Socket::AnyPort to tell the
+ /// system to automatically pick an available port, and then
+ /// call getLocalPort to retrieve the chosen port.
///
/// Since the socket can only be bound to a single port at
/// any given moment, if it is already bound when this
diff --git a/include/SFML/OpenGL.hpp b/include/SFML/OpenGL.hpp
index 45a3ac3d..cc48a483 100644
--- a/include/SFML/OpenGL.hpp
+++ b/include/SFML/OpenGL.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System.hpp b/include/SFML/System.hpp
index 3c82226b..37dff6bb 100644
--- a/include/SFML/System.hpp
+++ b/include/SFML/System.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Clock.hpp b/include/SFML/System/Clock.hpp
index 21503477..6e40c001 100644
--- a/include/SFML/System/Clock.hpp
+++ b/include/SFML/System/Clock.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Err.hpp b/include/SFML/System/Err.hpp
index 9ad1b29c..37bf1388 100644
--- a/include/SFML/System/Err.hpp
+++ b/include/SFML/System/Err.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Export.hpp b/include/SFML/System/Export.hpp
index b9691eec..39dfd20b 100644
--- a/include/SFML/System/Export.hpp
+++ b/include/SFML/System/Export.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/FileInputStream.hpp b/include/SFML/System/FileInputStream.hpp
index d46be628..bc051c44 100644
--- a/include/SFML/System/FileInputStream.hpp
+++ b/include/SFML/System/FileInputStream.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/InputStream.hpp b/include/SFML/System/InputStream.hpp
index 28022eca..a4cb52ee 100644
--- a/include/SFML/System/InputStream.hpp
+++ b/include/SFML/System/InputStream.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Lock.hpp b/include/SFML/System/Lock.hpp
index 8667d144..e4d33a88 100644
--- a/include/SFML/System/Lock.hpp
+++ b/include/SFML/System/Lock.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/MemoryInputStream.hpp b/include/SFML/System/MemoryInputStream.hpp
index 15cf38d9..e97df71f 100644
--- a/include/SFML/System/MemoryInputStream.hpp
+++ b/include/SFML/System/MemoryInputStream.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Mutex.hpp b/include/SFML/System/Mutex.hpp
index 34610c30..c7b1f9e3 100644
--- a/include/SFML/System/Mutex.hpp
+++ b/include/SFML/System/Mutex.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/NativeActivity.hpp b/include/SFML/System/NativeActivity.hpp
index 25609b5c..6f5437eb 100644
--- a/include/SFML/System/NativeActivity.hpp
+++ b/include/SFML/System/NativeActivity.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/NonCopyable.hpp b/include/SFML/System/NonCopyable.hpp
index c5b42c8c..1115ce2c 100644
--- a/include/SFML/System/NonCopyable.hpp
+++ b/include/SFML/System/NonCopyable.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Sleep.hpp b/include/SFML/System/Sleep.hpp
index 98668651..aa3bc3a7 100644
--- a/include/SFML/System/Sleep.hpp
+++ b/include/SFML/System/Sleep.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/String.hpp b/include/SFML/System/String.hpp
index 970105dc..46a87e42 100644
--- a/include/SFML/System/String.hpp
+++ b/include/SFML/System/String.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/String.inl b/include/SFML/System/String.inl
index 0f3a890b..85915d82 100644
--- a/include/SFML/System/String.inl
+++ b/include/SFML/System/String.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Thread.hpp b/include/SFML/System/Thread.hpp
index ead09e84..16701b7b 100644
--- a/include/SFML/System/Thread.hpp
+++ b/include/SFML/System/Thread.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Thread.inl b/include/SFML/System/Thread.inl
index 55976e86..1d40c54d 100644
--- a/include/SFML/System/Thread.inl
+++ b/include/SFML/System/Thread.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/ThreadLocal.hpp b/include/SFML/System/ThreadLocal.hpp
index 065f29c2..1eb442b5 100644
--- a/include/SFML/System/ThreadLocal.hpp
+++ b/include/SFML/System/ThreadLocal.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/ThreadLocalPtr.hpp b/include/SFML/System/ThreadLocalPtr.hpp
index a6ecd9de..549ffb0d 100644
--- a/include/SFML/System/ThreadLocalPtr.hpp
+++ b/include/SFML/System/ThreadLocalPtr.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/ThreadLocalPtr.inl b/include/SFML/System/ThreadLocalPtr.inl
index f76c77f8..14e453e9 100644
--- a/include/SFML/System/ThreadLocalPtr.inl
+++ b/include/SFML/System/ThreadLocalPtr.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Time.hpp b/include/SFML/System/Time.hpp
index 1478730c..4541afbc 100644
--- a/include/SFML/System/Time.hpp
+++ b/include/SFML/System/Time.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Utf.hpp b/include/SFML/System/Utf.hpp
index af567531..1452d3d5 100644
--- a/include/SFML/System/Utf.hpp
+++ b/include/SFML/System/Utf.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Utf.inl b/include/SFML/System/Utf.inl
index d1ea73de..1fed3a00 100644
--- a/include/SFML/System/Utf.inl
+++ b/include/SFML/System/Utf.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Vector2.hpp b/include/SFML/System/Vector2.hpp
index 429e649f..3335944c 100644
--- a/include/SFML/System/Vector2.hpp
+++ b/include/SFML/System/Vector2.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Vector2.inl b/include/SFML/System/Vector2.inl
index 848395b3..2faee862 100644
--- a/include/SFML/System/Vector2.inl
+++ b/include/SFML/System/Vector2.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Vector3.hpp b/include/SFML/System/Vector3.hpp
index 08220c9f..4aced322 100644
--- a/include/SFML/System/Vector3.hpp
+++ b/include/SFML/System/Vector3.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/System/Vector3.inl b/include/SFML/System/Vector3.inl
index 852c6dbb..f139dcde 100644
--- a/include/SFML/System/Vector3.inl
+++ b/include/SFML/System/Vector3.inl
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window.hpp b/include/SFML/Window.hpp
index e3667b01..da70c3ce 100644
--- a/include/SFML/Window.hpp
+++ b/include/SFML/Window.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/Clipboard.hpp b/include/SFML/Window/Clipboard.hpp
index 68a37973..b7c1cd06 100644
--- a/include/SFML/Window/Clipboard.hpp
+++ b/include/SFML/Window/Clipboard.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/Context.hpp b/include/SFML/Window/Context.hpp
index 7ef9b9a1..01590834 100644
--- a/include/SFML/Window/Context.hpp
+++ b/include/SFML/Window/Context.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/ContextSettings.hpp b/include/SFML/Window/ContextSettings.hpp
index d2d84385..1acd60e9 100644
--- a/include/SFML/Window/ContextSettings.hpp
+++ b/include/SFML/Window/ContextSettings.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/Cursor.hpp b/include/SFML/Window/Cursor.hpp
index ea29c504..f13840f6 100644
--- a/include/SFML/Window/Cursor.hpp
+++ b/include/SFML/Window/Cursor.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -129,8 +129,7 @@ public:
/// position is. Any mouse actions that are performed will
/// return the window/screen location of the hotspot.
///
- /// \warning On Unix platforms which do not support colored
- /// cursors, the pixels are mapped into a monochrome
+ /// \warning On Unix, the pixels are mapped into a monochrome
/// bitmap: pixels with an alpha channel to 0 are
/// transparent, black if the RGB channel are close
/// to zero, and white otherwise.
diff --git a/include/SFML/Window/Event.hpp b/include/SFML/Window/Event.hpp
index 2b7c8dcb..dfeafb32 100644
--- a/include/SFML/Window/Event.hpp
+++ b/include/SFML/Window/Event.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -61,11 +61,12 @@ public:
////////////////////////////////////////////////////////////
struct KeyEvent
{
- Keyboard::Key code; //!< Code of the key that has been pressed
- bool alt; //!< Is the Alt key pressed?
- bool control; //!< Is the Control key pressed?
- bool shift; //!< Is the Shift key pressed?
- bool system; //!< Is the System key pressed?
+ Keyboard::Key code; ///< Code of the key that has been pressed, or Unknown
+ Keyboard::Scancode scancode; ///< Physical code of the key that has been pressed
+ bool alt; ///< Is the Alt key pressed?
+ bool control; ///< Is the Control key pressed?
+ bool shift; ///< Is the Shift key pressed?
+ bool system; ///< Is the System key pressed?
};
////////////////////////////////////////////////////////////
diff --git a/include/SFML/Window/Export.hpp b/include/SFML/Window/Export.hpp
index 11f27b36..5b198410 100644
--- a/include/SFML/Window/Export.hpp
+++ b/include/SFML/Window/Export.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/GlResource.hpp b/include/SFML/Window/GlResource.hpp
index 223707e8..3d007fc5 100644
--- a/include/SFML/Window/GlResource.hpp
+++ b/include/SFML/Window/GlResource.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/Joystick.hpp b/include/SFML/Window/Joystick.hpp
index dd5454c3..ad61587e 100644
--- a/include/SFML/Window/Joystick.hpp
+++ b/include/SFML/Window/Joystick.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/Keyboard.hpp b/include/SFML/Window/Keyboard.hpp
index 0bbcd8ab..6e6f8105 100644
--- a/include/SFML/Window/Keyboard.hpp
+++ b/include/SFML/Window/Keyboard.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -29,10 +29,13 @@
// Headers
////////////////////////////////////////////////////////////
#include
+#include
namespace sf
{
+class String;
+
////////////////////////////////////////////////////////////
/// \brief Give access to the real-time state of the keyboard
///
@@ -44,6 +47,10 @@ public:
////////////////////////////////////////////////////////////
/// \brief Key codes
///
+ /// The enumerators refer to the "localized" key; i.e. depending
+ /// on the layout set by the operating system, a key can be mapped
+ /// to `Y` or `Z`.
+ ///
////////////////////////////////////////////////////////////
enum Key
{
@@ -161,6 +168,156 @@ public:
Return = Enter //!< \deprecated Use Enter instead
};
+ ////////////////////////////////////////////////////////////
+ /// \brief Scancodes
+ ///
+ /// The enumerators are bound to a physical key and do not depend on
+ /// the keyboard layout used by the operating system. Usually, the AT-101
+ /// keyboard can be used as reference for the physical position of the keys.
+ ///
+ /// The scancodes are based on a subset of Table 12: Keyboard/Keypad Page
+ /// of Universal Serial Bus (USB): HID Usage Tables, v1.12.
+ ///
+ /// \todo When porting this for SFML 3, remove the `Scan` prefix and use
+ /// enum class.
+ ///
+ ////////////////////////////////////////////////////////////
+ enum Scancode
+ {
+ ScanUnknown = -1, ///< Represents any scancode not present in this enum
+ ScanA = 0, ///< Keyboard a and A key
+ ScanB, ///< Keyboard b and B key
+ ScanC, ///< Keyboard c and C key
+ ScanD, ///< Keyboard d and D key
+ ScanE, ///< Keyboard e and E key
+ ScanF, ///< Keyboard f and F key
+ ScanG, ///< Keyboard g and G key
+ ScanH, ///< Keyboard h and H key
+ ScanI, ///< Keyboard i and I key
+ ScanJ, ///< Keyboard j and J key
+ ScanK, ///< Keyboard k and K key
+ ScanL, ///< Keyboard l and L key
+ ScanM, ///< Keyboard m and M key
+ ScanN, ///< Keyboard n and N key
+ ScanO, ///< Keyboard o and O key
+ ScanP, ///< Keyboard p and P key
+ ScanQ, ///< Keyboard q and Q key
+ ScanR, ///< Keyboard r and R key
+ ScanS, ///< Keyboard s and S key
+ ScanT, ///< Keyboard t and T key
+ ScanU, ///< Keyboard u and U key
+ ScanV, ///< Keyboard v and V key
+ ScanW, ///< Keyboard w and W key
+ ScanX, ///< Keyboard x and X key
+ ScanY, ///< Keyboard y and Y key
+ ScanZ, ///< Keyboard z and Z key
+ ScanNum1, ///< Keyboard 1 and ! key
+ ScanNum2, ///< Keyboard 2 and @ key
+ ScanNum3, ///< Keyboard 3 and # key
+ ScanNum4, ///< Keyboard 4 and $ key
+ ScanNum5, ///< Keyboard 5 and % key
+ ScanNum6, ///< Keyboard 6 and ^ key
+ ScanNum7, ///< Keyboard 7 and & key
+ ScanNum8, ///< Keyboard 8 and * key
+ ScanNum9, ///< Keyboard 9 and ) key
+ ScanNum0, ///< Keyboard 0 and ) key
+ ScanEnter, ///< Keyboard Enter/Return key
+ ScanEscape, ///< Keyboard Escape key
+ ScanBackspace, ///< Keyboard Backspace key
+ ScanTab, ///< Keyboard Tab key
+ ScanSpace, ///< Keyboard Space key
+ ScanHyphen, ///< Keyboard - and _ key
+ ScanEquals, ///< Keyboard = and +
+ ScanLBracket, ///< Keyboard [ and { key
+ ScanRBracket, ///< Keyboard ] and } key
+ ScanBackslash, ///< Keyboard \ and | key
+ ScanDash, ///< Keyboard Non-US # and ~
+ // TODO hyphen vs minus vs dash
+ ScanSemicolon, ///< Keyboard ; and : key
+ ScanQuote, ///< Keyboard ' and " key
+ ScanGraveAccent, ///< Keyboard ` and ~ key
+ ScanComma, ///< Keyboard , and < key
+ ScanPeriod, ///< Keyboard . and > key
+ ScanSlash, ///< Keyboard / and ? key
+ ScanF1, ///< Keyboard F1 key
+ ScanF2, ///< Keyboard F2 key
+ ScanF3, ///< Keyboard F3 key
+ ScanF4, ///< Keyboard F4 key
+ ScanF5, ///< Keyboard F5 key
+ ScanF6, ///< Keyboard F6 key
+ ScanF7, ///< Keyboard F7 key
+ ScanF8, ///< Keyboard F8 key
+ ScanF9, ///< Keyboard F9 key
+ ScanF10, ///< Keyboard F10 key
+ ScanF11, ///< Keyboard F11 key
+ ScanF12, ///< Keyboard F12 key
+ ScanF13, ///< Keyboard F13 key
+ ScanF14, ///< Keyboard F14 key
+ ScanF15, ///< Keyboard F15 key
+ ScanCapsLock, ///< Keyboard Caps Lock key
+ ScanPrintScreen, ///< Keyboard Print Screen key
+ ScanScrollLock, ///< Keyboard Scroll Lock key
+ ScanPause, ///< Keyboard Pause key
+ ScanInsert, ///< Keyboard Insert key
+ ScanHome, ///< Keyboard Home key
+ ScanPageUp, ///< Keyboard Page Up key
+ ScanDelete, ///< Keyboard Delete Forward key
+ ScanEnd, ///< Keyboard End key
+ ScanPageDown, ///< Keyboard Page Down key
+ ScanRight, ///< Keyboard Right Arrow key
+ ScanLeft, ///< Keyboard Left Arrow key
+ ScanDown, ///< Keyboard Down Arrow key
+ ScanUp, ///< Keyboard Up Arrow key
+ ScanNumLock, ///< Keypad Num Lock and Clear key
+ ScanDivide, ///< Keypad / key
+ ScanMultiply, ///< Keypad * key
+ ScanMinus, ///< Keypad - key
+ ScanPlus, ///< Keypad + key
+ ScanNumpadEquals, ///< keypad = key, probably Mac only
+ ScanNumpadEnter, ///< Keypad Enter/Return key
+ ScanDecimal, ///< Keypad . and Delete key
+ ScanNumpad1, ///< Keypad 1 and End key
+ ScanNumpad2, ///< Keypad 2 and Down Arrow key
+ ScanNumpad3, ///< Keypad 3 and Page Down key
+ ScanNumpad4, ///< Keypad 4 and Left Arrow key
+ ScanNumpad5, ///< Keypad 5 key
+ ScanNumpad6, ///< Keypad 6 and Right Arrow key
+ ScanNumpad7, ///< Keypad 7 and Home key
+ ScanNumpad8, ///< Keypad 8 and Up Arrow key
+ ScanNumpad9, ///< Keypad 9 and Page Up key
+ ScanNumpad0, ///< Keypad 0 and Insert key
+ ScanReverseSolidus, ///< Keyboard Non-US \ and | key
+ // FIXME what is this one? Might need better name. The doc says:
+ // - Typically near the Left-Shift key in AT-102 implementations.
+ // - Typical language mappings: Belg:<\> FrCa:«°» Dan:<\> Dutch:]|[ Fren:<> Ger:<|> Ital:<> LatAm:<> Nor:<> Span:<> Swed:<|> Swiss:<\> UK:\| Brazil: \|.
+ // What is the difference with "regular" \ and | key?
+ ScanApplication, ///< Keyboard Application key
+ ScanExecute, ///< Keyboard Execute key
+ ScanHelp, ///< Keyboard Help key
+ ScanMenu, ///< Keyboard Menu key
+ ScanSelect, ///< Keyboard Select key
+ ScanStop, ///< Keyboard Stop key
+ ScanAgain, ///< Keyboard Again key
+ ScanUndo, ///< Keyboard Undo key
+ ScanCut, ///< Keyboard Cut key
+ ScanCopy, ///< Keyboard Copy key
+ ScanPaste, ///< Keyboard Paste key
+ ScanFind, ///< Keyboard Find key
+ ScanMute, ///< Keyboard Mute key
+ ScanVolumeUp, ///< Keyboard Volume Up key
+ ScanVolumeDown, ///< Keyboard Volume Down key
+ ScanLControl, ///< Keyboard Left Control key
+ ScanLShift, ///< Keyboard Left Shift key
+ ScanLAlt, ///< Keyboard Left Alt key
+ ScanLSystem, ///< Keyboard Left System key
+ ScanRControl, ///< Keyboard Right Control key
+ ScanRShift, ///< Keyboard Right Shift key
+ ScanRAlt, ///< Keyboard Right Alt key
+ ScanRSystem, ///< Keyboard Right System key
+
+ ScanCodeCount ///< Keep last -- the total number of scancodes
+ };
+
////////////////////////////////////////////////////////////
/// \brief Check if a key is pressed
///
@@ -171,12 +328,73 @@ public:
////////////////////////////////////////////////////////////
static bool isKeyPressed(Key key);
+ ////////////////////////////////////////////////////////////
+ /// \brief Check if a key is pressed
+ ///
+ /// \param code Scancode to check
+ ///
+ /// \return True if the physical key is pressed, false otherwise
+ ///
+ ////////////////////////////////////////////////////////////
+ static bool isKeyPressed(Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Localize a physical key to a logical one
+ ///
+ /// \param code Scancode to localize
+ ///
+ /// \return The key corresponding to the scancode under the current
+ /// keyboard layout used by the operating system, or
+ /// sf::Keyboard::Unknown when the scancode cannot be mapped
+ /// to a Key.
+ ///
+ /// \see unlocalize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Key localize(Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Identify the physical key corresponding to a logical one
+ ///
+ /// \param key Key to "unlocalize"
+ ///
+ /// \return The scancode corresponding to the key under the current
+ /// keyboard layout used by the operating system, or
+ /// sf::Keyboard::ScanUnknown when the key cannot be mapped
+ /// to a Keyboard::Scancode.
+ ///
+ /// \see localize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Scancode unlocalize(Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \brief Provide a string representation for a given scancode
+ ///
+ /// From a high level point of view, this conversion corresponds
+ /// somewhat to the string available through sf::Event::TextEvent
+ /// when the given physical key is pressed by the user, when no
+ /// modifiers are involved.
+ ///
+ /// \warning The result is OS-dependent: for example, sf::Keyboard::ScanLSystem
+ /// is "Left Meta" on Linux, "Left Windows" on Windows and
+ /// "Left Command" on macOS.
+ ///
+ /// The current keyboard layout set by the operating system is used to
+ /// interpret the scancode: for example, sf::Keyboard::Semicolon is
+ /// mapped to ";" for layout and to "é" for others.
+ ///
+ /// \return The localized description of the code
+ ///
+ ////////////////////////////////////////////////////////////
+ static String getDescription(Scancode code);
+
////////////////////////////////////////////////////////////
/// \brief Show or hide the virtual keyboard
///
- /// Warning: the virtual keyboard is not supported on all
- /// systems. It will typically be implemented on mobile OSes
- /// (Android, iOS) but not on desktop OSes (Windows, Linux, ...).
+ /// \warning The virtual keyboard is not supported on all
+ /// systems. It will typically be implemented on mobile OSes
+ /// (Android, iOS) but not on desktop OSes (Windows, Linux, ...).
///
/// If the virtual keyboard is not available, this function does
/// nothing.
diff --git a/include/SFML/Window/Mouse.hpp b/include/SFML/Window/Mouse.hpp
index d2b7fefa..7506282d 100644
--- a/include/SFML/Window/Mouse.hpp
+++ b/include/SFML/Window/Mouse.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/Sensor.hpp b/include/SFML/Window/Sensor.hpp
index 337bc7f4..2bce8676 100644
--- a/include/SFML/Window/Sensor.hpp
+++ b/include/SFML/Window/Sensor.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/Touch.hpp b/include/SFML/Window/Touch.hpp
index bc9f72e1..fa64f390 100644
--- a/include/SFML/Window/Touch.hpp
+++ b/include/SFML/Window/Touch.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/VideoMode.hpp b/include/SFML/Window/VideoMode.hpp
index d95ea49a..24c4ec61 100644
--- a/include/SFML/Window/VideoMode.hpp
+++ b/include/SFML/Window/VideoMode.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/Vulkan.hpp b/include/SFML/Window/Vulkan.hpp
index 00ee911a..cd501a12 100644
--- a/include/SFML/Window/Vulkan.hpp
+++ b/include/SFML/Window/Vulkan.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/Window.hpp b/include/SFML/Window/Window.hpp
index bcbe8725..f89fc353 100644
--- a/include/SFML/Window/Window.hpp
+++ b/include/SFML/Window/Window.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/WindowBase.hpp b/include/SFML/Window/WindowBase.hpp
index d1d4ff98..b3073cbf 100644
--- a/include/SFML/Window/WindowBase.hpp
+++ b/include/SFML/Window/WindowBase.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/WindowHandle.hpp b/include/SFML/Window/WindowHandle.hpp
index 624ca737..c05d50be 100644
--- a/include/SFML/Window/WindowHandle.hpp
+++ b/include/SFML/Window/WindowHandle.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/include/SFML/Window/WindowStyle.hpp b/include/SFML/Window/WindowStyle.hpp
index ab611d29..5edf76ce 100644
--- a/include/SFML/Window/WindowStyle.hpp
+++ b/include/SFML/Window/WindowStyle.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/license.md b/license.md
index 1ae961a7..9f6db1a9 100644
--- a/license.md
+++ b/license.md
@@ -1,6 +1,6 @@
# SFML
-SFML - Copyright (C) 2007-2020 Laurent Gomila - laurent@sfml-dev.org
+SFML - Copyright (C) 2007-2019 Laurent Gomila - laurent@sfml-dev.org
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/ALCheck.cpp b/src/SFML/Audio/ALCheck.cpp
index a7873a0a..8514cc98 100644
--- a/src/SFML/Audio/ALCheck.cpp
+++ b/src/SFML/Audio/ALCheck.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/ALCheck.hpp b/src/SFML/Audio/ALCheck.hpp
index 95259fb7..963d271a 100644
--- a/src/SFML/Audio/ALCheck.hpp
+++ b/src/SFML/Audio/ALCheck.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/AlResource.cpp b/src/SFML/Audio/AlResource.cpp
index 42a4945f..f59d36b4 100644
--- a/src/SFML/Audio/AlResource.cpp
+++ b/src/SFML/Audio/AlResource.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/AudioDevice.cpp b/src/SFML/Audio/AudioDevice.cpp
index b9246dfd..e4ebc4b9 100644
--- a/src/SFML/Audio/AudioDevice.cpp
+++ b/src/SFML/Audio/AudioDevice.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/AudioDevice.hpp b/src/SFML/Audio/AudioDevice.hpp
index a8bac26e..af940217 100644
--- a/src/SFML/Audio/AudioDevice.hpp
+++ b/src/SFML/Audio/AudioDevice.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/InputSoundFile.cpp b/src/SFML/Audio/InputSoundFile.cpp
index cb8bed04..6d9da57c 100644
--- a/src/SFML/Audio/InputSoundFile.cpp
+++ b/src/SFML/Audio/InputSoundFile.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/Listener.cpp b/src/SFML/Audio/Listener.cpp
index 477f0931..bbbece5e 100644
--- a/src/SFML/Audio/Listener.cpp
+++ b/src/SFML/Audio/Listener.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/Music.cpp b/src/SFML/Audio/Music.cpp
index d711eff1..b8829d02 100644
--- a/src/SFML/Audio/Music.cpp
+++ b/src/SFML/Audio/Music.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/OutputSoundFile.cpp b/src/SFML/Audio/OutputSoundFile.cpp
index ddaafcf0..c6584352 100644
--- a/src/SFML/Audio/OutputSoundFile.cpp
+++ b/src/SFML/Audio/OutputSoundFile.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/Sound.cpp b/src/SFML/Audio/Sound.cpp
index 505e9588..36e65849 100644
--- a/src/SFML/Audio/Sound.cpp
+++ b/src/SFML/Audio/Sound.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundBuffer.cpp b/src/SFML/Audio/SoundBuffer.cpp
index 3c23920e..dfd137ff 100644
--- a/src/SFML/Audio/SoundBuffer.cpp
+++ b/src/SFML/Audio/SoundBuffer.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundBufferRecorder.cpp b/src/SFML/Audio/SoundBufferRecorder.cpp
index 2d8b63c7..12694354 100644
--- a/src/SFML/Audio/SoundBufferRecorder.cpp
+++ b/src/SFML/Audio/SoundBufferRecorder.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileFactory.cpp b/src/SFML/Audio/SoundFileFactory.cpp
index 2f7ddfc2..a0caf7a1 100644
--- a/src/SFML/Audio/SoundFileFactory.cpp
+++ b/src/SFML/Audio/SoundFileFactory.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileReaderFlac.cpp b/src/SFML/Audio/SoundFileReaderFlac.cpp
index 88600e30..c9a8cb97 100644
--- a/src/SFML/Audio/SoundFileReaderFlac.cpp
+++ b/src/SFML/Audio/SoundFileReaderFlac.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileReaderFlac.hpp b/src/SFML/Audio/SoundFileReaderFlac.hpp
index 53cf0c4f..23ec12db 100644
--- a/src/SFML/Audio/SoundFileReaderFlac.hpp
+++ b/src/SFML/Audio/SoundFileReaderFlac.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileReaderOgg.cpp b/src/SFML/Audio/SoundFileReaderOgg.cpp
index 5585ab38..0621cad0 100644
--- a/src/SFML/Audio/SoundFileReaderOgg.cpp
+++ b/src/SFML/Audio/SoundFileReaderOgg.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileReaderOgg.hpp b/src/SFML/Audio/SoundFileReaderOgg.hpp
index 7942bec6..67b03f47 100644
--- a/src/SFML/Audio/SoundFileReaderOgg.hpp
+++ b/src/SFML/Audio/SoundFileReaderOgg.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileReaderWav.cpp b/src/SFML/Audio/SoundFileReaderWav.cpp
index df9dab94..e498dd55 100644
--- a/src/SFML/Audio/SoundFileReaderWav.cpp
+++ b/src/SFML/Audio/SoundFileReaderWav.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileReaderWav.hpp b/src/SFML/Audio/SoundFileReaderWav.hpp
index 04e3a10d..f2f89479 100644
--- a/src/SFML/Audio/SoundFileReaderWav.hpp
+++ b/src/SFML/Audio/SoundFileReaderWav.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileWriterFlac.cpp b/src/SFML/Audio/SoundFileWriterFlac.cpp
index ddd3c20a..f30c2fec 100644
--- a/src/SFML/Audio/SoundFileWriterFlac.cpp
+++ b/src/SFML/Audio/SoundFileWriterFlac.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileWriterFlac.hpp b/src/SFML/Audio/SoundFileWriterFlac.hpp
index d54975e9..7eef2e4a 100644
--- a/src/SFML/Audio/SoundFileWriterFlac.hpp
+++ b/src/SFML/Audio/SoundFileWriterFlac.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileWriterOgg.cpp b/src/SFML/Audio/SoundFileWriterOgg.cpp
index c56847e5..9791ef36 100644
--- a/src/SFML/Audio/SoundFileWriterOgg.cpp
+++ b/src/SFML/Audio/SoundFileWriterOgg.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileWriterOgg.hpp b/src/SFML/Audio/SoundFileWriterOgg.hpp
index 7a482d1c..19bb6cca 100644
--- a/src/SFML/Audio/SoundFileWriterOgg.hpp
+++ b/src/SFML/Audio/SoundFileWriterOgg.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileWriterWav.cpp b/src/SFML/Audio/SoundFileWriterWav.cpp
index 4f82d5ef..3353d236 100644
--- a/src/SFML/Audio/SoundFileWriterWav.cpp
+++ b/src/SFML/Audio/SoundFileWriterWav.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundFileWriterWav.hpp b/src/SFML/Audio/SoundFileWriterWav.hpp
index 58d16845..f1b07e7e 100644
--- a/src/SFML/Audio/SoundFileWriterWav.hpp
+++ b/src/SFML/Audio/SoundFileWriterWav.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundRecorder.cpp b/src/SFML/Audio/SoundRecorder.cpp
index 1066b452..8b0b6901 100644
--- a/src/SFML/Audio/SoundRecorder.cpp
+++ b/src/SFML/Audio/SoundRecorder.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundSource.cpp b/src/SFML/Audio/SoundSource.cpp
index 7bc6b3a0..f4bc4b20 100644
--- a/src/SFML/Audio/SoundSource.cpp
+++ b/src/SFML/Audio/SoundSource.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Audio/SoundStream.cpp b/src/SFML/Audio/SoundStream.cpp
index b4172a2b..5b6fff02 100644
--- a/src/SFML/Audio/SoundStream.cpp
+++ b/src/SFML/Audio/SoundStream.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -51,8 +51,7 @@ m_sampleRate (0),
m_format (0),
m_loop (false),
m_samplesProcessed(0),
-m_bufferSeeks (),
-m_processingInterval(milliseconds(10))
+m_bufferSeeks ()
{
}
@@ -265,11 +264,6 @@ Int64 SoundStream::onLoop()
return 0;
}
-////////////////////////////////////////////////////////////
-void SoundStream::setProcessingInterval(Time interval)
-{
- m_processingInterval = interval;
-}
////////////////////////////////////////////////////////////
void SoundStream::streamData()
@@ -390,7 +384,7 @@ void SoundStream::streamData()
// Leave some time for the other threads if the stream is still playing
if (SoundSource::getStatus() != Stopped)
- sleep(m_processingInterval);
+ sleep(milliseconds(10));
}
// Stop the playback
diff --git a/src/SFML/Graphics/BlendMode.cpp b/src/SFML/Graphics/BlendMode.cpp
index 7897247f..7f0901af 100644
--- a/src/SFML/Graphics/BlendMode.cpp
+++ b/src/SFML/Graphics/BlendMode.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/CircleShape.cpp b/src/SFML/Graphics/CircleShape.cpp
index 8c70f626..730353fc 100644
--- a/src/SFML/Graphics/CircleShape.cpp
+++ b/src/SFML/Graphics/CircleShape.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Color.cpp b/src/SFML/Graphics/Color.cpp
index b0bb6876..02b8581f 100644
--- a/src/SFML/Graphics/Color.cpp
+++ b/src/SFML/Graphics/Color.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/ConvexShape.cpp b/src/SFML/Graphics/ConvexShape.cpp
index fa5da832..9346e3d9 100644
--- a/src/SFML/Graphics/ConvexShape.cpp
+++ b/src/SFML/Graphics/ConvexShape.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Font.cpp b/src/SFML/Graphics/Font.cpp
index ddc9d361..4576987c 100644
--- a/src/SFML/Graphics/Font.cpp
+++ b/src/SFML/Graphics/Font.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -88,7 +88,6 @@ m_face (NULL),
m_streamRec(NULL),
m_stroker (NULL),
m_refCount (NULL),
-m_isSmooth (true),
m_info ()
{
#ifdef SFML_SYSTEM_ANDROID
@@ -106,8 +105,7 @@ m_stroker (copy.m_stroker),
m_refCount (copy.m_refCount),
m_info (copy.m_info),
m_pages (copy.m_pages),
-m_pixelBuffer(copy.m_pixelBuffer),
-m_isSmooth (copy.m_isSmooth)
+m_pixelBuffer(copy.m_pixelBuffer)
{
#ifdef SFML_SYSTEM_ANDROID
m_stream = NULL;
@@ -367,13 +365,6 @@ const Glyph& Font::getGlyph(Uint32 codePoint, unsigned int characterSize, bool b
}
-////////////////////////////////////////////////////////////
-bool Font::hasGlyph(Uint32 codePoint) const
-{
- return FT_Get_Char_Index(static_cast(m_face), codePoint) != 0;
-}
-
-
////////////////////////////////////////////////////////////
float Font::getKerning(Uint32 first, Uint32 second, unsigned int characterSize) const
{
@@ -470,26 +461,6 @@ const Texture& Font::getTexture(unsigned int characterSize) const
return m_pages[characterSize].texture;
}
-////////////////////////////////////////////////////////////
-void Font::setSmooth(bool smooth)
-{
- if (smooth != m_isSmooth)
- {
- m_isSmooth = smooth;
-
- for (sf::Font::PageTable::iterator page = m_pages.begin(); page != m_pages.end(); ++page)
- {
- page->second.texture.setSmooth(m_isSmooth);
- }
- }
-}
-
-////////////////////////////////////////////////////////////
-bool Font::isSmooth() const
-{
- return m_isSmooth;
-}
-
////////////////////////////////////////////////////////////
Font& Font::operator =(const Font& right)
@@ -504,7 +475,6 @@ Font& Font::operator =(const Font& right)
std::swap(m_info, temp.m_info);
std::swap(m_pages, temp.m_pages);
std::swap(m_pixelBuffer, temp.m_pixelBuffer);
- std::swap(m_isSmooth, temp.m_isSmooth);
#ifdef SFML_SYSTEM_ANDROID
std::swap(m_stream, temp.m_stream);
@@ -757,7 +727,7 @@ IntRect Font::findGlyphRect(Page& page, unsigned int width, unsigned int height)
// Make the texture 2 times bigger
Texture newTexture;
newTexture.create(textureWidth * 2, textureHeight * 2);
- newTexture.setSmooth(m_isSmooth);
+ newTexture.setSmooth(true);
newTexture.update(page.texture);
page.texture.swap(newTexture);
}
diff --git a/src/SFML/Graphics/GLCheck.cpp b/src/SFML/Graphics/GLCheck.cpp
index e908eaae..5bb140c1 100644
--- a/src/SFML/Graphics/GLCheck.cpp
+++ b/src/SFML/Graphics/GLCheck.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/GLCheck.hpp b/src/SFML/Graphics/GLCheck.hpp
index c1bcaea3..19ab3b1e 100644
--- a/src/SFML/Graphics/GLCheck.hpp
+++ b/src/SFML/Graphics/GLCheck.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/GLExtensions.cpp b/src/SFML/Graphics/GLExtensions.cpp
index 109fe3a9..60d25847 100644
--- a/src/SFML/Graphics/GLExtensions.cpp
+++ b/src/SFML/Graphics/GLExtensions.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/GLExtensions.hpp b/src/SFML/Graphics/GLExtensions.hpp
index ec0391d4..829155fa 100644
--- a/src/SFML/Graphics/GLExtensions.hpp
+++ b/src/SFML/Graphics/GLExtensions.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Glsl.cpp b/src/SFML/Graphics/Glsl.cpp
index 557dc9bd..3a1e5593 100644
--- a/src/SFML/Graphics/Glsl.cpp
+++ b/src/SFML/Graphics/Glsl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Image.cpp b/src/SFML/Graphics/Image.cpp
index bb791d66..1ef43269 100644
--- a/src/SFML/Graphics/Image.cpp
+++ b/src/SFML/Graphics/Image.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/ImageLoader.cpp b/src/SFML/Graphics/ImageLoader.cpp
index d0e7ac9e..3c26e49c 100644
--- a/src/SFML/Graphics/ImageLoader.cpp
+++ b/src/SFML/Graphics/ImageLoader.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/ImageLoader.hpp b/src/SFML/Graphics/ImageLoader.hpp
index c178cb7a..ce437b43 100644
--- a/src/SFML/Graphics/ImageLoader.hpp
+++ b/src/SFML/Graphics/ImageLoader.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RectangleShape.cpp b/src/SFML/Graphics/RectangleShape.cpp
index 66569ba8..58777fd5 100644
--- a/src/SFML/Graphics/RectangleShape.cpp
+++ b/src/SFML/Graphics/RectangleShape.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RenderStates.cpp b/src/SFML/Graphics/RenderStates.cpp
index fff6f08e..adaceb34 100644
--- a/src/SFML/Graphics/RenderStates.cpp
+++ b/src/SFML/Graphics/RenderStates.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RenderTarget.cpp b/src/SFML/Graphics/RenderTarget.cpp
index 5b0dbd3a..a9c0ecac 100644
--- a/src/SFML/Graphics/RenderTarget.cpp
+++ b/src/SFML/Graphics/RenderTarget.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RenderTexture.cpp b/src/SFML/Graphics/RenderTexture.cpp
index 9daad7af..bd0566a0 100644
--- a/src/SFML/Graphics/RenderTexture.cpp
+++ b/src/SFML/Graphics/RenderTexture.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RenderTextureImpl.cpp b/src/SFML/Graphics/RenderTextureImpl.cpp
index e766dd9f..63d55f0b 100644
--- a/src/SFML/Graphics/RenderTextureImpl.cpp
+++ b/src/SFML/Graphics/RenderTextureImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RenderTextureImpl.hpp b/src/SFML/Graphics/RenderTextureImpl.hpp
index 22b1c54e..5ed3733c 100644
--- a/src/SFML/Graphics/RenderTextureImpl.hpp
+++ b/src/SFML/Graphics/RenderTextureImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RenderTextureImplDefault.cpp b/src/SFML/Graphics/RenderTextureImplDefault.cpp
index a0cac97f..dabc938e 100644
--- a/src/SFML/Graphics/RenderTextureImplDefault.cpp
+++ b/src/SFML/Graphics/RenderTextureImplDefault.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RenderTextureImplDefault.hpp b/src/SFML/Graphics/RenderTextureImplDefault.hpp
index 97e3b299..f7ab219e 100644
--- a/src/SFML/Graphics/RenderTextureImplDefault.hpp
+++ b/src/SFML/Graphics/RenderTextureImplDefault.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RenderTextureImplFBO.cpp b/src/SFML/Graphics/RenderTextureImplFBO.cpp
index 45eb2a9c..c2afc8b0 100644
--- a/src/SFML/Graphics/RenderTextureImplFBO.cpp
+++ b/src/SFML/Graphics/RenderTextureImplFBO.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RenderTextureImplFBO.hpp b/src/SFML/Graphics/RenderTextureImplFBO.hpp
index 7fcf6eff..8cddd109 100644
--- a/src/SFML/Graphics/RenderTextureImplFBO.hpp
+++ b/src/SFML/Graphics/RenderTextureImplFBO.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/RenderWindow.cpp b/src/SFML/Graphics/RenderWindow.cpp
index d26a5f37..38ec2a7c 100644
--- a/src/SFML/Graphics/RenderWindow.cpp
+++ b/src/SFML/Graphics/RenderWindow.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Shader.cpp b/src/SFML/Graphics/Shader.cpp
index cbfc4d20..9d0cfba4 100644
--- a/src/SFML/Graphics/Shader.cpp
+++ b/src/SFML/Graphics/Shader.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Shape.cpp b/src/SFML/Graphics/Shape.cpp
index 57670307..d0245d5d 100644
--- a/src/SFML/Graphics/Shape.cpp
+++ b/src/SFML/Graphics/Shape.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Sprite.cpp b/src/SFML/Graphics/Sprite.cpp
index f32dc486..1fdfc5d5 100644
--- a/src/SFML/Graphics/Sprite.cpp
+++ b/src/SFML/Graphics/Sprite.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Text.cpp b/src/SFML/Graphics/Text.cpp
index 2ba7d466..7cb4f889 100644
--- a/src/SFML/Graphics/Text.cpp
+++ b/src/SFML/Graphics/Text.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Texture.cpp b/src/SFML/Graphics/Texture.cpp
index ef731a65..a139115d 100644
--- a/src/SFML/Graphics/Texture.cpp
+++ b/src/SFML/Graphics/Texture.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/TextureSaver.cpp b/src/SFML/Graphics/TextureSaver.cpp
index 7ffbc0bb..1a71c089 100644
--- a/src/SFML/Graphics/TextureSaver.cpp
+++ b/src/SFML/Graphics/TextureSaver.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/TextureSaver.hpp b/src/SFML/Graphics/TextureSaver.hpp
index 560c2fce..68109456 100644
--- a/src/SFML/Graphics/TextureSaver.hpp
+++ b/src/SFML/Graphics/TextureSaver.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Transform.cpp b/src/SFML/Graphics/Transform.cpp
index 9a6706ce..68d3e3be 100644
--- a/src/SFML/Graphics/Transform.cpp
+++ b/src/SFML/Graphics/Transform.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Transformable.cpp b/src/SFML/Graphics/Transformable.cpp
index 6a8f0735..a47b2ee0 100644
--- a/src/SFML/Graphics/Transformable.cpp
+++ b/src/SFML/Graphics/Transformable.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/Vertex.cpp b/src/SFML/Graphics/Vertex.cpp
index 801af444..e389b68a 100644
--- a/src/SFML/Graphics/Vertex.cpp
+++ b/src/SFML/Graphics/Vertex.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/VertexArray.cpp b/src/SFML/Graphics/VertexArray.cpp
index 9be9d7d9..accf7e79 100644
--- a/src/SFML/Graphics/VertexArray.cpp
+++ b/src/SFML/Graphics/VertexArray.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/VertexBuffer.cpp b/src/SFML/Graphics/VertexBuffer.cpp
index 2b3166a2..4d5497c8 100644
--- a/src/SFML/Graphics/VertexBuffer.cpp
+++ b/src/SFML/Graphics/VertexBuffer.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Graphics/View.cpp b/src/SFML/Graphics/View.cpp
index 048f3136..4d1fb2f3 100644
--- a/src/SFML/Graphics/View.cpp
+++ b/src/SFML/Graphics/View.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Main/MainAndroid.cpp b/src/SFML/Main/MainAndroid.cpp
index daf6dac1..38fd99b8 100644
--- a/src/SFML/Main/MainAndroid.cpp
+++ b/src/SFML/Main/MainAndroid.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Main/MainWin32.cpp b/src/SFML/Main/MainWin32.cpp
index 6a382024..a8aa19d4 100644
--- a/src/SFML/Main/MainWin32.cpp
+++ b/src/SFML/Main/MainWin32.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
// Copyright (C) 2013 Jonathan De Wachter (dewachter.jonathan@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Main/MainiOS.mm b/src/SFML/Main/MainiOS.mm
index 534db334..901248a1 100644
--- a/src/SFML/Main/MainiOS.mm
+++ b/src/SFML/Main/MainiOS.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.prg)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.prg)
// Copyright (C) 2013 Jonathan De Wachter (dewachter.jonathan@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Network/Ftp.cpp b/src/SFML/Network/Ftp.cpp
index 6b5ebce8..4eb13bcb 100644
--- a/src/SFML/Network/Ftp.cpp
+++ b/src/SFML/Network/Ftp.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/Http.cpp b/src/SFML/Network/Http.cpp
index 40a5167f..251b8125 100644
--- a/src/SFML/Network/Http.cpp
+++ b/src/SFML/Network/Http.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/IpAddress.cpp b/src/SFML/Network/IpAddress.cpp
index 067c7ae5..8cc145f6 100644
--- a/src/SFML/Network/IpAddress.cpp
+++ b/src/SFML/Network/IpAddress.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/Packet.cpp b/src/SFML/Network/Packet.cpp
index 951c4bdb..ac039412 100644
--- a/src/SFML/Network/Packet.cpp
+++ b/src/SFML/Network/Packet.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -63,13 +63,6 @@ void Packet::append(const void* data, std::size_t sizeInBytes)
}
-////////////////////////////////////////////////////////////
-std::size_t Packet::getReadPosition() const
-{
- return m_readPos;
-}
-
-
////////////////////////////////////////////////////////////
void Packet::clear()
{
diff --git a/src/SFML/Network/Socket.cpp b/src/SFML/Network/Socket.cpp
index 622f9d4b..7a92a473 100644
--- a/src/SFML/Network/Socket.cpp
+++ b/src/SFML/Network/Socket.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/SocketImpl.hpp b/src/SFML/Network/SocketImpl.hpp
index c958099c..1f6803da 100644
--- a/src/SFML/Network/SocketImpl.hpp
+++ b/src/SFML/Network/SocketImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/SocketSelector.cpp b/src/SFML/Network/SocketSelector.cpp
index 465e0a72..c180736a 100644
--- a/src/SFML/Network/SocketSelector.cpp
+++ b/src/SFML/Network/SocketSelector.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/TcpListener.cpp b/src/SFML/Network/TcpListener.cpp
index 38749d56..8a79b99b 100644
--- a/src/SFML/Network/TcpListener.cpp
+++ b/src/SFML/Network/TcpListener.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/TcpSocket.cpp b/src/SFML/Network/TcpSocket.cpp
index 8333b952..7a8e9183 100644
--- a/src/SFML/Network/TcpSocket.cpp
+++ b/src/SFML/Network/TcpSocket.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/UdpSocket.cpp b/src/SFML/Network/UdpSocket.cpp
index 3e193914..373b6842 100644
--- a/src/SFML/Network/UdpSocket.cpp
+++ b/src/SFML/Network/UdpSocket.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/Unix/SocketImpl.cpp b/src/SFML/Network/Unix/SocketImpl.cpp
index 5f59171b..e565a482 100644
--- a/src/SFML/Network/Unix/SocketImpl.cpp
+++ b/src/SFML/Network/Unix/SocketImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/Unix/SocketImpl.hpp b/src/SFML/Network/Unix/SocketImpl.hpp
index 3de92334..9b816baa 100644
--- a/src/SFML/Network/Unix/SocketImpl.hpp
+++ b/src/SFML/Network/Unix/SocketImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/Win32/SocketImpl.cpp b/src/SFML/Network/Win32/SocketImpl.cpp
index b369e182..9bff3d7a 100644
--- a/src/SFML/Network/Win32/SocketImpl.cpp
+++ b/src/SFML/Network/Win32/SocketImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Network/Win32/SocketImpl.hpp b/src/SFML/Network/Win32/SocketImpl.hpp
index 82557546..7fdfa52e 100644
--- a/src/SFML/Network/Win32/SocketImpl.hpp
+++ b/src/SFML/Network/Win32/SocketImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Android/Activity.cpp b/src/SFML/System/Android/Activity.cpp
index 11dfaeb1..b52921aa 100644
--- a/src/SFML/System/Android/Activity.cpp
+++ b/src/SFML/System/Android/Activity.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
// Copyright (C) 2013 Jonathan De Wachter (dewachter.jonathan@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/System/Android/NativeActivity.cpp b/src/SFML/System/Android/NativeActivity.cpp
index ee01eedc..39a2fbce 100644
--- a/src/SFML/System/Android/NativeActivity.cpp
+++ b/src/SFML/System/Android/NativeActivity.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Clock.cpp b/src/SFML/System/Clock.cpp
index 8e4aca01..dc3a2544 100644
--- a/src/SFML/System/Clock.cpp
+++ b/src/SFML/System/Clock.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Err.cpp b/src/SFML/System/Err.cpp
index 1e8a8465..0a593e3a 100644
--- a/src/SFML/System/Err.cpp
+++ b/src/SFML/System/Err.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/FileInputStream.cpp b/src/SFML/System/FileInputStream.cpp
index bab93f52..41c91176 100644
--- a/src/SFML/System/FileInputStream.cpp
+++ b/src/SFML/System/FileInputStream.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Lock.cpp b/src/SFML/System/Lock.cpp
index b4084b00..0fbb404d 100644
--- a/src/SFML/System/Lock.cpp
+++ b/src/SFML/System/Lock.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/MemoryInputStream.cpp b/src/SFML/System/MemoryInputStream.cpp
index 6b849a97..d6334acd 100644
--- a/src/SFML/System/MemoryInputStream.cpp
+++ b/src/SFML/System/MemoryInputStream.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Mutex.cpp b/src/SFML/System/Mutex.cpp
index 21a86e45..2f6726f3 100644
--- a/src/SFML/System/Mutex.cpp
+++ b/src/SFML/System/Mutex.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Sleep.cpp b/src/SFML/System/Sleep.cpp
index 3d1beca3..fc036c48 100644
--- a/src/SFML/System/Sleep.cpp
+++ b/src/SFML/System/Sleep.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/String.cpp b/src/SFML/System/String.cpp
index 92d8ec21..c33cb948 100644
--- a/src/SFML/System/String.cpp
+++ b/src/SFML/System/String.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Thread.cpp b/src/SFML/System/Thread.cpp
index 6576f104..bd250a90 100644
--- a/src/SFML/System/Thread.cpp
+++ b/src/SFML/System/Thread.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/ThreadLocal.cpp b/src/SFML/System/ThreadLocal.cpp
index 5917cf33..812a99b7 100644
--- a/src/SFML/System/ThreadLocal.cpp
+++ b/src/SFML/System/ThreadLocal.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Time.cpp b/src/SFML/System/Time.cpp
index b7963e7c..09abf45f 100644
--- a/src/SFML/System/Time.cpp
+++ b/src/SFML/System/Time.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Unix/ClockImpl.cpp b/src/SFML/System/Unix/ClockImpl.cpp
index 5a6e4682..2a70fbd7 100644
--- a/src/SFML/System/Unix/ClockImpl.cpp
+++ b/src/SFML/System/Unix/ClockImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Unix/ClockImpl.hpp b/src/SFML/System/Unix/ClockImpl.hpp
index c966b3e8..942ee9c4 100644
--- a/src/SFML/System/Unix/ClockImpl.hpp
+++ b/src/SFML/System/Unix/ClockImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Unix/MutexImpl.cpp b/src/SFML/System/Unix/MutexImpl.cpp
index 8c000598..b9c46749 100644
--- a/src/SFML/System/Unix/MutexImpl.cpp
+++ b/src/SFML/System/Unix/MutexImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Unix/MutexImpl.hpp b/src/SFML/System/Unix/MutexImpl.hpp
index 83c4f42c..dead79d0 100644
--- a/src/SFML/System/Unix/MutexImpl.hpp
+++ b/src/SFML/System/Unix/MutexImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Unix/SleepImpl.cpp b/src/SFML/System/Unix/SleepImpl.cpp
index 6aabaf41..1da9b8db 100644
--- a/src/SFML/System/Unix/SleepImpl.cpp
+++ b/src/SFML/System/Unix/SleepImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Unix/SleepImpl.hpp b/src/SFML/System/Unix/SleepImpl.hpp
index 57843cc1..0fb634e9 100644
--- a/src/SFML/System/Unix/SleepImpl.hpp
+++ b/src/SFML/System/Unix/SleepImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Unix/ThreadImpl.cpp b/src/SFML/System/Unix/ThreadImpl.cpp
index aaf906e1..d8d4d9ad 100644
--- a/src/SFML/System/Unix/ThreadImpl.cpp
+++ b/src/SFML/System/Unix/ThreadImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Unix/ThreadImpl.hpp b/src/SFML/System/Unix/ThreadImpl.hpp
index 4906326d..e538514d 100644
--- a/src/SFML/System/Unix/ThreadImpl.hpp
+++ b/src/SFML/System/Unix/ThreadImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Unix/ThreadLocalImpl.cpp b/src/SFML/System/Unix/ThreadLocalImpl.cpp
index 33c6889e..45d08fb4 100644
--- a/src/SFML/System/Unix/ThreadLocalImpl.cpp
+++ b/src/SFML/System/Unix/ThreadLocalImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Unix/ThreadLocalImpl.hpp b/src/SFML/System/Unix/ThreadLocalImpl.hpp
index a1d5e713..db71e0b9 100644
--- a/src/SFML/System/Unix/ThreadLocalImpl.hpp
+++ b/src/SFML/System/Unix/ThreadLocalImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Win32/ClockImpl.cpp b/src/SFML/System/Win32/ClockImpl.cpp
index 37ecc9ca..603426d8 100644
--- a/src/SFML/System/Win32/ClockImpl.cpp
+++ b/src/SFML/System/Win32/ClockImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Win32/ClockImpl.hpp b/src/SFML/System/Win32/ClockImpl.hpp
index 0af60834..cbca5c24 100644
--- a/src/SFML/System/Win32/ClockImpl.hpp
+++ b/src/SFML/System/Win32/ClockImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Win32/MutexImpl.cpp b/src/SFML/System/Win32/MutexImpl.cpp
index 3c3452ea..7d562a38 100644
--- a/src/SFML/System/Win32/MutexImpl.cpp
+++ b/src/SFML/System/Win32/MutexImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Win32/MutexImpl.hpp b/src/SFML/System/Win32/MutexImpl.hpp
index 2947e3b1..1a36a6d5 100644
--- a/src/SFML/System/Win32/MutexImpl.hpp
+++ b/src/SFML/System/Win32/MutexImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Win32/SleepImpl.cpp b/src/SFML/System/Win32/SleepImpl.cpp
index f61353e4..172a8a88 100644
--- a/src/SFML/System/Win32/SleepImpl.cpp
+++ b/src/SFML/System/Win32/SleepImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Win32/SleepImpl.hpp b/src/SFML/System/Win32/SleepImpl.hpp
index 5c356414..37005ab7 100644
--- a/src/SFML/System/Win32/SleepImpl.hpp
+++ b/src/SFML/System/Win32/SleepImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Win32/ThreadImpl.cpp b/src/SFML/System/Win32/ThreadImpl.cpp
index 94bc7f8a..e1c84993 100644
--- a/src/SFML/System/Win32/ThreadImpl.cpp
+++ b/src/SFML/System/Win32/ThreadImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Win32/ThreadImpl.hpp b/src/SFML/System/Win32/ThreadImpl.hpp
index afdfc9f3..f4dc9534 100644
--- a/src/SFML/System/Win32/ThreadImpl.hpp
+++ b/src/SFML/System/Win32/ThreadImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Win32/ThreadLocalImpl.cpp b/src/SFML/System/Win32/ThreadLocalImpl.cpp
index 49d95e00..eef6106a 100644
--- a/src/SFML/System/Win32/ThreadLocalImpl.cpp
+++ b/src/SFML/System/Win32/ThreadLocalImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/System/Win32/ThreadLocalImpl.hpp b/src/SFML/System/Win32/ThreadLocalImpl.hpp
index 3a2b0238..d87db142 100644
--- a/src/SFML/System/Win32/ThreadLocalImpl.hpp
+++ b/src/SFML/System/Win32/ThreadLocalImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Android/ClipboardImpl.cpp b/src/SFML/Window/Android/ClipboardImpl.cpp
index ef9af6c4..c7d3728e 100644
--- a/src/SFML/Window/Android/ClipboardImpl.cpp
+++ b/src/SFML/Window/Android/ClipboardImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Android/ClipboardImpl.hpp b/src/SFML/Window/Android/ClipboardImpl.hpp
index 22dda649..c243999c 100644
--- a/src/SFML/Window/Android/ClipboardImpl.hpp
+++ b/src/SFML/Window/Android/ClipboardImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Android/CursorImpl.cpp b/src/SFML/Window/Android/CursorImpl.cpp
index 3913b295..faf0b631 100644
--- a/src/SFML/Window/Android/CursorImpl.cpp
+++ b/src/SFML/Window/Android/CursorImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Android/CursorImpl.hpp b/src/SFML/Window/Android/CursorImpl.hpp
index 57cffbd4..096902d5 100644
--- a/src/SFML/Window/Android/CursorImpl.hpp
+++ b/src/SFML/Window/Android/CursorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Android/InputImpl.hpp b/src/SFML/Window/Android/InputImpl.hpp
index d2783e15..139a5bbd 100644
--- a/src/SFML/Window/Android/InputImpl.hpp
+++ b/src/SFML/Window/Android/InputImpl.hpp
@@ -45,19 +45,37 @@ class InputImpl
public:
////////////////////////////////////////////////////////////
- /// \brief Check if a key is pressed
- ///
- /// \param key Key to check
- ///
- /// \return True if the key is pressed, false otherwise
+ /// \copydoc sf::Keyboard::isKeyPressed(Key)
///
////////////////////////////////////////////////////////////
static bool isKeyPressed(Keyboard::Key key);
////////////////////////////////////////////////////////////
- /// \brief Show or hide the virtual keyboard
+ /// \copydoc sf::Keyboard::isKeyPressed(Scancode)
///
- /// \param visible True to show, false to hide
+ ////////////////////////////////////////////////////////////
+ static bool isKeyPressed(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Key localize(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::unlocalize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Scancode unlocalize(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localizedRepresentation
+ ///
+ ////////////////////////////////////////////////////////////
+ static String getDescription(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::setVirtualKeyboardVisible
///
////////////////////////////////////////////////////////////
static void setVirtualKeyboardVisible(bool visible);
diff --git a/src/SFML/Window/Android/SensorImpl.cpp b/src/SFML/Window/Android/SensorImpl.cpp
index ed89e4d7..9497d9d6 100644
--- a/src/SFML/Window/Android/SensorImpl.cpp
+++ b/src/SFML/Window/Android/SensorImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Android/SensorImpl.hpp b/src/SFML/Window/Android/SensorImpl.hpp
index bdfdfcc3..ce6865ee 100644
--- a/src/SFML/Window/Android/SensorImpl.hpp
+++ b/src/SFML/Window/Android/SensorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/CMakeLists.txt b/src/SFML/Window/CMakeLists.txt
index 982f4c40..bd9571b4 100644
--- a/src/SFML/Window/CMakeLists.txt
+++ b/src/SFML/Window/CMakeLists.txt
@@ -244,7 +244,7 @@ target_include_directories(sfml-window PRIVATE "${PROJECT_SOURCE_DIR}/extlibs/he
# find and setup usage for external libraries
if(SFML_OS_LINUX OR SFML_OS_FREEBSD OR SFML_OPENBSD)
- sfml_find_package(X11 INCLUDE "X11_INCLUDE_DIR" LINK "X11_X11_LIB" "X11_Xrandr_LIB" "X11_Xcursor_LIB")
+ sfml_find_package(X11 INCLUDE "X11_INCLUDE_DIR" LINK "X11_X11_LIB" "X11_Xrandr_LIB")
target_link_libraries(sfml-window PRIVATE X11)
endif()
diff --git a/src/SFML/Window/Clipboard.cpp b/src/SFML/Window/Clipboard.cpp
index 78284446..230789e3 100644
--- a/src/SFML/Window/Clipboard.cpp
+++ b/src/SFML/Window/Clipboard.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/ClipboardImpl.hpp b/src/SFML/Window/ClipboardImpl.hpp
index d0d2c324..7efd448f 100644
--- a/src/SFML/Window/ClipboardImpl.hpp
+++ b/src/SFML/Window/ClipboardImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Context.cpp b/src/SFML/Window/Context.cpp
index 76cd0c59..2b174aa0 100644
--- a/src/SFML/Window/Context.cpp
+++ b/src/SFML/Window/Context.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Cursor.cpp b/src/SFML/Window/Cursor.cpp
index b7be0acd..91b08686 100644
--- a/src/SFML/Window/Cursor.cpp
+++ b/src/SFML/Window/Cursor.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/CursorImpl.hpp b/src/SFML/Window/CursorImpl.hpp
index bf507b2c..afb22ddb 100644
--- a/src/SFML/Window/CursorImpl.hpp
+++ b/src/SFML/Window/CursorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/FreeBSD/JoystickImpl.cpp b/src/SFML/Window/FreeBSD/JoystickImpl.cpp
index 472ae2af..9e5677b6 100644
--- a/src/SFML/Window/FreeBSD/JoystickImpl.cpp
+++ b/src/SFML/Window/FreeBSD/JoystickImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
// 2013-2013 David Demelier (demelier.david@gmail.com)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/FreeBSD/JoystickImpl.hpp b/src/SFML/Window/FreeBSD/JoystickImpl.hpp
index 3a24df78..f16672cd 100644
--- a/src/SFML/Window/FreeBSD/JoystickImpl.hpp
+++ b/src/SFML/Window/FreeBSD/JoystickImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/GlContext.cpp b/src/SFML/Window/GlContext.cpp
index 00d4a200..32ef89d3 100644
--- a/src/SFML/Window/GlContext.cpp
+++ b/src/SFML/Window/GlContext.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/GlContext.hpp b/src/SFML/Window/GlContext.hpp
index 1f447622..fb76a029 100644
--- a/src/SFML/Window/GlContext.hpp
+++ b/src/SFML/Window/GlContext.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/GlResource.cpp b/src/SFML/Window/GlResource.cpp
index 538fa3bf..64c7f602 100644
--- a/src/SFML/Window/GlResource.cpp
+++ b/src/SFML/Window/GlResource.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/InputImpl.hpp b/src/SFML/Window/InputImpl.hpp
index 4294bdb4..61982965 100644
--- a/src/SFML/Window/InputImpl.hpp
+++ b/src/SFML/Window/InputImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Joystick.cpp b/src/SFML/Window/Joystick.cpp
index 29fb4dd2..13faa2cd 100644
--- a/src/SFML/Window/Joystick.cpp
+++ b/src/SFML/Window/Joystick.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/JoystickImpl.hpp b/src/SFML/Window/JoystickImpl.hpp
index e6835526..d469ff0c 100644
--- a/src/SFML/Window/JoystickImpl.hpp
+++ b/src/SFML/Window/JoystickImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/JoystickManager.cpp b/src/SFML/Window/JoystickManager.cpp
index 12eaa590..0741fdf7 100644
--- a/src/SFML/Window/JoystickManager.cpp
+++ b/src/SFML/Window/JoystickManager.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/JoystickManager.hpp b/src/SFML/Window/JoystickManager.hpp
index 7289af76..10ba6a20 100644
--- a/src/SFML/Window/JoystickManager.hpp
+++ b/src/SFML/Window/JoystickManager.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Keyboard.cpp b/src/SFML/Window/Keyboard.cpp
index 4cf43202..0be3347d 100644
--- a/src/SFML/Window/Keyboard.cpp
+++ b/src/SFML/Window/Keyboard.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -27,6 +27,7 @@
////////////////////////////////////////////////////////////
#include
#include
+#include
namespace sf
@@ -37,6 +38,29 @@ bool Keyboard::isKeyPressed(Key key)
return priv::InputImpl::isKeyPressed(key);
}
+////////////////////////////////////////////////////////////
+bool Keyboard::isKeyPressed(Scancode code)
+{
+ return priv::InputImpl::isKeyPressed(code);
+}
+
+////////////////////////////////////////////////////////////
+Keyboard::Key Keyboard::localize(Scancode code)
+{
+ return priv::InputImpl::localize(code);
+}
+
+////////////////////////////////////////////////////////////
+Keyboard::Scancode Keyboard::unlocalize(Key key)
+{
+ return priv::InputImpl::unlocalize(key);
+}
+
+////////////////////////////////////////////////////////////
+String Keyboard::getDescription(Scancode code)
+{
+ return priv::InputImpl::getDescription(code);
+}
////////////////////////////////////////////////////////////
void Keyboard::setVirtualKeyboardVisible(bool visible)
diff --git a/src/SFML/Window/Mouse.cpp b/src/SFML/Window/Mouse.cpp
index 2009413e..a64bb9a7 100644
--- a/src/SFML/Window/Mouse.cpp
+++ b/src/SFML/Window/Mouse.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/OSX/AutoreleasePoolWrapper.h b/src/SFML/Window/OSX/AutoreleasePoolWrapper.h
index 04097fe8..bf3125eb 100644
--- a/src/SFML/Window/OSX/AutoreleasePoolWrapper.h
+++ b/src/SFML/Window/OSX/AutoreleasePoolWrapper.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/AutoreleasePoolWrapper.mm b/src/SFML/Window/OSX/AutoreleasePoolWrapper.mm
index 3ec0a09f..b8f5c1a4 100644
--- a/src/SFML/Window/OSX/AutoreleasePoolWrapper.mm
+++ b/src/SFML/Window/OSX/AutoreleasePoolWrapper.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/ClipboardImpl.hpp b/src/SFML/Window/OSX/ClipboardImpl.hpp
index 28adae1a..a59de40d 100644
--- a/src/SFML/Window/OSX/ClipboardImpl.hpp
+++ b/src/SFML/Window/OSX/ClipboardImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/OSX/ClipboardImpl.mm b/src/SFML/Window/OSX/ClipboardImpl.mm
index 5a8438c7..6f051b5b 100644
--- a/src/SFML/Window/OSX/ClipboardImpl.mm
+++ b/src/SFML/Window/OSX/ClipboardImpl.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/OSX/CursorImpl.hpp b/src/SFML/Window/OSX/CursorImpl.hpp
index f0bd1850..f12b94b0 100644
--- a/src/SFML/Window/OSX/CursorImpl.hpp
+++ b/src/SFML/Window/OSX/CursorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/CursorImpl.mm b/src/SFML/Window/OSX/CursorImpl.mm
index a3539137..1ca93607 100644
--- a/src/SFML/Window/OSX/CursorImpl.mm
+++ b/src/SFML/Window/OSX/CursorImpl.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/HIDInputManager.hpp b/src/SFML/Window/OSX/HIDInputManager.hpp
index e6f8c493..2bccff61 100644
--- a/src/SFML/Window/OSX/HIDInputManager.hpp
+++ b/src/SFML/Window/OSX/HIDInputManager.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
@@ -65,16 +65,6 @@ public:
////////////////////////////////////////////////////////////
static HIDInputManager& getInstance();
- ////////////////////////////////////////////////////////////
- /// \brief Check if a key is pressed
- ///
- /// \param key Key to check
- ///
- /// \return True if the key is pressed, false otherwise
- ///
- ////////////////////////////////////////////////////////////
- bool isKeyPressed(Keyboard::Key key);
-
public:
////////////////////////////////////////////////////////////
@@ -103,21 +93,64 @@ public:
///
/// Return sf::Keyboard::Unknown if it doesn't match any 'localized' keys.
///
- /// By 'localized' I mean keys that depend on the keyboard layout
- /// and might not be the same as the US keycode in some country
- /// (e.g. the keys 'Y' and 'Z' are switched on QWERTZ keyboard and
+ /// By 'localized' we mean keys that depend on the keyboard layout
+ /// and might not be the same as the US keycode for some countries
+ /// (e.g. the keys 'Y' and 'Z' are swapped on QWERTZ keyboard and
/// US keyboard layouts.)
///
////////////////////////////////////////////////////////////
- static Keyboard::Key localizedKeys(UniChar ch);
+ static Keyboard::Key localizedKey(UniChar ch);
////////////////////////////////////////////////////////////
- /// Try to convert a virtual keycode into a SFML key code.
+ /// Opposite transformation as localizedKeys
///
- /// Return sf::Keyboard::Unknown if the keycode is unknown.
+ /// Return 0x00 (NULL) for non-convertible keys/numpad numbers.
+ /// For letters, uppercase codes are returned.
+ /// Some returned value are specific to macOS.
///
////////////////////////////////////////////////////////////
- static Keyboard::Key nonLocalizedKeys(UniChar virtualKeycode);
+ static UniChar toUnicode(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// Try to convert a virtual keycode (HID level) into a
+ /// SFML scancode.
+ ///
+ /// Return sf::Keyboard::ScanUnknown if the keycode is unknown.
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Scancode nonLocalizedKey(UniChar virtualKeycode);
+
+public:
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::isKeyPressed(Key)
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isKeyPressed(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::isKeyPressed(Scancode)
+ ///
+ ////////////////////////////////////////////////////////////
+ bool isKeyPressed(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localize
+ ///
+ ////////////////////////////////////////////////////////////
+ Keyboard::Key localize(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::unlocalize
+ ///
+ ////////////////////////////////////////////////////////////
+ Keyboard::Scancode unlocalize(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localizedRepresentation
+ ///
+ ////////////////////////////////////////////////////////////
+ String localizedRepresentation(Keyboard::Scancode code);
private:
@@ -136,7 +169,13 @@ private:
////////////////////////////////////////////////////////////
/// \brief Initialize the keyboard part of this class
///
- /// If something went wrong freeUp is called
+ /// If something went wrong freeUp is called.
+ ///
+ /// In a nutshell, this function does this:
+ ///
+ /// for each connected keyboard kb:
+ /// for each key k of kb:
+ /// memorise k -> scancode mapping
///
////////////////////////////////////////////////////////////
void initializeKeyboard();
@@ -145,28 +184,46 @@ private:
/// \brief Load the given keyboard into m_keys
///
/// If the given keyboard has no key this function simply
- /// returns. freeUp is _not_ called because this is not fatal.
+ /// returns without calling freeUp because this is not fatal.
///
/// \param keyboard Keyboard to load
///
+ /// \see initializeKeyboard
+ ///
////////////////////////////////////////////////////////////
void loadKeyboard(IOHIDDeviceRef keyboard);
////////////////////////////////////////////////////////////
/// \brief Load the given key into m_keys
///
- /// freeUp is _not_ called by this function.
+ /// On error, freeUp is _not_ called by this function.
///
/// \param key Key to load
///
+ /// \see initializeKeyboard
+ ///
////////////////////////////////////////////////////////////
void loadKey(IOHIDElementRef key);
+ ////////////////////////////////////////////////////////////
+ /// Regenerate the mappings from/to Key and Scancode.
+ ///
+ /// It is public to allow regular callback to forward the
+ /// information to the manager.
+ ///
+ ////////////////////////////////////////////////////////////
+public:
+ void buildMappings();
+private:
+
////////////////////////////////////////////////////////////
/// \brief Release all resources
///
- /// Close all connections to any devices, if required
- /// Set m_isValid to false
+ /// Close all connections to any devices.
+ ///
+ /// \see initializeKeyboard
+ ///
+ /// \see initializeKeyboard
///
////////////////////////////////////////////////////////////
void freeUp();
@@ -174,11 +231,11 @@ private:
////////////////////////////////////////////////////////////
/// \brief Filter the devices and return them
///
- /// freeUp is _not_ called by this function.
+ /// On error, freeUp is _not_ called by this function.
///
/// \param page HID page like kHIDPage_GenericDesktop
/// \param usage HID usage page like kHIDUsage_GD_Keyboard or kHIDUsage_GD_Mouse
- /// \return a retained CFSetRef of IOHIDDeviceRef or NULL
+ /// \return a retained, non-emtpy CFSetRef of IOHIDDeviceRef or NULL
///
////////////////////////////////////////////////////////////
CFSetRef copyDevices(UInt32 page, UInt32 usage);
@@ -196,36 +253,48 @@ private:
bool isPressed(IOHIDElements& elements);
////////////////////////////////////////////////////////////
- /// \brief Convert a HID key usage to its corresponding virtual code
- ///
- /// See IOHIDUsageTables.h
+ /// \brief Convert a HID key usage to its corresponding scancode
///
/// \param usage Any kHIDUsage_Keyboard* usage
- /// \return the virtual code associate with the given HID key usage
- /// or 0xff if it is associate with no virtual code
+ /// \return the scancode associate with the given HID key usage
+ /// or sUnknown if it is associate with no scancode.
///
////////////////////////////////////////////////////////////
- static UInt8 usageToVirtualCode(UInt32 usage);
+ static Keyboard::Scancode usageToScancode(UInt32 usage);
+
+ ////////////////////////////////////////////////////////////
+ /// Convert the scancode to the expected virtual code.
+ ///
+ ////////////////////////////////////////////////////////////
+ static UInt8 scanToVirtualCode(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// Fallback convertion for key that aren't expected to be impacted
+ /// by the layout. Can return Unknown.
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Key localizedKeyFallback(Keyboard::Scancode code);
private:
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
- bool m_isValid; ///< If any error occurs this variable is false
- CFDataRef m_layoutData; ///< CFData containing the layout
- UCKeyboardLayout* m_layout; ///< Current Keyboard Layout
- IOHIDManagerRef m_manager; ///< HID Manager
-
- IOHIDElements m_keys[Keyboard::KeyCount]; ///< All the keys on any connected keyboard
+ IOHIDManagerRef m_manager; ///< Underlying HID Manager
+ IOHIDElements m_keys[Keyboard::ScanCodeCount]; ///< All the keys on any connected keyboard
+ Keyboard::Scancode m_mapping[Keyboard::KeyCount]; ///< Mapping from Key to Scancode
+ Keyboard::Key m_gnippam[Keyboard::ScanCodeCount]; ///< Mapping from Scancode to Key
////////////////////////////////////////////////////////////
- /// m_keys' index corresponds to sf::Keyboard::Key enum.
- /// if no key is assigned with key XYZ then m_keys[XYZ].size() == 0.
- /// if there are several keyboards connected and several HID keys associate
+ /// m_keys' index corresponds to sf::Keyboard::Scancode enum.
+ /// If no key is assigned with key XYZ then m_keys[XYZ].size() == 0.
+ /// If there are several keyboards connected and several HID keys associated
/// with the same sf::Keyboard::Key then m_keys[XYZ] contains all these
/// HID keys.
///
+ /// The mappings (both directions) get invalidated when the
+ /// keyboard layout changes. They both default to (s)Unknown.
+ ///
////////////////////////////////////////////////////////////
};
diff --git a/src/SFML/Window/OSX/HIDInputManager.mm b/src/SFML/Window/OSX/HIDInputManager.mm
index 3c44eab6..d5891a61 100644
--- a/src/SFML/Window/OSX/HIDInputManager.mm
+++ b/src/SFML/Window/OSX/HIDInputManager.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
@@ -30,6 +30,15 @@
#include
#include
+namespace
+{
+ void keyboardChanged(CFNotificationCenterRef, void* observer, CFStringRef, const void*, CFDictionaryRef)
+ {
+ sf::priv::HIDInputManager* manager = static_cast(observer);
+ manager->buildMappings();
+ }
+}
+
namespace sf
{
namespace priv
@@ -42,13 +51,6 @@ HIDInputManager& HIDInputManager::getInstance()
}
-////////////////////////////////////////////////////////////
-bool HIDInputManager::isKeyPressed(Keyboard::Key key)
-{
- return isPressed(m_keys[key]);
-}
-
-
////////////////////////////////////////////////////////////
long HIDInputManager::getLocationID(IOHIDDeviceRef device)
{
@@ -91,36 +93,141 @@ CFDictionaryRef HIDInputManager::copyDevicesMask(UInt32 page, UInt32 usage)
}
+////////////////////////////////////////////////////////////
+bool HIDInputManager::isKeyPressed(Keyboard::Key key)
+{
+ return isKeyPressed(unlocalize(key));
+}
+
+
+////////////////////////////////////////////////////////////
+bool HIDInputManager::isKeyPressed(Keyboard::Scancode code)
+{
+ return (code != Keyboard::ScanUnknown) && isPressed(m_keys[code]);
+}
+
+
+////////////////////////////////////////////////////////////
+Keyboard::Key HIDInputManager::localize(Keyboard::Scancode code)
+{
+ // TODO ensure mapping is still valid
+ return m_gnippam[code];
+}
+
+
+////////////////////////////////////////////////////////////
+Keyboard::Scancode HIDInputManager::unlocalize(Keyboard::Key key)
+{
+ // TODO ensure mapping is still valid
+ return m_mapping[key];
+}
+
+
+////////////////////////////////////////////////////////////
+String HIDInputManager::localizedRepresentation(Keyboard::Scancode code)
+{
+ UniChar unicode = toUnicode(localize(code));
+ if (unicode != 0x00)
+ return sf::String(static_cast(unicode));
+
+ // Fallback to our best guess for the keys that are known to be independent of the layout.
+ switch (code)
+ {
+ case sf::Keyboard::ScanEnter: return "Enter";
+ case sf::Keyboard::ScanEscape: return "Escape";
+ case sf::Keyboard::ScanBackspace: return "Backspace";
+ case sf::Keyboard::ScanTab: return "Tab";
+ case sf::Keyboard::ScanSpace: return "Space";
+
+ case sf::Keyboard::ScanF1: return "F1";
+ case sf::Keyboard::ScanF2: return "F2";
+ case sf::Keyboard::ScanF3: return "F3";
+ case sf::Keyboard::ScanF4: return "F4";
+ case sf::Keyboard::ScanF5: return "F5";
+ case sf::Keyboard::ScanF6: return "F6";
+ case sf::Keyboard::ScanF7: return "F7";
+ case sf::Keyboard::ScanF8: return "F8";
+ case sf::Keyboard::ScanF9: return "F9";
+ case sf::Keyboard::ScanF10: return "F10";
+ case sf::Keyboard::ScanF11: return "F11";
+ case sf::Keyboard::ScanF12: return "F12";
+ case sf::Keyboard::ScanF13: return "F13";
+ case sf::Keyboard::ScanF14: return "F14";
+ case sf::Keyboard::ScanF15: return "F15";
+
+ case sf::Keyboard::ScanCapsLock: return "CapsLock";
+ case sf::Keyboard::ScanPrintScreen: return "PrintScreen";
+ case sf::Keyboard::ScanScrollLock: return "ScrollLock";
+
+ case sf::Keyboard::ScanPause: return "Pause";
+ case sf::Keyboard::ScanInsert: return "Insert";
+ case sf::Keyboard::ScanHome: return "Home";
+ case sf::Keyboard::ScanPageUp: return "PageUp";
+ case sf::Keyboard::ScanDelete: return "Delete";
+ case sf::Keyboard::ScanEnd: return "End";
+ case sf::Keyboard::ScanPageDown: return "PageDown";
+
+ case sf::Keyboard::ScanLeft: return "Left Arrow";
+ case sf::Keyboard::ScanRight: return "Right Arrow";
+ case sf::Keyboard::ScanDown: return "Down Arrow";
+ case sf::Keyboard::ScanUp: return "Up Arrow";
+
+ case sf::Keyboard::ScanNumLock: return "NumLock";
+ case sf::Keyboard::ScanDivide: return "Divide (Numpad)";
+ case sf::Keyboard::ScanMultiply: return "Multiply (Numpad)";
+ case sf::Keyboard::ScanMinus: return "Minux (Numpad)";
+ case sf::Keyboard::ScanPlus: return "Plus (Numpad)";
+ case sf::Keyboard::ScanNumpadEquals: return "Equals (Numpad)";
+ case sf::Keyboard::ScanNumpadEnter: return "Enter (Numpad)";
+ case sf::Keyboard::ScanDecimal: return "Decimal (Numpad)";
+
+ case sf::Keyboard::ScanNumpad0: return "0 (Numpad)";
+ case sf::Keyboard::ScanNumpad1: return "1 (Numpad)";
+ case sf::Keyboard::ScanNumpad2: return "2 (Numpad)";
+ case sf::Keyboard::ScanNumpad3: return "3 (Numpad)";
+ case sf::Keyboard::ScanNumpad4: return "4 (Numpad)";
+ case sf::Keyboard::ScanNumpad5: return "5 (Numpad)";
+ case sf::Keyboard::ScanNumpad6: return "6 (Numpad)";
+ case sf::Keyboard::ScanNumpad7: return "7 (Numpad)";
+ case sf::Keyboard::ScanNumpad8: return "8 (Numpad)";
+ case sf::Keyboard::ScanNumpad9: return "9 (Numpad)";
+
+ case sf::Keyboard::ScanApplication: return "Application";
+ case sf::Keyboard::ScanExecute: return "Execute";
+ case sf::Keyboard::ScanHelp: return "Help";
+ case sf::Keyboard::ScanMenu: return "Menu";
+ case sf::Keyboard::ScanSelect: return "Select";
+ case sf::Keyboard::ScanStop: return "Stop";
+ case sf::Keyboard::ScanAgain: return "Again";
+ case sf::Keyboard::ScanUndo: return "Undo";
+ case sf::Keyboard::ScanCut: return "Cut";
+ case sf::Keyboard::ScanCopy: return "Copy";
+ case sf::Keyboard::ScanPaste: return "Paste";
+ case sf::Keyboard::ScanFind: return "Find";
+ case sf::Keyboard::ScanMute: return "Mute";
+ case sf::Keyboard::ScanVolumeUp: return "Volume Up";
+ case sf::Keyboard::ScanVolumeDown: return "Volume Down";
+
+ case sf::Keyboard::ScanLControl: return "Control (Left)";
+ case sf::Keyboard::ScanLShift: return "Shift (Left)";
+ case sf::Keyboard::ScanLAlt: return "Alt (Left)";
+ case sf::Keyboard::ScanLSystem: return "Command (Left)";
+ case sf::Keyboard::ScanRControl: return "Control (Right)";
+ case sf::Keyboard::ScanRShift: return "Shift (Right)";
+ case sf::Keyboard::ScanRAlt: return "Alt (Right)";
+ case sf::Keyboard::ScanRSystem: return "Command (Right)";
+
+ default: return "Unknown Scancode"; // no guess good enough possible.
+ }
+}
+
+
////////////////////////////////////////////////////////////
HIDInputManager::HIDInputManager() :
-m_isValid(true),
-m_layoutData(0),
-m_layout(0),
m_manager(0)
{
- // Get the current keyboard layout
- TISInputSourceRef tis = TISCopyCurrentKeyboardLayoutInputSource();
- m_layoutData = (CFDataRef)TISGetInputSourceProperty(tis,
- kTISPropertyUnicodeKeyLayoutData);
-
- if (m_layoutData == 0)
- {
- sf::err() << "Cannot get the keyboard layout" << std::endl;
- freeUp();
- return;
- }
-
- // Keep a reference for ourself
- CFRetain(m_layoutData);
- m_layout = (UCKeyboardLayout *)CFDataGetBytePtr(m_layoutData);
-
- // The TIS is no more needed
- CFRelease(tis);
-
// Create an HID Manager reference
m_manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone);
-
- // Open the HID Manager reference
IOReturn openStatus = IOHIDManagerOpen(m_manager, kIOHIDOptionsTypeNone);
if (openStatus != kIOReturnSuccess)
@@ -130,8 +237,19 @@ m_manager(0)
return;
}
- // Initialize the keyboard
+ // Build up our knownledge of the hardware
initializeKeyboard();
+ buildMappings();
+
+ // Register for notification on keyboard layout changes
+ CFNotificationCenterAddObserver(
+ CFNotificationCenterGetDistributedCenter(),
+ this,
+ keyboardChanged, // callback
+ kTISNotifySelectedKeyboardInputSourceChanged,
+ NULL, // use callback
+ CFNotificationSuspensionBehaviorDeliverImmediately
+ );
}
@@ -139,6 +257,8 @@ m_manager(0)
HIDInputManager::~HIDInputManager()
{
freeUp();
+
+ CFNotificationCenterRemoveEveryObserver(CFNotificationCenterGetDistributedCenter(), this);
}
@@ -146,31 +266,23 @@ void HIDInputManager::initializeKeyboard()
{
////////////////////////////////////////////////////////////
// The purpose of this function is to initialize m_keys so we can get
- // the associate IOHIDElementRef with a sf::Keyboard::Key in ~constant~ time.
+ // the associate IOHIDElementRef with a sf::Keyboard::Scancode
+ // in approximately constant time.
// Get only keyboards
- CFSetRef keyboards = copyDevices(kHIDPage_GenericDesktop, kHIDUsage_GD_Keyboard);
- if (keyboards == NULL)
+ CFSetRef underlying = copyDevices(kHIDPage_GenericDesktop, kHIDUsage_GD_Keyboard);
+ if (underlying == NULL)
{
sf::err() << "No keyboard detected by the HID manager!" << std::endl;
freeUp();
return;
}
- CFIndex keyboardCount = CFSetGetCount(keyboards); // >= 1 (asserted by copyDevices)
+ NSSet* keyboards = static_cast(underlying); // Toll-Free Bridge
+ for (id keyboard in keyboards)
+ loadKeyboard(static_cast(keyboard));
- // Get an iterable array
- CFTypeRef devicesArray[keyboardCount];
- CFSetGetValues(keyboards, devicesArray);
-
- for (CFIndex i = 0; i < keyboardCount; ++i)
- {
- IOHIDDeviceRef keyboard = (IOHIDDeviceRef)devicesArray[i];
- loadKeyboard(keyboard);
- }
-
- // Release unused stuff
- CFRelease(keyboards);
+ CFRelease(underlying);
////////////////////////////////////////////////////////////
// At this point m_keys is filled with as many IOHIDElementRef as possible
@@ -180,142 +292,105 @@ void HIDInputManager::initializeKeyboard()
////////////////////////////////////////////////////////////
void HIDInputManager::loadKeyboard(IOHIDDeviceRef keyboard)
{
- CFArrayRef keys = IOHIDDeviceCopyMatchingElements(keyboard,
- NULL,
- kIOHIDOptionsTypeNone);
- if (keys == NULL)
+ CFArrayRef underlying = IOHIDDeviceCopyMatchingElements(keyboard, NULL, kIOHIDOptionsTypeNone);
+ if ((underlying == NULL) || (CFArrayGetCount(underlying) == 0))
{
- sf::err() << "We got a keyboard without any keys (1)" << std::endl;
+ sf::err() << "We got a keyboard without any keys." << std::endl;
return;
}
- // How many elements are there?
- CFIndex keysCount = CFArrayGetCount(keys);
-
- if (keysCount == 0)
+ NSArray* keys = static_cast(underlying); // Toll-Free Bridge
+ for (id key in keys)
{
- sf::err() << "We got a keyboard without any keys (2)" << std::endl;
- CFRelease(keys);
- return;
+ IOHIDElementRef elem = static_cast(key);
+ if (IOHIDElementGetUsagePage(elem) == kHIDPage_KeyboardOrKeypad)
+ loadKey(elem);
}
- // Go through all connected elements.
- for (CFIndex i = 0; i < keysCount; ++i)
- {
- IOHIDElementRef aKey = (IOHIDElementRef) CFArrayGetValueAtIndex(keys, i);
-
- // Skip non-matching keys elements
- if (IOHIDElementGetUsagePage(aKey) != kHIDPage_KeyboardOrKeypad)
- continue;
-
- loadKey(aKey);
- }
-
- // Release unused stuff
- CFRelease(keys);
+ CFRelease(underlying);
}
////////////////////////////////////////////////////////////
void HIDInputManager::loadKey(IOHIDElementRef key)
{
- // Get its virtual code
- UInt32 usageCode = IOHIDElementGetUsage(key);
- UInt8 virtualCode = usageToVirtualCode(usageCode);
-
- if (virtualCode == 0xff)
- return; // no corresponding virtual code -> skip
-
- // Now translate the virtual code to Unicode according to
- // the current keyboard layout
-
- UInt32 deadKeyState = 0;
- // Unicode string length is usually less or equal to 4
- UniCharCount maxStringLength = 4;
- UniCharCount actualStringLength = 0;
- UniChar unicodeString[maxStringLength];
-
- OSStatus error;
-
- error = UCKeyTranslate(m_layout, // current layout
- virtualCode, // our key
- kUCKeyActionDown, // or kUCKeyActionUp ?
- 0x100, // no modifiers
- LMGetKbdType(), // keyboard's type
- kUCKeyTranslateNoDeadKeysBit,// some sort of option
- &deadKeyState, // unused stuff
- maxStringLength, // our memory limit
- &actualStringLength, // length of what we get
- unicodeString); // what we get
-
- if (error == noErr)
+ UInt32 usage = IOHIDElementGetUsage(key);
+ sf::Keyboard::Scancode code = usageToScancode(usage);
+ if (code != Keyboard::ScanUnknown)
{
- // Translation went fine
+ CFRetain(key);
+ m_keys[code].push_back(key);
+ }
+}
- // The corresponding SFML key code
- Keyboard::Key code = Keyboard::Unknown; // KeyCound means 'none'
- // First we look if the key down is from a list of characters
- // that depend on keyboard localization
- if (actualStringLength > 0)
- code = localizedKeys(unicodeString[0]);
+////////////////////////////////////////////////////////////
+void HIDInputManager::buildMappings()
+{
+ // Reset the mappings
+ for (int i = 0; i < Keyboard::KeyCount; ++i)
+ m_mapping[i] = Keyboard::ScanUnknown;
+ for (int i = 0; i < Keyboard::ScanCodeCount; ++i)
+ m_gnippam[i] = Keyboard::Unknown;
- // The key is not a localized one so we try to find a
- // corresponding code through virtual key code
- if (code == Keyboard::Unknown)
- code = nonLocalizedKeys(virtualCode);
+ // Get the current keyboard layout
+ TISInputSourceRef tis = TISCopyCurrentKeyboardLayoutInputSource();
+ CFDataRef layoutData = (CFDataRef)TISGetInputSourceProperty(tis, kTISPropertyUnicodeKeyLayoutData);
- // A code was found, wonderful!
- if (code != Keyboard::Unknown)
+ if (layoutData == 0)
+ {
+ sf::err() << "Cannot get the keyboard layout\n";
+ CFRelease(tis);
+ return;
+ }
+
+ UCKeyboardLayout* layout = (UCKeyboardLayout*)CFDataGetBytePtr(layoutData);
+
+ // For each scancode having a IOHIDElement, we translate the corresponding
+ // virtual code to a localized Key.
+ for (int i = 0; i < Keyboard::ScanCodeCount; ++i)
+ {
+ Keyboard::Scancode scan = static_cast(i);
+ UInt8 virtualCode = scanToVirtualCode(scan);
+
+ if (virtualCode == 0xff) continue;
+
+ // Unicode string length is usually less or equal to 4
+ UniCharCount const MAX_LENGTH = 4;
+ UniChar string[MAX_LENGTH];
+ UniCharCount length = 0;
+ UInt32 deadKeyState = 0; // unused value
+ UInt32 const modifiers = 0x100; // no modifiers
+
+ // Use current layout for translation
+ OSStatus error = UCKeyTranslate(
+ layout, virtualCode, kUCKeyActionDown, modifiers, LMGetKbdType(),
+ kUCKeyTranslateNoDeadKeysBit, &deadKeyState, MAX_LENGTH, &length, string
+ );
+
+ if (error != noErr)
{
- // Ok, everything went fine. Now we have a unique
- // corresponding sf::Keyboard::Key to one IOHIDElementRef
- m_keys[code].push_back(key);
-
- // And don't forget to keep the reference alive for our usage
- CFRetain(m_keys[code].back());
+ sf::err() << "Cannot translate the virtual key code, error: " << error << "\n";
+ continue;
}
- ////////////////////////////////////////////////////////////
- // These are known to be unbound:
- // Supposed Virtual | HID | Supposed Key
- // ===============================================
- // 0x1b | 0x2d | Hyphen
- // 0x39 | 0x39 | CapsLock
- // 0x47 | 0x53 | NumLock
- // 0x6e | 0x65 | Application
- // 0x4c | 0x77 | Select
+ Keyboard::Key code = (length > 0) ? localizedKey(string[0]) : Keyboard::Unknown;
+ if (code == Keyboard::Unknown) code = localizedKeyFallback(scan);
- //if (code == Keyboard::Unknown) { // The key is unknown.
- // sf::err() << "This is an unknown key. Virtual key code is 0x"
- // << std::hex
- // << (UInt32)virtualCode
- // << " and HID usage code is 0x"
- // << usageCode
- // << std::dec
- // << "."
- // << std::endl;
- //}
+ if (code == Keyboard::Unknown) continue;
- } /* if (error == noErr) */
- else
- {
- sf::err() << "Cannot translate the virtual key code, error: "
- << error
- << std::endl;
+ // Register the bi-mapping
+ m_mapping[code] = scan;
+ m_gnippam[scan] = code;
}
+
+ CFRelease(tis);
}
////////////////////////////////////////////////////////////
void HIDInputManager::freeUp()
{
- m_isValid = false;
-
- if (m_layoutData != 0)
- CFRelease(m_layoutData);
- m_layoutData = 0;
- // Do not release m_layout! It is owned by m_layoutData.
if (m_manager != 0)
CFRelease(m_manager);
m_manager = 0;
@@ -339,32 +414,28 @@ CFSetRef HIDInputManager::copyDevices(UInt32 page, UInt32 usage)
IOHIDManagerSetDeviceMatching(m_manager, mask);
CFRelease(mask);
- mask = 0;
+ mask = NULL;
CFSetRef devices = IOHIDManagerCopyDevices(m_manager);
if (devices == NULL)
return NULL;
// Is there at least one device?
- CFIndex deviceCount = CFSetGetCount(devices);
- if (deviceCount < 1)
+ if (CFSetGetCount(devices) < 1)
{
CFRelease(devices);
return NULL;
}
-
+
return devices;
}
+
+////////////////////////////////////////////////////////////
bool HIDInputManager::isPressed(IOHIDElements& elements)
{
- if (!m_isValid)
- return false;
-
- // state = true if at least one corresponding HID button is pressed
- bool state = false;
-
- for (IOHIDElements::iterator it = elements.begin(); it != elements.end(); /* noop */)
+ bool pressed = false;
+ for (IOHIDElements::iterator it = elements.begin(); it != elements.end() && !pressed; /* noop */)
{
IOHIDValueRef value = 0;
@@ -373,493 +444,886 @@ bool HIDInputManager::isPressed(IOHIDElements& elements)
if (!value)
{
- // This means some kind of error / disconnection so we remove this
- // element from our buttons
+ // This means some kind of error / disconnection so we remove this element from our database.
CFRelease(*it);
it = elements.erase(it);
}
- else if (IOHIDValueGetIntegerValue(value) == 1)
- {
- // This means the button is pressed
- state = true;
- break; // Stop here
- }
else
{
- // This means the button is released
+ pressed = (IOHIDValueGetIntegerValue(value) == 1);
++it;
}
+
}
- return state;
+ return pressed;
}
////////////////////////////////////////////////////////////
-UInt8 HIDInputManager::usageToVirtualCode(UInt32 usage)
+sf::Keyboard::Scancode HIDInputManager::usageToScancode(UInt32 usage)
{
- // Some usage key doesn't have any corresponding virtual
- // code or it was not found (return 0xff).
switch (usage)
{
- case kHIDUsage_KeyboardErrorRollOver: return 0xff;
- case kHIDUsage_KeyboardPOSTFail: return 0xff;
- case kHIDUsage_KeyboardErrorUndefined: return 0xff;
+ case kHIDUsage_KeyboardErrorRollOver: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardPOSTFail: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardErrorUndefined: return sf::Keyboard::ScanUnknown;
- case kHIDUsage_KeyboardA: return 0x00;
- case kHIDUsage_KeyboardB: return 0x0b;
- case kHIDUsage_KeyboardC: return 0x08;
- case kHIDUsage_KeyboardD: return 0x02;
- case kHIDUsage_KeyboardE: return 0x0e;
- case kHIDUsage_KeyboardF: return 0x03;
- case kHIDUsage_KeyboardG: return 0x05;
- case kHIDUsage_KeyboardH: return 0x04;
- case kHIDUsage_KeyboardI: return 0x22;
- case kHIDUsage_KeyboardJ: return 0x26;
- case kHIDUsage_KeyboardK: return 0x28;
- case kHIDUsage_KeyboardL: return 0x25;
- case kHIDUsage_KeyboardM: return 0x2e;
- case kHIDUsage_KeyboardN: return 0x2d;
- case kHIDUsage_KeyboardO: return 0x1f;
- case kHIDUsage_KeyboardP: return 0x23;
- case kHIDUsage_KeyboardQ: return 0x0c;
- case kHIDUsage_KeyboardR: return 0x0f;
- case kHIDUsage_KeyboardS: return 0x01;
- case kHIDUsage_KeyboardT: return 0x11;
- case kHIDUsage_KeyboardU: return 0x20;
- case kHIDUsage_KeyboardV: return 0x09;
- case kHIDUsage_KeyboardW: return 0x0d;
- case kHIDUsage_KeyboardX: return 0x07;
- case kHIDUsage_KeyboardY: return 0x10;
- case kHIDUsage_KeyboardZ: return 0x06;
+ case kHIDUsage_KeyboardA: return sf::Keyboard::ScanA;
+ case kHIDUsage_KeyboardB: return sf::Keyboard::ScanB;
+ case kHIDUsage_KeyboardC: return sf::Keyboard::ScanC;
+ case kHIDUsage_KeyboardD: return sf::Keyboard::ScanD;
+ case kHIDUsage_KeyboardE: return sf::Keyboard::ScanE;
+ case kHIDUsage_KeyboardF: return sf::Keyboard::ScanF;
+ case kHIDUsage_KeyboardG: return sf::Keyboard::ScanG;
+ case kHIDUsage_KeyboardH: return sf::Keyboard::ScanH;
+ case kHIDUsage_KeyboardI: return sf::Keyboard::ScanI;
+ case kHIDUsage_KeyboardJ: return sf::Keyboard::ScanJ;
+ case kHIDUsage_KeyboardK: return sf::Keyboard::ScanK;
+ case kHIDUsage_KeyboardL: return sf::Keyboard::ScanL;
+ case kHIDUsage_KeyboardM: return sf::Keyboard::ScanM;
+ case kHIDUsage_KeyboardN: return sf::Keyboard::ScanN;
+ case kHIDUsage_KeyboardO: return sf::Keyboard::ScanO;
+ case kHIDUsage_KeyboardP: return sf::Keyboard::ScanP;
+ case kHIDUsage_KeyboardQ: return sf::Keyboard::ScanQ;
+ case kHIDUsage_KeyboardR: return sf::Keyboard::ScanR;
+ case kHIDUsage_KeyboardS: return sf::Keyboard::ScanS;
+ case kHIDUsage_KeyboardT: return sf::Keyboard::ScanT;
+ case kHIDUsage_KeyboardU: return sf::Keyboard::ScanU;
+ case kHIDUsage_KeyboardV: return sf::Keyboard::ScanV;
+ case kHIDUsage_KeyboardW: return sf::Keyboard::ScanW;
+ case kHIDUsage_KeyboardX: return sf::Keyboard::ScanX;
+ case kHIDUsage_KeyboardY: return sf::Keyboard::ScanY;
+ case kHIDUsage_KeyboardZ: return sf::Keyboard::ScanZ;
- case kHIDUsage_Keyboard1: return 0x12;
- case kHIDUsage_Keyboard2: return 0x13;
- case kHIDUsage_Keyboard3: return 0x14;
- case kHIDUsage_Keyboard4: return 0x15;
- case kHIDUsage_Keyboard5: return 0x17;
- case kHIDUsage_Keyboard6: return 0x16;
- case kHIDUsage_Keyboard7: return 0x1a;
- case kHIDUsage_Keyboard8: return 0x1c;
- case kHIDUsage_Keyboard9: return 0x19;
- case kHIDUsage_Keyboard0: return 0x1d;
+ case kHIDUsage_Keyboard1: return sf::Keyboard::ScanNum1;
+ case kHIDUsage_Keyboard2: return sf::Keyboard::ScanNum2;
+ case kHIDUsage_Keyboard3: return sf::Keyboard::ScanNum3;
+ case kHIDUsage_Keyboard4: return sf::Keyboard::ScanNum4;
+ case kHIDUsage_Keyboard5: return sf::Keyboard::ScanNum5;
+ case kHIDUsage_Keyboard6: return sf::Keyboard::ScanNum6;
+ case kHIDUsage_Keyboard7: return sf::Keyboard::ScanNum7;
+ case kHIDUsage_Keyboard8: return sf::Keyboard::ScanNum8;
+ case kHIDUsage_Keyboard9: return sf::Keyboard::ScanNum9;
+ case kHIDUsage_Keyboard0: return sf::Keyboard::ScanNum0;
- case kHIDUsage_KeyboardReturnOrEnter: return 0x24;
- case kHIDUsage_KeyboardEscape: return 0x35;
- case kHIDUsage_KeyboardDeleteOrBackspace: return 0x33;
- case kHIDUsage_KeyboardTab: return 0x30;
- case kHIDUsage_KeyboardSpacebar: return 0x31;
- case kHIDUsage_KeyboardHyphen: return 0x1b;
- case kHIDUsage_KeyboardEqualSign: return 0x18;
- case kHIDUsage_KeyboardOpenBracket: return 0x21;
- case kHIDUsage_KeyboardCloseBracket: return 0x1e;
- case kHIDUsage_KeyboardBackslash: return 0x2a;
- case kHIDUsage_KeyboardNonUSPound: return 0xff;
- case kHIDUsage_KeyboardSemicolon: return 0x29;
- case kHIDUsage_KeyboardQuote: return 0x27;
- case kHIDUsage_KeyboardGraveAccentAndTilde: return 0x32;
- case kHIDUsage_KeyboardComma: return 0x2b;
- case kHIDUsage_KeyboardPeriod: return 0x2F;
- case kHIDUsage_KeyboardSlash: return 0x2c;
- case kHIDUsage_KeyboardCapsLock: return 0x39;
+ case kHIDUsage_KeyboardReturnOrEnter: return sf::Keyboard::ScanEnter;
+ case kHIDUsage_KeyboardEscape: return sf::Keyboard::ScanEscape;
+ case kHIDUsage_KeyboardDeleteOrBackspace: return sf::Keyboard::ScanBackspace;
+ case kHIDUsage_KeyboardTab: return sf::Keyboard::ScanTab;
+ case kHIDUsage_KeyboardSpacebar: return sf::Keyboard::ScanSpace;
+ case kHIDUsage_KeyboardHyphen: return sf::Keyboard::ScanHyphen;
+ case kHIDUsage_KeyboardEqualSign: return sf::Keyboard::ScanEquals;
+ case kHIDUsage_KeyboardOpenBracket: return sf::Keyboard::ScanLBracket;
+ case kHIDUsage_KeyboardCloseBracket: return sf::Keyboard::ScanRBracket;
+ case kHIDUsage_KeyboardBackslash: return sf::Keyboard::ScanBackslash;
+ case kHIDUsage_KeyboardNonUSPound: return sf::Keyboard::ScanDash;
+ case kHIDUsage_KeyboardSemicolon: return sf::Keyboard::ScanSemicolon;
+ case kHIDUsage_KeyboardQuote: return sf::Keyboard::ScanQuote;
+ case kHIDUsage_KeyboardGraveAccentAndTilde: return sf::Keyboard::ScanGraveAccent;
+ case kHIDUsage_KeyboardComma: return sf::Keyboard::ScanComma;
+ case kHIDUsage_KeyboardPeriod: return sf::Keyboard::ScanPeriod;
+ case kHIDUsage_KeyboardSlash: return sf::Keyboard::ScanSlash;
+ case kHIDUsage_KeyboardCapsLock: return sf::Keyboard::ScanCapsLock;
- case kHIDUsage_KeyboardF1: return 0x7a;
- case kHIDUsage_KeyboardF2: return 0x78;
- case kHIDUsage_KeyboardF3: return 0x63;
- case kHIDUsage_KeyboardF4: return 0x76;
- case kHIDUsage_KeyboardF5: return 0x60;
- case kHIDUsage_KeyboardF6: return 0x61;
- case kHIDUsage_KeyboardF7: return 0x62;
- case kHIDUsage_KeyboardF8: return 0x64;
- case kHIDUsage_KeyboardF9: return 0x65;
- case kHIDUsage_KeyboardF10: return 0x6d;
- case kHIDUsage_KeyboardF11: return 0x67;
- case kHIDUsage_KeyboardF12: return 0x6f;
+ case kHIDUsage_KeyboardF1: return sf::Keyboard::ScanF1;
+ case kHIDUsage_KeyboardF2: return sf::Keyboard::ScanF2;
+ case kHIDUsage_KeyboardF3: return sf::Keyboard::ScanF3;
+ case kHIDUsage_KeyboardF4: return sf::Keyboard::ScanF4;
+ case kHIDUsage_KeyboardF5: return sf::Keyboard::ScanF5;
+ case kHIDUsage_KeyboardF6: return sf::Keyboard::ScanF6;
+ case kHIDUsage_KeyboardF7: return sf::Keyboard::ScanF7;
+ case kHIDUsage_KeyboardF8: return sf::Keyboard::ScanF8;
+ case kHIDUsage_KeyboardF9: return sf::Keyboard::ScanF9;
+ case kHIDUsage_KeyboardF10: return sf::Keyboard::ScanF10;
+ case kHIDUsage_KeyboardF11: return sf::Keyboard::ScanF11;
+ case kHIDUsage_KeyboardF12: return sf::Keyboard::ScanF12;
- case kHIDUsage_KeyboardPrintScreen: return 0xff;
- case kHIDUsage_KeyboardScrollLock: return 0xff;
- case kHIDUsage_KeyboardPause: return 0xff;
- case kHIDUsage_KeyboardInsert: return 0x72;
- case kHIDUsage_KeyboardHome: return 0x73;
- case kHIDUsage_KeyboardPageUp: return 0x74;
- case kHIDUsage_KeyboardDeleteForward: return 0x75;
- case kHIDUsage_KeyboardEnd: return 0x77;
- case kHIDUsage_KeyboardPageDown: return 0x79;
+ case kHIDUsage_KeyboardPrintScreen: return sf::Keyboard::ScanPrintScreen;
+ case kHIDUsage_KeyboardScrollLock: return sf::Keyboard::ScanScrollLock;
+ case kHIDUsage_KeyboardPause: return sf::Keyboard::ScanPause;
+ case kHIDUsage_KeyboardInsert: return sf::Keyboard::ScanInsert;
+ case kHIDUsage_KeyboardHome: return sf::Keyboard::ScanHome;
+ case kHIDUsage_KeyboardPageUp: return sf::Keyboard::ScanPageUp;
+ case kHIDUsage_KeyboardDeleteForward: return sf::Keyboard::ScanDelete;
+ case kHIDUsage_KeyboardEnd: return sf::Keyboard::ScanEnd;
+ case kHIDUsage_KeyboardPageDown: return sf::Keyboard::ScanPageDown;
- case kHIDUsage_KeyboardRightArrow: return 0x7c;
- case kHIDUsage_KeyboardLeftArrow: return 0x7b;
- case kHIDUsage_KeyboardDownArrow: return 0x7d;
- case kHIDUsage_KeyboardUpArrow: return 0x7e;
+ case kHIDUsage_KeyboardRightArrow: return sf::Keyboard::ScanRight;
+ case kHIDUsage_KeyboardLeftArrow: return sf::Keyboard::ScanLeft;
+ case kHIDUsage_KeyboardDownArrow: return sf::Keyboard::ScanDown;
+ case kHIDUsage_KeyboardUpArrow: return sf::Keyboard::ScanUp;
- case kHIDUsage_KeypadNumLock: return 0x47;
- case kHIDUsage_KeypadSlash: return 0x4b;
- case kHIDUsage_KeypadAsterisk: return 0x43;
- case kHIDUsage_KeypadHyphen: return 0x4e;
- case kHIDUsage_KeypadPlus: return 0x45;
- case kHIDUsage_KeypadEnter: return 0x4c;
+ case kHIDUsage_KeypadNumLock: return sf::Keyboard::ScanNumLock;
+ case kHIDUsage_KeypadSlash: return sf::Keyboard::ScanDivide;
+ case kHIDUsage_KeypadAsterisk: return sf::Keyboard::ScanMultiply;
+ case kHIDUsage_KeypadHyphen: return sf::Keyboard::ScanMinus;
+ case kHIDUsage_KeypadPlus: return sf::Keyboard::ScanPlus;
+ case kHIDUsage_KeypadEnter: return sf::Keyboard::ScanEnter;
- case kHIDUsage_Keypad1: return 0x53;
- case kHIDUsage_Keypad2: return 0x54;
- case kHIDUsage_Keypad3: return 0x55;
- case kHIDUsage_Keypad4: return 0x56;
- case kHIDUsage_Keypad5: return 0x57;
- case kHIDUsage_Keypad6: return 0x58;
- case kHIDUsage_Keypad7: return 0x59;
- case kHIDUsage_Keypad8: return 0x5b;
- case kHIDUsage_Keypad9: return 0x5c;
- case kHIDUsage_Keypad0: return 0x52;
+ case kHIDUsage_Keypad1: return sf::Keyboard::ScanNumpad1;
+ case kHIDUsage_Keypad2: return sf::Keyboard::ScanNumpad2;
+ case kHIDUsage_Keypad3: return sf::Keyboard::ScanNumpad3;
+ case kHIDUsage_Keypad4: return sf::Keyboard::ScanNumpad4;
+ case kHIDUsage_Keypad5: return sf::Keyboard::ScanNumpad5;
+ case kHIDUsage_Keypad6: return sf::Keyboard::ScanNumpad6;
+ case kHIDUsage_Keypad7: return sf::Keyboard::ScanNumpad7;
+ case kHIDUsage_Keypad8: return sf::Keyboard::ScanNumpad8;
+ case kHIDUsage_Keypad9: return sf::Keyboard::ScanNumpad9;
+ case kHIDUsage_Keypad0: return sf::Keyboard::ScanNumpad0;
- case kHIDUsage_KeypadPeriod: return 0x41;
- case kHIDUsage_KeyboardNonUSBackslash: return 0xff;
- case kHIDUsage_KeyboardApplication: return 0x6e;
- case kHIDUsage_KeyboardPower: return 0xff;
- case kHIDUsage_KeypadEqualSign: return 0x51;
+ case kHIDUsage_KeypadPeriod: return sf::Keyboard::ScanDecimal;
+ case kHIDUsage_KeyboardNonUSBackslash: return sf::Keyboard::ScanReverseSolidus;
+ case kHIDUsage_KeyboardApplication: return sf::Keyboard::ScanApplication;
+ case kHIDUsage_KeyboardPower: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeypadEqualSign: return sf::Keyboard::ScanNumpadEquals;
- case kHIDUsage_KeyboardF13: return 0x69;
- case kHIDUsage_KeyboardF14: return 0x6b;
- case kHIDUsage_KeyboardF15: return 0x71;
- case kHIDUsage_KeyboardF16: return 0xff;
- case kHIDUsage_KeyboardF17: return 0xff;
- case kHIDUsage_KeyboardF18: return 0xff;
- case kHIDUsage_KeyboardF19: return 0xff;
- case kHIDUsage_KeyboardF20: return 0xff;
- case kHIDUsage_KeyboardF21: return 0xff;
- case kHIDUsage_KeyboardF22: return 0xff;
- case kHIDUsage_KeyboardF23: return 0xff;
- case kHIDUsage_KeyboardF24: return 0xff;
+ case kHIDUsage_KeyboardF13: return sf::Keyboard::ScanF13;
+ case kHIDUsage_KeyboardF14: return sf::Keyboard::ScanF14;
+ case kHIDUsage_KeyboardF15: return sf::Keyboard::ScanF15;
+ case kHIDUsage_KeyboardF16: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardF17: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardF18: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardF19: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardF20: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardF21: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardF22: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardF23: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardF24: return sf::Keyboard::ScanUnknown;
- case kHIDUsage_KeyboardExecute: return 0xff;
- case kHIDUsage_KeyboardHelp: return 0xff;
- case kHIDUsage_KeyboardMenu: return 0x7F;
- case kHIDUsage_KeyboardSelect: return 0x4c;
- case kHIDUsage_KeyboardStop: return 0xff;
- case kHIDUsage_KeyboardAgain: return 0xff;
- case kHIDUsage_KeyboardUndo: return 0xff;
- case kHIDUsage_KeyboardCut: return 0xff;
- case kHIDUsage_KeyboardCopy: return 0xff;
- case kHIDUsage_KeyboardPaste: return 0xff;
- case kHIDUsage_KeyboardFind: return 0xff;
+ case kHIDUsage_KeyboardExecute: return sf::Keyboard::ScanExecute;
+ case kHIDUsage_KeyboardHelp: return sf::Keyboard::ScanHelp;
+ case kHIDUsage_KeyboardMenu: return sf::Keyboard::ScanMenu;
+ case kHIDUsage_KeyboardSelect: return sf::Keyboard::ScanSelect;
+ case kHIDUsage_KeyboardStop: return sf::Keyboard::ScanStop;
+ case kHIDUsage_KeyboardAgain: return sf::Keyboard::ScanAgain;
+ case kHIDUsage_KeyboardUndo: return sf::Keyboard::ScanUndo;
+ case kHIDUsage_KeyboardCut: return sf::Keyboard::ScanCut;
+ case kHIDUsage_KeyboardCopy: return sf::Keyboard::ScanCopy;
+ case kHIDUsage_KeyboardPaste: return sf::Keyboard::ScanPaste;
+ case kHIDUsage_KeyboardFind: return sf::Keyboard::ScanFind;
- case kHIDUsage_KeyboardMute: return 0xff;
- case kHIDUsage_KeyboardVolumeUp: return 0xff;
- case kHIDUsage_KeyboardVolumeDown: return 0xff;
+ case kHIDUsage_KeyboardMute: return sf::Keyboard::ScanMute;
+ case kHIDUsage_KeyboardVolumeUp: return sf::Keyboard::ScanVolumeUp;
+ case kHIDUsage_KeyboardVolumeDown: return sf::Keyboard::ScanVolumeDown;
- case kHIDUsage_KeyboardLockingCapsLock: return 0xff;
- case kHIDUsage_KeyboardLockingNumLock: return 0xff;
- case kHIDUsage_KeyboardLockingScrollLock: return 0xff;
+ case kHIDUsage_KeyboardLockingCapsLock: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardLockingNumLock: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardLockingScrollLock: return sf::Keyboard::ScanUnknown;
- case kHIDUsage_KeypadComma: return 0xff;
- case kHIDUsage_KeypadEqualSignAS400: return 0xff;
- case kHIDUsage_KeyboardInternational1: return 0xff;
- case kHIDUsage_KeyboardInternational2: return 0xff;
- case kHIDUsage_KeyboardInternational3: return 0xff;
- case kHIDUsage_KeyboardInternational4: return 0xff;
- case kHIDUsage_KeyboardInternational5: return 0xff;
- case kHIDUsage_KeyboardInternational6: return 0xff;
- case kHIDUsage_KeyboardInternational7: return 0xff;
- case kHIDUsage_KeyboardInternational8: return 0xff;
- case kHIDUsage_KeyboardInternational9: return 0xff;
+ case kHIDUsage_KeypadComma: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeypadEqualSignAS400: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardInternational1: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardInternational2: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardInternational3: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardInternational4: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardInternational5: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardInternational6: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardInternational7: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardInternational8: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardInternational9: return sf::Keyboard::ScanUnknown;
- case kHIDUsage_KeyboardLANG1: return 0xff;
- case kHIDUsage_KeyboardLANG2: return 0xff;
- case kHIDUsage_KeyboardLANG3: return 0xff;
- case kHIDUsage_KeyboardLANG4: return 0xff;
- case kHIDUsage_KeyboardLANG5: return 0xff;
- case kHIDUsage_KeyboardLANG6: return 0xff;
- case kHIDUsage_KeyboardLANG7: return 0xff;
- case kHIDUsage_KeyboardLANG8: return 0xff;
- case kHIDUsage_KeyboardLANG9: return 0xff;
+ case kHIDUsage_KeyboardLANG1: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardLANG2: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardLANG3: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardLANG4: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardLANG5: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardLANG6: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardLANG7: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardLANG8: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardLANG9: return sf::Keyboard::ScanUnknown;
- case kHIDUsage_KeyboardAlternateErase: return 0xff;
- case kHIDUsage_KeyboardSysReqOrAttention: return 0xff;
- case kHIDUsage_KeyboardCancel: return 0xff;
- case kHIDUsage_KeyboardClear: return 0xff;
- case kHIDUsage_KeyboardPrior: return 0xff;
- case kHIDUsage_KeyboardReturn: return 0xff;
- case kHIDUsage_KeyboardSeparator: return 0xff;
- case kHIDUsage_KeyboardOut: return 0xff;
- case kHIDUsage_KeyboardOper: return 0xff;
- case kHIDUsage_KeyboardClearOrAgain: return 0xff;
- case kHIDUsage_KeyboardCrSelOrProps: return 0xff;
- case kHIDUsage_KeyboardExSel: return 0xff;
+ case kHIDUsage_KeyboardAlternateErase: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardSysReqOrAttention: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardCancel: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardClear: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardPrior: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardReturn: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardSeparator: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardOut: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardOper: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardClearOrAgain: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardCrSelOrProps: return sf::Keyboard::ScanUnknown;
+ case kHIDUsage_KeyboardExSel: return sf::Keyboard::ScanUnknown;
/* 0xa5-0xdf Reserved */
- case kHIDUsage_KeyboardLeftControl: return 0x3b;
- case kHIDUsage_KeyboardLeftShift: return 0x38;
- case kHIDUsage_KeyboardLeftAlt: return 0x3a;
- case kHIDUsage_KeyboardLeftGUI: return 0x37;
- case kHIDUsage_KeyboardRightControl: return 0x3e;
- case kHIDUsage_KeyboardRightShift: return 0x3c;
- case kHIDUsage_KeyboardRightAlt: return 0x3d;
- case kHIDUsage_KeyboardRightGUI: return 0x36;
+ case kHIDUsage_KeyboardLeftControl: return sf::Keyboard::ScanLControl;
+ case kHIDUsage_KeyboardLeftShift: return sf::Keyboard::ScanLShift;
+ case kHIDUsage_KeyboardLeftAlt: return sf::Keyboard::ScanLAlt;
+ case kHIDUsage_KeyboardLeftGUI: return sf::Keyboard::ScanLSystem;
+ case kHIDUsage_KeyboardRightControl: return sf::Keyboard::ScanRControl;
+ case kHIDUsage_KeyboardRightShift: return sf::Keyboard::ScanRShift;
+ case kHIDUsage_KeyboardRightAlt: return sf::Keyboard::ScanRAlt;
+ case kHIDUsage_KeyboardRightGUI: return sf::Keyboard::ScanRSystem;
/* 0xe8-0xffff Reserved */
- case kHIDUsage_Keyboard_Reserved: return 0xff;
- default: return 0xff;
+ case kHIDUsage_Keyboard_Reserved: return sf::Keyboard::ScanUnknown;
+ default: return sf::Keyboard::ScanUnknown;
}
}
////////////////////////////////////////////////////////
-Keyboard::Key HIDInputManager::localizedKeys(UniChar ch)
+Keyboard::Key HIDInputManager::localizedKey(UniChar ch)
{
+ // Apple is using the private range 0xE000 - 0xF8FF for special keys.
+ // Otherwise one can refer to the usual Unicode table.
switch (ch)
{
- case 'a':
- case 'A': return sf::Keyboard::A;
+ case 0x41: return sf::Keyboard::A; // uppercase A
+ case 0x42: return sf::Keyboard::B;
+ case 0x43: return sf::Keyboard::C;
+ case 0x44: return sf::Keyboard::D;
+ case 0x45: return sf::Keyboard::E;
+ case 0x46: return sf::Keyboard::F;
+ case 0x47: return sf::Keyboard::G;
+ case 0x48: return sf::Keyboard::H;
+ case 0x49: return sf::Keyboard::I;
+ case 0x4a: return sf::Keyboard::J;
+ case 0x4b: return sf::Keyboard::K;
+ case 0x4c: return sf::Keyboard::L;
+ case 0x4d: return sf::Keyboard::M;
+ case 0x4e: return sf::Keyboard::N;
+ case 0x4f: return sf::Keyboard::O;
+ case 0x50: return sf::Keyboard::P;
+ case 0x51: return sf::Keyboard::Q;
+ case 0x52: return sf::Keyboard::R;
+ case 0x53: return sf::Keyboard::S;
+ case 0x54: return sf::Keyboard::T;
+ case 0x55: return sf::Keyboard::U;
+ case 0x56: return sf::Keyboard::V;
+ case 0x57: return sf::Keyboard::W;
+ case 0x58: return sf::Keyboard::X;
+ case 0x59: return sf::Keyboard::Y;
- case 'b':
- case 'B': return sf::Keyboard::B;
+ case 0x5a: return sf::Keyboard::Z; // lowercase A
+ case 0x61: return sf::Keyboard::A;
+ case 0x62: return sf::Keyboard::B;
+ case 0x63: return sf::Keyboard::C;
+ case 0x64: return sf::Keyboard::D;
+ case 0x65: return sf::Keyboard::E;
+ case 0x66: return sf::Keyboard::F;
+ case 0x67: return sf::Keyboard::G;
+ case 0x68: return sf::Keyboard::H;
+ case 0x69: return sf::Keyboard::I;
+ case 0x6a: return sf::Keyboard::J;
+ case 0x6b: return sf::Keyboard::K;
+ case 0x6c: return sf::Keyboard::L;
+ case 0x6d: return sf::Keyboard::M;
+ case 0x6e: return sf::Keyboard::N;
+ case 0x6f: return sf::Keyboard::O;
+ case 0x70: return sf::Keyboard::P;
+ case 0x71: return sf::Keyboard::Q;
+ case 0x72: return sf::Keyboard::R;
+ case 0x73: return sf::Keyboard::S;
+ case 0x74: return sf::Keyboard::T;
+ case 0x75: return sf::Keyboard::U;
+ case 0x76: return sf::Keyboard::V;
+ case 0x77: return sf::Keyboard::W;
+ case 0x78: return sf::Keyboard::X;
+ case 0x79: return sf::Keyboard::Y;
+ case 0x7a: return sf::Keyboard::Z;
- case 'c':
- case 'C': return sf::Keyboard::C;
+ case 0x30: return sf::Keyboard::Num0;
+ case 0x31: return sf::Keyboard::Num1;
+ case 0x32: return sf::Keyboard::Num2;
+ case 0x33: return sf::Keyboard::Num3;
+ case 0x34: return sf::Keyboard::Num4;
+ case 0x35: return sf::Keyboard::Num5;
+ case 0x36: return sf::Keyboard::Num6;
+ case 0x37: return sf::Keyboard::Num7;
+ case 0x38: return sf::Keyboard::Num8;
+ case 0x39: return sf::Keyboard::Num9;
- case 'd':
- case 'D': return sf::Keyboard::D;
+ case 0x1b: return sf::Keyboard::Escape;
- case 'e':
- case 'E': return sf::Keyboard::E;
+ /* Those are not represented using Unicode.
+ * case 0x: return sf::Keyboard::LControl;
+ * case 0x: return sf::Keyboard::LShift;
+ * case 0x: return sf::Keyboard::LAlt;
+ * case 0x: return sf::Keyboard::LSystem;
+ * case 0x: return sf::Keyboard::RControl;
+ * case 0x: return sf::Keyboard::RShift;
+ * case 0x: return sf::Keyboard::RAlt;
+ * case 0x: return sf::Keyboard::RSystem;
+ */
- case 'f':
- case 'F': return sf::Keyboard::F;
+ case NSMenuFunctionKey: return sf::Keyboard::Menu;
- case 'g':
- case 'G': return sf::Keyboard::G;
+ case 0x5b: return sf::Keyboard::LBracket;
+ case 0x5d: return sf::Keyboard::RBracket;
+ case 0x3b: return sf::Keyboard::SemiColon;
+ case 0x2c: return sf::Keyboard::Comma;
+ case 0x2e: return sf::Keyboard::Period;
+ case 0x27: return sf::Keyboard::Quote;
+ case 0x2044: return sf::Keyboard::Slash; // 0x2f is Divide
+ case 0x5c: return sf::Keyboard::BackSlash;
+ case 0x7e: return sf::Keyboard::Tilde;
+ case 0x3d: return sf::Keyboard::Equal;
+ case 0x2013: return sf::Keyboard::Dash; // 0x2d is Subtract
+ case 0x20: return sf::Keyboard::Space;
+ case 0x0d: return sf::Keyboard::Return;
+ case 0x7f: return sf::Keyboard::BackSpace; // NOTE backspace & delete are swapped on Mac.
+ case 0x09: return sf::Keyboard::Tab;
- case 'h':
- case 'H': return sf::Keyboard::H;
+ case NSPageUpFunctionKey: return sf::Keyboard::PageUp;
+ case NSPageDownFunctionKey: return sf::Keyboard::PageDown;
+ case NSEndFunctionKey: return sf::Keyboard::End;
+ case NSHomeFunctionKey: return sf::Keyboard::Home;
+ case NSInsertFunctionKey: return sf::Keyboard::Insert;
+ case NSDeleteFunctionKey: return sf::Keyboard::Delete;
- case 'i':
- case 'I': return sf::Keyboard::I;
+ case 0x2b: return sf::Keyboard::Add;
+ case 0x2d: return sf::Keyboard::Subtract;
+ case 0x2a: return sf::Keyboard::Multiply;
+ case 0x2f: return sf::Keyboard::Divide;
- case 'j':
- case 'J': return sf::Keyboard::J;
+ case NSLeftArrowFunctionKey: return sf::Keyboard::Left;
+ case NSRightArrowFunctionKey: return sf::Keyboard::Right;
+ case NSUpArrowFunctionKey: return sf::Keyboard::Up;
+ case NSDownArrowFunctionKey: return sf::Keyboard::Down;
- case 'k':
- case 'K': return sf::Keyboard::K;
+ /* Those are not represented using Unicode.
+ * case 0x: return sf::Keyboard::Numpad0;
+ * case 0x: return sf::Keyboard::Numpad1;
+ * case 0x: return sf::Keyboard::Numpad2;
+ * case 0x: return sf::Keyboard::Numpad3;
+ * case 0x: return sf::Keyboard::Numpad4;
+ * case 0x: return sf::Keyboard::Numpad5;
+ * case 0x: return sf::Keyboard::Numpad6;
+ * case 0x: return sf::Keyboard::Numpad7;
+ * case 0x: return sf::Keyboard::Numpad8;
+ * case 0x: return sf::Keyboard::Numpad9;
+ */
- case 'l':
- case 'L': return sf::Keyboard::L;
+ case NSF1FunctionKey: return sf::Keyboard::F1;
+ case NSF2FunctionKey: return sf::Keyboard::F2;
+ case NSF3FunctionKey: return sf::Keyboard::F3;
+ case NSF4FunctionKey: return sf::Keyboard::F4;
+ case NSF5FunctionKey: return sf::Keyboard::F5;
+ case NSF6FunctionKey: return sf::Keyboard::F6;
+ case NSF7FunctionKey: return sf::Keyboard::F7;
+ case NSF8FunctionKey: return sf::Keyboard::F8;
+ case NSF9FunctionKey: return sf::Keyboard::F9;
+ case NSF10FunctionKey: return sf::Keyboard::F10;
+ case NSF11FunctionKey: return sf::Keyboard::F11;
+ case NSF12FunctionKey: return sf::Keyboard::F12;
+ case NSF13FunctionKey: return sf::Keyboard::F13;
+ case NSF14FunctionKey: return sf::Keyboard::F14;
+ case NSF15FunctionKey: return sf::Keyboard::F15;
- case 'm':
- case 'M': return sf::Keyboard::M;
+ case NSPauseFunctionKey: return sf::Keyboard::Pause;
- case 'n':
- case 'N': return sf::Keyboard::N;
-
- case 'o':
- case 'O': return sf::Keyboard::O;
-
- case 'p':
- case 'P': return sf::Keyboard::P;
-
- case 'q':
- case 'Q': return sf::Keyboard::Q;
-
- case 'r':
- case 'R': return sf::Keyboard::R;
-
- case 's':
- case 'S': return sf::Keyboard::S;
-
- case 't':
- case 'T': return sf::Keyboard::T;
-
- case 'u':
- case 'U': return sf::Keyboard::U;
-
- case 'v':
- case 'V': return sf::Keyboard::V;
-
- case 'w':
- case 'W': return sf::Keyboard::W;
-
- case 'x':
- case 'X': return sf::Keyboard::X;
-
- case 'y':
- case 'Y': return sf::Keyboard::Y;
-
- case 'z':
- case 'Z': return sf::Keyboard::Z;
-
- // The key is not 'localized'.
- default: return sf::Keyboard::Unknown;
+ default: return sf::Keyboard::Unknown;
}
}
////////////////////////////////////////////////////////
-Keyboard::Key HIDInputManager::nonLocalizedKeys(UniChar virtualKeycode)
+UniChar HIDInputManager::toUnicode(Keyboard::Key key)
{
- // (Some) 0x code based on https://forums.macrumors.com/showthread.php?t=780577
- // Some sf::Keyboard::Key are present twice.
+ switch (key)
+ {
+ case sf::Keyboard::A: return 0x41;
+ case sf::Keyboard::B: return 0x42;
+ case sf::Keyboard::C: return 0x43;
+ case sf::Keyboard::D: return 0x44;
+ case sf::Keyboard::E: return 0x45;
+ case sf::Keyboard::F: return 0x46;
+ case sf::Keyboard::G: return 0x47;
+ case sf::Keyboard::H: return 0x48;
+ case sf::Keyboard::I: return 0x49;
+ case sf::Keyboard::J: return 0x4a;
+ case sf::Keyboard::K: return 0x4b;
+ case sf::Keyboard::L: return 0x4c;
+ case sf::Keyboard::M: return 0x4d;
+ case sf::Keyboard::N: return 0x4e;
+ case sf::Keyboard::O: return 0x4f;
+ case sf::Keyboard::P: return 0x50;
+ case sf::Keyboard::Q: return 0x51;
+ case sf::Keyboard::R: return 0x52;
+ case sf::Keyboard::S: return 0x53;
+ case sf::Keyboard::T: return 0x54;
+ case sf::Keyboard::U: return 0x55;
+ case sf::Keyboard::V: return 0x56;
+ case sf::Keyboard::W: return 0x57;
+ case sf::Keyboard::X: return 0x58;
+ case sf::Keyboard::Y: return 0x59;
+ case sf::Keyboard::Z: return 0x5a;
+
+ case sf::Keyboard::Num0: return 0x30;
+ case sf::Keyboard::Num1: return 0x31;
+ case sf::Keyboard::Num2: return 0x32;
+ case sf::Keyboard::Num3: return 0x33;
+ case sf::Keyboard::Num4: return 0x34;
+ case sf::Keyboard::Num5: return 0x35;
+ case sf::Keyboard::Num6: return 0x36;
+ case sf::Keyboard::Num7: return 0x37;
+ case sf::Keyboard::Num8: return 0x38;
+ case sf::Keyboard::Num9: return 0x39;
+
+ case sf::Keyboard::Escape: return 0x1b;
+
+ /* Not representable as Unicode:
+ * case sf::Keyboard::LControl: return 0x;
+ * case sf::Keyboard::LShift: return 0x;
+ * case sf::Keyboard::LAlt: return 0x;
+ * case sf::Keyboard::LSystem: return 0x;
+ * case sf::Keyboard::RControl: return 0x;
+ * case sf::Keyboard::RShift: return 0x;
+ * case sf::Keyboard::RAlt: return 0x;
+ * case sf::Keyboard::RSystem: return 0x;
+ */
+
+ case sf::Keyboard::Menu: return NSMenuFunctionKey;
+
+ case sf::Keyboard::LBracket: return 0x5b;
+ case sf::Keyboard::RBracket: return 0x5d;
+ case sf::Keyboard::SemiColon: return 0x3b;
+ case sf::Keyboard::Comma: return 0x2c;
+ case sf::Keyboard::Period: return 0x2e;
+ case sf::Keyboard::Quote: return 0x27;
+ case sf::Keyboard::Slash: return 0x2044; // 0x2f is Divide
+ case sf::Keyboard::BackSlash: return 0x5c;
+ case sf::Keyboard::Tilde: return 0x7e;
+ case sf::Keyboard::Equal: return 0x3d;
+ case sf::Keyboard::Dash: return 0x2013; // 0x2d is Subtract
+ case sf::Keyboard::Space: return 0x20;
+ case sf::Keyboard::Return: return 0x0d;
+ case sf::Keyboard::BackSpace: return 0x7f; // NOTE backspace & delete are swapped on Mac.
+ case sf::Keyboard::Tab: return 0x09;
+
+ case sf::Keyboard::PageUp: return NSPageUpFunctionKey;
+ case sf::Keyboard::PageDown: return NSPageDownFunctionKey;
+ case sf::Keyboard::End: return NSEndFunctionKey;
+ case sf::Keyboard::Home: return NSHomeFunctionKey;
+ case sf::Keyboard::Insert: return NSInsertFunctionKey;
+ case sf::Keyboard::Delete: return NSDeleteFunctionKey;
+
+ case sf::Keyboard::Add: return 0x2b;
+ case sf::Keyboard::Subtract: return 0x2d;
+ case sf::Keyboard::Multiply: return 0x2a;
+ case sf::Keyboard::Divide: return 0x2f;
+
+ case sf::Keyboard::Left: return NSLeftArrowFunctionKey;
+ case sf::Keyboard::Right: return NSRightArrowFunctionKey;
+ case sf::Keyboard::Up: return NSUpArrowFunctionKey;
+ case sf::Keyboard::Down: return NSDownArrowFunctionKey;
+
+ /* Those are not represented using Unicode.
+ * case sf::Keyboard::Numpad0: return 0x;
+ * case sf::Keyboard::Numpad1: return 0x;
+ * case sf::Keyboard::Numpad2: return 0x;
+ * case sf::Keyboard::Numpad3: return 0x;
+ * case sf::Keyboard::Numpad4: return 0x;
+ * case sf::Keyboard::Numpad5: return 0x;
+ * case sf::Keyboard::Numpad6: return 0x;
+ * case sf::Keyboard::Numpad7: return 0x;
+ * case sf::Keyboard::Numpad8: return 0x;
+ * case sf::Keyboard::Numpad9: return 0x;
+ */
+
+ case sf::Keyboard::F1: return NSF1FunctionKey;
+ case sf::Keyboard::F2: return NSF2FunctionKey;
+ case sf::Keyboard::F3: return NSF3FunctionKey;
+ case sf::Keyboard::F4: return NSF4FunctionKey;
+ case sf::Keyboard::F5: return NSF5FunctionKey;
+ case sf::Keyboard::F6: return NSF6FunctionKey;
+ case sf::Keyboard::F7: return NSF7FunctionKey;
+ case sf::Keyboard::F8: return NSF8FunctionKey;
+ case sf::Keyboard::F9: return NSF9FunctionKey;
+ case sf::Keyboard::F10: return NSF10FunctionKey;
+ case sf::Keyboard::F11: return NSF11FunctionKey;
+ case sf::Keyboard::F12: return NSF12FunctionKey;
+ case sf::Keyboard::F13: return NSF13FunctionKey;
+ case sf::Keyboard::F14: return NSF14FunctionKey;
+ case sf::Keyboard::F15: return NSF15FunctionKey;
+
+ case sf::Keyboard::Pause: return NSPauseFunctionKey;
+
+ default: return 0x00;
+ }
+}
+
+
+////////////////////////////////////////////////////////
+Keyboard::Scancode HIDInputManager::nonLocalizedKey(UniChar virtualKeycode)
+{
+ // See Chapter 2, esp. Figure 2-10 of
+ // https://developer.apple.com/legacy/library/documentation/mac/pdf/MacintoshToolboxEssentials.pdf
+ // Additional virtual codes come from
+ // /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h
switch (virtualKeycode)
{
- // These cases should not be used but anyway...
- case 0x00: return sf::Keyboard::A;
- case 0x0b: return sf::Keyboard::B;
- case 0x08: return sf::Keyboard::C;
- case 0x02: return sf::Keyboard::D;
- case 0x0e: return sf::Keyboard::E;
- case 0x03: return sf::Keyboard::F;
- case 0x05: return sf::Keyboard::G;
- case 0x04: return sf::Keyboard::H;
- case 0x22: return sf::Keyboard::I;
- case 0x26: return sf::Keyboard::J;
- case 0x28: return sf::Keyboard::K;
- case 0x25: return sf::Keyboard::L;
- case 0x2e: return sf::Keyboard::M;
- case 0x2d: return sf::Keyboard::N;
- case 0x1f: return sf::Keyboard::O;
- case 0x23: return sf::Keyboard::P;
- case 0x0c: return sf::Keyboard::Q;
- case 0x0f: return sf::Keyboard::R;
- case 0x01: return sf::Keyboard::S;
- case 0x11: return sf::Keyboard::T;
- case 0x20: return sf::Keyboard::U;
- case 0x09: return sf::Keyboard::V;
- case 0x0d: return sf::Keyboard::W;
- case 0x07: return sf::Keyboard::X;
- case 0x10: return sf::Keyboard::Y;
- case 0x06: return sf::Keyboard::Z;
+ case 0x00: return sf::Keyboard::ScanA;
+ case 0x0b: return sf::Keyboard::ScanB;
+ case 0x08: return sf::Keyboard::ScanC;
+ case 0x02: return sf::Keyboard::ScanD;
+ case 0x0e: return sf::Keyboard::ScanE;
+ case 0x03: return sf::Keyboard::ScanF;
+ case 0x05: return sf::Keyboard::ScanG;
+ case 0x04: return sf::Keyboard::ScanH;
+ case 0x22: return sf::Keyboard::ScanI;
+ case 0x26: return sf::Keyboard::ScanJ;
+ case 0x28: return sf::Keyboard::ScanK;
+ case 0x25: return sf::Keyboard::ScanL;
+ case 0x2e: return sf::Keyboard::ScanM;
+ case 0x2d: return sf::Keyboard::ScanN;
+ case 0x1f: return sf::Keyboard::ScanO;
+ case 0x23: return sf::Keyboard::ScanP;
+ case 0x0c: return sf::Keyboard::ScanQ;
+ case 0x0f: return sf::Keyboard::ScanR;
+ case 0x01: return sf::Keyboard::ScanS;
+ case 0x11: return sf::Keyboard::ScanT;
+ case 0x20: return sf::Keyboard::ScanU;
+ case 0x09: return sf::Keyboard::ScanV;
+ case 0x0d: return sf::Keyboard::ScanW;
+ case 0x07: return sf::Keyboard::ScanX;
+ case 0x10: return sf::Keyboard::ScanY;
+ case 0x06: return sf::Keyboard::ScanZ;
- // These cases should not be used but anyway...
- case 0x1d: return sf::Keyboard::Num0;
- case 0x12: return sf::Keyboard::Num1;
- case 0x13: return sf::Keyboard::Num2;
- case 0x14: return sf::Keyboard::Num3;
- case 0x15: return sf::Keyboard::Num4;
- case 0x17: return sf::Keyboard::Num5;
- case 0x16: return sf::Keyboard::Num6;
- case 0x1a: return sf::Keyboard::Num7;
- case 0x1c: return sf::Keyboard::Num8;
- case 0x19: return sf::Keyboard::Num9;
+ case 0x12: return sf::Keyboard::ScanNum1;
+ case 0x13: return sf::Keyboard::ScanNum2;
+ case 0x14: return sf::Keyboard::ScanNum3;
+ case 0x15: return sf::Keyboard::ScanNum4;
+ case 0x17: return sf::Keyboard::ScanNum5;
+ case 0x16: return sf::Keyboard::ScanNum6;
+ case 0x1a: return sf::Keyboard::ScanNum7;
+ case 0x1c: return sf::Keyboard::ScanNum8;
+ case 0x19: return sf::Keyboard::ScanNum9;
+ case 0x1d: return sf::Keyboard::ScanNum0;
- case 0x35: return sf::Keyboard::Escape;
+ case 0x24: return sf::Keyboard::ScanEnter;
+ case 0x35: return sf::Keyboard::ScanEscape;
+ case 0x33: return sf::Keyboard::ScanBackspace;
+ case 0x30: return sf::Keyboard::ScanTab;
+ case 0x31: return sf::Keyboard::ScanSpace;
+ // case 0x27: return sf::Keyboard::ScanHyphen; // TODO 0x27 is for Quote
+ case 0x18: return sf::Keyboard::ScanEquals;
+ case 0x21: return sf::Keyboard::ScanLBracket;
+ case 0x1e: return sf::Keyboard::ScanRBracket;
+ case 0x2a: return sf::Keyboard::ScanBackslash;
+ case 0x1b: return sf::Keyboard::ScanDash;
+ case 0x29: return sf::Keyboard::ScanSemicolon;
+ case 0x27: return sf::Keyboard::ScanQuote;
+ case 0x32: return sf::Keyboard::ScanGraveAccent;
+ case 0x2b: return sf::Keyboard::ScanComma;
+ case 0x2f: return sf::Keyboard::ScanPeriod;
+ case 0x2c: return sf::Keyboard::ScanSlash;
- // Modifier keys : never happen with keyDown/keyUp methods (?)
- case 0x3b: return sf::Keyboard::LControl;
- case 0x38: return sf::Keyboard::LShift;
- case 0x3a: return sf::Keyboard::LAlt;
- case 0x37: return sf::Keyboard::LSystem;
- case 0x3e: return sf::Keyboard::RControl;
- case 0x3c: return sf::Keyboard::RShift;
- case 0x3d: return sf::Keyboard::RAlt;
- case 0x36: return sf::Keyboard::RSystem;
+ case 0x7a: return sf::Keyboard::ScanF1;
+ case 0x78: return sf::Keyboard::ScanF2;
+ case 0x63: return sf::Keyboard::ScanF3;
+ case 0x76: return sf::Keyboard::ScanF4;
+ case 0x60: return sf::Keyboard::ScanF5;
+ case 0x61: return sf::Keyboard::ScanF6;
+ case 0x62: return sf::Keyboard::ScanF7;
+ case 0x64: return sf::Keyboard::ScanF8;
+ case 0x65: return sf::Keyboard::ScanF9;
+ case 0x6d: return sf::Keyboard::ScanF10;
+ case 0x67: return sf::Keyboard::ScanF11;
+ case 0x6f: return sf::Keyboard::ScanF12;
+ case 0x69: return sf::Keyboard::ScanF13;
+ case 0x6b: return sf::Keyboard::ScanF14;
+ case 0x71: return sf::Keyboard::ScanF15;
- case 0x7f: return sf::Keyboard::Menu;
- case NSMenuFunctionKey: return sf::Keyboard::Menu;
+ case 0x39: return sf::Keyboard::ScanCapsLock;
- case 0x21: return sf::Keyboard::LBracket;
- case 0x1e: return sf::Keyboard::RBracket;
- case 0x29: return sf::Keyboard::Semicolon;
- case 0x2b: return sf::Keyboard::Comma;
- case 0x41: /* keypad */ return sf::Keyboard::Period;
- case 0x2f: /* keyboard */ return sf::Keyboard::Period;
- case 0x27: return sf::Keyboard::Quote;
- case 0x2c: return sf::Keyboard::Slash;
- case 0x2a: return sf::Keyboard::Backslash;
+ /* TODO Those are missing:
+ * case 0x: return sf::Keyboard::ScanPrintScreen;
+ * case 0x: return sf::Keyboard::ScanScrollLock;
+ * case 0x: return sf::Keyboard::ScanPause;
+ */
- // sf::Keyboard::Tilde might be in conflict with some other key.
- // 0x0a is for "Non-US Backslash" according to HID Calibrator,
- // a sample provided by Apple.
- case 0x0a: return sf::Keyboard::Tilde;
+ case 0x72: return sf::Keyboard::ScanInsert;
+ case 0x73: return sf::Keyboard::ScanHome;
+ case 0x74: return sf::Keyboard::ScanPageUp;
+ case 0x75: return sf::Keyboard::ScanDelete;
+ case 0x77: return sf::Keyboard::ScanEnd;
+ case 0x79: return sf::Keyboard::ScanPageDown;
- case 0x51: /* keypad */ return sf::Keyboard::Equal;
- case 0x18: /* keyboard */ return sf::Keyboard::Equal;
- case 0x32: return sf::Keyboard::Hyphen;
- case 0x31: return sf::Keyboard::Space;
- case 0x4c: /* keypad */ return sf::Keyboard::Enter;
- case 0x24: /* keyboard */ return sf::Keyboard::Enter;
- case 0x33: return sf::Keyboard::Backspace;
- case 0x30: return sf::Keyboard::Tab;
+ case 0x7c: return sf::Keyboard::ScanRight;
+ case 0x7b: return sf::Keyboard::ScanLeft;
+ case 0x7d: return sf::Keyboard::ScanDown;
+ case 0x7e: return sf::Keyboard::ScanUp;
- // Duplicates (see next section).
- case 0x74: return sf::Keyboard::PageUp;
- case 0x79: return sf::Keyboard::PageDown;
- case 0x77: return sf::Keyboard::End;
- case 0x73: return sf::Keyboard::Home;
+ case 0x47: return sf::Keyboard::ScanNumLock;
+ case 0x4b: return sf::Keyboard::ScanDivide;
+ case 0x43: return sf::Keyboard::ScanMultiply;
+ case 0x4e: return sf::Keyboard::ScanMinus;
+ case 0x45: return sf::Keyboard::ScanPlus;
+ case 0x51: return sf::Keyboard::ScanNumpadEquals;
+ case 0x4c: return sf::Keyboard::ScanNumpadEnter;
+ case 0x41: return sf::Keyboard::ScanDecimal;
- case NSPageUpFunctionKey: return sf::Keyboard::PageUp;
- case NSPageDownFunctionKey: return sf::Keyboard::PageDown;
- case NSEndFunctionKey: return sf::Keyboard::End;
- case NSHomeFunctionKey: return sf::Keyboard::Home;
+ case 0x53: return sf::Keyboard::ScanNumpad1;
+ case 0x54: return sf::Keyboard::ScanNumpad2;
+ case 0x55: return sf::Keyboard::ScanNumpad3;
+ case 0x56: return sf::Keyboard::ScanNumpad4;
+ case 0x57: return sf::Keyboard::ScanNumpad5;
+ case 0x58: return sf::Keyboard::ScanNumpad6;
+ case 0x59: return sf::Keyboard::ScanNumpad7;
+ case 0x5b: return sf::Keyboard::ScanNumpad8;
+ case 0x5c: return sf::Keyboard::ScanNumpad9;
+ case 0x52: return sf::Keyboard::ScanNumpad0;
- case 0x72: return sf::Keyboard::Insert;
- case NSInsertFunctionKey: return sf::Keyboard::Insert;
- case 0x75: return sf::Keyboard::Delete;
- case NSDeleteFunctionKey: return sf::Keyboard::Delete;
+ /* TODO Those are missing:
+ * case 0x: return sf::Keyboard::ScanReverseSolidus;
+ * case 0x: return sf::Keyboard::ScanApplication;
+ * case 0x: return sf::Keyboard::ScanExecute;
+ * case 0x72: return sf::Keyboard::ScanHelp; // 0x72 is for Insert
+ * case 0x: return sf::Keyboard::ScanMenu;
+ * case 0x: return sf::Keyboard::ScanSelect;
+ * case 0x: return sf::Keyboard::ScanStop;
+ * case 0x: return sf::Keyboard::ScanAgain;
+ * case 0x: return sf::Keyboard::ScanUndo;
+ * case 0x: return sf::Keyboard::ScanCut;
+ * case 0x: return sf::Keyboard::ScanCopy;
+ * case 0x: return sf::Keyboard::ScanPaste;
+ * case 0x: return sf::Keyboard::ScanFind;
+ */
- case 0x45: return sf::Keyboard::Add;
- case 0x4e: return sf::Keyboard::Subtract;
- case 0x43: return sf::Keyboard::Multiply;
- case 0x4b: return sf::Keyboard::Divide;
+ case 0x4a: return sf::Keyboard::ScanMute;
+ case 0x48: return sf::Keyboard::ScanVolumeUp;
+ case 0x49: return sf::Keyboard::ScanVolumeDown;
- // Duplicates (see next section).
- case 0x7b: return sf::Keyboard::Left;
- case 0x7c: return sf::Keyboard::Right;
- case 0x7e: return sf::Keyboard::Up;
- case 0x7d: return sf::Keyboard::Down;
+ /* NOTE Those are symmetric so we leave them out.
+ * Thankfully handled through modifiers and not virtual codes.
+ * case 0x3b: return sf::Keyboard::ScanLControl;
+ * case 0x38: return sf::Keyboard::ScanLShift;
+ * case 0x3a: return sf::Keyboard::ScanLAlt;
+ * case 0x37: return sf::Keyboard::ScanLSystem;
+ * case 0x3b: return sf::Keyboard::ScanRControl;
+ * case 0x38: return sf::Keyboard::ScanRShift;
+ * case 0x3a: return sf::Keyboard::ScanRAlt;
+ * case 0x37: return sf::Keyboard::ScanRSystem;
+ */
- case NSLeftArrowFunctionKey: return sf::Keyboard::Left;
- case NSRightArrowFunctionKey: return sf::Keyboard::Right;
- case NSUpArrowFunctionKey: return sf::Keyboard::Up;
- case NSDownArrowFunctionKey: return sf::Keyboard::Down;
+ default: return sf::Keyboard::ScanUnknown;
+ }
+}
- case 0x52: return sf::Keyboard::Numpad0;
- case 0x53: return sf::Keyboard::Numpad1;
- case 0x54: return sf::Keyboard::Numpad2;
- case 0x55: return sf::Keyboard::Numpad3;
- case 0x56: return sf::Keyboard::Numpad4;
- case 0x57: return sf::Keyboard::Numpad5;
- case 0x58: return sf::Keyboard::Numpad6;
- case 0x59: return sf::Keyboard::Numpad7;
- case 0x5b: return sf::Keyboard::Numpad8;
- case 0x5c: return sf::Keyboard::Numpad9;
- // Duplicates (see next section).
- case 0x7a: return sf::Keyboard::F1;
- case 0x78: return sf::Keyboard::F2;
- case 0x63: return sf::Keyboard::F3;
- case 0x76: return sf::Keyboard::F4;
- case 0x60: return sf::Keyboard::F5;
- case 0x61: return sf::Keyboard::F6;
- case 0x62: return sf::Keyboard::F7;
- case 0x64: return sf::Keyboard::F8;
- case 0x65: return sf::Keyboard::F9;
- case 0x6d: return sf::Keyboard::F10;
- case 0x67: return sf::Keyboard::F11;
- case 0x6f: return sf::Keyboard::F12;
- case 0x69: return sf::Keyboard::F13;
- case 0x6b: return sf::Keyboard::F14;
- case 0x71: return sf::Keyboard::F15;
+////////////////////////////////////////////////////////
+UInt8 HIDInputManager::scanToVirtualCode(Keyboard::Scancode code)
+{
+ switch (code)
+ {
+ case sf::Keyboard::ScanA: return 0x00;
+ case sf::Keyboard::ScanB: return 0x0b;
+ case sf::Keyboard::ScanC: return 0x08;
+ case sf::Keyboard::ScanD: return 0x02;
+ case sf::Keyboard::ScanE: return 0x0e;
+ case sf::Keyboard::ScanF: return 0x03;
+ case sf::Keyboard::ScanG: return 0x05;
+ case sf::Keyboard::ScanH: return 0x04;
+ case sf::Keyboard::ScanI: return 0x22;
+ case sf::Keyboard::ScanJ: return 0x26;
+ case sf::Keyboard::ScanK: return 0x28;
+ case sf::Keyboard::ScanL: return 0x25;
+ case sf::Keyboard::ScanM: return 0x2e;
+ case sf::Keyboard::ScanN: return 0x2d;
+ case sf::Keyboard::ScanO: return 0x1f;
+ case sf::Keyboard::ScanP: return 0x23;
+ case sf::Keyboard::ScanQ: return 0x0c;
+ case sf::Keyboard::ScanR: return 0x0f;
+ case sf::Keyboard::ScanS: return 0x01;
+ case sf::Keyboard::ScanT: return 0x11;
+ case sf::Keyboard::ScanU: return 0x20;
+ case sf::Keyboard::ScanV: return 0x09;
+ case sf::Keyboard::ScanW: return 0x0d;
+ case sf::Keyboard::ScanX: return 0x07;
+ case sf::Keyboard::ScanY: return 0x10;
+ case sf::Keyboard::ScanZ: return 0x06;
- case NSF1FunctionKey: return sf::Keyboard::F1;
- case NSF2FunctionKey: return sf::Keyboard::F2;
- case NSF3FunctionKey: return sf::Keyboard::F3;
- case NSF4FunctionKey: return sf::Keyboard::F4;
- case NSF5FunctionKey: return sf::Keyboard::F5;
- case NSF6FunctionKey: return sf::Keyboard::F6;
- case NSF7FunctionKey: return sf::Keyboard::F7;
- case NSF8FunctionKey: return sf::Keyboard::F8;
- case NSF9FunctionKey: return sf::Keyboard::F9;
- case NSF10FunctionKey: return sf::Keyboard::F10;
- case NSF11FunctionKey: return sf::Keyboard::F11;
- case NSF12FunctionKey: return sf::Keyboard::F12;
- case NSF13FunctionKey: return sf::Keyboard::F13;
- case NSF14FunctionKey: return sf::Keyboard::F14;
- case NSF15FunctionKey: return sf::Keyboard::F15;
+ case sf::Keyboard::ScanNum1: return 0x12;
+ case sf::Keyboard::ScanNum2: return 0x13;
+ case sf::Keyboard::ScanNum3: return 0x14;
+ case sf::Keyboard::ScanNum4: return 0x15;
+ case sf::Keyboard::ScanNum5: return 0x17;
+ case sf::Keyboard::ScanNum6: return 0x16;
+ case sf::Keyboard::ScanNum7: return 0x1a;
+ case sf::Keyboard::ScanNum8: return 0x1c;
+ case sf::Keyboard::ScanNum9: return 0x19;
+ case sf::Keyboard::ScanNum0: return 0x1d;
- case NSPauseFunctionKey: return sf::Keyboard::Pause;
+ case sf::Keyboard::ScanEnter: return 0x24;
+ case sf::Keyboard::ScanEscape: return 0x35;
+ case sf::Keyboard::ScanBackspace: return 0x33;
+ case sf::Keyboard::ScanTab: return 0x30;
+ case sf::Keyboard::ScanSpace: return 0x31;
- // keycode 0x1b is not bound to any key.
- // This key is ' on CH-FR, ) on FR and - on US layouts.
+ // case sf::Keyboard::ScanHyphen: return 0; // 0x27 is for Quote
- // An unknown key.
- default: return sf::Keyboard::Unknown;
+ case sf::Keyboard::ScanEquals: return 0x18;
+ case sf::Keyboard::ScanLBracket: return 0x21;
+ case sf::Keyboard::ScanRBracket: return 0x1e;
+ case sf::Keyboard::ScanBackslash: return 0x2a;
+ case sf::Keyboard::ScanDash: return 0x1b;
+ case sf::Keyboard::ScanSemicolon: return 0x29;
+ case sf::Keyboard::ScanQuote: return 0x27;
+ case sf::Keyboard::ScanGraveAccent: return 0x32;
+ case sf::Keyboard::ScanComma: return 0x2b;
+ case sf::Keyboard::ScanPeriod: return 0x2f;
+ case sf::Keyboard::ScanSlash: return 0x2c;
+
+ case sf::Keyboard::ScanF1: return 0x7a;
+ case sf::Keyboard::ScanF2: return 0x78;
+ case sf::Keyboard::ScanF3: return 0x63;
+ case sf::Keyboard::ScanF4: return 0x76;
+ case sf::Keyboard::ScanF5: return 0x60;
+ case sf::Keyboard::ScanF6: return 0x61;
+ case sf::Keyboard::ScanF7: return 0x62;
+ case sf::Keyboard::ScanF8: return 0x64;
+ case sf::Keyboard::ScanF9: return 0x65;
+ case sf::Keyboard::ScanF10: return 0x6d;
+ case sf::Keyboard::ScanF11: return 0x67;
+ case sf::Keyboard::ScanF12: return 0x6f;
+ case sf::Keyboard::ScanF13: return 0x69;
+ case sf::Keyboard::ScanF14: return 0x6b;
+ case sf::Keyboard::ScanF15: return 0x71;
+
+ case sf::Keyboard::ScanCapsLock: return 0x39;
+
+ /* TODO Those are missing:
+ * case sf::Keyboard::ScanPrintScreen: return 0;
+ * case sf::Keyboard::ScanScrollLock: return 0;
+ * case sf::Keyboard::ScanPause: return 0;
+ */
+ case sf::Keyboard::ScanInsert: return 0x72;
+ case sf::Keyboard::ScanHome: return 0x73;
+ case sf::Keyboard::ScanPageUp: return 0x74;
+ case sf::Keyboard::ScanDelete: return 0x75;
+ case sf::Keyboard::ScanEnd: return 0x77;
+ case sf::Keyboard::ScanPageDown: return 0x79;
+
+ case sf::Keyboard::ScanRight: return 0x7c;
+ case sf::Keyboard::ScanLeft: return 0x7b;
+ case sf::Keyboard::ScanDown: return 0x7d;
+ case sf::Keyboard::ScanUp: return 0x7e;
+
+ case sf::Keyboard::ScanNumLock: return 0x47;
+ case sf::Keyboard::ScanDivide: return 0x4b;
+ case sf::Keyboard::ScanMultiply: return 0x43;
+ case sf::Keyboard::ScanMinus: return 0x4e;
+ case sf::Keyboard::ScanPlus: return 0x45;
+ case sf::Keyboard::ScanNumpadEquals: return 0x51;
+ case sf::Keyboard::ScanNumpadEnter: return 0x4c;
+ case sf::Keyboard::ScanDecimal: return 0x41;
+
+ case sf::Keyboard::ScanNumpad1: return 0x53;
+ case sf::Keyboard::ScanNumpad2: return 0x54;
+ case sf::Keyboard::ScanNumpad3: return 0x55;
+ case sf::Keyboard::ScanNumpad4: return 0x56;
+ case sf::Keyboard::ScanNumpad5: return 0x57;
+ case sf::Keyboard::ScanNumpad6: return 0x58;
+ case sf::Keyboard::ScanNumpad7: return 0x59;
+ case sf::Keyboard::ScanNumpad8: return 0x5b;
+ case sf::Keyboard::ScanNumpad9: return 0x5c;
+ case sf::Keyboard::ScanNumpad0: return 0x52;
+
+ /* TODO Those are missing:
+ * case sf::Keyboard::ScanReverseSolidus: return 0;
+ * case sf::Keyboard::ScanApplication: return 0;
+ * case sf::Keyboard::ScanExecute: return 0;
+ * case sf::Keyboard::ScanHelp: return 0;
+ * case sf::Keyboard::ScanMenu: return 0;
+ * case sf::Keyboard::ScanSelect: return 0;
+ * case sf::Keyboard::ScanStop: return 0;
+ * case sf::Keyboard::ScanAgain: return 0;
+ * case sf::Keyboard::ScanUndo: return 0;
+ * case sf::Keyboard::ScanCut: return 0;
+ * case sf::Keyboard::ScanCopy: return 0;
+ * case sf::Keyboard::ScanPaste: return 0;
+ * case sf::Keyboard::ScanFind: return 0;
+ */
+
+ case sf::Keyboard::ScanMute: return 0x4a;
+ case sf::Keyboard::ScanVolumeUp: return 0x48;
+ case sf::Keyboard::ScanVolumeDown: return 0x49;
+
+ case sf::Keyboard::ScanLControl: return 0x3b;
+ case sf::Keyboard::ScanLShift: return 0x38;
+ case sf::Keyboard::ScanLAlt: return 0x3a;
+ case sf::Keyboard::ScanLSystem: return 0x37;
+ case sf::Keyboard::ScanRControl: return 0x3b;
+ case sf::Keyboard::ScanRShift: return 0x38;
+ case sf::Keyboard::ScanRAlt: return 0x3a;
+ case sf::Keyboard::ScanRSystem: return 0x37;
+
+ default: return 0x00;
+ }
+}
+
+
+////////////////////////////////////////////////////////
+Keyboard::Key HIDInputManager::localizedKeyFallback(Keyboard::Scancode code)
+{
+ switch (code)
+ {
+ case sf::Keyboard::ScanEnter: return sf::Keyboard::Return;
+ case sf::Keyboard::ScanEscape: return sf::Keyboard::Escape;
+ case sf::Keyboard::ScanBackspace: return sf::Keyboard::BackSpace;
+ case sf::Keyboard::ScanTab: return sf::Keyboard::Tab;
+ case sf::Keyboard::ScanSpace: return sf::Keyboard::Space;
+
+ case sf::Keyboard::ScanF1: return sf::Keyboard::F1;
+ case sf::Keyboard::ScanF2: return sf::Keyboard::F2;
+ case sf::Keyboard::ScanF3: return sf::Keyboard::F3;
+ case sf::Keyboard::ScanF4: return sf::Keyboard::F4;
+ case sf::Keyboard::ScanF5: return sf::Keyboard::F5;
+ case sf::Keyboard::ScanF6: return sf::Keyboard::F6;
+ case sf::Keyboard::ScanF7: return sf::Keyboard::F7;
+ case sf::Keyboard::ScanF8: return sf::Keyboard::F8;
+ case sf::Keyboard::ScanF9: return sf::Keyboard::F9;
+ case sf::Keyboard::ScanF10: return sf::Keyboard::F10;
+ case sf::Keyboard::ScanF11: return sf::Keyboard::F11;
+ case sf::Keyboard::ScanF12: return sf::Keyboard::F12;
+ case sf::Keyboard::ScanF13: return sf::Keyboard::F13;
+ case sf::Keyboard::ScanF14: return sf::Keyboard::F14;
+ case sf::Keyboard::ScanF15: return sf::Keyboard::F15;
+
+ case sf::Keyboard::ScanPause: return sf::Keyboard::Pause;
+ case sf::Keyboard::ScanInsert: return sf::Keyboard::Insert;
+ case sf::Keyboard::ScanHome: return sf::Keyboard::Home;
+ case sf::Keyboard::ScanPageUp: return sf::Keyboard::PageUp;
+ case sf::Keyboard::ScanDelete: return sf::Keyboard::Delete;
+ case sf::Keyboard::ScanEnd: return sf::Keyboard::End;
+ case sf::Keyboard::ScanPageDown: return sf::Keyboard::PageDown;
+
+ case sf::Keyboard::ScanRight: return sf::Keyboard::Right;
+ case sf::Keyboard::ScanLeft: return sf::Keyboard::Left;
+ case sf::Keyboard::ScanDown: return sf::Keyboard::Down;
+ case sf::Keyboard::ScanUp: return sf::Keyboard::Up;
+
+ case sf::Keyboard::ScanDivide: return sf::Keyboard::Divide;
+ case sf::Keyboard::ScanMultiply: return sf::Keyboard::Multiply;
+ case sf::Keyboard::ScanMinus: return sf::Keyboard::Subtract;
+ case sf::Keyboard::ScanPlus: return sf::Keyboard::Add;
+
+ case sf::Keyboard::ScanNumpad0: return sf::Keyboard::Numpad1;
+ case sf::Keyboard::ScanNumpad1: return sf::Keyboard::Numpad2;
+ case sf::Keyboard::ScanNumpad2: return sf::Keyboard::Numpad3;
+ case sf::Keyboard::ScanNumpad3: return sf::Keyboard::Numpad4;
+ case sf::Keyboard::ScanNumpad4: return sf::Keyboard::Numpad5;
+ case sf::Keyboard::ScanNumpad5: return sf::Keyboard::Numpad6;
+ case sf::Keyboard::ScanNumpad6: return sf::Keyboard::Numpad7;
+ case sf::Keyboard::ScanNumpad7: return sf::Keyboard::Numpad8;
+ case sf::Keyboard::ScanNumpad8: return sf::Keyboard::Numpad9;
+ case sf::Keyboard::ScanNumpad9: return sf::Keyboard::Numpad0;
+
+ case sf::Keyboard::ScanLControl: return sf::Keyboard::LControl;
+ case sf::Keyboard::ScanLShift: return sf::Keyboard::LShift;
+ case sf::Keyboard::ScanLAlt: return sf::Keyboard::LAlt;
+ case sf::Keyboard::ScanLSystem: return sf::Keyboard::LSystem;
+ case sf::Keyboard::ScanRControl: return sf::Keyboard::RControl;
+ case sf::Keyboard::ScanRShift: return sf::Keyboard::RShift;
+ case sf::Keyboard::ScanRAlt: return sf::Keyboard::RAlt;
+ case sf::Keyboard::ScanRSystem: return sf::Keyboard::RSystem;
+
+ default: return sf::Keyboard::Unknown;
}
}
diff --git a/src/SFML/Window/OSX/HIDJoystickManager.cpp b/src/SFML/Window/OSX/HIDJoystickManager.cpp
index d1727bf0..0a7cb7c8 100644
--- a/src/SFML/Window/OSX/HIDJoystickManager.cpp
+++ b/src/SFML/Window/OSX/HIDJoystickManager.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/HIDJoystickManager.hpp b/src/SFML/Window/OSX/HIDJoystickManager.hpp
index f87c7a32..32e79c80 100644
--- a/src/SFML/Window/OSX/HIDJoystickManager.hpp
+++ b/src/SFML/Window/OSX/HIDJoystickManager.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/InputImpl.hpp b/src/SFML/Window/OSX/InputImpl.hpp
index 202b2a73..bcf73b3b 100644
--- a/src/SFML/Window/OSX/InputImpl.hpp
+++ b/src/SFML/Window/OSX/InputImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
@@ -46,19 +46,37 @@ class InputImpl
public:
////////////////////////////////////////////////////////////
- /// \brief Check if a key is pressed
- ///
- /// \param key Key to check
- ///
- /// \return True if the key is pressed, false otherwise
+ /// \copydoc sf::Keyboard::isKeyPressed(Key)
///
////////////////////////////////////////////////////////////
static bool isKeyPressed(Keyboard::Key key);
////////////////////////////////////////////////////////////
- /// \brief Show or hide the virtual keyboard
+ /// \copydoc sf::Keyboard::isKeyPressed(Scancode)
///
- /// \param visible True to show, false to hide
+ ////////////////////////////////////////////////////////////
+ static bool isKeyPressed(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Key localize(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::unlocalize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Scancode unlocalize(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localizedRepresentation
+ ///
+ ////////////////////////////////////////////////////////////
+ static String getDescription(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::setVirtualKeyboardVisible
///
////////////////////////////////////////////////////////////
static void setVirtualKeyboardVisible(bool visible);
diff --git a/src/SFML/Window/OSX/InputImpl.mm b/src/SFML/Window/OSX/InputImpl.mm
index b3c7d11c..a1377c50 100644
--- a/src/SFML/Window/OSX/InputImpl.mm
+++ b/src/SFML/Window/OSX/InputImpl.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
@@ -39,9 +39,6 @@
/// In order to keep track of the keyboard's state and mouse buttons' state
/// we use the HID manager. Mouse position is handled differently.
///
-/// NB: we probably could use
-/// NSEvent +addGlobalMonitorForEventsMatchingMask:handler: for mouse only.
-///
////////////////////////////////////////////////////////////
namespace sf
@@ -122,6 +119,7 @@ SFOpenGLView* getSFOpenGLViewFromSFMLWindow(const WindowBase& window)
return view;
}
+
////////////////////////////////////////////////////////////
bool InputImpl::isKeyPressed(Keyboard::Key key)
{
@@ -129,6 +127,34 @@ bool InputImpl::isKeyPressed(Keyboard::Key key)
}
+////////////////////////////////////////////////////////////
+bool InputImpl::isKeyPressed(Keyboard::Scancode code)
+{
+ return HIDInputManager::getInstance().isKeyPressed(code);
+}
+
+
+////////////////////////////////////////////////////////////
+Keyboard::Key InputImpl::localize(Keyboard::Scancode code)
+{
+ return HIDInputManager::getInstance().localize(code);
+}
+
+
+////////////////////////////////////////////////////////////
+Keyboard::Scancode InputImpl::unlocalize(Keyboard::Key key)
+{
+ return HIDInputManager::getInstance().unlocalize(key);
+}
+
+
+////////////////////////////////////////////////////////////
+String InputImpl::getDescription(Keyboard::Scancode code)
+{
+ return HIDInputManager::getInstance().localizedRepresentation(code);
+}
+
+
////////////////////////////////////////////////////////////
void InputImpl::setVirtualKeyboardVisible(bool /*visible*/)
{
diff --git a/src/SFML/Window/OSX/JoystickImpl.cpp b/src/SFML/Window/OSX/JoystickImpl.cpp
index 4f4ee114..333cf462 100644
--- a/src/SFML/Window/OSX/JoystickImpl.cpp
+++ b/src/SFML/Window/OSX/JoystickImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/JoystickImpl.hpp b/src/SFML/Window/OSX/JoystickImpl.hpp
index 96304094..cdcd741d 100644
--- a/src/SFML/Window/OSX/JoystickImpl.hpp
+++ b/src/SFML/Window/OSX/JoystickImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/NSImage+raw.h b/src/SFML/Window/OSX/NSImage+raw.h
index f65363d9..4530c136 100644
--- a/src/SFML/Window/OSX/NSImage+raw.h
+++ b/src/SFML/Window/OSX/NSImage+raw.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/NSImage+raw.mm b/src/SFML/Window/OSX/NSImage+raw.mm
index ac0e7771..03bd6d9e 100644
--- a/src/SFML/Window/OSX/NSImage+raw.mm
+++ b/src/SFML/Window/OSX/NSImage+raw.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFApplication.h b/src/SFML/Window/OSX/SFApplication.h
index 3ee0e8fe..b2a97531 100644
--- a/src/SFML/Window/OSX/SFApplication.h
+++ b/src/SFML/Window/OSX/SFApplication.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFApplication.m b/src/SFML/Window/OSX/SFApplication.m
index 311ec24b..a438c7a1 100644
--- a/src/SFML/Window/OSX/SFApplication.m
+++ b/src/SFML/Window/OSX/SFApplication.m
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFApplicationDelegate.h b/src/SFML/Window/OSX/SFApplicationDelegate.h
index 9ebbedcc..9f39e923 100644
--- a/src/SFML/Window/OSX/SFApplicationDelegate.h
+++ b/src/SFML/Window/OSX/SFApplicationDelegate.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFApplicationDelegate.m b/src/SFML/Window/OSX/SFApplicationDelegate.m
index 381e4126..a6fff904 100644
--- a/src/SFML/Window/OSX/SFApplicationDelegate.m
+++ b/src/SFML/Window/OSX/SFApplicationDelegate.m
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFContext.hpp b/src/SFML/Window/OSX/SFContext.hpp
index 2fedc803..87473a58 100644
--- a/src/SFML/Window/OSX/SFContext.hpp
+++ b/src/SFML/Window/OSX/SFContext.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFContext.mm b/src/SFML/Window/OSX/SFContext.mm
index 02ffe36d..4bd3c3eb 100644
--- a/src/SFML/Window/OSX/SFContext.mm
+++ b/src/SFML/Window/OSX/SFContext.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFKeyboardModifiersHelper.h b/src/SFML/Window/OSX/SFKeyboardModifiersHelper.h
index b2cf0b1c..03d6c093 100644
--- a/src/SFML/Window/OSX/SFKeyboardModifiersHelper.h
+++ b/src/SFML/Window/OSX/SFKeyboardModifiersHelper.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
@@ -56,7 +56,8 @@ void initialiseKeyboardHelper(void);
/// \brief Set up a SFML key event based on the given modifiers flags and key code
///
////////////////////////////////////////////////////////////
-sf::Event::KeyEvent keyEventWithModifiers(NSUInteger modifiers, sf::Keyboard::Key key);
+sf::Event::KeyEvent keyEventWithModifiers(NSUInteger modifiers, sf::Keyboard::Key key,
+ sf::Keyboard::Scancode code);
////////////////////////////////////////////////////////////
diff --git a/src/SFML/Window/OSX/SFKeyboardModifiersHelper.mm b/src/SFML/Window/OSX/SFKeyboardModifiersHelper.mm
index fd6dfe37..1105ae08 100644
--- a/src/SFML/Window/OSX/SFKeyboardModifiersHelper.mm
+++ b/src/SFML/Window/OSX/SFKeyboardModifiersHelper.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
@@ -92,6 +92,7 @@ BOOL isKeyMaskActive(NSUInteger modifiers, NSUInteger mask);
////////////////////////////////////////////////////////////
void processOneModifier(NSUInteger modifiers, NSUInteger mask,
BOOL& wasDown, sf::Keyboard::Key key,
+ sf::Keyboard::Scancode code,
sf::priv::WindowImplCocoa& requester);
@@ -105,6 +106,7 @@ void processLeftRightModifiers(NSUInteger modifiers,
NSUInteger leftMask, NSUInteger rightMask,
BOOL& leftWasDown, BOOL& rightWasDown,
sf::Keyboard::Key leftKey, sf::Keyboard::Key rightKey,
+ sf::Keyboard::Scancode leftCode, sf::Keyboard::Scancode rightCode,
sf::priv::WindowImplCocoa& requester);
@@ -136,14 +138,15 @@ void initialiseKeyboardHelper(void)
////////////////////////////////////////////////////////
-sf::Event::KeyEvent keyEventWithModifiers(NSUInteger modifiers, sf::Keyboard::Key key)
+sf::Event::KeyEvent keyEventWithModifiers(NSUInteger modifiers, sf::Keyboard::Key key, sf::Keyboard::Scancode code)
{
sf::Event::KeyEvent event;
- event.code = key;
- event.alt = modifiers & NSAlternateKeyMask;
- event.control = modifiers & NSControlKeyMask;
- event.shift = modifiers & NSShiftKeyMask;
- event.system = modifiers & NSCommandKeyMask;
+ event.code = key;
+ event.scancode = code;
+ event.alt = modifiers & NSAlternateKeyMask;
+ event.control = modifiers & NSControlKeyMask;
+ event.shift = modifiers & NSShiftKeyMask;
+ event.system = modifiers & NSCommandKeyMask;
return event;
}
@@ -158,6 +161,7 @@ void handleModifiersChanged(NSUInteger modifiers, sf::priv::WindowImplCocoa& req
NSLeftShiftKeyMask, NSRightShiftKeyMask,
state.leftShiftWasDown, state.rightShiftWasDown,
sf::Keyboard::LShift, sf::Keyboard::RShift,
+ sf::Keyboard::ScanLShift, sf::Keyboard::ScanRShift,
requester
);
@@ -167,6 +171,7 @@ void handleModifiersChanged(NSUInteger modifiers, sf::priv::WindowImplCocoa& req
NSLeftCommandKeyMask, NSRightCommandKeyMask,
state.leftCommandWasDown, state.rightCommandWasDown,
sf::Keyboard::LSystem, sf::Keyboard::RSystem,
+ sf::Keyboard::ScanLSystem, sf::Keyboard::ScanRSystem,
requester
);
@@ -176,6 +181,7 @@ void handleModifiersChanged(NSUInteger modifiers, sf::priv::WindowImplCocoa& req
NSLeftAlternateKeyMask, NSRightAlternateKeyMask,
state.leftAlternateWasDown, state.rightAlternateWasDown,
sf::Keyboard::LAlt, sf::Keyboard::RAlt,
+ sf::Keyboard::ScanLAlt, sf::Keyboard::ScanRAlt,
requester
);
@@ -185,6 +191,7 @@ void handleModifiersChanged(NSUInteger modifiers, sf::priv::WindowImplCocoa& req
NSLeftControlKeyMask, NSRightControlKeyMask,
state.leftControlWasDown, state.rightControlWasDown,
sf::Keyboard::LControl, sf::Keyboard::RControl,
+ sf::Keyboard::ScanLControl, sf::Keyboard::ScanRControl,
requester
);
}
@@ -203,10 +210,11 @@ BOOL isKeyMaskActive(NSUInteger modifiers, NSUInteger mask)
////////////////////////////////////////////////////////
void processOneModifier(NSUInteger modifiers, NSUInteger mask,
BOOL& wasDown, sf::Keyboard::Key key,
+ sf::Keyboard::Scancode code,
sf::priv::WindowImplCocoa& requester)
{
// Setup a potential event key.
- sf::Event::KeyEvent event = keyEventWithModifiers(modifiers, key);
+ sf::Event::KeyEvent event = keyEventWithModifiers(modifiers, key, code);
// State
BOOL isDown = isKeyMaskActive(modifiers, mask);
@@ -231,10 +239,11 @@ void processLeftRightModifiers(NSUInteger modifiers,
NSUInteger leftMask, NSUInteger rightMask,
BOOL& leftWasDown, BOOL& rightWasDown,
sf::Keyboard::Key leftKey, sf::Keyboard::Key rightKey,
+ sf::Keyboard::Scancode leftCode, sf::Keyboard::Scancode rightCode,
sf::priv::WindowImplCocoa& requester)
{
- processOneModifier(modifiers, leftMask, leftWasDown, leftKey, requester);
- processOneModifier(modifiers, rightMask, rightWasDown, rightKey, requester);
+ processOneModifier(modifiers, leftMask, leftWasDown, leftKey, leftCode, requester);
+ processOneModifier(modifiers, rightMask, rightWasDown, rightKey, rightCode, requester);
}
diff --git a/src/SFML/Window/OSX/SFOpenGLView+keyboard.mm b/src/SFML/Window/OSX/SFOpenGLView+keyboard.mm
index e9a6fac6..9162e58f 100644
--- a/src/SFML/Window/OSX/SFOpenGLView+keyboard.mm
+++ b/src/SFML/Window/OSX/SFOpenGLView+keyboard.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
@@ -86,7 +86,7 @@
{
sf::Event::KeyEvent key = [SFOpenGLView convertNSKeyEventToSFMLEvent:theEvent];
- if (key.code != sf::Keyboard::Unknown) // The key is recognized.
+ if ((key.code != sf::Keyboard::Unknown) || (key.scancode != sf::Keyboard::ScanUnknown))
m_requester->keyDown(key);
}
@@ -180,21 +180,17 @@
////////////////////////////////////////////////////////
+(sf::Event::KeyEvent)convertNSKeyEventToSFMLEvent:(NSEvent*)event
{
- // Key code
- sf::Keyboard::Key key = sf::Keyboard::Unknown;
-
- // First we look if the key down is from a list of characters
- // that depend on keyboard localization.
+ // We look for the key in a list of characters that depend on keyboard localization,
+ // if the key is not "dead".
NSString* string = [event charactersIgnoringModifiers];
- if ([string length] > 0)
- key = sf::priv::HIDInputManager::localizedKeys([string characterAtIndex:0]);
+ sf::Keyboard::Key key = ([string length] > 0)
+ ? sf::priv::HIDInputManager::localizedKey([string characterAtIndex:0])
+ : sf::Keyboard::Unknown;
- // If the key is not a localized one, we try to find a corresponding code
- // through virtual key code.
- if (key == sf::Keyboard::Unknown)
- key = sf::priv::HIDInputManager::nonLocalizedKeys([event keyCode]);
+ // The scancode always depends on the hardware keyboard, not some OS setting.
+ sf::Keyboard::Scancode code = sf::priv::HIDInputManager::nonLocalizedKey([event keyCode]);
- return keyEventWithModifiers([event modifierFlags], key);
+ return keyEventWithModifiers([event modifierFlags], key, code);
}
diff --git a/src/SFML/Window/OSX/SFOpenGLView+keyboard_priv.h b/src/SFML/Window/OSX/SFOpenGLView+keyboard_priv.h
index 31e6a659..8496affa 100644
--- a/src/SFML/Window/OSX/SFOpenGLView+keyboard_priv.h
+++ b/src/SFML/Window/OSX/SFOpenGLView+keyboard_priv.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFOpenGLView+mouse.mm b/src/SFML/Window/OSX/SFOpenGLView+mouse.mm
index b812dd2f..99acef0b 100644
--- a/src/SFML/Window/OSX/SFOpenGLView+mouse.mm
+++ b/src/SFML/Window/OSX/SFOpenGLView+mouse.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFOpenGLView+mouse_priv.h b/src/SFML/Window/OSX/SFOpenGLView+mouse_priv.h
index 05eba4df..fb64368a 100644
--- a/src/SFML/Window/OSX/SFOpenGLView+mouse_priv.h
+++ b/src/SFML/Window/OSX/SFOpenGLView+mouse_priv.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFOpenGLView.h b/src/SFML/Window/OSX/SFOpenGLView.h
index 641eab28..b2a66896 100644
--- a/src/SFML/Window/OSX/SFOpenGLView.h
+++ b/src/SFML/Window/OSX/SFOpenGLView.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFOpenGLView.mm b/src/SFML/Window/OSX/SFOpenGLView.mm
index b6eb0d2f..85d5cd8d 100644
--- a/src/SFML/Window/OSX/SFOpenGLView.mm
+++ b/src/SFML/Window/OSX/SFOpenGLView.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFSilentResponder.h b/src/SFML/Window/OSX/SFSilentResponder.h
index da94d129..de0471c7 100644
--- a/src/SFML/Window/OSX/SFSilentResponder.h
+++ b/src/SFML/Window/OSX/SFSilentResponder.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFSilentResponder.m b/src/SFML/Window/OSX/SFSilentResponder.m
index 8aa63ab1..55c0fb84 100644
--- a/src/SFML/Window/OSX/SFSilentResponder.m
+++ b/src/SFML/Window/OSX/SFSilentResponder.m
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFViewController.h b/src/SFML/Window/OSX/SFViewController.h
index cc5108a9..f0e59f47 100644
--- a/src/SFML/Window/OSX/SFViewController.h
+++ b/src/SFML/Window/OSX/SFViewController.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFViewController.mm b/src/SFML/Window/OSX/SFViewController.mm
index 8d5cb34a..c8266be0 100644
--- a/src/SFML/Window/OSX/SFViewController.mm
+++ b/src/SFML/Window/OSX/SFViewController.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFWindow.h b/src/SFML/Window/OSX/SFWindow.h
index 58875a6e..9e9a9e38 100644
--- a/src/SFML/Window/OSX/SFWindow.h
+++ b/src/SFML/Window/OSX/SFWindow.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFWindow.m b/src/SFML/Window/OSX/SFWindow.m
index ae348dce..77bc637f 100644
--- a/src/SFML/Window/OSX/SFWindow.m
+++ b/src/SFML/Window/OSX/SFWindow.m
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFWindowController.h b/src/SFML/Window/OSX/SFWindowController.h
index cba2b304..62e346a4 100644
--- a/src/SFML/Window/OSX/SFWindowController.h
+++ b/src/SFML/Window/OSX/SFWindowController.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SFWindowController.mm b/src/SFML/Window/OSX/SFWindowController.mm
index bc368c73..190af4df 100644
--- a/src/SFML/Window/OSX/SFWindowController.mm
+++ b/src/SFML/Window/OSX/SFWindowController.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/Scaling.h b/src/SFML/Window/OSX/Scaling.h
index f44c77e0..a71f62d9 100644
--- a/src/SFML/Window/OSX/Scaling.h
+++ b/src/SFML/Window/OSX/Scaling.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/SensorImpl.cpp b/src/SFML/Window/OSX/SensorImpl.cpp
index e91d5cdf..a0c83977 100644
--- a/src/SFML/Window/OSX/SensorImpl.cpp
+++ b/src/SFML/Window/OSX/SensorImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/OSX/SensorImpl.hpp b/src/SFML/Window/OSX/SensorImpl.hpp
index c7555279..3da61189 100644
--- a/src/SFML/Window/OSX/SensorImpl.hpp
+++ b/src/SFML/Window/OSX/SensorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/OSX/VideoModeImpl.cpp b/src/SFML/Window/OSX/VideoModeImpl.cpp
index 741c4bd2..4370926e 100644
--- a/src/SFML/Window/OSX/VideoModeImpl.cpp
+++ b/src/SFML/Window/OSX/VideoModeImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/WindowImplCocoa.hpp b/src/SFML/Window/OSX/WindowImplCocoa.hpp
index efa0f667..0035fe94 100644
--- a/src/SFML/Window/OSX/WindowImplCocoa.hpp
+++ b/src/SFML/Window/OSX/WindowImplCocoa.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/WindowImplCocoa.mm b/src/SFML/Window/OSX/WindowImplCocoa.mm
index e68f42e6..eaa67bfe 100644
--- a/src/SFML/Window/OSX/WindowImplCocoa.mm
+++ b/src/SFML/Window/OSX/WindowImplCocoa.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/WindowImplDelegateProtocol.h b/src/SFML/Window/OSX/WindowImplDelegateProtocol.h
index 925c9e51..29d8410c 100644
--- a/src/SFML/Window/OSX/WindowImplDelegateProtocol.h
+++ b/src/SFML/Window/OSX/WindowImplDelegateProtocol.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/cg_sf_conversion.hpp b/src/SFML/Window/OSX/cg_sf_conversion.hpp
index 41c3835c..099e0c5a 100644
--- a/src/SFML/Window/OSX/cg_sf_conversion.hpp
+++ b/src/SFML/Window/OSX/cg_sf_conversion.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/cg_sf_conversion.mm b/src/SFML/Window/OSX/cg_sf_conversion.mm
index 06d0fe51..dfc8f394 100644
--- a/src/SFML/Window/OSX/cg_sf_conversion.mm
+++ b/src/SFML/Window/OSX/cg_sf_conversion.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/cpp_objc_conversion.h b/src/SFML/Window/OSX/cpp_objc_conversion.h
index 9ecd9df0..572829f6 100644
--- a/src/SFML/Window/OSX/cpp_objc_conversion.h
+++ b/src/SFML/Window/OSX/cpp_objc_conversion.h
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/OSX/cpp_objc_conversion.mm b/src/SFML/Window/OSX/cpp_objc_conversion.mm
index d9422701..d3534069 100644
--- a/src/SFML/Window/OSX/cpp_objc_conversion.mm
+++ b/src/SFML/Window/OSX/cpp_objc_conversion.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/src/SFML/Window/Sensor.cpp b/src/SFML/Window/Sensor.cpp
index 316b8d5f..3caf78fc 100644
--- a/src/SFML/Window/Sensor.cpp
+++ b/src/SFML/Window/Sensor.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/SensorImpl.hpp b/src/SFML/Window/SensorImpl.hpp
index cd50911a..bc42532a 100644
--- a/src/SFML/Window/SensorImpl.hpp
+++ b/src/SFML/Window/SensorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/SensorManager.cpp b/src/SFML/Window/SensorManager.cpp
index 73304bee..1c14e0e7 100644
--- a/src/SFML/Window/SensorManager.cpp
+++ b/src/SFML/Window/SensorManager.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/SensorManager.hpp b/src/SFML/Window/SensorManager.hpp
index 41b31729..85c433a7 100644
--- a/src/SFML/Window/SensorManager.hpp
+++ b/src/SFML/Window/SensorManager.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Touch.cpp b/src/SFML/Window/Touch.cpp
index 67c60da1..bac6a93e 100644
--- a/src/SFML/Window/Touch.cpp
+++ b/src/SFML/Window/Touch.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/ClipboardImpl.cpp b/src/SFML/Window/Unix/ClipboardImpl.cpp
index 32ea47e8..a01ca932 100644
--- a/src/SFML/Window/Unix/ClipboardImpl.cpp
+++ b/src/SFML/Window/Unix/ClipboardImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/ClipboardImpl.hpp b/src/SFML/Window/Unix/ClipboardImpl.hpp
index a61593bc..ab9e1548 100644
--- a/src/SFML/Window/Unix/ClipboardImpl.hpp
+++ b/src/SFML/Window/Unix/ClipboardImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/CursorImpl.cpp b/src/SFML/Window/Unix/CursorImpl.cpp
index 4aabffa0..2b566b7f 100644
--- a/src/SFML/Window/Unix/CursorImpl.cpp
+++ b/src/SFML/Window/Unix/CursorImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -29,7 +29,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -62,59 +61,17 @@ bool CursorImpl::loadFromPixels(const Uint8* pixels, Vector2u size, Vector2u hot
{
release();
- if (isColorCursorSupported())
- return loadFromPixelsARGB(pixels, size, hotspot);
- else
- return loadFromPixelsMonochrome(pixels, size, hotspot);
-}
-
-
-////////////////////////////////////////////////////////////
-bool CursorImpl::loadFromPixelsARGB(const Uint8* pixels, Vector2u size, Vector2u hotspot)
-{
- // Create cursor image, convert from RGBA to ARGB.
- XcursorImage* cursorImage = XcursorImageCreate(size.x, size.y);
- cursorImage->xhot = hotspot.x;
- cursorImage->yhot = hotspot.y;
-
- const std::size_t numPixels = size.x * size.y;
- for (std::size_t pixelIndex = 0; pixelIndex < numPixels; ++pixelIndex)
- {
- cursorImage->pixels[pixelIndex] = pixels[pixelIndex * 4 + 2] +
- (pixels[pixelIndex * 4 + 1] << 8) +
- (pixels[pixelIndex * 4 + 0] << 16) +
- (pixels[pixelIndex * 4 + 3] << 24);
- }
-
- // Create the cursor.
- m_cursor = XcursorImageLoadCursor(m_display, cursorImage);
-
- // Free the resources
- XcursorImageDestroy(cursorImage);
-
- // We assume everything went fine...
- return true;
-}
-
-
-////////////////////////////////////////////////////////////
-bool CursorImpl::loadFromPixelsMonochrome(const Uint8* pixels, Vector2u size, Vector2u hotspot)
-{
// Convert the image into a bitmap (monochrome!).
- // The bit data is stored packed into bytes. If the number of pixels on each row of the image
- // does not fit exactly into (width/8) bytes, one extra byte is allocated at the end of each
- // row to store the extra pixels.
- std::size_t packedWidth = (size.x + 7) / 8;
- std::size_t bytes = packedWidth * size.y;
- std::vector mask(bytes, 0); // Defines which pixel is opaque (1) or transparent (0).
- std::vector data(bytes, 0); // Defines which pixel is white (1) or black (0).
+ std::size_t bytes = (size.x + 7) / 8 * size.y;
+ std::vector mask(bytes, 0); // Defines which pixel is transparent.
+ std::vector data(bytes, 1); // Defines which pixel is white/black.
for (std::size_t j = 0; j < size.y; ++j)
{
for (std::size_t i = 0; i < size.x; ++i)
{
std::size_t pixelIndex = i + j * size.x;
- std::size_t byteIndex = i / 8 + j * packedWidth;
+ std::size_t byteIndex = pixelIndex / 8;
std::size_t bitIndex = i % 8;
// Turn on pixel that are not transparent
@@ -123,9 +80,9 @@ bool CursorImpl::loadFromPixelsMonochrome(const Uint8* pixels, Vector2u size, Ve
// Choose between black/background & white/foreground color for each pixel,
// based on the pixel color intensity: on average, if a channel is "active"
- // at 50%, the bit is white.
- int intensity = (pixels[pixelIndex * 4 + 0] + pixels[pixelIndex * 4 + 1] + pixels[pixelIndex * 4 + 2]) / 3;
- Uint8 bit = intensity > 128 ? 1 : 0;
+ // at 25%, the bit is white.
+ int intensity = pixels[pixelIndex * 4 + 0] + pixels[pixelIndex * 4 + 1] + pixels[pixelIndex * 4 + 2];
+ Uint8 bit = intensity > 64 ? 1 : 0;
data[byteIndex] |= bit << bitIndex;
}
}
@@ -182,13 +139,6 @@ bool CursorImpl::loadFromSystem(Cursor::Type type)
}
-////////////////////////////////////////////////////////////
-bool CursorImpl::isColorCursorSupported()
-{
- return XcursorSupportsARGB(m_display);
-}
-
-
////////////////////////////////////////////////////////////
void CursorImpl::release()
{
diff --git a/src/SFML/Window/Unix/CursorImpl.hpp b/src/SFML/Window/Unix/CursorImpl.hpp
index cfd3c305..6740f220 100644
--- a/src/SFML/Window/Unix/CursorImpl.hpp
+++ b/src/SFML/Window/Unix/CursorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -83,28 +83,6 @@ private:
friend class WindowImplX11;
- ////////////////////////////////////////////////////////////
- /// \brief Checks if colored cursors are supported for this display.
- ///
- ////////////////////////////////////////////////////////////
- bool isColorCursorSupported();
-
- ////////////////////////////////////////////////////////////
- /// \brief Create a cursor with the provided image (ARGB support)
- ///
- /// Refer to sf::Cursor::loadFromPixels().
- ///
- ////////////////////////////////////////////////////////////
- bool loadFromPixelsARGB(const Uint8* pixels, Vector2u size, Vector2u hotspot);
-
- ////////////////////////////////////////////////////////////
- /// \brief Create a cursor with the provided image (monochrome)
- ///
- /// Refer to sf::Cursor::loadFromPixels().
- ///
- ////////////////////////////////////////////////////////////
- bool loadFromPixelsMonochrome(const Uint8* pixels, Vector2u size, Vector2u hotspot);
-
////////////////////////////////////////////////////////////
/// \brief Release the cursor, if we have loaded one.
///
diff --git a/src/SFML/Window/Unix/Display.cpp b/src/SFML/Window/Unix/Display.cpp
index 3ebbf365..f9157e97 100644
--- a/src/SFML/Window/Unix/Display.cpp
+++ b/src/SFML/Window/Unix/Display.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/Display.hpp b/src/SFML/Window/Unix/Display.hpp
index 3a7c4035..c8a6687c 100644
--- a/src/SFML/Window/Unix/Display.hpp
+++ b/src/SFML/Window/Unix/Display.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/GlxContext.cpp b/src/SFML/Window/Unix/GlxContext.cpp
index d6525eb5..0cc1b953 100644
--- a/src/SFML/Window/Unix/GlxContext.cpp
+++ b/src/SFML/Window/Unix/GlxContext.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/GlxContext.hpp b/src/SFML/Window/Unix/GlxContext.hpp
index f5e4b879..d8a80a0e 100644
--- a/src/SFML/Window/Unix/GlxContext.hpp
+++ b/src/SFML/Window/Unix/GlxContext.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/InputImpl.cpp b/src/SFML/Window/Unix/InputImpl.cpp
index 3f3b6d72..3818805e 100644
--- a/src/SFML/Window/Unix/InputImpl.cpp
+++ b/src/SFML/Window/Unix/InputImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/InputImpl.hpp b/src/SFML/Window/Unix/InputImpl.hpp
index 99d1c718..bea33375 100644
--- a/src/SFML/Window/Unix/InputImpl.hpp
+++ b/src/SFML/Window/Unix/InputImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -45,19 +45,37 @@ class InputImpl
public:
////////////////////////////////////////////////////////////
- /// \brief Check if a key is pressed
- ///
- /// \param key Key to check
- ///
- /// \return True if the key is pressed, false otherwise
+ /// \copydoc sf::Keyboard::isKeyPressed(Key)
///
////////////////////////////////////////////////////////////
static bool isKeyPressed(Keyboard::Key key);
////////////////////////////////////////////////////////////
- /// \brief Show or hide the virtual keyboard
+ /// \copydoc sf::Keyboard::isKeyPressed(Scancode)
///
- /// \param visible True to show, false to hide
+ ////////////////////////////////////////////////////////////
+ static bool isKeyPressed(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Key localize(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::unlocalize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Scancode unlocalize(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localizedRepresentation
+ ///
+ ////////////////////////////////////////////////////////////
+ static String getDescription(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::setVirtualKeyboardVisible
///
////////////////////////////////////////////////////////////
static void setVirtualKeyboardVisible(bool visible);
diff --git a/src/SFML/Window/Unix/JoystickImpl.cpp b/src/SFML/Window/Unix/JoystickImpl.cpp
index 483a0545..a6fe1afc 100644
--- a/src/SFML/Window/Unix/JoystickImpl.cpp
+++ b/src/SFML/Window/Unix/JoystickImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/JoystickImpl.hpp b/src/SFML/Window/Unix/JoystickImpl.hpp
index 7f905271..946b9fd3 100644
--- a/src/SFML/Window/Unix/JoystickImpl.hpp
+++ b/src/SFML/Window/Unix/JoystickImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/SensorImpl.cpp b/src/SFML/Window/Unix/SensorImpl.cpp
index e91d5cdf..a0c83977 100644
--- a/src/SFML/Window/Unix/SensorImpl.cpp
+++ b/src/SFML/Window/Unix/SensorImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/SensorImpl.hpp b/src/SFML/Window/Unix/SensorImpl.hpp
index 4ef84573..67a9277b 100644
--- a/src/SFML/Window/Unix/SensorImpl.hpp
+++ b/src/SFML/Window/Unix/SensorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/VideoModeImpl.cpp b/src/SFML/Window/Unix/VideoModeImpl.cpp
index 6cc04657..9107e9c5 100644
--- a/src/SFML/Window/Unix/VideoModeImpl.cpp
+++ b/src/SFML/Window/Unix/VideoModeImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/VulkanImplX11.cpp b/src/SFML/Window/Unix/VulkanImplX11.cpp
index 1ec6e341..5b57e298 100644
--- a/src/SFML/Window/Unix/VulkanImplX11.cpp
+++ b/src/SFML/Window/Unix/VulkanImplX11.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/VulkanImplX11.hpp b/src/SFML/Window/Unix/VulkanImplX11.hpp
index ded47e92..1c86c76d 100644
--- a/src/SFML/Window/Unix/VulkanImplX11.hpp
+++ b/src/SFML/Window/Unix/VulkanImplX11.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Unix/WindowImplX11.cpp b/src/SFML/Window/Unix/WindowImplX11.cpp
index 726eef4f..fa0cfc43 100644
--- a/src/SFML/Window/Unix/WindowImplX11.cpp
+++ b/src/SFML/Window/Unix/WindowImplX11.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -1112,7 +1112,6 @@ void WindowImplX11::setMouseCursor(const CursorImpl& cursor)
{
m_lastCursor = cursor.m_cursor;
XDefineCursor(m_display, m_window, m_lastCursor);
- XFlush(m_display);
}
diff --git a/src/SFML/Window/Unix/WindowImplX11.hpp b/src/SFML/Window/Unix/WindowImplX11.hpp
index 0237dd36..2a107ab7 100644
--- a/src/SFML/Window/Unix/WindowImplX11.hpp
+++ b/src/SFML/Window/Unix/WindowImplX11.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/VideoMode.cpp b/src/SFML/Window/VideoMode.cpp
index a8ca72cc..d1f9e46e 100644
--- a/src/SFML/Window/VideoMode.cpp
+++ b/src/SFML/Window/VideoMode.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/VideoModeImpl.hpp b/src/SFML/Window/VideoModeImpl.hpp
index 3be196d6..d5dbed2a 100644
--- a/src/SFML/Window/VideoModeImpl.hpp
+++ b/src/SFML/Window/VideoModeImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Vulkan.cpp b/src/SFML/Window/Vulkan.cpp
index 1a13beeb..f7b2be15 100644
--- a/src/SFML/Window/Vulkan.cpp
+++ b/src/SFML/Window/Vulkan.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/ClipboardImpl.cpp b/src/SFML/Window/Win32/ClipboardImpl.cpp
index 8b88e1f3..17c02f13 100644
--- a/src/SFML/Window/Win32/ClipboardImpl.cpp
+++ b/src/SFML/Window/Win32/ClipboardImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/ClipboardImpl.hpp b/src/SFML/Window/Win32/ClipboardImpl.hpp
index 43b1202a..6d627509 100644
--- a/src/SFML/Window/Win32/ClipboardImpl.hpp
+++ b/src/SFML/Window/Win32/ClipboardImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/CursorImpl.cpp b/src/SFML/Window/Win32/CursorImpl.cpp
index cfe36f59..9d275b7a 100755
--- a/src/SFML/Window/Win32/CursorImpl.cpp
+++ b/src/SFML/Window/Win32/CursorImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/CursorImpl.hpp b/src/SFML/Window/Win32/CursorImpl.hpp
index 945a2680..18dd3952 100755
--- a/src/SFML/Window/Win32/CursorImpl.hpp
+++ b/src/SFML/Window/Win32/CursorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/InputImpl.cpp b/src/SFML/Window/Win32/InputImpl.cpp
index 4ad03682..4d624afd 100644
--- a/src/SFML/Window/Win32/InputImpl.cpp
+++ b/src/SFML/Window/Win32/InputImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -48,113 +48,149 @@ bool InputImpl::isKeyPressed(Keyboard::Key key)
int vkey = 0;
switch (key)
{
- default: vkey = 0; break;
- case Keyboard::A: vkey = 'A'; break;
- case Keyboard::B: vkey = 'B'; break;
- case Keyboard::C: vkey = 'C'; break;
- case Keyboard::D: vkey = 'D'; break;
- case Keyboard::E: vkey = 'E'; break;
- case Keyboard::F: vkey = 'F'; break;
- case Keyboard::G: vkey = 'G'; break;
- case Keyboard::H: vkey = 'H'; break;
- case Keyboard::I: vkey = 'I'; break;
- case Keyboard::J: vkey = 'J'; break;
- case Keyboard::K: vkey = 'K'; break;
- case Keyboard::L: vkey = 'L'; break;
- case Keyboard::M: vkey = 'M'; break;
- case Keyboard::N: vkey = 'N'; break;
- case Keyboard::O: vkey = 'O'; break;
- case Keyboard::P: vkey = 'P'; break;
- case Keyboard::Q: vkey = 'Q'; break;
- case Keyboard::R: vkey = 'R'; break;
- case Keyboard::S: vkey = 'S'; break;
- case Keyboard::T: vkey = 'T'; break;
- case Keyboard::U: vkey = 'U'; break;
- case Keyboard::V: vkey = 'V'; break;
- case Keyboard::W: vkey = 'W'; break;
- case Keyboard::X: vkey = 'X'; break;
- case Keyboard::Y: vkey = 'Y'; break;
- case Keyboard::Z: vkey = 'Z'; break;
- case Keyboard::Num0: vkey = '0'; break;
- case Keyboard::Num1: vkey = '1'; break;
- case Keyboard::Num2: vkey = '2'; break;
- case Keyboard::Num3: vkey = '3'; break;
- case Keyboard::Num4: vkey = '4'; break;
- case Keyboard::Num5: vkey = '5'; break;
- case Keyboard::Num6: vkey = '6'; break;
- case Keyboard::Num7: vkey = '7'; break;
- case Keyboard::Num8: vkey = '8'; break;
- case Keyboard::Num9: vkey = '9'; break;
- case Keyboard::Escape: vkey = VK_ESCAPE; break;
- case Keyboard::LControl: vkey = VK_LCONTROL; break;
- case Keyboard::LShift: vkey = VK_LSHIFT; break;
- case Keyboard::LAlt: vkey = VK_LMENU; break;
- case Keyboard::LSystem: vkey = VK_LWIN; break;
- case Keyboard::RControl: vkey = VK_RCONTROL; break;
- case Keyboard::RShift: vkey = VK_RSHIFT; break;
- case Keyboard::RAlt: vkey = VK_RMENU; break;
- case Keyboard::RSystem: vkey = VK_RWIN; break;
- case Keyboard::Menu: vkey = VK_APPS; break;
- case Keyboard::LBracket: vkey = VK_OEM_4; break;
- case Keyboard::RBracket: vkey = VK_OEM_6; break;
- case Keyboard::Semicolon: vkey = VK_OEM_1; break;
- case Keyboard::Comma: vkey = VK_OEM_COMMA; break;
- case Keyboard::Period: vkey = VK_OEM_PERIOD; break;
- case Keyboard::Quote: vkey = VK_OEM_7; break;
- case Keyboard::Slash: vkey = VK_OEM_2; break;
- case Keyboard::Backslash: vkey = VK_OEM_5; break;
- case Keyboard::Tilde: vkey = VK_OEM_3; break;
- case Keyboard::Equal: vkey = VK_OEM_PLUS; break;
- case Keyboard::Hyphen: vkey = VK_OEM_MINUS; break;
- case Keyboard::Space: vkey = VK_SPACE; break;
- case Keyboard::Enter: vkey = VK_RETURN; break;
- case Keyboard::Backspace: vkey = VK_BACK; break;
- case Keyboard::Tab: vkey = VK_TAB; break;
- case Keyboard::PageUp: vkey = VK_PRIOR; break;
- case Keyboard::PageDown: vkey = VK_NEXT; break;
- case Keyboard::End: vkey = VK_END; break;
- case Keyboard::Home: vkey = VK_HOME; break;
- case Keyboard::Insert: vkey = VK_INSERT; break;
- case Keyboard::Delete: vkey = VK_DELETE; break;
- case Keyboard::Add: vkey = VK_ADD; break;
- case Keyboard::Subtract: vkey = VK_SUBTRACT; break;
- case Keyboard::Multiply: vkey = VK_MULTIPLY; break;
- case Keyboard::Divide: vkey = VK_DIVIDE; break;
- case Keyboard::Left: vkey = VK_LEFT; break;
- case Keyboard::Right: vkey = VK_RIGHT; break;
- case Keyboard::Up: vkey = VK_UP; break;
- case Keyboard::Down: vkey = VK_DOWN; break;
- case Keyboard::Numpad0: vkey = VK_NUMPAD0; break;
- case Keyboard::Numpad1: vkey = VK_NUMPAD1; break;
- case Keyboard::Numpad2: vkey = VK_NUMPAD2; break;
- case Keyboard::Numpad3: vkey = VK_NUMPAD3; break;
- case Keyboard::Numpad4: vkey = VK_NUMPAD4; break;
- case Keyboard::Numpad5: vkey = VK_NUMPAD5; break;
- case Keyboard::Numpad6: vkey = VK_NUMPAD6; break;
- case Keyboard::Numpad7: vkey = VK_NUMPAD7; break;
- case Keyboard::Numpad8: vkey = VK_NUMPAD8; break;
- case Keyboard::Numpad9: vkey = VK_NUMPAD9; break;
- case Keyboard::F1: vkey = VK_F1; break;
- case Keyboard::F2: vkey = VK_F2; break;
- case Keyboard::F3: vkey = VK_F3; break;
- case Keyboard::F4: vkey = VK_F4; break;
- case Keyboard::F5: vkey = VK_F5; break;
- case Keyboard::F6: vkey = VK_F6; break;
- case Keyboard::F7: vkey = VK_F7; break;
- case Keyboard::F8: vkey = VK_F8; break;
- case Keyboard::F9: vkey = VK_F9; break;
- case Keyboard::F10: vkey = VK_F10; break;
- case Keyboard::F11: vkey = VK_F11; break;
- case Keyboard::F12: vkey = VK_F12; break;
- case Keyboard::F13: vkey = VK_F13; break;
- case Keyboard::F14: vkey = VK_F14; break;
- case Keyboard::F15: vkey = VK_F15; break;
- case Keyboard::Pause: vkey = VK_PAUSE; break;
+ default: vkey = 0; break;
+ case Keyboard::A: vkey = 'A'; break;
+ case Keyboard::B: vkey = 'B'; break;
+ case Keyboard::C: vkey = 'C'; break;
+ case Keyboard::D: vkey = 'D'; break;
+ case Keyboard::E: vkey = 'E'; break;
+ case Keyboard::F: vkey = 'F'; break;
+ case Keyboard::G: vkey = 'G'; break;
+ case Keyboard::H: vkey = 'H'; break;
+ case Keyboard::I: vkey = 'I'; break;
+ case Keyboard::J: vkey = 'J'; break;
+ case Keyboard::K: vkey = 'K'; break;
+ case Keyboard::L: vkey = 'L'; break;
+ case Keyboard::M: vkey = 'M'; break;
+ case Keyboard::N: vkey = 'N'; break;
+ case Keyboard::O: vkey = 'O'; break;
+ case Keyboard::P: vkey = 'P'; break;
+ case Keyboard::Q: vkey = 'Q'; break;
+ case Keyboard::R: vkey = 'R'; break;
+ case Keyboard::S: vkey = 'S'; break;
+ case Keyboard::T: vkey = 'T'; break;
+ case Keyboard::U: vkey = 'U'; break;
+ case Keyboard::V: vkey = 'V'; break;
+ case Keyboard::W: vkey = 'W'; break;
+ case Keyboard::X: vkey = 'X'; break;
+ case Keyboard::Y: vkey = 'Y'; break;
+ case Keyboard::Z: vkey = 'Z'; break;
+ case Keyboard::Num0: vkey = '0'; break;
+ case Keyboard::Num1: vkey = '1'; break;
+ case Keyboard::Num2: vkey = '2'; break;
+ case Keyboard::Num3: vkey = '3'; break;
+ case Keyboard::Num4: vkey = '4'; break;
+ case Keyboard::Num5: vkey = '5'; break;
+ case Keyboard::Num6: vkey = '6'; break;
+ case Keyboard::Num7: vkey = '7'; break;
+ case Keyboard::Num8: vkey = '8'; break;
+ case Keyboard::Num9: vkey = '9'; break;
+ case Keyboard::Escape: vkey = VK_ESCAPE; break;
+ case Keyboard::LControl: vkey = VK_LCONTROL; break;
+ case Keyboard::LShift: vkey = VK_LSHIFT; break;
+ case Keyboard::LAlt: vkey = VK_LMENU; break;
+ case Keyboard::LSystem: vkey = VK_LWIN; break;
+ case Keyboard::RControl: vkey = VK_RCONTROL; break;
+ case Keyboard::RShift: vkey = VK_RSHIFT; break;
+ case Keyboard::RAlt: vkey = VK_RMENU; break;
+ case Keyboard::RSystem: vkey = VK_RWIN; break;
+ case Keyboard::Menu: vkey = VK_APPS; break;
+ case Keyboard::LBracket: vkey = VK_OEM_4; break;
+ case Keyboard::RBracket: vkey = VK_OEM_6; break;
+ case Keyboard::SemiColon: vkey = VK_OEM_1; break;
+ case Keyboard::Comma: vkey = VK_OEM_COMMA; break;
+ case Keyboard::Period: vkey = VK_OEM_PERIOD; break;
+ case Keyboard::Quote: vkey = VK_OEM_7; break;
+ case Keyboard::Slash: vkey = VK_OEM_2; break;
+ case Keyboard::BackSlash: vkey = VK_OEM_5; break;
+ case Keyboard::Tilde: vkey = VK_OEM_3; break;
+ case Keyboard::Equal: vkey = VK_OEM_PLUS; break;
+ case Keyboard::Dash: vkey = VK_OEM_MINUS; break;
+ case Keyboard::Space: vkey = VK_SPACE; break;
+ case Keyboard::Return: vkey = VK_RETURN; break;
+ case Keyboard::BackSpace: vkey = VK_BACK; break;
+ case Keyboard::Tab: vkey = VK_TAB; break;
+ case Keyboard::PageUp: vkey = VK_PRIOR; break;
+ case Keyboard::PageDown: vkey = VK_NEXT; break;
+ case Keyboard::End: vkey = VK_END; break;
+ case Keyboard::Home: vkey = VK_HOME; break;
+ case Keyboard::Insert: vkey = VK_INSERT; break;
+ case Keyboard::Delete: vkey = VK_DELETE; break;
+ case Keyboard::Add: vkey = VK_ADD; break;
+ case Keyboard::Subtract: vkey = VK_SUBTRACT; break;
+ case Keyboard::Multiply: vkey = VK_MULTIPLY; break;
+ case Keyboard::Divide: vkey = VK_DIVIDE; break;
+ case Keyboard::Left: vkey = VK_LEFT; break;
+ case Keyboard::Right: vkey = VK_RIGHT; break;
+ case Keyboard::Up: vkey = VK_UP; break;
+ case Keyboard::Down: vkey = VK_DOWN; break;
+ case Keyboard::Numpad0: vkey = VK_NUMPAD0; break;
+ case Keyboard::Numpad1: vkey = VK_NUMPAD1; break;
+ case Keyboard::Numpad2: vkey = VK_NUMPAD2; break;
+ case Keyboard::Numpad3: vkey = VK_NUMPAD3; break;
+ case Keyboard::Numpad4: vkey = VK_NUMPAD4; break;
+ case Keyboard::Numpad5: vkey = VK_NUMPAD5; break;
+ case Keyboard::Numpad6: vkey = VK_NUMPAD6; break;
+ case Keyboard::Numpad7: vkey = VK_NUMPAD7; break;
+ case Keyboard::Numpad8: vkey = VK_NUMPAD8; break;
+ case Keyboard::Numpad9: vkey = VK_NUMPAD9; break;
+ case Keyboard::F1: vkey = VK_F1; break;
+ case Keyboard::F2: vkey = VK_F2; break;
+ case Keyboard::F3: vkey = VK_F3; break;
+ case Keyboard::F4: vkey = VK_F4; break;
+ case Keyboard::F5: vkey = VK_F5; break;
+ case Keyboard::F6: vkey = VK_F6; break;
+ case Keyboard::F7: vkey = VK_F7; break;
+ case Keyboard::F8: vkey = VK_F8; break;
+ case Keyboard::F9: vkey = VK_F9; break;
+ case Keyboard::F10: vkey = VK_F10; break;
+ case Keyboard::F11: vkey = VK_F11; break;
+ case Keyboard::F12: vkey = VK_F12; break;
+ case Keyboard::F13: vkey = VK_F13; break;
+ case Keyboard::F14: vkey = VK_F14; break;
+ case Keyboard::F15: vkey = VK_F15; break;
+ case Keyboard::Pause: vkey = VK_PAUSE; break;
}
return (GetAsyncKeyState(vkey) & 0x8000) != 0;
}
+////////////////////////////////////////////////////////////
+bool InputImpl::isKeyPressed(Keyboard::Scancode code)
+{
+ auto winCode = sfScanToWin(code);
+ auto vkey = MapVirtualKey(winCode, MAPVK_VSC_TO_VK_EX);
+ auto state = GetAsyncKeyState(vkey);
+ return (state & 0x8000) != 0;
+}
+
+////////////////////////////////////////////////////////////
+Keyboard::Key InputImpl::localize(Keyboard::Scancode code)
+{
+ // TODO
+ return sf::Keyboard::Unknown;
+}
+
+////////////////////////////////////////////////////////////
+Keyboard::Scancode InputImpl::unlocalize(Keyboard::Key code)
+{
+ // TODO
+ return sf::Keyboard::ScanUnknown;
+}
+
+////////////////////////////////////////////////////////////
+String InputImpl::getDescription(Keyboard::Scancode code)
+{
+ WORD winCode = sfScanToWin(code);
+ const int bufSize(1024);
+ WCHAR name[bufSize];
+ int result = GetKeyNameText(winCode << 16, name, bufSize);
+ if (result > 0)
+ {
+ return name;
+ }
+ return "Unknown";
+}
////////////////////////////////////////////////////////////
void InputImpl::setVirtualKeyboardVisible(bool visible)
@@ -251,6 +287,148 @@ Vector2i InputImpl::getTouchPosition(unsigned int /*finger*/, const WindowBase&
return Vector2i();
}
+////////////////////////////////////////////////////////////
+WORD InputImpl::sfScanToWin(Keyboard::Scancode code)
+{
+ // Windows scan codes
+ // Reference: https://msdn.microsoft.com/en-us/library/aa299374(v=vs.60).aspx
+ switch (code)
+ {
+ case Keyboard::ScanA: return 30;
+ case Keyboard::ScanB: return 48;
+ case Keyboard::ScanC: return 46;
+ case Keyboard::ScanD: return 32;
+ case Keyboard::ScanE: return 18;
+ case Keyboard::ScanF: return 33;
+ case Keyboard::ScanG: return 34;
+ case Keyboard::ScanH: return 35;
+ case Keyboard::ScanI: return 23;
+ case Keyboard::ScanJ: return 36;
+ case Keyboard::ScanK: return 37;
+ case Keyboard::ScanL: return 38;
+ case Keyboard::ScanM: return 50;
+ case Keyboard::ScanN: return 49;
+ case Keyboard::ScanO: return 24;
+ case Keyboard::ScanP: return 25;
+ case Keyboard::ScanQ: return 16;
+ case Keyboard::ScanR: return 19;
+ case Keyboard::ScanS: return 31;
+ case Keyboard::ScanT: return 20;
+ case Keyboard::ScanU: return 22;
+ case Keyboard::ScanV: return 47;
+ case Keyboard::ScanW: return 17;
+ case Keyboard::ScanX: return 45;
+ case Keyboard::ScanY: return 21;
+ case Keyboard::ScanZ: return 44;
+
+ case Keyboard::ScanNum1: return 2;
+ case Keyboard::ScanNum2: return 3;
+ case Keyboard::ScanNum3: return 4;
+ case Keyboard::ScanNum4: return 5;
+ case Keyboard::ScanNum5: return 6;
+ case Keyboard::ScanNum6: return 7;
+ case Keyboard::ScanNum7: return 8;
+ case Keyboard::ScanNum8: return 9;
+ case Keyboard::ScanNum9: return 10;
+ case Keyboard::ScanNum0: return 11;
+
+ case Keyboard::ScanEnter: return 28;
+ case Keyboard::ScanEscape: return 1;
+ case Keyboard::ScanBackspace: return 14;
+ case Keyboard::ScanTab: return 15;
+ case Keyboard::ScanSpace: return 57;
+ case Keyboard::ScanHyphen: return 12;
+ case Keyboard::ScanEquals: return 13;
+ case Keyboard::ScanLBracket: return 26;
+ case Keyboard::ScanRBracket: return 27;
+ case Keyboard::ScanBackslash: return 43;
+ case Keyboard::ScanDash: return 41;
+ case Keyboard::ScanSemicolon: return 39;
+ case Keyboard::ScanQuote: return 40;
+ //case Keyboard::ScanGraveAccent: return ? ? ?
+ case Keyboard::ScanComma: return 51;
+ case Keyboard::ScanPeriod: return 52;
+ case Keyboard::ScanSlash: return 53;
+
+ case Keyboard::ScanF1: return 59;
+ case Keyboard::ScanF2: return 60;
+ case Keyboard::ScanF3: return 61;
+ case Keyboard::ScanF4: return 62;
+ case Keyboard::ScanF5: return 63;
+ case Keyboard::ScanF6: return 64;
+ case Keyboard::ScanF7: return 65;
+ case Keyboard::ScanF8: return 66;
+ case Keyboard::ScanF9: return 67;
+ case Keyboard::ScanF10: return 68;
+ case Keyboard::ScanF11: return KF_EXTENDED | 87;
+ case Keyboard::ScanF12: return KF_EXTENDED | 88;
+ //case Keyboard::ScanF13: return ???
+ //case Keyboard::ScanF14: return ???
+ //case Keyboard::ScanF15: return ???
+
+ case Keyboard::ScanCapsLock: return 58;
+ case Keyboard::ScanPrintScreen: return 55 | KF_EXTENDED;
+ case Keyboard::ScanScrollLock: return 70;
+ case Keyboard::ScanPause: return 69;
+ case Keyboard::ScanInsert: return 82 | KF_EXTENDED;
+ case Keyboard::ScanHome: return 71 | KF_EXTENDED;
+ case Keyboard::ScanPageUp: return 73 | KF_EXTENDED;
+ case Keyboard::ScanDelete: return 83 | KF_EXTENDED;
+ case Keyboard::ScanEnd: return 79 | KF_EXTENDED;
+ case Keyboard::ScanPageDown: return 81 | KF_EXTENDED;
+ case Keyboard::ScanRight: return 77 | KF_EXTENDED;
+ case Keyboard::ScanLeft: return 75 | KF_EXTENDED;
+ case Keyboard::ScanDown: return 80 | KF_EXTENDED;
+ case Keyboard::ScanUp: return 72 | KF_EXTENDED;
+ case Keyboard::ScanNumLock: return 69 | KF_EXTENDED;
+ case Keyboard::ScanDivide: return 53;
+ case Keyboard::ScanMultiply: return 55;
+ case Keyboard::ScanMinus: return 74;
+ case Keyboard::ScanPlus: return 78;
+ //case Keyboard::ScanPadEquals: return ???;
+ case Keyboard::ScanNumpadEnter: return KF_EXTENDED | 28;
+ case Keyboard::ScanDecimal: return 83;
+
+ case Keyboard::ScanNumpad1: return 79;
+ case Keyboard::ScanNumpad2: return 80;
+ case Keyboard::ScanNumpad3: return 81 ;
+ case Keyboard::ScanNumpad4: return 75 ;
+ case Keyboard::ScanNumpad5: return 76;
+ case Keyboard::ScanNumpad6: return 77 ;
+ case Keyboard::ScanNumpad7: return 71 ;
+ case Keyboard::ScanNumpad8: return 72 ;
+ case Keyboard::ScanNumpad9: return 73 ;
+ case Keyboard::ScanNumpad0: return 82 ;
+
+ //case Keyboard::ScanReverseSolidus: return ? ? ? ;
+ //case Keyboard::ScanApplication: return ? ? ? ;
+ //case Keyboard::ScanExecute: return ? ? ? ;
+ //case Keyboard::ScanHelp: return ? ? ? ;
+ case Keyboard::ScanMenu: return 93 | KF_EXTENDED;
+ //case Keyboard::ScanSelect: return ? ? ? ;
+ //case Keyboard::ScanStop: return ? ? ? ;
+ //case Keyboard::ScanAgain: return ? ? ? ;
+ //case Keyboard::ScanUndo: return ? ? ? ;
+ //case Keyboard::ScanCut: return ? ? ? ;
+ //case Keyboard::ScanCopy: return ? ? ? ;
+ //case Keyboard::ScanPaste: return ? ? ? ;
+ //case Keyboard::ScanFind: return ? ? ? ;
+ //case Keyboard::ScanMute: return ? ? ? ;
+ //case Keyboard::ScanVolumeUp: return ? ? ? ;
+ //case Keyboard::ScanVolumeDown: return ? ? ? ;
+ case Keyboard::ScanLControl: return 29;
+ case Keyboard::ScanLShift: return 42;
+ case Keyboard::ScanLAlt: return 56;
+ case Keyboard::ScanLSystem: return 91 | KF_EXTENDED ;
+ case Keyboard::ScanRControl: return KF_EXTENDED | 29;
+ case Keyboard::ScanRShift: return 54;
+ case Keyboard::ScanRAlt: return 56;
+ //case Keyboard::ScanRSystem: return ? ? ? ;
+
+ default: return 0; // Not sure what to return here?
+ }
+}
+
} // namespace priv
} // namespace sf
diff --git a/src/SFML/Window/Win32/InputImpl.hpp b/src/SFML/Window/Win32/InputImpl.hpp
index 483062a0..3386fe7f 100644
--- a/src/SFML/Window/Win32/InputImpl.hpp
+++ b/src/SFML/Window/Win32/InputImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -31,6 +31,7 @@
#include
#include
+#include
namespace sf
{
@@ -45,19 +46,37 @@ class InputImpl
public:
////////////////////////////////////////////////////////////
- /// \brief Check if a key is pressed
- ///
- /// \param key Key to check
- ///
- /// \return True if the key is pressed, false otherwise
+ /// \copydoc sf::Keyboard::isKeyPressed(Key)
///
////////////////////////////////////////////////////////////
static bool isKeyPressed(Keyboard::Key key);
////////////////////////////////////////////////////////////
- /// \brief Show or hide the virtual keyboard
+ /// \copydoc sf::Keyboard::isKeyPressed(Scancode)
///
- /// \param visible True to show, false to hide
+ ////////////////////////////////////////////////////////////
+ static bool isKeyPressed(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Key localize(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::unlocalize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Scancode unlocalize(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::getDescription
+ ///
+ ////////////////////////////////////////////////////////////
+ static String getDescription(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::setVirtualKeyboardVisible
///
////////////////////////////////////////////////////////////
static void setVirtualKeyboardVisible(bool visible);
@@ -158,6 +177,10 @@ public:
///
////////////////////////////////////////////////////////////
static Vector2i getTouchPosition(unsigned int finger, const WindowBase& relativeTo);
+
+ private:
+
+ static WORD sfScanToWin(Keyboard::Scancode code);
};
} // namespace priv
diff --git a/src/SFML/Window/Win32/JoystickImpl.cpp b/src/SFML/Window/Win32/JoystickImpl.cpp
index 49f85da3..2e925a57 100644
--- a/src/SFML/Window/Win32/JoystickImpl.cpp
+++ b/src/SFML/Window/Win32/JoystickImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -80,17 +80,6 @@ namespace
typedef std::vector JoystickList;
JoystickList joystickList;
-
- struct JoystickBlacklistEntry
- {
- unsigned int vendorId;
- unsigned int productId;
- };
-
- typedef std::vector JoystickBlacklist;
- JoystickBlacklist joystickBlacklist;
-
- const DWORD directInputEventBufferSize = 32;
}
@@ -341,16 +330,7 @@ Joystick::Identification JoystickImpl::getIdentification() const
JoystickState JoystickImpl::update()
{
if (directInput)
- {
- if (m_buffered)
- {
- return updateDInputBuffered();
- }
- else
- {
- return updateDInputPolled();
- }
- }
+ return updateDInput();
JoystickState state;
@@ -411,7 +391,7 @@ void JoystickImpl::initializeDInput()
// Try to acquire a DirectInput 8.x interface
HRESULT result = directInput8Create(GetModuleHandleW(NULL), 0x0800, guids::IID_IDirectInput8W, reinterpret_cast(&directInput), NULL);
- if (FAILED(result))
+ if (result)
{
// De-initialize everything
directInput = NULL;
@@ -480,7 +460,7 @@ void JoystickImpl::updateConnectionsDInput()
++i;
}
- if (FAILED(result))
+ if (result)
{
err() << "Failed to enumerate DirectInput devices: " << result << std::endl;
@@ -519,8 +499,6 @@ bool JoystickImpl::openDInput(unsigned int index)
std::memset(&m_deviceCaps, 0, sizeof(DIDEVCAPS));
m_deviceCaps.dwSize = sizeof(DIDEVCAPS);
- m_state = JoystickState();
- m_buffered = false;
// Search for a joystick with the given index in the connected list
for (std::vector::iterator i = joystickList.begin(); i != joystickList.end(); ++i)
@@ -530,54 +508,13 @@ bool JoystickImpl::openDInput(unsigned int index)
// Create device
HRESULT result = directInput->CreateDevice(i->guid, &m_device, NULL);
- if (FAILED(result))
+ if (result)
{
err() << "Failed to create DirectInput device: " << result << std::endl;
return false;
}
- // Get vendor and product id of the device
- DIPROPDWORD property;
- std::memset(&property, 0, sizeof(property));
- property.diph.dwSize = sizeof(property);
- property.diph.dwHeaderSize = sizeof(property.diph);
- property.diph.dwHow = DIPH_DEVICE;
-
- if (SUCCEEDED(m_device->GetProperty(DIPROP_VIDPID, &property.diph)))
- {
- m_identification.productId = HIWORD(property.dwData);
- m_identification.vendorId = LOWORD(property.dwData);
-
- // Check if device is already blacklisted
- if (m_identification.productId && m_identification.vendorId)
- {
- for (JoystickBlacklist::const_iterator iter = joystickBlacklist.begin(); iter != joystickBlacklist.end(); ++iter)
- {
- if ((m_identification.productId == iter->productId) &&
- (m_identification.vendorId == iter->vendorId))
- {
- // Device is blacklisted
- m_device->Release();
- m_device = NULL;
-
- return false;
- }
- }
- }
- }
-
- // Get friendly product name of the device
- DIPROPSTRING stringProperty;
- std::memset(&stringProperty, 0, sizeof(stringProperty));
- stringProperty.diph.dwSize = sizeof(stringProperty);
- stringProperty.diph.dwHeaderSize = sizeof(stringProperty.diph);
- stringProperty.diph.dwHow = DIPH_DEVICE;
- stringProperty.diph.dwObj = 0;
-
- if (SUCCEEDED(m_device->GetProperty(DIPROP_PRODUCTNAME, &stringProperty.diph)))
- m_identification.name = stringProperty.wsz;
-
static bool formatInitialized = false;
static DIDATAFORMAT format;
@@ -587,80 +524,59 @@ bool JoystickImpl::openDInput(unsigned int index)
const DWORD povType = DIDFT_POV | DIDFT_OPTIONAL | DIDFT_ANYINSTANCE;
const DWORD buttonType = DIDFT_BUTTON | DIDFT_OPTIONAL | DIDFT_ANYINSTANCE;
- static DIOBJECTDATAFORMAT data[8 * 4 + 4 + sf::Joystick::ButtonCount];
+ static DIOBJECTDATAFORMAT data[8 + 4 + sf::Joystick::ButtonCount];
- for (int i = 0; i < 4; ++i)
- {
- data[8 * i + 0].pguid = &guids::GUID_XAxis;
- data[8 * i + 1].pguid = &guids::GUID_YAxis;
- data[8 * i + 2].pguid = &guids::GUID_ZAxis;
- data[8 * i + 3].pguid = &guids::GUID_RxAxis;
- data[8 * i + 4].pguid = &guids::GUID_RyAxis;
- data[8 * i + 5].pguid = &guids::GUID_RzAxis;
- data[8 * i + 6].pguid = &guids::GUID_Slider;
- data[8 * i + 7].pguid = &guids::GUID_Slider;
- }
+ data[0].pguid = &guids::GUID_XAxis;
+ data[0].dwOfs = DIJOFS_X;
- data[ 0].dwOfs = DIJOFS_X;
- data[ 1].dwOfs = DIJOFS_Y;
- data[ 2].dwOfs = DIJOFS_Z;
- data[ 3].dwOfs = DIJOFS_RX;
- data[ 4].dwOfs = DIJOFS_RY;
- data[ 5].dwOfs = DIJOFS_RZ;
- data[ 6].dwOfs = DIJOFS_SLIDER(0);
- data[ 7].dwOfs = DIJOFS_SLIDER(1);
- data[ 8].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lVX);
- data[ 9].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lVY);
- data[10].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lVZ);
- data[11].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lVRx);
- data[12].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lVRy);
- data[13].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lVRz);
- data[14].dwOfs = FIELD_OFFSET(DIJOYSTATE2, rglVSlider[0]);
- data[15].dwOfs = FIELD_OFFSET(DIJOYSTATE2, rglVSlider[1]);
- data[16].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lAX);
- data[17].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lAY);
- data[18].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lAZ);
- data[19].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lARx);
- data[20].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lARy);
- data[21].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lARz);
- data[22].dwOfs = FIELD_OFFSET(DIJOYSTATE2, rglASlider[0]);
- data[23].dwOfs = FIELD_OFFSET(DIJOYSTATE2, rglASlider[1]);
- data[24].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lFX);
- data[25].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lFY);
- data[26].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lFZ);
- data[27].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lFRx);
- data[28].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lFRy);
- data[29].dwOfs = FIELD_OFFSET(DIJOYSTATE2, lFRz);
- data[30].dwOfs = FIELD_OFFSET(DIJOYSTATE2, rglFSlider[0]);
- data[31].dwOfs = FIELD_OFFSET(DIJOYSTATE2, rglFSlider[1]);
+ data[1].pguid = &guids::GUID_YAxis;
+ data[1].dwOfs = DIJOFS_Y;
- for (int i = 0; i < 8 * 4; ++i)
+ data[2].pguid = &guids::GUID_ZAxis;
+ data[2].dwOfs = DIJOFS_Z;
+
+ data[3].pguid = &guids::GUID_RxAxis;
+ data[3].dwOfs = DIJOFS_RX;
+
+ data[4].pguid = &guids::GUID_RyAxis;
+ data[4].dwOfs = DIJOFS_RY;
+
+ data[5].pguid = &guids::GUID_RzAxis;
+ data[5].dwOfs = DIJOFS_RZ;
+
+ data[6].pguid = &guids::GUID_Slider;
+ data[6].dwOfs = DIJOFS_SLIDER(0);
+
+ data[7].pguid = &guids::GUID_Slider;
+ data[7].dwOfs = DIJOFS_SLIDER(1);
+
+ for (int i = 0; i < 8; ++i)
{
data[i].dwType = axisType;
- data[i].dwFlags = 0;
+ data[i].dwFlags = DIDOI_ASPECTPOSITION;
}
for (int i = 0; i < 4; ++i)
{
- data[8 * 4 + i].pguid = &guids::GUID_POV;
- data[8 * 4 + i].dwOfs = static_cast(DIJOFS_POV(i));
- data[8 * 4 + i].dwType = povType;
- data[8 * 4 + i].dwFlags = 0;
+ data[8 + i].pguid = &guids::GUID_POV;
+ data[8 + i].dwOfs = static_cast(DIJOFS_POV(i));
+ data[8 + i].dwType = povType;
+ data[8 + i].dwFlags = 0;
}
for (int i = 0; i < sf::Joystick::ButtonCount; ++i)
{
- data[8 * 4 + 4 + i].pguid = NULL;
- data[8 * 4 + 4 + i].dwOfs = static_cast(DIJOFS_BUTTON(i));
- data[8 * 4 + 4 + i].dwType = buttonType;
- data[8 * 4 + 4 + i].dwFlags = 0;
+ data[8 + 4 + i].pguid = NULL;
+ data[8 + 4 + i].dwOfs = static_cast(DIJOFS_BUTTON(i));
+ data[8 + 4 + i].dwType = buttonType;
+ data[8 + 4 + i].dwFlags = 0;
}
format.dwSize = sizeof(DIDATAFORMAT);
format.dwObjSize = sizeof(DIOBJECTDATAFORMAT);
format.dwFlags = DIDFT_ABSAXIS;
- format.dwDataSize = sizeof(DIJOYSTATE2);
- format.dwNumObjs = 8 * 4 + 4 + sf::Joystick::ButtonCount;
+ format.dwDataSize = sizeof(DIJOYSTATE);
+ format.dwNumObjs = 8 + 4 + sf::Joystick::ButtonCount;
format.rgodf = data;
formatInitialized = true;
@@ -669,7 +585,7 @@ bool JoystickImpl::openDInput(unsigned int index)
// Set device data format
result = m_device->SetDataFormat(&format);
- if (FAILED(result))
+ if (result)
{
err() << "Failed to set DirectInput device data format: " << result << std::endl;
@@ -682,7 +598,7 @@ bool JoystickImpl::openDInput(unsigned int index)
// Get device capabilities
result = m_device->GetCapabilities(&m_deviceCaps);
- if (FAILED(result))
+ if (result)
{
err() << "Failed to get DirectInput device capabilities: " << result << std::endl;
@@ -692,10 +608,30 @@ bool JoystickImpl::openDInput(unsigned int index)
return false;
}
+ // Set axis mode to absolute
+ DIPROPDWORD property;
+ std::memset(&property, 0, sizeof(property));
+ property.diph.dwSize = sizeof(property);
+ property.diph.dwHeaderSize = sizeof(property.diph);
+ property.diph.dwHow = DIPH_DEVICE;
+ property.dwData = DIPROPAXISMODE_ABS;
+
+ result = m_device->SetProperty(DIPROP_AXISMODE, &property.diph);
+
+ if (result)
+ {
+ err() << "Failed to set DirectInput device axis mode: " << result << std::endl;
+
+ m_device->Release();
+ m_device = NULL;
+
+ return false;
+ }
+
// Enumerate device objects (axes/povs/buttons)
result = m_device->EnumObjects(&JoystickImpl::deviceObjectEnumerationCallback, this, DIDFT_AXIS | DIDFT_BUTTON | DIDFT_POV);
- if (FAILED(result))
+ if (result)
{
err() << "Failed to enumerate DirectInput device objects: " << result << std::endl;
@@ -705,116 +641,29 @@ bool JoystickImpl::openDInput(unsigned int index)
return false;
}
- // Set device's axis mode to absolute if the device reports having at least one axis
- for (int i = 0; i < Joystick::AxisCount; ++i)
+ // Get friendly product name of the device
+ DIPROPSTRING stringProperty;
+ std::memset(&stringProperty, 0, sizeof(stringProperty));
+ stringProperty.diph.dwSize = sizeof(stringProperty);
+ stringProperty.diph.dwHeaderSize = sizeof(stringProperty.diph);
+ stringProperty.diph.dwHow = DIPH_DEVICE;
+ stringProperty.diph.dwObj = 0;
+
+ if (!m_device->GetProperty(DIPROP_PRODUCTNAME, &stringProperty.diph))
{
- if (m_axes[i] != -1)
- {
- std::memset(&property, 0, sizeof(property));
- property.diph.dwSize = sizeof(property);
- property.diph.dwHeaderSize = sizeof(property.diph);
- property.diph.dwHow = DIPH_DEVICE;
- property.diph.dwObj = 0;
-
- result = m_device->GetProperty(DIPROP_AXISMODE, &property.diph);
-
- if (FAILED(result))
- {
- err() << "Failed to get DirectInput device axis mode for device \""
- << m_identification.name.toAnsiString() << "\": " << result << std::endl;
-
- m_device->Release();
- m_device = NULL;
-
- return false;
- }
-
- // If the axis mode is already set to absolute we don't need to set it again ourselves
- if (property.dwData == DIPROPAXISMODE_ABS)
- break;
-
- std::memset(&property, 0, sizeof(property));
- property.diph.dwSize = sizeof(property);
- property.diph.dwHeaderSize = sizeof(property.diph);
- property.diph.dwHow = DIPH_DEVICE;
- property.dwData = DIPROPAXISMODE_ABS;
-
- m_device->SetProperty(DIPROP_AXISMODE, &property.diph);
-
- // Check if the axis mode has been set to absolute
- std::memset(&property, 0, sizeof(property));
- property.diph.dwSize = sizeof(property);
- property.diph.dwHeaderSize = sizeof(property.diph);
- property.diph.dwHow = DIPH_DEVICE;
- property.diph.dwObj = 0;
-
- result = m_device->GetProperty(DIPROP_AXISMODE, &property.diph);
-
- if (FAILED(result))
- {
- err() << "Failed to verify DirectInput device axis mode for device \""
- << m_identification.name.toAnsiString() << "\": " << result << std::endl;
-
- m_device->Release();
- m_device = NULL;
-
- return false;
- }
-
- // If the axis mode hasn't been set to absolute fail here and blacklist the device
- if (property.dwData != DIPROPAXISMODE_ABS)
- {
- if (m_identification.vendorId && m_identification.productId)
- {
- JoystickBlacklistEntry entry;
-
- entry.vendorId = m_identification.vendorId;
- entry.productId = m_identification.productId;
-
- joystickBlacklist.push_back(entry);
-
- // Pre-C++11 shrink_to_fit()
- JoystickBlacklist(joystickBlacklist.begin(), joystickBlacklist.end()).swap(joystickBlacklist);
- }
-
- m_device->Release();
- m_device = NULL;
-
- return false;
- }
-
- break;
- }
+ m_identification.name = stringProperty.wsz;
}
- // Try to enable buffering by setting the buffer size
+ // Get vendor and produce id of the device
std::memset(&property, 0, sizeof(property));
property.diph.dwSize = sizeof(property);
property.diph.dwHeaderSize = sizeof(property.diph);
property.diph.dwHow = DIPH_DEVICE;
- property.dwData = directInputEventBufferSize;
- result = m_device->SetProperty(DIPROP_BUFFERSIZE, &property.diph);
-
- if (result == DI_OK)
+ if (!m_device->GetProperty(DIPROP_VIDPID, &property.diph))
{
- // Buffering supported
- m_buffered = true;
- }
- else if (result == DI_POLLEDDEVICE)
- {
- // Only polling supported
- m_buffered = false;
- }
- else
- {
- err() << "Failed to set DirectInput device buffer size for device \""
- << m_identification.name.toAnsiString() << "\": " << result << std::endl;
-
- m_device->Release();
- m_device = NULL;
-
- return false;
+ m_identification.productId = HIWORD(property.dwData);
+ m_identification.vendorId = LOWORD(property.dwData);
}
return true;
@@ -860,113 +709,7 @@ JoystickCaps JoystickImpl::getCapabilitiesDInput() const
////////////////////////////////////////////////////////////
-JoystickState JoystickImpl::updateDInputBuffered()
-{
- // If we don't make it to the end of this function, mark the device as disconnected
- m_state.connected = false;
-
- if (!m_device)
- return m_state;
-
- DIDEVICEOBJECTDATA events[directInputEventBufferSize];
- DWORD eventCount = directInputEventBufferSize;
-
- // Try to get the device data
- HRESULT result = m_device->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), events, &eventCount, 0);
-
- // If we have not acquired or have lost the device, attempt to (re-)acquire it and get the device data again
- if ((result == DIERR_NOTACQUIRED) || (result == DIERR_INPUTLOST))
- {
- m_device->Acquire();
- result = m_device->GetDeviceData(sizeof(DIDEVICEOBJECTDATA), events, &eventCount, 0);
- }
-
- // If we still can't get the device data, assume it has been disconnected
- if ((result == DIERR_NOTACQUIRED) || (result == DIERR_INPUTLOST))
- {
- m_device->Release();
- m_device = NULL;
-
- return m_state;
- }
-
- if (FAILED(result))
- {
- err() << "Failed to get DirectInput device data: " << result << std::endl;
-
- return m_state;
- }
-
- // Iterate through all buffered events
- for (DWORD i = 0; i < eventCount; ++i)
- {
- bool eventHandled = false;
-
- // Get the current state of each axis
- for (int j = 0; j < Joystick::AxisCount; ++j)
- {
- if (m_axes[j] == events[i].dwOfs)
- {
- if (j == Joystick::PovX)
- {
- unsigned short value = LOWORD(events[i].dwData);
-
- if (value != 0xFFFF)
- {
- float angle = (static_cast(value)) * 3.141592654f / DI_DEGREES / 180.f;
-
- m_state.axes[j] = std::sin(angle) * 100.f;
- }
- else
- {
- m_state.axes[j] = 0;
- }
- }
- else if (j == Joystick::PovY)
- {
- unsigned short value = LOWORD(events[i].dwData);
-
- if (value != 0xFFFF)
- {
- float angle = (static_cast(value)) * 3.141592654f / DI_DEGREES / 180.f;
-
- m_state.axes[j] = std::cos(angle) * 100.f;
- }
- else
- {
- m_state.axes[j] = 0.f;
- }
- }
- else
- {
- m_state.axes[j] = (static_cast(static_cast(events[i].dwData)) + 0.5f) * 100.f / 32767.5f;
- }
-
- eventHandled = true;
-
- break;
- }
- }
-
- if (eventHandled)
- continue;
-
- // Get the current state of each button
- for (int j = 0; j < Joystick::ButtonCount; ++j)
- {
- if (m_buttons[j] == events[i].dwOfs)
- m_state.buttons[j] = (events[i].dwData != 0);
- }
- }
-
- m_state.connected = true;
-
- return m_state;
-}
-
-
-////////////////////////////////////////////////////////////
-JoystickState JoystickImpl::updateDInputPolled()
+JoystickState JoystickImpl::updateDInput()
{
JoystickState state;
@@ -975,7 +718,7 @@ JoystickState JoystickImpl::updateDInputPolled()
// Poll the device
m_device->Poll();
- DIJOYSTATE2 joystate;
+ DIJOYSTATE joystate;
// Try to get the device state
HRESULT result = m_device->GetDeviceState(sizeof(joystate), &joystate);
@@ -997,7 +740,7 @@ JoystickState JoystickImpl::updateDInputPolled()
return state;
}
- if (FAILED(result))
+ if (result)
{
err() << "Failed to get DirectInput device state: " << result << std::endl;
@@ -1135,7 +878,7 @@ BOOL CALLBACK JoystickImpl::deviceObjectEnumerationCallback(const DIDEVICEOBJECT
HRESULT result = joystick.m_device->SetProperty(DIPROP_RANGE, &propertyRange.diph);
- if (result != DI_OK)
+ if (result)
err() << "Failed to set DirectInput device axis property range: " << result << std::endl;
return DIENUM_CONTINUE;
diff --git a/src/SFML/Window/Win32/JoystickImpl.hpp b/src/SFML/Window/Win32/JoystickImpl.hpp
index 0ed1d819..66175058 100644
--- a/src/SFML/Window/Win32/JoystickImpl.hpp
+++ b/src/SFML/Window/Win32/JoystickImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -186,20 +186,12 @@ public:
JoystickCaps getCapabilitiesDInput() const;
////////////////////////////////////////////////////////////
- /// \brief Update the joystick and get its new state (DInput, Buffered)
+ /// \brief Update the joystick and get its new state (DInput)
///
/// \return Joystick state
///
////////////////////////////////////////////////////////////
- JoystickState updateDInputBuffered();
-
- ////////////////////////////////////////////////////////////
- /// \brief Update the joystick and get its new state (DInput, Polled)
- ///
- /// \return Joystick state
- ///
- ////////////////////////////////////////////////////////////
- JoystickState updateDInputPolled();
+ JoystickState updateDInput();
private:
@@ -235,8 +227,6 @@ private:
int m_axes[Joystick::AxisCount]; //!< Offsets to the bytes containing the axes states, -1 if not available
int m_buttons[Joystick::ButtonCount]; //!< Offsets to the bytes containing the button states, -1 if not available
Joystick::Identification m_identification; //!< Joystick identification
- JoystickState m_state; //!< Buffered joystick state
- bool m_buffered; //!< true if the device uses buffering, false if the device uses polling
};
} // namespace priv
diff --git a/src/SFML/Window/Win32/SensorImpl.cpp b/src/SFML/Window/Win32/SensorImpl.cpp
index e91d5cdf..a0c83977 100644
--- a/src/SFML/Window/Win32/SensorImpl.cpp
+++ b/src/SFML/Window/Win32/SensorImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/SensorImpl.hpp b/src/SFML/Window/Win32/SensorImpl.hpp
index 91265745..1c50fa63 100644
--- a/src/SFML/Window/Win32/SensorImpl.hpp
+++ b/src/SFML/Window/Win32/SensorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/VideoModeImpl.cpp b/src/SFML/Window/Win32/VideoModeImpl.cpp
index 3e305d01..1f77be3f 100644
--- a/src/SFML/Window/Win32/VideoModeImpl.cpp
+++ b/src/SFML/Window/Win32/VideoModeImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/VulkanImplWin32.cpp b/src/SFML/Window/Win32/VulkanImplWin32.cpp
index a843b0b3..6b68e9d2 100644
--- a/src/SFML/Window/Win32/VulkanImplWin32.cpp
+++ b/src/SFML/Window/Win32/VulkanImplWin32.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/VulkanImplWin32.hpp b/src/SFML/Window/Win32/VulkanImplWin32.hpp
index f3de5e66..11bf9a37 100644
--- a/src/SFML/Window/Win32/VulkanImplWin32.hpp
+++ b/src/SFML/Window/Win32/VulkanImplWin32.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/WglContext.cpp b/src/SFML/Window/Win32/WglContext.cpp
index 62ca37fe..6252be02 100644
--- a/src/SFML/Window/Win32/WglContext.cpp
+++ b/src/SFML/Window/Win32/WglContext.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/WglContext.hpp b/src/SFML/Window/Win32/WglContext.hpp
index 184e06df..47fb9328 100644
--- a/src/SFML/Window/Win32/WglContext.hpp
+++ b/src/SFML/Window/Win32/WglContext.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/Win32/WindowImplWin32.cpp b/src/SFML/Window/Win32/WindowImplWin32.cpp
old mode 100755
new mode 100644
index ed56f026..5214d77b
--- a/src/SFML/Window/Win32/WindowImplWin32.cpp
+++ b/src/SFML/Window/Win32/WindowImplWin32.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -557,6 +557,107 @@ void WindowImplWin32::grabCursor(bool grabbed)
}
}
+////////////////////////////////////////////////////////////
+Keyboard::Scancode WindowImplWin32::toScancode(LPARAM flags)
+{
+ int code = ((flags & (0xFF << 16)) >> 16);
+
+ // Windows scan codes
+ // Reference: https://msdn.microsoft.com/en-us/library/aa299374(v=vs.60).aspx
+ switch (code)
+ {
+ case 1: return Keyboard::ScanEscape;
+ case 2: return Keyboard::ScanNum1;
+ case 3: return Keyboard::ScanNum2;
+ case 4: return Keyboard::ScanNum3;
+ case 5: return Keyboard::ScanNum4;
+ case 6: return Keyboard::ScanNum5;
+ case 7: return Keyboard::ScanNum6;
+ case 8: return Keyboard::ScanNum7;
+ case 9: return Keyboard::ScanNum8;
+ case 10: return Keyboard::ScanNum9;
+ case 11: return Keyboard::ScanNum0;
+ case 12: return Keyboard::ScanHyphen;
+ case 13: return Keyboard::ScanEquals;
+ case 14: return Keyboard::ScanBackspace;
+ case 15: return Keyboard::ScanTab;
+ case 16: return Keyboard::ScanQ;
+ case 17: return Keyboard::ScanW;
+ case 18: return Keyboard::ScanE;
+ case 19: return Keyboard::ScanR;
+ case 20: return Keyboard::ScanT;
+ case 21: return Keyboard::ScanY;
+ case 22: return Keyboard::ScanU;
+ case 23: return Keyboard::ScanI;
+ case 24: return Keyboard::ScanO;
+ case 25: return Keyboard::ScanP;
+ case 26: return Keyboard::ScanLBracket;
+ case 27: return Keyboard::ScanRBracket;
+ case 28: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanEnter : Keyboard::ScanNumpadEnter;
+ case 29: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanRControl : Keyboard::ScanLControl;
+ case 30: return Keyboard::ScanA;
+ case 31: return Keyboard::ScanS;
+ case 32: return Keyboard::ScanD;
+ case 33: return Keyboard::ScanF;
+ case 34: return Keyboard::ScanG;
+ case 35: return Keyboard::ScanH;
+ case 36: return Keyboard::ScanJ;
+ case 37: return Keyboard::ScanK;
+ case 38: return Keyboard::ScanL;
+ case 39: return Keyboard::ScanSemicolon;
+ case 40: return Keyboard::ScanQuote;
+ case 41: return Keyboard::ScanBackslash;
+ case 42: return Keyboard::ScanLShift;
+ case 43: return Keyboard::ScanDash;
+ case 44: return Keyboard::ScanZ;
+ case 45: return Keyboard::ScanX;
+ case 46: return Keyboard::ScanC;
+ case 47: return Keyboard::ScanV;
+ case 48: return Keyboard::ScanB;
+ case 49: return Keyboard::ScanN;
+ case 50: return Keyboard::ScanM;
+ case 51: return Keyboard::ScanComma;
+ case 52: return Keyboard::ScanPeriod;
+ case 53: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanDivide : Keyboard::ScanSlash;
+ case 54: return Keyboard::ScanRShift;
+ case 55: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanPrintScreen : Keyboard::ScanMultiply;
+ case 56: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanRAlt : Keyboard::ScanLAlt;
+ case 57: return Keyboard::ScanSpace;
+ case 58: return Keyboard::ScanCapsLock;
+ case 59: return Keyboard::ScanF1;
+ case 60: return Keyboard::ScanF2;
+ case 61: return Keyboard::ScanF3;
+ case 62: return Keyboard::ScanF4;
+ case 63: return Keyboard::ScanF5;
+ case 64: return Keyboard::ScanF6;
+ case 65: return Keyboard::ScanF7;
+ case 66: return Keyboard::ScanF8;
+ case 67: return Keyboard::ScanF9;
+ case 68: return Keyboard::ScanF10;
+ case 87: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanUnknown : Keyboard::ScanF11;
+ case 88: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanUnknown : Keyboard::ScanF12;
+ case 69: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanNumLock : Keyboard::ScanPause;
+ case 70: return Keyboard::ScanScrollLock;
+ case 71: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanHome : Keyboard::ScanNumpad7;
+ case 72: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanUp : Keyboard::ScanNumpad8;
+ case 73: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanPageUp : Keyboard::ScanNumpad9;
+ case 74: return Keyboard::ScanMinus;
+ case 75: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanLeft : Keyboard::ScanNumpad4;
+ case 76: return Keyboard::ScanNumpad5;
+ case 77: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanRight : Keyboard::ScanNumpad6;
+ case 78: return Keyboard::ScanPlus;
+ case 79: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanEnd : Keyboard::ScanNumpad1;
+ case 80: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanDown : Keyboard::ScanNumpad2;
+ case 81: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanPageDown : Keyboard::ScanNumpad3;
+ case 82: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanInsert : Keyboard::ScanNumpad0;
+ case 83: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanDelete : Keyboard::ScanDecimal;
+
+ case 91: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanLSystem : Keyboard::ScanUnknown;
+ case 93: return (HIWORD(flags) & KF_EXTENDED) ? Keyboard::ScanMenu : Keyboard::ScanUnknown;
+
+ default: return Keyboard::ScanUnknown;
+ }
+}
////////////////////////////////////////////////////////////
void WindowImplWin32::processEvent(UINT message, WPARAM wParam, LPARAM lParam)
@@ -726,12 +827,13 @@ void WindowImplWin32::processEvent(UINT message, WPARAM wParam, LPARAM lParam)
if (m_keyRepeatEnabled || ((HIWORD(lParam) & KF_REPEAT) == 0))
{
Event event;
- event.type = Event::KeyPressed;
- event.key.alt = HIWORD(GetKeyState(VK_MENU)) != 0;
- event.key.control = HIWORD(GetKeyState(VK_CONTROL)) != 0;
- event.key.shift = HIWORD(GetKeyState(VK_SHIFT)) != 0;
- event.key.system = HIWORD(GetKeyState(VK_LWIN)) || HIWORD(GetKeyState(VK_RWIN));
- event.key.code = virtualKeyCodeToSF(wParam, lParam);
+ event.type = Event::KeyPressed;
+ event.key.alt = HIWORD(GetKeyState(VK_MENU)) != 0;
+ event.key.control = HIWORD(GetKeyState(VK_CONTROL)) != 0;
+ event.key.shift = HIWORD(GetKeyState(VK_SHIFT)) != 0;
+ event.key.system = HIWORD(GetKeyState(VK_LWIN)) || HIWORD(GetKeyState(VK_RWIN));
+ event.key.scancode = toScancode(lParam);
+ event.key.code = virtualKeyCodeToSF(wParam, lParam);
pushEvent(event);
}
break;
@@ -742,12 +844,13 @@ void WindowImplWin32::processEvent(UINT message, WPARAM wParam, LPARAM lParam)
case WM_SYSKEYUP:
{
Event event;
- event.type = Event::KeyReleased;
- event.key.alt = HIWORD(GetKeyState(VK_MENU)) != 0;
- event.key.control = HIWORD(GetKeyState(VK_CONTROL)) != 0;
- event.key.shift = HIWORD(GetKeyState(VK_SHIFT)) != 0;
- event.key.system = HIWORD(GetKeyState(VK_LWIN)) || HIWORD(GetKeyState(VK_RWIN));
- event.key.code = virtualKeyCodeToSF(wParam, lParam);
+ event.type = Event::KeyReleased;
+ event.key.alt = HIWORD(GetKeyState(VK_MENU)) != 0;
+ event.key.control = HIWORD(GetKeyState(VK_CONTROL)) != 0;
+ event.key.shift = HIWORD(GetKeyState(VK_SHIFT)) != 0;
+ event.key.system = HIWORD(GetKeyState(VK_LWIN)) || HIWORD(GetKeyState(VK_RWIN));
+ event.key.scancode = toScancode(lParam);
+ event.key.code = virtualKeyCodeToSF(wParam, lParam);
pushEvent(event);
break;
}
diff --git a/src/SFML/Window/Win32/WindowImplWin32.hpp b/src/SFML/Window/Win32/WindowImplWin32.hpp
index c58d77d7..a5ae5e08 100755
--- a/src/SFML/Window/Win32/WindowImplWin32.hpp
+++ b/src/SFML/Window/Win32/WindowImplWin32.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -269,6 +269,16 @@ private:
////////////////////////////////////////////////////////////
static LRESULT CALLBACK globalOnEvent(HWND handle, UINT message, WPARAM wParam, LPARAM lParam);
+ ////////////////////////////////////////////////////////////
+ /// \brief Convert a Win32 scancode to an sfml scancode
+ ///
+ /// \param flags input flags
+ ///
+ /// \return SFML scancode corresponding to the key
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Scancode toScancode(LPARAM flags);
+
////////////////////////////////////////////////////////////
// Member data
////////////////////////////////////////////////////////////
diff --git a/src/SFML/Window/Window.cpp b/src/SFML/Window/Window.cpp
index 415b136c..2ece6701 100644
--- a/src/SFML/Window/Window.cpp
+++ b/src/SFML/Window/Window.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/WindowBase.cpp b/src/SFML/Window/WindowBase.cpp
index 5c18eefe..cfb6446e 100644
--- a/src/SFML/Window/WindowBase.cpp
+++ b/src/SFML/Window/WindowBase.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/WindowImpl.cpp b/src/SFML/Window/WindowImpl.cpp
index afbfddf8..cb5d026b 100644
--- a/src/SFML/Window/WindowImpl.cpp
+++ b/src/SFML/Window/WindowImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/WindowImpl.hpp b/src/SFML/Window/WindowImpl.hpp
index f8d079c0..abcf8ba6 100644
--- a/src/SFML/Window/WindowImpl.hpp
+++ b/src/SFML/Window/WindowImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/ClipboardImpl.hpp b/src/SFML/Window/iOS/ClipboardImpl.hpp
index ff555ac5..2e26069d 100644
--- a/src/SFML/Window/iOS/ClipboardImpl.hpp
+++ b/src/SFML/Window/iOS/ClipboardImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/ClipboardImpl.mm b/src/SFML/Window/iOS/ClipboardImpl.mm
index 48d95df5..d241b508 100644
--- a/src/SFML/Window/iOS/ClipboardImpl.mm
+++ b/src/SFML/Window/iOS/ClipboardImpl.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/CursorImpl.cpp b/src/SFML/Window/iOS/CursorImpl.cpp
index 8a511a6c..d83fb64a 100644
--- a/src/SFML/Window/iOS/CursorImpl.cpp
+++ b/src/SFML/Window/iOS/CursorImpl.cpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/CursorImpl.hpp b/src/SFML/Window/iOS/CursorImpl.hpp
index c7cb02dd..f64191dd 100644
--- a/src/SFML/Window/iOS/CursorImpl.hpp
+++ b/src/SFML/Window/iOS/CursorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/EaglContext.hpp b/src/SFML/Window/iOS/EaglContext.hpp
index 9c01c909..cef0c2ef 100644
--- a/src/SFML/Window/iOS/EaglContext.hpp
+++ b/src/SFML/Window/iOS/EaglContext.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/EaglContext.mm b/src/SFML/Window/iOS/EaglContext.mm
index 71514248..4d4da2d0 100644
--- a/src/SFML/Window/iOS/EaglContext.mm
+++ b/src/SFML/Window/iOS/EaglContext.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/InputImpl.hpp b/src/SFML/Window/iOS/InputImpl.hpp
index c17c40b3..a06c7dff 100644
--- a/src/SFML/Window/iOS/InputImpl.hpp
+++ b/src/SFML/Window/iOS/InputImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
@@ -45,19 +45,37 @@ class InputImpl
public:
////////////////////////////////////////////////////////////
- /// \brief Check if a key is pressed
- ///
- /// \param key Key to check
- ///
- /// \return True if the key is pressed, false otherwise
+ /// \copydoc sf::Keyboard::isKeyPressed(Key)
///
////////////////////////////////////////////////////////////
static bool isKeyPressed(Keyboard::Key key);
////////////////////////////////////////////////////////////
- /// \brief Show or hide the virtual keyboard
+ /// \copydoc sf::Keyboard::isKeyPressed(Scancode)
///
- /// \param visible True to show, false to hide
+ ////////////////////////////////////////////////////////////
+ static bool isKeyPressed(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Key localize(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::unlocalize
+ ///
+ ////////////////////////////////////////////////////////////
+ static Keyboard::Scancode unlocalize(Keyboard::Key key);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::localizedRepresentation
+ ///
+ ////////////////////////////////////////////////////////////
+ static String getDescription(Keyboard::Scancode code);
+
+ ////////////////////////////////////////////////////////////
+ /// \copydoc sf::Keyboard::setVirtualKeyboardVisible
///
////////////////////////////////////////////////////////////
static void setVirtualKeyboardVisible(bool visible);
diff --git a/src/SFML/Window/iOS/InputImpl.mm b/src/SFML/Window/iOS/InputImpl.mm
index c254eb3f..6d14f313 100644
--- a/src/SFML/Window/iOS/InputImpl.mm
+++ b/src/SFML/Window/iOS/InputImpl.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/JoystickImpl.hpp b/src/SFML/Window/iOS/JoystickImpl.hpp
index 78047162..f09429a9 100644
--- a/src/SFML/Window/iOS/JoystickImpl.hpp
+++ b/src/SFML/Window/iOS/JoystickImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/JoystickImpl.mm b/src/SFML/Window/iOS/JoystickImpl.mm
index 6f4ab141..dea4b043 100644
--- a/src/SFML/Window/iOS/JoystickImpl.mm
+++ b/src/SFML/Window/iOS/JoystickImpl.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/ObjCType.hpp b/src/SFML/Window/iOS/ObjCType.hpp
index 5d90ed78..736b3ab9 100644
--- a/src/SFML/Window/iOS/ObjCType.hpp
+++ b/src/SFML/Window/iOS/ObjCType.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/SFAppDelegate.hpp b/src/SFML/Window/iOS/SFAppDelegate.hpp
index d651d0c8..da8e059c 100644
--- a/src/SFML/Window/iOS/SFAppDelegate.hpp
+++ b/src/SFML/Window/iOS/SFAppDelegate.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/SFAppDelegate.mm b/src/SFML/Window/iOS/SFAppDelegate.mm
index 4618199a..a57b7aa4 100644
--- a/src/SFML/Window/iOS/SFAppDelegate.mm
+++ b/src/SFML/Window/iOS/SFAppDelegate.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/SFMain.hpp b/src/SFML/Window/iOS/SFMain.hpp
index 815c3ccd..dbb8e6a5 100644
--- a/src/SFML/Window/iOS/SFMain.hpp
+++ b/src/SFML/Window/iOS/SFMain.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/SFMain.mm b/src/SFML/Window/iOS/SFMain.mm
index f51cdac4..4a3aec30 100644
--- a/src/SFML/Window/iOS/SFMain.mm
+++ b/src/SFML/Window/iOS/SFMain.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/SFView.hpp b/src/SFML/Window/iOS/SFView.hpp
index ef11530a..470760c6 100644
--- a/src/SFML/Window/iOS/SFView.hpp
+++ b/src/SFML/Window/iOS/SFView.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/SFView.mm b/src/SFML/Window/iOS/SFView.mm
index 1cb06061..a832f933 100644
--- a/src/SFML/Window/iOS/SFView.mm
+++ b/src/SFML/Window/iOS/SFView.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/SFViewController.hpp b/src/SFML/Window/iOS/SFViewController.hpp
index 3db3ea29..a2ff188d 100644
--- a/src/SFML/Window/iOS/SFViewController.hpp
+++ b/src/SFML/Window/iOS/SFViewController.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/SFViewController.mm b/src/SFML/Window/iOS/SFViewController.mm
index 2a00cd42..79451258 100644
--- a/src/SFML/Window/iOS/SFViewController.mm
+++ b/src/SFML/Window/iOS/SFViewController.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/SensorImpl.hpp b/src/SFML/Window/iOS/SensorImpl.hpp
index 8bd1bd60..14f3fca2 100644
--- a/src/SFML/Window/iOS/SensorImpl.hpp
+++ b/src/SFML/Window/iOS/SensorImpl.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/SensorImpl.mm b/src/SFML/Window/iOS/SensorImpl.mm
index 60d65b33..9c6f2ea2 100644
--- a/src/SFML/Window/iOS/SensorImpl.mm
+++ b/src/SFML/Window/iOS/SensorImpl.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/VideoModeImpl.mm b/src/SFML/Window/iOS/VideoModeImpl.mm
index 2887a42e..8f9dce0b 100644
--- a/src/SFML/Window/iOS/VideoModeImpl.mm
+++ b/src/SFML/Window/iOS/VideoModeImpl.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/WindowImplUIKit.hpp b/src/SFML/Window/iOS/WindowImplUIKit.hpp
index c590c7c1..9b340f64 100644
--- a/src/SFML/Window/iOS/WindowImplUIKit.hpp
+++ b/src/SFML/Window/iOS/WindowImplUIKit.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/src/SFML/Window/iOS/WindowImplUIKit.mm b/src/SFML/Window/iOS/WindowImplUIKit.mm
index d53ac89e..7caeb063 100644
--- a/src/SFML/Window/iOS/WindowImplUIKit.mm
+++ b/src/SFML/Window/iOS/WindowImplUIKit.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Laurent Gomila (laurent@sfml-dev.org)
+// Copyright (C) 2007-2019 Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
// In no event will the authors be held liable for any damages arising from the use of this software.
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp
index e3c15e69..f6b2550d 100644
--- a/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm
index f4be3508..d16426a4 100644
--- a/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm
@@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
-// Copyright (C) 2007-2020 Marco Antognini (antognini.marco@gmail.com),
+// Copyright (C) 2007-2019 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent@sfml-dev.org)
//
// This software is provided 'as-is', without any express or implied warranty.
diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist.in b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist.in
index 51858431..f7cc802c 100644
--- a/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist.in
+++ b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist.in
@@ -3,7 +3,7 @@