Avantar Posted March 30, 2018 Posted March 30, 2018 (edited) 2021-01-27 New Release: 0.52 Fellow pilots. Today I'd like to share with you software that I hope at least some of you will find useful. While building my flying rig and talking to colleagues that fly with me I discovered sad truth: most of the simulators, DCS included, will not recognize all the potential behind advanced HOTAS setups (like Thrustmaster Warthog, for example). Even though Warthog exhibits plethora of switches, most sims will only detect one position of a switch and will NOT generate event for it's "normal" position. For this we require additional software. I know there are SOME apps like that out there, but they are either not developed / supported, detect devices either in finite number or random order, or are simply cumbersome in use. Hence, I wrote my (and I hope now: our) own software - RS Mapper - that enables you to deal with all your devices as you please. Major functions include - key mapping on button single press - RS Mapper will trigger single keyboard stroke when you press the device button. - Repeated single press - RS Mapper will trigger X keyboard strokes when you press the device button - Long press - RS Mapper will mimic A-10C long hotas press (that is: after 1s of holding the button it will fire single keyboard stroke) - Continuous press - RS mapper will mimic long keyboard press as long as you have the device button pressed - Key mapping on release - RS mapper will trigger keyboard stroke when you release button. This function effectively gives you two events for single-throw switches found on most hotas setups or MJoy devices. - Profiles: you can save all required mapping in one place. Furthermore, you can create multiple profiles (for instance: one per sim) and have it stored conveniently in single file. Profiles are also useful if you want to temporarily remap your device. - Profile change on button press: you direct RS mapper to change key mappings after pressing (or while holding) the device button. This might be particularly useful for people with simpler joysticks as this doubles options available on single device. Also, you might want to have different setup for combat and different for landing ect. Possibilities are limitless. - Sequences: you are now able to define a set of keypresses to be played in specified order (Sequence functionality). Sequence defined this way can be then assigned to any button or POV. Using this function you can program action sequence of arbitrary length, for instance: "flaps, wait 2 seconds, gear down, wait 50 ms, landing lights on" - and all that with a press of a single button It should also be useful in programming long ATC conversations (awacs, airfields and such). Additionally, this function allows you to use virtually any key as a modifier: just set the "delay since start" time to the same value and system will recognize the keys as pressed at the same time. Please be advised that in some applications you might need to run RS Mapper with Admin rights for keystrokes to be properly recognized. FUTURE ROADMAP: - Rewrite the way buttons are rendered (flickering, long time to draw. bad code in general) - New way to assign keys to device button (keypress, not a dropdown selection) - Support for Saitek/Logitech flight panels (big one!) - Axis support for mapping (big one!) - Profile changes on keyboard key press (low priority) I cannot provide any ETA for these functionalities, but just letting you know I have them on my roadmap. VERSION HISTORY 0.52: Bug fix - Loading saved RS Mapper file when one or more devices are disconnected is again possible. - Correct version is displayed when minimizing to tray. - Added option to choose to minimize to taskbar instead of system tray. - Fixed a bug with deleting sequences with no actions assigned. 0.51: Bug fix - "Delete action" button in sequence editor not working will now properly delete the selected action. 0.50: Bug fix - Fixed a bug when app layout was incorectly remembered while RS Mapper was closed while minimized. 0.49: Critical bug fix. Device renaming, profile overlay and layout memory. - Critical bug that prevented single-button press actions has been fixed - Application now remembers it's layout: that is screen position, size and main panel sizes. - You can edit device names, both from device selection window and main device list. - Overlay displaying profile name was added. It can be enabled in profile menu. You can move the overlay by right-clicking and draging around. - Preferences has been updated to accommodate overlay options (autostart, color and opacity) 0.48: Button rename functionality and bug fixes. - Right clicking on a button allows you to change name. Please note that this is a global change and will be visible in all your profiles. - In case of a critical error breaking the application additional message will appear and log file will be created for further investigation. - Fixed a defect preventing "repeat" functionality from working correctly. 0.47: Added support for Right Windows Key 0.46: First implementation of sequence functionality. Some defect fixes - You can now define a sequence of key-press actions and assign them to buttons and POVs - Certain DCS F/A-18C Hornet functions should be properly triggered now using single press command (flaps, lights ect.) 0.45: Defect fixes and additional keys - Fixed a defect when some extended keys (like numpad enter) would substitute regular version upon re-opening action dialog. - Added left windows key to supported actions - Added pause key to supported actions 0.44: Long press gains "continuous" option - You can now set long-press action to fire on continuous basis 0.43: Single press no longer fire together with longpress - When you map both single press and long press button actions single press action will only fire if you release button before full 1s of longpress timer expire. 0.42: Bug fix - Fixed defect when on some keyboards "[" and "]" where switched. 0.41: Minor bug fix - Fixed error occurring when re-opening action dialog while only change profile action was defined. 0.40: Minor bug fixes - Added support for right and left backslash (" |") key. 0.39: Bug fixes - Number of bugs related to continuous press on POV has been solved 0.38: Bug fixes and profiles - RS Mapper now features option to change between profiles on button/POV press. This means you can create "pinky switch" behaviour that completely remaps your keystrokes as long you have a button (or mode switch) toggled. - Fixed bug with incorrect sequence of key / modifier release. 0.37: Bug fixes - Fixed problem with continuous events and right modifier keys 0.36 : Minor bug fix - Fixed defect with all profiles being marked as active while using autoload feature. 0.35 : Profiles come to RS Mapper - Introducing a concept of a "Profile" - it is a set of all mapped actions for selected devices. Starting from version 0.35 you are able to add more than one profile (menu "Profiles -> New profile") and switch between them by clicking profile name in the Profile menu. Currently selected profile will be marked by a "tick" on the menu and it's name will be shown in the status bar (bottom of the window). This feature enables you to store key mappings for multiple games in one file. - Added option to import previously saved files. Choose "Import" option from the File menu to add profiles saved in the selected file to your current mappings. This feature enables you to merge couple of files into one. Remember to save the new mapping file after importing! - Only once instance of RS Mapper can run at a time. - Refurbished "About" window. Now readme.txt file is also shown there. 0.32 trough 0.34: closed developer versions 0.31: Minor bug fix - "All mapped actions" list did not properly distinguished between left/right and numpad keys. The bug was display only (that is: proper key was being sent even though wrong name was displayed on the list). This issue has been addressed now. 0.30: Original Release The software is free and tested, no known bugs exist as of version 0.52. Full details can be found in readme.txt file. Get it here: https://drive.google.com/drive/folders/1mQtbeRHVqS872fEXugrOrEDK7ZbpPCAV Enjoy - and leave feedback. If you are eager to see it in work PacMan (a.k.a. OverKill) posted very nice video on YouTube explaining main functions of the RS Mapper. Watch it here: Edited January 27, 2021 by Avantar New version - 0.52 8 5 Avantar My rig: MSI MPG Z490 GAMING EDGE WIFI; HyperX Fury RGB 64GB (4x16GB) 3200MHz DDR4 CL16; Intel Core i9-10900KA; Zotac RTX 3090; HOTAS Warthog; HOTAS Cougar; MFD Cougar; Track IR 5; Saitek Pro Flight rudder Pedals [sIGPIC][/sIGPIC]
davidp57 Posted March 30, 2018 Posted March 30, 2018 Hi Avantar, Thank you for your time and efforts. What advantages does your program have over TM Target ? You don't seem aware of the fact that DCS indeed supports multiple-position switches (e.g. this post for the Harrier)... Zip - VEAF :pilotfly: If you want to learn, talk and fly with french-speaking friends, the Virtual European Air Force is here for you ! Meet us on our Discord and our forum If you're a mission creator, you may want to check the VEAF Mission Creation Tools (and its GitHub repository) a set of open-source scripts and tools that make creating a dynamic mission a breeze !
thrustvector Posted March 30, 2018 Posted March 30, 2018 seems a nice program and very intuitive, ill give it a try later this weekend, thanks for making it
HiJack Posted March 30, 2018 Posted March 30, 2018 Good job. Does it support "Shift mode" where one button on the hotas is set to change all buttons to new commands? (as in Saitek's SST).
Avantar Posted March 31, 2018 Author Posted March 31, 2018 Good job. Does it support "Shift mode" where one button on the hotas is set to change all buttons to new commands? (as in Saitek's SST). yes, that's exactly what "change profile on button press" feature was designed for. Instead of keystroke, after button press you change entire profile so new key definitions from new profile are instantly assigned to the buttons. Avantar My rig: MSI MPG Z490 GAMING EDGE WIFI; HyperX Fury RGB 64GB (4x16GB) 3200MHz DDR4 CL16; Intel Core i9-10900KA; Zotac RTX 3090; HOTAS Warthog; HOTAS Cougar; MFD Cougar; Track IR 5; Saitek Pro Flight rudder Pedals [sIGPIC][/sIGPIC]
Strut Posted March 31, 2018 Posted March 31, 2018 Thanks Avantar, will give it a go ! Regards DL available skins here: https://www.digitalcombatsimulator.com/en/files/?CREATED_BY=Strut Pictures of my Skins here: https://imgur.com/a/bOQyQqW [sIGPIC][/sIGPIC] Win10 64bit, Intel® Core i7-5820K CPU OC @ 4.50GHz x6, X99A GAMING PRO CARBON, MSI RTX 2080 TI GAMING X TRIO 11Gb, 32GB DDR4 RAM, SSD 960 EVO250GB, SSD 850 EVO 500GB, JetSeat, MFG Crosswind Pedals, VPC Mongoose T-50, TMWH, DSD ButtonBox, Pimax 5k XR/BE
Avantar Posted March 31, 2018 Author Posted March 31, 2018 (edited) Hi Avantar, Thank you for your time and efforts. What advantages does your program have over TM Target ? You don't seem aware of the fact that DCS indeed supports multiple-position switches (e.g. this post for the Harrier)... Hi Davidp57, I will try to answer your two questions best I can: 1. As for TM Target I never used it, but I heard it is not user friendly and is difficult to use. I would assume they have similar functionality (although I am not sure if Target features profile-change-on-button-press function) 2. As for multiple position switches you are only partly right. DCS does support multiple position switches like autopilot or flaps on TM warthog throttle base. BUT most of the switches in that throttle base (or devices like MJoy) are single button only. Take APU button for example. It only registers in DCS on START position - as Joy Button 20. When you move it back to off DCS will not recognize this as a valid button entry and will do nothing - at least in some modules (checked in KA-50). RS Mapper explicitly allows you to map action at any button release, regardless of module or sim you are using. Edited April 3, 2018 by Avantar Avantar My rig: MSI MPG Z490 GAMING EDGE WIFI; HyperX Fury RGB 64GB (4x16GB) 3200MHz DDR4 CL16; Intel Core i9-10900KA; Zotac RTX 3090; HOTAS Warthog; HOTAS Cougar; MFD Cougar; Track IR 5; Saitek Pro Flight rudder Pedals [sIGPIC][/sIGPIC]
ShadowVonChadwick Posted April 1, 2018 Posted April 1, 2018 (edited) Hi Avantar Let me first say thanks for you initiative, My query is in regard to using a joystick & throttle as a "combined device" as does Target. The reason I ask is that only the first HID USB device's POV hat is recognized, so with out target the POV on the throttle is ignored. Thanks for your reply........Shad Edited April 1, 2018 by ShadowVonChadwick RyZen5 3600x, MSI GamingX RX 5700xt, AX-370-K7, 16 Gig G-Skil 3200 :thumbup:, Antec 650w (Still),Win10 on 256G 870 NVMe, 860+850 Evo for Apps, 2x1TB WD HDs for :music_whistling:, TR5 :detective:, Hog stick:joystick:, 3x TM MFD Bezels. a 32" AOC, @ 2560x1440, no floppy & a crappy chair :pain:. Its hard to find a chair that accepts you as you grow.:pilotfly:
sobe Posted April 2, 2018 Posted April 2, 2018 Avantar Your software looks very interesting, especially now that I understand the profile-change-on-button-press function. This together with the long press would seem to give each button 4 different states. short regular press, long regular press, profile change then short and long again. Am I correct? It would be helpful if you could provide one or two profiles for any modules that you have so that we can try it out first. thanks again for your efforts. Trackir4 using the latest Trackir 5 software, Win10 Pro [Creator Update] updated from Win7Pro Pro 64Bit, Intel® Core™ i5-2500 3.30 GHz 6M Intel Smart Cache LGA115 , GigaByte GA-Z68XP-UD4 Intel Z68 Chipset DDR3 16GB Ram, GTX MSI Gaming 1060 [6 GB] Video Card, Main Monitor 1 on left 1920x1080 Touchscreen Monitor 2 on right 1920x1080 .
BaD CrC Posted April 2, 2018 Posted April 2, 2018 Is it similar to Xpadder but freeware? https://www.blacksharkden.com http://discord.gg/blacksharkden
Avantar Posted April 3, 2018 Author Posted April 3, 2018 Hi Avantar Let me first say thanks for you initiative, My query is in regard to using a joystick & throttle as a "combined device" as does Target. The reason I ask is that only the first HID USB device's POV hat is recognized, so with out target the POV on the throttle is ignored. Thanks for your reply........Shad Hi ShadowVonChadwick, I am happy to tell you that I am not using HID intereface directly, so the limitation you mention is not in place. I am connecting to the devices using Direct Input libraries and I deal with throttle and joystick separately. RS Mapper detects up to 4 POVs per device (this is mandated trough DirectX / Direct Input standards) and so far I have been able to map both POVs - on Throttle and Joystick. Interesting enough, Comm switch on Warthog throttle although looking like POV is in fact a combination of 5 buttons. Hope that helps, Avantar Avantar My rig: MSI MPG Z490 GAMING EDGE WIFI; HyperX Fury RGB 64GB (4x16GB) 3200MHz DDR4 CL16; Intel Core i9-10900KA; Zotac RTX 3090; HOTAS Warthog; HOTAS Cougar; MFD Cougar; Track IR 5; Saitek Pro Flight rudder Pedals [sIGPIC][/sIGPIC]
Avantar Posted April 3, 2018 Author Posted April 3, 2018 Avantar Your software looks very interesting, especially now that I understand the profile-change-on-button-press function. This together with the long press would seem to give each button 4 different states. short regular press, long regular press, profile change then short and long again. Am I correct? It would be helpful if you could provide one or two profiles for any modules that you have so that we can try it out first. thanks again for your efforts. Hi Sobe, your understanding is perfect, short press and long press give you 2 different actions to be mapped. And each additional profile (you can have many!) gives you another 2 states. I do have profiles for Falcon BMS and K-50 done at least partially. However, I did actually prefer to mix in-game buttons settings with RS mapper, so these profiles are not "complete" - only certain functions on "release" buttons are mapped. I will try to post them when I am back home and log into my flying rig. Regards, Avantar Avantar My rig: MSI MPG Z490 GAMING EDGE WIFI; HyperX Fury RGB 64GB (4x16GB) 3200MHz DDR4 CL16; Intel Core i9-10900KA; Zotac RTX 3090; HOTAS Warthog; HOTAS Cougar; MFD Cougar; Track IR 5; Saitek Pro Flight rudder Pedals [sIGPIC][/sIGPIC]
Avantar Posted April 3, 2018 Author Posted April 3, 2018 Is it similar to Xpadder but freeware? Hi Bad CrC, unfortunately I have no experience with Xpadder, but description seems pretty similar. RS Mapper does not simulate mouse movements but honestly, that's rather trivial thing to code if it was ever needed. And yes, RS mapper is a freeware app, developed within some 2 or 3 weeks of "free time" in the evenings, not "started over 10 years ago" ;-) Cheers, Avantar 1 Avantar My rig: MSI MPG Z490 GAMING EDGE WIFI; HyperX Fury RGB 64GB (4x16GB) 3200MHz DDR4 CL16; Intel Core i9-10900KA; Zotac RTX 3090; HOTAS Warthog; HOTAS Cougar; MFD Cougar; Track IR 5; Saitek Pro Flight rudder Pedals [sIGPIC][/sIGPIC]
davidp57 Posted April 3, 2018 Posted April 3, 2018 your understanding is perfect, short press and long press give you 2 different actions to be mapped. And each additional profile (you can have many!) gives you another 2 states. Ah, great ! This is indeed very useful and something Target does not do out of the box. Thank you ! However, I did actually prefer to mix in-game buttons settings with RS mapper, so these profiles are not "complete" - only certain functions on "release" buttons are mapped. If I understand correctly, this means that we can use your software to define (override) specific functions for a few buttons and leave the rest to DCS ? I would like to see your Ka-50 profile, please... Regards, Zip. Zip - VEAF :pilotfly: If you want to learn, talk and fly with french-speaking friends, the Virtual European Air Force is here for you ! Meet us on our Discord and our forum If you're a mission creator, you may want to check the VEAF Mission Creation Tools (and its GitHub repository) a set of open-source scripts and tools that make creating a dynamic mission a breeze !
Econ Posted April 5, 2018 Posted April 5, 2018 Greetings. If a button is assigned to "Trigger on single press" and "Trigger on long press", a single press is activated first, then a long one. It would be nice to point out the delay in milliseconds to which a single press would trigger, and after which a long one would work. Ie with a long hold, a single press would not work. sorry, i'm using google translate.
Avantar Posted April 9, 2018 Author Posted April 9, 2018 Greetings. If a button is assigned to "Trigger on single press" and "Trigger on long press", a single press is activated first, then a long one. It would be nice to point out the delay in milliseconds to which a single press would trigger, and after which a long one would work. Ie with a long hold, a single press would not work. sorry, i'm using google translate. Hi Econ, what you just described is very nice, but in my opinion not so trivial problem. Assume this: - You have mapped action on single button press. It fires immediately when the joystick button is pressed, - You have mapped action on long button press. It fires after 1 second (1000 ms) of holding button. Currently single press is being fired as soon as button press is detected. No latency whatsoever. Unfortunately if you have both events mapped then the program does not know if you want to invoke a single press or long press, until full 1 second of long press passes. Then the long press event is fired. I could change the code so that if both events are mapped and the button is released before the full second timer expires the RS Mapper would fire the single press event. Seems OK - BUT: this would effectively mean that you fire single press event ON RELEASE rather and not on button press. Should not be a big difference but still gives a little bit of latency before the button press and action. Having said all this I will modify the RS mapper to incorporate separate firing events of single and long presses :) Avantar. Avantar My rig: MSI MPG Z490 GAMING EDGE WIFI; HyperX Fury RGB 64GB (4x16GB) 3200MHz DDR4 CL16; Intel Core i9-10900KA; Zotac RTX 3090; HOTAS Warthog; HOTAS Cougar; MFD Cougar; Track IR 5; Saitek Pro Flight rudder Pedals [sIGPIC][/sIGPIC]
bouncerj21 Posted April 10, 2018 Posted April 10, 2018 Hi Just wanted to say thank you for sharing. Brilliant tool and much easier to understand than others
Avantar Posted April 10, 2018 Author Posted April 10, 2018 Greetings. If a button is assigned to "Trigger on single press" and "Trigger on long press", a single press is activated first, then a long one. It would be nice to point out the delay in milliseconds to which a single press would trigger, and after which a long one would work. Ie with a long hold, a single press would not work. sorry, i'm using google translate. Hi Econ, version 0.43 has been released. It now differentiates between single press and long press. Single press will no longer fire if you hold the button long enough for longpress to fire. Avantar Avantar My rig: MSI MPG Z490 GAMING EDGE WIFI; HyperX Fury RGB 64GB (4x16GB) 3200MHz DDR4 CL16; Intel Core i9-10900KA; Zotac RTX 3090; HOTAS Warthog; HOTAS Cougar; MFD Cougar; Track IR 5; Saitek Pro Flight rudder Pedals [sIGPIC][/sIGPIC]
bouncerj21 Posted April 10, 2018 Posted April 10, 2018 Thanks for the update. In a future version would you be able to add the continuous hold option for the short press to the long press also ? Sent from my SM-G930F using Tapatalk
Avantar Posted April 11, 2018 Author Posted April 11, 2018 (edited) Thanks for the update. In a future version would you be able to add the continuous hold option for the short press to the long press also ? Hi bouncerj21, sure - version 0.44 has been uploaded to drive. Enjoy. Avantar Edited April 12, 2018 by Avantar New version Avantar My rig: MSI MPG Z490 GAMING EDGE WIFI; HyperX Fury RGB 64GB (4x16GB) 3200MHz DDR4 CL16; Intel Core i9-10900KA; Zotac RTX 3090; HOTAS Warthog; HOTAS Cougar; MFD Cougar; Track IR 5; Saitek Pro Flight rudder Pedals [sIGPIC][/sIGPIC]
MarkP Posted April 18, 2018 Posted April 18, 2018 Hello, i have to say that the programm is really useful. The way DCS behaves with the Warthog is really shitty so i have to thank you! One thing i would request as a feature: Key-sequence, like if i flip a Switch for fence-in - it will switch off all lights, master-arm on, gun-arm on and so on. That would be very usefull, esp. with VR, when you dont need to use the mouse for all that buttons. Mark Main-Module: F-16C, AH-64D Maps: Syria, Persian Gulf, South Atlantic, Caucasus, 1944 Normandy, NTTR Hardware: VKB Gunfighter mk.2 Pro, WinWing Orion F16, VKB T-Rudder, HP Reverb G2 PC Specs: Intel 13900K, ASUS ROG STRIX Z790-E, 64GB DDR5-5800 RAM, GeForce RTX 4090, Win 11x64
sobe Posted April 18, 2018 Posted April 18, 2018 Perhaps this mod should be moved to the "imput and Output" group and not here. I will be testing this software over the next couple of days. It seems to good to pass up as it seems to solve some issues when you do not use target. Trackir4 using the latest Trackir 5 software, Win10 Pro [Creator Update] updated from Win7Pro Pro 64Bit, Intel® Core™ i5-2500 3.30 GHz 6M Intel Smart Cache LGA115 , GigaByte GA-Z68XP-UD4 Intel Z68 Chipset DDR3 16GB Ram, GTX MSI Gaming 1060 [6 GB] Video Card, Main Monitor 1 on left 1920x1080 Touchscreen Monitor 2 on right 1920x1080 .
sobe Posted April 18, 2018 Posted April 18, 2018 Avantar I have been experimenting with your program and have some questions/clarifications: First, It seems that if you use both the short press and the long press for the same button that you cannot then use the continuous function for the short press but can use the repeat function for the short press even though you use the long press. Is that correct? Second, the heading on the RSMapper dialog box for the file profile name does not seem to change when you change profiles and the only way you know which profile you are using is to use the drop down menu under profiles. Is that correct? If so, can you provide a method to ID the name of the profile you are working on without having to use the drop down menu? For users, it is helpful to have the Game controller windows app open so that you can go to the properties button and ID the button number that you are using to map the key. Trackir4 using the latest Trackir 5 software, Win10 Pro [Creator Update] updated from Win7Pro Pro 64Bit, Intel® Core™ i5-2500 3.30 GHz 6M Intel Smart Cache LGA115 , GigaByte GA-Z68XP-UD4 Intel Z68 Chipset DDR3 16GB Ram, GTX MSI Gaming 1060 [6 GB] Video Card, Main Monitor 1 on left 1920x1080 Touchscreen Monitor 2 on right 1920x1080 .
sobe Posted April 18, 2018 Posted April 18, 2018 Avantar I may have been wrong on the profile names appearing at the top of program. It seems that you have to open a profile for it to appear on top and merely going to the profile drop down does not do it. However, I am a little confused on the interplay of the open command and list under the profile drop down. On a separate matter: It does not appear that you can have BOTH a trigger action and a profile change on one button. Currently, it appears that it would take 2 buttons to trigger an action and change profiles. On the F18, if you want to go to air-to-air mode, it has a button “AIR” that lights up when pressed to set the jet up for air-to-air. When you press the button again, the light goes out and the jet goes into navigation mode. I was wondering if you could duplicate this by having one button put the jet in air-to-air mode and at the same time, change the profile to the air-to-air profile. As it stands now, I would have to remember to change profiles after pressing the air-to-air button. Trackir4 using the latest Trackir 5 software, Win10 Pro [Creator Update] updated from Win7Pro Pro 64Bit, Intel® Core™ i5-2500 3.30 GHz 6M Intel Smart Cache LGA115 , GigaByte GA-Z68XP-UD4 Intel Z68 Chipset DDR3 16GB Ram, GTX MSI Gaming 1060 [6 GB] Video Card, Main Monitor 1 on left 1920x1080 Touchscreen Monitor 2 on right 1920x1080 .
Stache Posted April 20, 2018 Posted April 20, 2018 (edited) Totally new to this program, does it need to be running while in use with DCS? or does this get exported as a LUA file? Thanks. Edited April 20, 2018 by Stache —————— i7 7820x 4.3ghz Asus tuf x299 mk 2 32gig G.skill 3200mhz ram 500gig ssd OS 2x 1tb ssd raid 0 GeForce GTX 1080 HTC Vive
Recommended Posts