This post comes from the first version of this blog.
Please send me an email if anything needs an update. Thanks!

Jak 99.9% ludzi związanych z komputerami, ja też jeździłem kiedyś na deskorolce, poza tym oczywiście zaliczyłem wszystkie klasyczne części “Tony’ego Hawka”, czyli od THPS1 aż do THPS4. W dalsze też grałem, ale to już nie to samo. :) W każdym razie - ostatnio zalogowałem się z nudów do Steama i zauważyłem, że do kupienia jest THPS HD, czyli odświeżona graficznie wersja wyżej wymienionych starych edycji. 16 EUR (11 + 5 za DLC “Revert Pack”) nie było jakąś specjalnie wygórowaną kwotą, więc zapłaciłem, ściągnąłem i… zonk.

Pamiętam, że moi bracia cioteczni namiętnie wyciskali genialne zestawy trików korzystając z domyślnego ustawienia klawiatury numerycznej (8 - grab, 6 grind, itp.). Ja od zawsze byłem przyzwyczajony do trzymania prawą ręką strzałek (wyjątek - WSAD w FPSach), więc szybko wykombinowałem, że najwygodniejszym sposobem grania jest lewa ręka na klawiszach ZXCVG:

Uruchomiłem THPS HD, zmieniłem rozdzielczość (jedyna opcja grafiki w całej grze :)) i poszedłem zaszaleć na pierwszej mapce. Długo sobie nie pograłem, bo...  żadne ustawienie klawiatury jakie pamiętałem z poprzednich części nie chciało pomóc w wykręceniu choćby prostego Kickflipa. Zajrzałem jeszcze raz do ustawień i z lekkim zażenowaniem odkryłem, że jakiś geniusz gameplayu ustawił klawisze funkcyjne na [<], [>], [/] i... (uwaga, fanfary) [Spację] jako klawisz Crouch / Jump. Pomyślałem sobie - trudno - i zacząłem szukać opcji zmiany mapowania klawiatury. Ku mojemu zaskoczeniu jedyną dostępną opcją była zmiana klawiatury na... pada, w którym też nie dało się zmieniać ustawień poszczególnych klawiszy.

Ze względu na to, że zawód (i podtytuł blogu) zobowiązuje, zacząłem szukać rozwiązania. Długo nie musiałem czekać - Google dosyć szybko naprowadził mnie na cel. W katalogu gry, czyli w moim przypadku:

D:\Steam\steamapps\common\Tony Hawk's Pro Skater HD\THHDGame\Config
znajduje się plik DefaultInput.ini, w którym są zapisane mapowania klawiatury. Nas interesuje blok zawarty poniżej:
(...)
[Engine.PlayerInput]
.Bindings=(Name="Move forward", Command="PAD_Up__Press | onrelease PAD_Up__Release")
.Bindings=(Name="Move backward", Command="PAD_Down__Press | onrelease PAD_Down__Release")
.Bindings=(Name="Move Left", Command="PAD_Left__Press | onrelease PAD_Left__Release")
.Bindings=(Name="Move Right", Command="PAD_Right__Press | onrelease PAD_Right__Release")
.Bindings=(Name="Camera up", Command="PAD_Up__Press | onrelease PAD_Up__Release")
.Bindings=(Name="Camera down", Command="PAD_Down__Press | onrelease PAD_Down__Release")
.Bindings=(Name="Camera left", Command="PAD_Left__Press | onrelease PAD_Left__Release")
.Bindings=(Name="Camera right", Command="PAD_Right__Press | onrelease PAD_Right__Release")
.Bindings=(Name="Grind", Command="PAD_RUp__Press | onrelease PAD_RUp__Release")
.Bindings=(Name="Flip", Command="PAD_RLeft__Press | onrelease PAD_RLeft__Release")
.Bindings=(Name="Grab", Command="PAD_RRight__Press | onrelease PAD_RRight__Release")
.Bindings=(Name="Jump", Command="PAD_RDown__Press | onrelease PAD_RDown__Release")
.Bindings=(Name="1", Command="PAD_L1__Press | onrelease PAD_L1__Release")
.Bindings=(Name="2", Command="PAD_R1__Press | onrelease PAD_R1__Release")
.Bindings=(Name="Switch", Command="PAD_L2__Press | onrelease PAD_L2__Release")
.Bindings=(Name="Revert", Command="PAD_R2__Press | onrelease PAD_R2__Release")
.Bindings=(Name="q", Command="PAD_Start__Press | onrelease PAD_Start__Release")
.Bindings=(Name="Fast Restart", Command="PAD_Select__Press | onrelease PAD_Select__Release")
(...)

Jak widać ustawienie każdego bloku składa się z linii, której format można odczytać, jako:

.Bindings=(Name="<KEY>", Command="<PAD> | onrelease <PADREL>")

gdzie:

Wartości opcji <PAD> i <PADREL> nie będziemy zmieniać, ale interesuje nas zdecydowanie fragment <KEY>. Wynikowa konfiguracja dla mojego ustawienia z klawiszami ZXCVG wygląda następująco - myślę, że domyślicie się, co trzeba zmienić, żeby dostosować całość do swoich wymagań:

(...)
[Engine.PlayerInput]
.Bindings=(Name="Up", Command="PAD_Up__Press | onrelease PAD_Up__Release")
.Bindings=(Name="Down", Command="PAD_Down__Press | onrelease PAD_Down__Release")
.Bindings=(Name="Left", Command="PAD_Left__Press | onrelease PAD_Left__Release")
.Bindings=(Name="Right", Command="PAD_Right__Press | onrelease PAD_Right__Release")
.Bindings=(Name="W", Command="PAD_Up__Press | onrelease PAD_Up__Release")
.Bindings=(Name="S", Command="PAD_Down__Press | onrelease PAD_Down__Release")
.Bindings=(Name="A", Command="PAD_Left__Press | onrelease PAD_Left__Release")
.Bindings=(Name="D", Command="PAD_Right__Press | onrelease PAD_Right__Release")
.Bindings=(Name="V", Command="PAD_RUp__Press | onrelease PAD_RUp__Release")
.Bindings=(Name="G", Command="PAD_RLeft__Press | onrelease PAD_RLeft__Release")
.Bindings=(Name="X", Command="PAD_RRight__Press | onrelease PAD_RRight__Release")
.Bindings=(Name="C", Command="PAD_RDown__Press | onrelease PAD_RDown__Release")
.Bindings=(Name="1", Command="PAD_L1__Press | onrelease PAD_L1__Release")
.Bindings=(Name="2", Command="PAD_R1__Press | onrelease PAD_R1__Release")
.Bindings=(Name="LeftShift", Command="PAD_L2__Press | onrelease PAD_L2__Release")
.Bindings=(Name="Z", Command="PAD_R2__Press | onrelease PAD_R2__Release")
.Bindings=(Name="Escape", Command="PAD_Start__Press | onrelease PAD_Start__Release")
.Bindings=(Name="BackSpace", Command="PAD_Select__Press | onrelease PAD_Select__Release")
(...)

Miłego grania! :)